From ca565a9b1f06fc8ce1c1dbcfe53cd0035134d784 Mon Sep 17 00:00:00 2001 From: icebox333 <48801334+arionvlad@users.noreply.github.com> Date: Sun, 2 Aug 2026 23:01:19 +0300 Subject: [PATCH 1/5] Configure Python development tooling --- .vscode/extensions.json | 3 +++ .vscode/settings.json | 15 +++++++++++++++ pyproject.toml | 28 +++++++++++++++++++++++++++- src/python_apprentice/__init__.py | 6 +----- src/python_apprentice/greetings.py | 3 +++ src/python_apprentice/main.py | 2 +- tests/test_greeting.py | 5 +++++ tests/test_my_package.py | 5 ----- 8 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 src/python_apprentice/greetings.py create mode 100644 tests/test_greeting.py delete mode 100644 tests/test_my_package.py diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..288278c --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["ms-python.python", "ms-python.vscode-pylance", "charliermarsh.ruff"] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3580ad9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,15 @@ +{ + "python.pythonPath": "${workspaceFolder}/.venv/bin/python", + "python.analysis.extraPaths": ["${workspaceFolder}/src"], + "python.testing.pytestEnabled": true, + "python.testing.unittestEnabled": false, + "python.testing.pytestArgs": ["tests"], + "[python]": { + "editor.defaultFormatter": "charliermarsh.ruff", + "editor.formatOnSave": true, + "editor.codeActionsOnSave": { + "source.fixAll.ruff": "explicit", + "source.organizeImports.ruff": "explicit" + } + } +} diff --git a/pyproject.toml b/pyproject.toml index 8645a07..78f96e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,5 +16,31 @@ dependencies = [] [project.urls] Repository = "https://github.com/arionvlad/python-apprentice" +[project.optional-dependencies] +dev = [ + "mypy", + "pytest", + "ruff", +] + [tool.setuptools.packages.find] -where = ["src"] \ No newline at end of file +where = ["src"] + +[tool.ruff] +line-length = 88 +target-version = "py311" + +[tool.ruff.lint] +select = ["E", "F", "I", "UP"] + +[tool.ruff.format] +quote-style = "double" + +[tool.mypy] +python_version = "3.11" +strict = true +files = ["src", "tests"] + +[tool.pytest.ini_options] +testpaths = ["tests"] +pythonpath = ["src"] \ No newline at end of file diff --git a/src/python_apprentice/__init__.py b/src/python_apprentice/__init__.py index fd2e6df..07b9f2d 100644 --- a/src/python_apprentice/__init__.py +++ b/src/python_apprentice/__init__.py @@ -2,11 +2,7 @@ from __future__ import annotations - -def greet(name: str) -> str: - return f"Hello, {name}!" - - +from .greetings import greet from .main import main __all__ = ["greet", "main"] diff --git a/src/python_apprentice/greetings.py b/src/python_apprentice/greetings.py new file mode 100644 index 0000000..3fd7d20 --- /dev/null +++ b/src/python_apprentice/greetings.py @@ -0,0 +1,3 @@ +# greetings.py +def greet(name: str) -> str: + return f"Hello, {name}!" diff --git a/src/python_apprentice/main.py b/src/python_apprentice/main.py index 3398f3b..3bb4d4b 100644 --- a/src/python_apprentice/main.py +++ b/src/python_apprentice/main.py @@ -2,7 +2,7 @@ from __future__ import annotations -from . import greet +from .greetings import greet def main() -> None: diff --git a/tests/test_greeting.py b/tests/test_greeting.py new file mode 100644 index 0000000..4f35bbb --- /dev/null +++ b/tests/test_greeting.py @@ -0,0 +1,5 @@ +from python_apprentice.greetings import greet + + +def test_greet_returns_personalized_message() -> None: + assert greet("Vlad") == "Hello, Vlad!" diff --git a/tests/test_my_package.py b/tests/test_my_package.py deleted file mode 100644 index 0209e0d..0000000 --- a/tests/test_my_package.py +++ /dev/null @@ -1,5 +0,0 @@ -from python_apprentice import greet - - -def test_greet_returns_expected_message() -> None: - assert greet("World") == "Hello, World!" From f4b1a490484fdf85507a61d0feedea4597e51a85 Mon Sep 17 00:00:00 2001 From: icebox333 <48801334+arionvlad@users.noreply.github.com> Date: Sun, 2 Aug 2026 23:05:54 +0300 Subject: [PATCH 2/5] added install pytest in python.yaml --- .github/workflows/python.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 82e1968..2801592 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -20,4 +20,5 @@ jobs: python-version: ${{ matrix.python-version }} - run: python -m pip install --upgrade pip - run: python -m pip install -e .[test] + - run: python -m pip install pytest - run: python -m pytest From 316f219d75e80cc2f4c2f880dea4842d5c4cdab1 Mon Sep 17 00:00:00 2001 From: icebox333 <48801334+arionvlad@users.noreply.github.com> Date: Sun, 2 Aug 2026 23:08:58 +0300 Subject: [PATCH 3/5] update .toml file --- pyproject.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 78f96e7..251d5c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,6 +23,9 @@ dev = [ "ruff", ] +[options.extras_require] +test = ["pytest>=7.0"] + [tool.setuptools.packages.find] where = ["src"] From 2da3798a92da29906765973bcfa6fdecd178325c Mon Sep 17 00:00:00 2001 From: icebox333 <48801334+arionvlad@users.noreply.github.com> Date: Sun, 2 Aug 2026 23:23:28 +0300 Subject: [PATCH 4/5] Address development tooling review --- .github/workflows/python.yml | 5 ++++- pyproject.toml | 3 --- src/python_apprentice/__init__.py | 2 -- src/python_apprentice/greetings.py | 1 - src/python_apprentice/main.py | 10 ++-------- tests/test_greeting.py | 2 +- 6 files changed, 7 insertions(+), 16 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 2801592..0a9b456 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -19,6 +19,9 @@ jobs: with: python-version: ${{ matrix.python-version }} - run: python -m pip install --upgrade pip - - run: python -m pip install -e .[test] + - run: python -m pip install -e .[dev] - run: python -m pip install pytest - run: python -m pytest + - run: ruff check . + - run: ruff format --check . + - run: mypy . diff --git a/pyproject.toml b/pyproject.toml index 251d5c6..78f96e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,9 +23,6 @@ dev = [ "ruff", ] -[options.extras_require] -test = ["pytest>=7.0"] - [tool.setuptools.packages.find] where = ["src"] diff --git a/src/python_apprentice/__init__.py b/src/python_apprentice/__init__.py index 07b9f2d..1959d37 100644 --- a/src/python_apprentice/__init__.py +++ b/src/python_apprentice/__init__.py @@ -1,7 +1,5 @@ """Python Apprentice package.""" -from __future__ import annotations - from .greetings import greet from .main import main diff --git a/src/python_apprentice/greetings.py b/src/python_apprentice/greetings.py index 3fd7d20..1e21eeb 100644 --- a/src/python_apprentice/greetings.py +++ b/src/python_apprentice/greetings.py @@ -1,3 +1,2 @@ -# greetings.py def greet(name: str) -> str: return f"Hello, {name}!" diff --git a/src/python_apprentice/main.py b/src/python_apprentice/main.py index 3bb4d4b..da7d57e 100644 --- a/src/python_apprentice/main.py +++ b/src/python_apprentice/main.py @@ -1,13 +1,7 @@ """Application entrypoint.""" -from __future__ import annotations - -from .greetings import greet +from python_apprentice import greet def main() -> None: - print(greet("World")) - - -if __name__ == "__main__": - main() + print(greet("world")) diff --git a/tests/test_greeting.py b/tests/test_greeting.py index 4f35bbb..df094b5 100644 --- a/tests/test_greeting.py +++ b/tests/test_greeting.py @@ -1,4 +1,4 @@ -from python_apprentice.greetings import greet +from python_apprentice import greet def test_greet_returns_personalized_message() -> None: From 48900d3d1f173c293c671b9f72ede1809a9ace17 Mon Sep 17 00:00:00 2001 From: icebox333 <48801334+arionvlad@users.noreply.github.com> Date: Sun, 2 Aug 2026 23:29:45 +0300 Subject: [PATCH 5/5] Complete development tooling cleanup --- .github/workflows/python.yml | 6 +++--- .vscode/settings.json | 2 -- src/python_apprentice/__init__.py | 3 +-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 0a9b456..ba65746 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -19,9 +19,9 @@ jobs: with: python-version: ${{ matrix.python-version }} - run: python -m pip install --upgrade pip - - run: python -m pip install -e .[dev] - - run: python -m pip install pytest - - run: python -m pytest + - run: python -m pip install -e ".[dev]" - run: ruff check . - run: ruff format --check . - run: mypy . + - run: pytest + diff --git a/.vscode/settings.json b/.vscode/settings.json index 3580ad9..de7aaf4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,4 @@ { - "python.pythonPath": "${workspaceFolder}/.venv/bin/python", - "python.analysis.extraPaths": ["${workspaceFolder}/src"], "python.testing.pytestEnabled": true, "python.testing.unittestEnabled": false, "python.testing.pytestArgs": ["tests"], diff --git a/src/python_apprentice/__init__.py b/src/python_apprentice/__init__.py index 1959d37..4ed5d28 100644 --- a/src/python_apprentice/__init__.py +++ b/src/python_apprentice/__init__.py @@ -1,6 +1,5 @@ """Python Apprentice package.""" from .greetings import greet -from .main import main -__all__ = ["greet", "main"] +__all__ = ["greet"]