diff --git a/.cookiecutter.json b/.cookiecutter.json index e397858..89ba1b9 100644 --- a/.cookiecutter.json +++ b/.cookiecutter.json @@ -1,5 +1,5 @@ { - "_commit": "a6b393f77763f21fffba1b3c994c772bba8ef19b", + "_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 c9378dc..db5dd5c 100644 --- a/.cruft.json +++ b/.cruft.json @@ -1,6 +1,6 @@ { "template": "C:\\Users\\56kyl\\source\\repos\\cookiecutter-robust-python", - "commit": "a6b393f77763f21fffba1b3c994c772bba8ef19b", + "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": "a6b393f77763f21fffba1b3c994c772bba8ef19b" + "_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/.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/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/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..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) @@ -134,7 +140,7 @@ def tests_python(session: Session) -> None: "--cov-report=term", "--cov-report=xml", f"--junitxml={junitxml_file}", - "tests/" + "tests/", ) 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/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") 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" },