diff --git a/changelog.rst b/changelog.rst index a2a8294..8f809f9 100644 --- a/changelog.rst +++ b/changelog.rst @@ -1,3 +1,93 @@ .. towncrier release notes start + +Copier Template 1.5 (2024-12-15) +================================ + +Features +-------- + +- Add support for immutable modules in template packages, including class + definitions and tests. + + +Copier Template 1.4 (2024-12-13) +================================ + +Features +-------- + +- Add code style validation and documentation for Python and Rust. +- Add development guide with detailed style and practices documentation. + + +Copier Template 1.3 (2024-12-12) +================================ + +Features +-------- + +- Add support for injecting common internals into foundational packages: + - Docstring utilities + - Immutable types + - Base imports +- Add Pylint plugin for path-based check disabling. + + +Copier Template 1.2 (2024-12-11) +================================ + +Features +-------- + +- Add improved configuration options for Rust integration: + - Configurable crate names + - Configurable extension module names +- Change to GitHub-based badge for license. +- Add ``cargo-deny`` configuration for Rust dependencies. + + +Copier Template 1.1 (2024-12-10) +================================ + +Features +-------- + +- Version Github workflows by tag in Copier answers ``_commit`` field. + + +Copier Template 1.0.2 (2024-12-10) +================================== + +Fixes +----- + +- Properly specify template directory. + + +Copier Template 1.0.1 (2024-12-08) +================================== + +Fixes +----- + +- Fix assorted issues in template and workflows. + + +Copier Template 1.0 (2024-12-05) +================================ + +Features +-------- + +- Add Copier template with support for Python packages: + - Modern Python packaging using Hatch + - Sphinx documentation framework + - Quality assurance tools configuration + - Optional Rust extension support via PyO3/Maturin +- Add reusable GitHub Actions workflows and composite actions: + - Cross-repository testing workflow + - Documentation generation and publication + - Package building and publication + - Code quality reporting diff --git a/template/documentation/sphinx/development/practices.rst b/template/documentation/sphinx/development/practices.rst.jinja similarity index 97% rename from template/documentation/sphinx/development/practices.rst rename to template/documentation/sphinx/development/practices.rst.jinja index 961db3a..edce4a0 100644 --- a/template/documentation/sphinx/development/practices.rst +++ b/template/documentation/sphinx/development/practices.rst.jinja @@ -31,7 +31,9 @@ Documentation or which attempt to provide function docstrings in the style of Google, NumPy, Sphinx, etc..., will be rejected. +{% if enable_rust_extension -%} .. todo:: Rust Documentation +{%- endif %} * Use long option names, whenever possible, in command line examples. Readers, who are unfamiliar with a command, should not have to look up the meanings of @@ -51,7 +53,9 @@ Exceptional Conditions ``from`` original exception or raise a new exception with original exception as the ``__context__``. Or properly handle the exception. +{% if enable_rust_extension -%} .. todo:: Rust Panics +{%- endif %} Imports =============================================================================== diff --git a/template/documentation/sphinx/development/releases.rst b/template/documentation/sphinx/development/releases.rst index e2aed52..c2814d0 100644 --- a/template/documentation/sphinx/development/releases.rst +++ b/template/documentation/sphinx/development/releases.rst @@ -129,3 +129,76 @@ Postrelease Patch 10. Cherry-pick patch and Towncrier commits back to ``master`` branch, resolving conflicts as necessary. + +Changelog Entries +=============================================================================== + +The project uses `Towncrier `_ to manage its +changelog. When making changes that should be noted in the changelog, add a +file ("fragment") to the ``documentation/towncrier`` directory with of +``..rst``, for changes with a Github issue, or +``+.<type>.rst``, for changes without an associated issue number. + +The entries will be collected and organized when a release is made, as +described in the release process sections above. + +Available Types +------------------------------------------------------------------------------- + +* ``bugfix``: For bug fixes +* ``docs``: For documentation improvements +* ``feature``: For new features +* ``platform``: For changes to supported platforms +* ``removal``: For deprecations and removals + +Format +------------------------------------------------------------------------------- + +The file should contain a concise description of the change written in present +tense. For example: + +.. code-block:: rst + :caption: documentation/towncrier/+immutable-modules.feature.rst + + Add support for immutable module reclassification. + +The description should: + +* Start with a capital letter +* End with a period +* Use present tense (e.g., "Add", "Fix", "Update") +* Focus on the what and why, not the how +* Be understandable by users, not just developers + +Examples +------------------------------------------------------------------------------- + +Bug Fix: + .. code-block:: rst + :caption: documentation/towncrier/456.bugfix.rst + + Fix attribute visibility in immutable modules. + +Documentation: + .. code-block:: rst + :caption: documentation/towncrier/457.docs.rst + + Improve release process documentation with Towncrier details. + +Feature: + .. code-block:: rst + :caption: documentation/towncrier/458.feature.rst + + Add recursive module reclassification support. + +Platform: + .. code-block:: rst + :caption: documentation/towncrier/459.platform.rst + + Add support for Python 3.13. + +Removal: + .. code-block:: rst + :caption: documentation/towncrier/460.removal.rst + + Remove deprecated ``make_immutable`` function. diff --git a/template/documentation/sphinx/development/style.rst b/template/documentation/sphinx/development/style.rst.jinja similarity index 98% rename from template/documentation/sphinx/development/style.rst rename to template/documentation/sphinx/development/style.rst.jinja index 344e734..b5c32f8 100644 --- a/template/documentation/sphinx/development/style.rst +++ b/template/documentation/sphinx/development/style.rst.jinja @@ -48,7 +48,9 @@ Code Style style other than the project code style, will be rejected. +{% if enable_rust_extension -%} .. todo:: Rust Guidance +{%- endif %} Specific Preferences @@ -186,9 +188,8 @@ the last element unless the collection has a trailing comma:: if is_valid( value ) ] # Multi-line conditional statements - if ( - validate_input( data, strict = True ) - and process_ready( ) + if ( validate_input( data, strict = True ) + and process_ready( ) ): process( data ) diff --git a/template/pyproject.toml.jinja b/template/pyproject.toml.jinja index 268b36a..4a03f1e 100644 --- a/template/pyproject.toml.jinja +++ b/template/pyproject.toml.jinja @@ -339,7 +339,7 @@ disable = [ ] # TODO: Latest 'per-file-ignores' code may supports dicts and lists in addition to strings. per-file-ignores = ''' - /tests/:attribute-defined-outside-init,magic-value-comparison,missing-class-docstring,missing-function-docstring,protected-access,unexpected-keyword-arg + /tests/:attribute-defined-outside-init,comparison-with-itself,magic-value-comparison,missing-class-docstring,missing-function-docstring,protected-access,singleton-comparison,superfluous-parens,unexpected-keyword-arg __init__\.py:unused-import ''' # Note: Paths are regexes. [tool.pylint.refactoring]