From cacfd24dde2be859f03b6d27656df272cb12c28a Mon Sep 17 00:00:00 2001 From: Kyle Oliver Date: Fri, 1 Aug 2025 17:57:58 -0400 Subject: [PATCH 1/4] chore: update demo to the latest cookiecutter-robust-python --- .cookiecutter.json | 2 +- .cruft.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.cookiecutter.json b/.cookiecutter.json index e397858..ab84d82 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -1,5 +1,5 @@ { - "_commit": "a6b393f77763f21fffba1b3c994c772bba8ef19b", + "_commit": "580fb85f461f0818cd0fb314118c0c015f5bf3be", "_template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", "add_rust_extension": false, "author": "Kyle Oliver", diff --git a/.cruft.json b/.cruft.json index c9378dc..d68abde 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "commit": "a6b393f77763f21fffba1b3c994c772bba8ef19b", + "commit": "580fb85f461f0818cd0fb314118c0c015f5bf3be", "checkout": null, "context": { "cookiecutter": { @@ -20,7 +20,7 @@ "license": "MIT", "development_status": "Development Status :: 1 - Planning", "_template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "_commit": "a6b393f77763f21fffba1b3c994c772bba8ef19b" + "_commit": "580fb85f461f0818cd0fb314118c0c015f5bf3be" } }, "directory": null From d10146257ebe65a8c6c7d95414b79016b1c3bad6 Mon Sep 17 00:00:00 2001 From: Kyle Oliver Date: Fri, 1 Aug 2025 18:18:04 -0400 Subject: [PATCH 2/4] chore: update demo to the latest cookiecutter-robust-python --- .cookiecutter.json | 2 +- .cruft.json | 4 ++-- .github/workflows/release-python.yml | 1 - .pre-commit-config.yaml | 2 +- .vscode/settings.json | 9 +++------ CONTRIBUTING.md | 10 +++++++++- README.md | 14 +++++++------- noxfile.py | 2 +- pyrightconfig.json | 5 +---- scripts/get-release-notes.py | 1 + scripts/setup-release.py | 2 +- scripts/setup-remote.py | 4 +++- scripts/util.py | 25 ++++++++++++------------- 13 files changed, 42 insertions(+), 39 deletions(-) diff --git a/.cookiecutter.json b/.cookiecutter.json index ab84d82..d008475 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -1,5 +1,5 @@ { - "_commit": "580fb85f461f0818cd0fb314118c0c015f5bf3be", + "_commit": "e1fd2598ee86662bb9d36989718b6277d438af09", "_template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", "add_rust_extension": false, "author": "Kyle Oliver", diff --git a/.cruft.json b/.cruft.json index d68abde..c03f6c3 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "commit": "580fb85f461f0818cd0fb314118c0c015f5bf3be", + "commit": "e1fd2598ee86662bb9d36989718b6277d438af09", "checkout": null, "context": { "cookiecutter": { @@ -20,7 +20,7 @@ "license": "MIT", "development_status": "Development Status :: 1 - Planning", "_template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "_commit": "580fb85f461f0818cd0fb314118c0c015f5bf3be" + "_commit": "e1fd2598ee86662bb9d36989718b6277d438af09" } }, "directory": null diff --git a/.github/workflows/release-python.yml b/.github/workflows/release-python.yml index 6df732d..9e2f413 100644 --- a/.github/workflows/release-python.yml +++ b/.github/workflows/release-python.yml @@ -33,7 +33,6 @@ jobs: id: current_version run: echo "CURRENT_VERSION=v$(uvx --from commitizen cz version -p)" >> $GITHUB_OUTPUT - build_and_testpypi: name: Build & Publish to TestPyPI runs-on: ubuntu-latest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8c8afdb..6e50b43 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,4 +67,4 @@ repos: name: Commitizen - id: commitizen-branch name: Commitizen Branch - stages: [ commit-msg ] + stages: [commit-msg] diff --git a/.vscode/settings.json b/.vscode/settings.json index bd26cde..8882727 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -11,10 +11,7 @@ "source.organizeImports": "always" } }, - "ruff.args": [ - "--config", - "${workspaceFolder}/.ruff.toml" - ], + "ruff.args": ["--config", "${workspaceFolder}/.ruff.toml"], "python.linting.enabled": true, "python.linting.ruffEnabled": true, // Pyright @@ -36,8 +33,8 @@ "rust-analyzer.checkOnSave.command": "clippy", // Prettier for non-Python text formats - "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, + "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, - "[yaml]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, + "[yaml]": { "editor.defaultFormatter": "esbenp.prettier-vscode" }, "[markdown]": { "editor.defaultFormatter": "esbenp.prettier-vscode" } } diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d78db7d..c90158d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -40,17 +40,20 @@ We welcome pull requests! For significant changes, it's best to open an issue fi ### Setting Up Your Development Environment 1. **Fork and clone the repository:** + ```bash git clone https://github.com/56kyle/robust-python-demo.git cd robust-python-demo ``` 2. **Install dependencies:** + ```bash uv sync ``` 3. **Set up pre-commit hooks:** + ```bash uvx nox -s pre-commit -- install ``` @@ -65,6 +68,7 @@ We welcome pull requests! For significant changes, it's best to open an issue fi ### Making Changes 1. **Create a feature branch:** + ```bash git checkout -b feature/your-feature-name # or @@ -74,6 +78,7 @@ We welcome pull requests! For significant changes, it's best to open an issue fi 2. **Make your changes** following our coding standards (see below) 3. **Test your changes:** + ```bash # Run the full test suite uvx nox -s tests-python @@ -86,6 +91,7 @@ We welcome pull requests! For significant changes, it's best to open an issue fi ``` 4. **Check code quality:** + ```bash # Format code uvx nox -s format-python @@ -136,6 +142,7 @@ This project follows these standards: 1. **Push your branch** to your fork 2. **Open a pull request** with: + - Clear title describing the change - Description explaining what and why - Link to any relevant issues @@ -190,9 +197,10 @@ Contributors will be recognized in our release notes and documentation. Thank yo --- -*This project was generated from the [cookiecutter-robust-python][cookiecutter-robust-python] template.* +_This project was generated from the [cookiecutter-robust-python][cookiecutter-robust-python] template._ + [code-of-conduct]: CODE_OF_CONDUCT.md [issues]: https://github.com/56kyle/robust-python-demo/issues [discussions]: https://github.com/56kyle/robust-python-demo/discussions diff --git a/README.md b/README.md index e74ee9a..7fa92a5 100644 --- a/README.md +++ b/README.md @@ -65,17 +65,17 @@ For detailed API documentation and CLI command references, see the **[Documentat This project uses a robust set of tools for development, testing, and quality assurance. All significant automated tasks are run via [:term:`Nox`](nox-documentation), orchestrated by the central `noxfile.py`. -* **Run all checks (lint, typecheck, security):** `uvx nox -s check` -* **Run test suite with coverage:** `uvx nox -s test` -* **Build documentation:** `uvx nox -s docs` -* **Build package:** `uvx nox -s build` -* **See all available tasks:** `uvx nox -l` +- **Run all checks (lint, typecheck, security):** `uvx nox -s check` +- **Run test suite with coverage:** `uvx nox -s test` +- **Build documentation:** `uvx nox -s docs` +- **Build package:** `uvx nox -s build` +- **See all available tasks:** `uvx nox -l` Explore the `noxfile.py` and the project documentation for detailed information on the automated workflow. ## Contributing -(This section should guide contributions *to this specific generated project*, not the template. It should refer to the project's `CODE_OF_CONDUCT.md` and link to a `CONTRIBUTING.md` specific to the project, if you choose to generate one.) +(This section should guide contributions _to this specific generated project_, not the template. It should refer to the project's `CODE_OF_CONDUCT.md` and link to a `CONTRIBUTING.md` specific to the project, if you choose to generate one.) Report bugs or suggest features via the [issue tracker](https://github.com/56kyle/robust-python-demo/issues). @@ -90,6 +90,6 @@ Distributed under the terms of the **MIT** license. See [LICENSE](LICENSE) for d **This project was generated from the [cookiecutter-robust-python template][cookiecutter-robust-python].** -[cookiecutter-robust-python]: https://github.com/56kyle/cookiecutter-robust-python +[cookiecutter-robust-python]: https://github.com/56kyle/cookiecutter-robust-python [documentation]: https://robust-python-demo.readthedocs.io/ diff --git a/noxfile.py b/noxfile.py index 09310bb..3f81dd0 100644 --- a/noxfile.py +++ b/noxfile.py @@ -134,7 +134,7 @@ def tests_python(session: Session) -> None: "--cov-report=term", "--cov-report=xml", f"--junitxml={junitxml_file}", - "tests/" + "tests/", ) diff --git a/pyrightconfig.json b/pyrightconfig.json index e4d6e0a..cb353f8 100644 --- a/pyrightconfig.json +++ b/pyrightconfig.json @@ -1,8 +1,5 @@ { - "include": [ - "src", - "tests" - ], + "include": ["src", "tests"], "exclude": [ ".venv", "venv", diff --git a/scripts/get-release-notes.py b/scripts/get-release-notes.py index 74b7271..b587803 100644 --- a/scripts/get-release-notes.py +++ b/scripts/get-release-notes.py @@ -1,4 +1,5 @@ """Script responsible for getting the release notes of the robust-python-demo package.""" + import argparse from pathlib import Path diff --git a/scripts/setup-release.py b/scripts/setup-release.py index 172a61e..e101716 100644 --- a/scripts/setup-release.py +++ b/scripts/setup-release.py @@ -51,7 +51,7 @@ def setup_release(increment: Optional[str] = None) -> None: commands: list[list[str]] = [ ["uv", "sync", "--all-groups"], ["git", "add", "."], - ["git", "commit", "-m", f"bump: version {current_version} → {new_version}", "--no-verify"] + ["git", "commit", "-m", f"bump: version {current_version} → {new_version}", "--no-verify"], ] for command in commands: diff --git a/scripts/setup-remote.py b/scripts/setup-remote.py index 06b5056..d6f0f67 100644 --- a/scripts/setup-remote.py +++ b/scripts/setup-remote.py @@ -50,7 +50,9 @@ def get_parser() -> argparse.ArgumentParser: help="Path to the repo's root directory (must already exist).", ) parser.add_argument("-h", "--host", dest="repository_host", help="Repository host (e.g., github.com, gitlab.com).") - parser.add_argument("-p", "--path", dest="repository_path", help="Repository path (e.g., user/repo, group/subgroup/repo).") + parser.add_argument( + "-p", "--path", dest="repository_path", help="Repository path (e.g., user/repo, group/subgroup/repo)." + ) return parser diff --git a/scripts/util.py b/scripts/util.py index 44dd7ae..e09e873 100644 --- a/scripts/util.py +++ b/scripts/util.py @@ -58,9 +58,7 @@ def remove_readonly(func: Callable[[str], Any], path: str, _: Any) -> None: def get_package_version() -> str: """Gets the package version.""" result: subprocess.CompletedProcess = subprocess.run( - ["uvx", "--from", "commitizen", "cz", "version", "-p"], - cwd=REPO_FOLDER, - capture_output=True + ["uvx", "--from", "commitizen", "cz", "version", "-p"], cwd=REPO_FOLDER, capture_output=True ) return result.stdout.decode("utf-8").strip() @@ -98,9 +96,7 @@ def get_latest_tag() -> Optional[str]: find_last: list[str] = ["grep", "-v", '"${GITHUB_REF_NAME}"'] echo_none: list[str] = ["echo", "''"] result: subprocess.CompletedProcess = subprocess.run( - [*sort_tags, "|", *find_last, "|", "tail", "-n1", "||", *echo_none], - cwd=REPO_FOLDER, - capture_output=True + [*sort_tags, "|", *find_last, "|", "tail", "-n1", "||", *echo_none], cwd=REPO_FOLDER, capture_output=True ) tag: str = result.stdout.decode("utf-8").strip() if tag == "": @@ -121,14 +117,17 @@ def get_latest_release_notes() -> str: ) rev_range: str = "" if latest_tag is None else f"{latest_tag}..{latest_version}" command: list[str] = [ - "uvx", "--from", "commitizen", "cz", "changelog", rev_range, "--dry-run", "--unreleased-version", latest_version + "uvx", + "--from", + "commitizen", + "cz", + "changelog", + rev_range, + "--dry-run", + "--unreleased-version", + latest_version, ] - result: subprocess.CompletedProcess = subprocess.run( - command, - cwd=REPO_FOLDER, - capture_output=True, - check=True - ) + result: subprocess.CompletedProcess = subprocess.run(command, cwd=REPO_FOLDER, capture_output=True, check=True) return result.stdout.decode("utf-8") From bf769cc1e2beec66e6cb661b709d2b07697c3f29 Mon Sep 17 00:00:00 2001 From: Kyle Oliver Date: Fri, 1 Aug 2025 18:22:58 -0400 Subject: [PATCH 3/4] chore: update demo to the latest cookiecutter-robust-python --- .cookiecutter.json | 2 +- .cruft.json | 4 ++-- .github/workflows/build-docs.yml | 4 ++-- noxfile.py | 8 +++++++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.cookiecutter.json b/.cookiecutter.json index d008475..89ba1b9 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -1,5 +1,5 @@ { - "_commit": "e1fd2598ee86662bb9d36989718b6277d438af09", + "_commit": "f46d0e9611ca496d3600e43343a01dcfb86caee6", "_template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", "add_rust_extension": false, "author": "Kyle Oliver", diff --git a/.cruft.json b/.cruft.json index c03f6c3..db5dd5c 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "commit": "e1fd2598ee86662bb9d36989718b6277d438af09", + "commit": "f46d0e9611ca496d3600e43343a01dcfb86caee6", "checkout": null, "context": { "cookiecutter": { @@ -20,7 +20,7 @@ "license": "MIT", "development_status": "Development Status :: 1 - Planning", "_template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "_commit": "e1fd2598ee86662bb9d36989718b6277d438af09" + "_commit": "f46d0e9611ca496d3600e43343a01dcfb86caee6" } }, "directory": null diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index e7d5c3e..c0f80c0 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -11,8 +11,8 @@ on: - "noxfile.py" - "pyproject.toml" - ".github/workflows/build-docs.yml" - - ".ruff.toml" # Affects docstrings via linting - - "pyrightconfig.json" # Affects type hints in docs + - ".ruff.toml" # Affects docstrings via linting + - "pyrightconfig.json" # Affects type hints in docs push: branches: diff --git a/noxfile.py b/noxfile.py index 3f81dd0..aaaeccb 100644 --- a/noxfile.py +++ b/noxfile.py @@ -64,7 +64,13 @@ def setup_venv(session: Session) -> None: def setup_remote(session: Session) -> None: """Set up the remote repository for the current project.""" command: list[str] = [ - "python", SCRIPTS_FOLDER / "setup-remote.py", REPO_ROOT, "--host", REPOSITORY_HOST, "--path", REPOSITORY_PATH + "python", + SCRIPTS_FOLDER / "setup-remote.py", + REPO_ROOT, + "--host", + REPOSITORY_HOST, + "--path", + REPOSITORY_PATH, ] session.run(*command, external=True) From d02d22da2a83460fc7108b5e6f92e2dd5507dc71 Mon Sep 17 00:00:00 2001 From: Kyle Oliver Date: Fri, 1 Aug 2025 18:23:24 -0400 Subject: [PATCH 4/4] =?UTF-8?q?bump:=20version=200.23.0=20=E2=86=92=200.24?= =?UTF-8?q?.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 2 ++ pyproject.toml | 2 +- uv.lock | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac13726..fee30e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## v0.24.0 (2025-08-01) + ## v0.23.0 (2025-08-01) ## v0.21.0 (2025-07-27) diff --git a/pyproject.toml b/pyproject.toml index 3fcfe0f..f490ed0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "robust-python-demo" -version = "0.23.0" +version = "0.24.0" description = "robust-python-demo" authors = [ { name = "Kyle Oliver", email = "56kyleoliver+cookiecutter-robust-python@gmail.com" }, diff --git a/uv.lock b/uv.lock index 95b4b5d..9a4c35a 100644 --- a/uv.lock +++ b/uv.lock @@ -1092,7 +1092,7 @@ wheels = [ [[package]] name = "robust-python-demo" -version = "0.23.0" +version = "0.24.0" source = { editable = "." } dependencies = [ { name = "loguru" },