Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
049b52c
Migrate to dataclasses in finecode_extension_api and use pydantic onl…
Aksem Jun 22, 2025
92e8bc5
Finish proxy utils with envs
Aksem Jun 23, 2025
ba21ba0
Prepare envs CLI, action and handlers. Dump config as action. New int…
Aksem Aug 12, 2025
9bfcbd4
Fix filtering duplicates in dependencies. Change package structure in…
Aksem Aug 12, 2025
b37a87c
Fix saving dumped config if target dir doesn't exist. Add create_dir …
Aksem Aug 14, 2025
fb7e12b
Move extension runner in separate package. Automatically add it to al…
Aksem Aug 15, 2025
b1f4ba9
CLI: start extension runners also if they were running before and wer…
Aksem Aug 15, 2025
790c37a
Add errors parameter to result of prepare_env action. Extend file man…
Aksem Aug 15, 2025
d15a76e
Improve error handling. Add base_config. Add prepare_runners and inst…
Aksem Aug 21, 2025
bbe1d97
Add env config in WM. Remove unused poetry locks. Fix pip command in …
Aksem Aug 24, 2025
81dd376
Add missing dataclass decorators in handlers configs. Add setup.py in…
Aksem Aug 24, 2025
51ce658
Fix default value of target_versions parameter in black config
Aksem Aug 24, 2025
0265e0c
Formatting works again. Format the whole codebase
Aksem Aug 24, 2025
871f8c3
Unify naming of attributes in action class
Aksem Aug 24, 2025
b5de3a8
Remove unused action handlers
Aksem Aug 24, 2025
2e1c962
Add error handling in preparing dev_workspace envs. Remove useless co…
Aksem Aug 24, 2025
405b17c
Check whether action handler has source in collect_actions
Aksem Aug 24, 2025
af87d38
Add finecode_config_dump to all gitignores
Aksem Aug 25, 2025
b93df1c
Remove poetry locks, they are not used anymore
Aksem Aug 25, 2025
4510736
finecode_extension_api v0.2.0
Aksem Aug 25, 2025
ffe0473
Finish error handling in read config handlers
Aksem Aug 25, 2025
d799176
Add missing dataclass decorator in text document code action
Aksem Aug 25, 2025
f8aa26f
Clean ER readme
Aksem Aug 25, 2025
d250566
Map exceptions in iactionrunner implementation
Aksem Aug 25, 2025
1d5d716
Fix dump config CLI command and add textual representation of dumped …
Aksem Aug 25, 2025
b4f9c10
Use deepmerge to merge handler configs instead of just updating dict
Aksem Aug 25, 2025
9ca7c4f
Remove experimental mcp_server, it will be in another branch
Aksem Aug 25, 2025
54d8a5e
Finish error handling in prepare_runners and prepare_envs handlers. E…
Aksem Aug 26, 2025
5a27d08
Move 'start_required_environments' in proxy_utils and handle exceptio…
Aksem Aug 27, 2025
88d6d41
finecode_extension_api v0.3.0
Aksem Aug 28, 2025
1f9ad93
fine_python_ast v0.2.0
Aksem Aug 28, 2025
596fb18
fine_python_black v0.2.0
Aksem Aug 28, 2025
5aba5ec
fine_python_flake8 v0.2.0
Aksem Aug 28, 2025
7e7ed4f
fine_python_isort v0.2.0
Aksem Aug 28, 2025
c37e1b7
fine_python_mypy v0.2.0
Aksem Aug 28, 2025
9a657c4
fine_python_pip v0.1.0
Aksem Aug 28, 2025
87937c5
fine_python_virtualenv v0.1.0
Aksem Aug 28, 2025
cffb1fb
fine_python_format v0.2.0
Aksem Aug 28, 2025
46179ca
fine_python_lint v0.2.0
Aksem Aug 28, 2025
176e14a
fine_python_recommended v0.2.0
Aksem Aug 28, 2025
27314de
fine_python_module_exports v0.2.0
Aksem Aug 28, 2025
220127f
Fix passing nested action payload as json in CLI run command
Aksem Aug 28, 2025
b8cb767
Finish updating versions
Aksem Aug 28, 2025
7b9eccf
Remove build action
Aksem Aug 28, 2025
28bc67d
Fix name of command in github actions config
Aksem Aug 28, 2025
b33358e
Update README
Aksem Aug 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
143 changes: 18 additions & 125 deletions .github/workflows/ci-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ defaults:
run:
shell: bash

env:
# python version for dev workspace
DEV_WORKSPACE_PYTHON_VERSION: '3.13'


jobs:
build:
runs-on: ${{ matrix.os }}
Expand All @@ -17,7 +22,6 @@ jobs:
max-parallel: 1
matrix:
os: [ubuntu-24.04, macos-13, windows-2022]
python-version: ["3.13"]
include:
- os: ubuntu-24.04
name: Linux
Expand All @@ -29,150 +33,39 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Install poetry
run: pipx install poetry==2.1.2

- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python ${{ env.DEV_WORKSPACE_PYTHON_VERSION }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "poetry"
python-version: ${{ env.DEV_WORKSPACE_PYTHON_VERSION }}

- name: Install dependencies
run: |
# poetry default git client `dulwich` doesn't work properly with git urls
# to dependencies, which we use
poetry config system-git-client true

FINECODE_SH_TEMPLATE="poetry run python"

poetry install
echo $FINECODE_SH_TEMPLATE > finecode.sh

pushd tests/list_ws/backend
poetry install
echo $FINECODE_SH_TEMPLATE > finecode.sh
popd

pushd tests/list_ws/cli_tool
poetry install
echo $FINECODE_SH_TEMPLATE > finecode.sh
popd

pushd tests/list_ws/ui_app
poetry install
echo $FINECODE_SH_TEMPLATE > finecode.sh
popd

pushd tests/nested_package/pyback
poetry install
echo $FINECODE_SH_TEMPLATE > finecode.sh
popd
python -m venv .venvs/dev_workspace
source .venvs/dev_workspace/bin/activate
python -m pip install --upgrade pip==25.1.1
python -m pip install --group="dev_workspace"

pushd finecode_extension_api
poetry install
echo $FINECODE_SH_TEMPLATE > finecode.sh
popd
python -m finecode prepare-envs
shell: bash

# TODO: install all other supported python versions. Version can be extracted from finecode

# - name: Lint
# run: |
# poetry run python -m finecode run lint
# shell: bash

- name: Build finecode_extension_api
if: runner.os == 'Linux'
run: |
pushd finecode_extension_api
poetry build
popd
shell: bash

- name: Build fine_python_ast
if: runner.os == 'Linux'
run: |
pushd extensions/fine_python_ast
poetry build
popd
shell: bash

- name: Build fine_python_black
if: runner.os == 'Linux'
run: |
pushd extensions/fine_python_black
poetry build
popd
shell: bash

- name: Build fine_python_flake8
if: runner.os == 'Linux'
run: |
pushd extensions/fine_python_flake8
poetry build
popd
shell: bash

- name: Build fine_python_isort
- name: Build all packages
if: runner.os == 'Linux'
run: |
pushd extensions/fine_python_isort
poetry build
popd
shell: bash

- name: Build fine_python_module_exports
if: runner.os == 'Linux'
run: |
pushd extensions/fine_python_module_exports
poetry build
popd
shell: bash

- name: Build fine_python_mypy
if: runner.os == 'Linux'
run: |
pushd extensions/fine_python_mypy
poetry build
popd
shell: bash

- name: Build fine_python_format
if: runner.os == 'Linux'
run: |
pushd presets/fine_python_format
poetry build
popd
shell: bash

- name: Build fine_python_lint
if: runner.os == 'Linux'
run: |
pushd presets/fine_python_lint
poetry build
popd
shell: bash

- name: Build fine_python_recommended
if: runner.os == 'Linux'
run: |
pushd presets/fine_python_recommended
poetry build
popd
shell: bash

- name: Build finecode
if: runner.os == 'Linux'
run: |
python -m venv .dev_workspace_venv
source .dev_workspace_venv/bin/activate
python -m pip install --upgrade pip==25.1.1
python -m pip install --group="dev_workspace"
python -m build
source .venvs/dev_workspace/bin/activate
python -m finecode run build
shell: bash

- name: Collect all distribution packages
if: runner.os == 'Linux'
run: |
# TODO: finecode action to copy only updated packages in dist
mkdir -p dist
cp finecode_extension_api/dist/* dist/
cp extensions/fine_python_ast/dist/* dist/
Expand Down
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,8 @@ __pycache__
dist

src/finecode/_version.py
src/finecode.egg-info
src/finecode.egg-info

.venvs
finecode_config_dump/
build/
1 change: 0 additions & 1 deletion .python-version

This file was deleted.

8 changes: 3 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# FineCode

**Status Update (04.06.2025):** FineCode is available for use, but the current version is intended only for personal testing, not for production use, as we actively work on improving execution environments, which will undergo significant changes. Initial release with new execution environments is expected in July 2025.

## Personalize and improve your development experience

FineCode is a tool runner and set of utilities for creating tools for software developers.
Expand All @@ -23,7 +21,7 @@ With FineCode you can:
dev_workspace = ["finecode==0.2.*"]
```

1.1.2 Create dev_workspace venv: `python -m venv .venvs/dev_workspace` (https://docs.python.org/3/library/venv.html#creating-virtual-environments )
1.1.2 Create dev_workspace venv: `python -m venv .venvs/dev_workspace` ([Python Docs](https://docs.python.org/3/library/venv.html#creating-virtual-environments ))

1.1.3 Activate this venv and install dependencies from `dev_workspace` group:
```
Expand All @@ -45,10 +43,10 @@ NOTE: `pip install` supports `--group` parameter since pip 25.1. Make sure you h

For list of presets from FineCode authors see 'Presets' section below.

1.2.1 Run `prepare_env` finecode action:
1.2.1 Run `prepare-envs` finecode command:

```bash
python -m finecode run prepare_env
python -m finecode prepare-envs
```

1.3 Enable finecode and preset
Expand Down
2 changes: 1 addition & 1 deletion extensions/fine_python_ast/fine_python_ast/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from .iast_provider import IPythonSingleAstProvider
from .ast_provider import PythonSingleAstProvider
from .iast_provider import IPythonSingleAstProvider

__all__ = [
"IPythonSingleAstProvider",
Expand Down
Loading
Loading