Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
2 changes: 1 addition & 1 deletion RELEASE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ But you might still need to adapt your code:

### Cookiecutter template

<!-- Here new features for cookiecutter specifically -->
- Dependencies have been updated.
Copy link

Copilot AI Oct 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This release note is too generic; specify key impactful changes (e.g., support for pylint 4 by widening the upper bound, protobuf range widened to <8, grpcio minimum bump, SDK version range updates) so consumers understand potential upgrade considerations.

Suggested change
- Dependencies have been updated.
- Dependency updates:
- Widened `pylint` upper bound to support v4.
- Widened `protobuf` version range to `<8`.
- Bumped minimum `grpcio` version.
- Updated SDK version range.

Copilot uses AI. Check for mistakes.

## Bug Fixes

Expand Down
46 changes: 23 additions & 23 deletions cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -44,35 +44,35 @@ requires-python = ">= 3.11, < 4"
# TODO(cookiecutter): Remove and add more dependencies if appropriate
{%- if cookiecutter.type in ("actor", "model") %}
dependencies = [
"typing-extensions >= 4.12.2, < 5",
"typing-extensions >= 4.14.1, < 5",
# Make sure to update the version for cross-referencing also in the
# mkdocs.yml file when changing the version here (look for the config key
# plugins.mkdocstrings.handlers.python.import)
"frequenz-sdk >= 1.0.0rc1500, < 1.0.0rc1600",
"frequenz-sdk >= 1.0.0rc2100, < 1.0.0rc2200",
]
{%- elif cookiecutter.type == "app" %}
dependencies = [
"typing-extensions == 4.12.2",
"typing-extensions == 4.14.1",
# Make sure to update the version for cross-referencing also in the
# mkdocs.yml file when changing the version here (look for the config key
# plugins.mkdocstrings.handlers.python.import)
"frequenz-sdk == 1.0.0rc1500",
"frequenz-sdk == 1.0.0rc2100",
]
{%- elif cookiecutter.type == "api" %}
dependencies = [
"frequenz-api-common >= 0.6.3, < 0.7.0",
"frequenz-api-common >= 0.6.3, < 1",
# We can't widen beyond the current value unless we bump the minimum
# requirements too because of protobuf cross-version runtime guarantees:
# https://protobuf.dev/support/cross-version-runtime-guarantee/#major
"protobuf >= 5.29.3, < 7", # Do not widen beyond 7!
"protobuf >= 6.32.0, < 8", # Do not widen beyond 8!
# We couldn't find any document with a spec about the cross-version runtime
# guarantee for grpcio, so unless we find one in the future, we'll assume
# major version jumps are not compatible
"grpcio >= 1.70.0, < 2", # Do not widen beyond 2!
"grpcio >= 1.74.0, < 2", # Do not widen beyond 2!
]
{%- else %}
dependencies = [
"typing-extensions >= 4.12.2, < 5",
"typing-extensions >= 4.14.1, < 5",
]
{%- endif %}
dynamic = ["version"]
Expand All @@ -84,36 +84,36 @@ email = "{{cookiecutter.author_email}}"
# TODO(cookiecutter): Remove and add more optional dependencies if appropriate
[project.optional-dependencies]
dev-flake8 = [
"flake8 == 7.1.1",
"flake8 == 7.3.0",
"flake8-docstrings == 1.7.0",
"flake8-pyproject == 1.2.3", # For reading the flake8 config from pyproject.toml
"pydoclint == 0.6.0",
"pydoclint == 0.6.10",
"pydocstyle == 6.3.0",
]
dev-formatting = ["black == 25.1.0", "isort == 6.0.0"]
dev-mkdocs = [
"Markdown == 3.7",
"Markdown == 3.8.2",
"black == 25.1.0",
"mike == 2.1.3",
"mkdocs-gen-files == 0.5.0",
"mkdocs-literate-nav == 0.6.1",
"mkdocs-macros-plugin == 1.3.7",
"mkdocs-material == 9.6.2",
"mkdocstrings[python] == 0.28.0",
"mkdocstrings-python == 1.14.6",
"mkdocs-literate-nav == 0.6.2",
"mkdocs-macros-plugin == 1.3.9",
"mkdocs-material == 9.6.18",
"mkdocstrings[python] == 0.30.0",
"mkdocstrings-python == 1.17.0",
"frequenz-repo-config[{{cookiecutter.type}}] == 0.13.1",
]
dev-mypy = [
"mypy == 1.9.0",
{%- if cookiecutter.type == "api" %}
"grpc-stubs == 1.53.0.5",
"grpc-stubs == 1.53.0.6",
{%- endif %}
"types-Markdown == 3.7.0.20241204",
"types-Markdown == 3.8.0.20250809",
# For checking the noxfile, docs/ script, and tests
"{{cookiecutter.pypi_package_name}}[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-noxfile = [
"nox == 2024.10.9",
"nox == 2025.5.1",
"frequenz-repo-config[{{cookiecutter.type}}] == 0.13.1",
]
dev-pylint = [
Expand All @@ -122,13 +122,13 @@ dev-pylint = [
"{{cookiecutter.pypi_package_name}}[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-pytest = [
"pytest == 8.3.4",
"pylint == 3.3.4", # We need this to check for the examples
"pytest == 8.4.1",
"pylint == 3.3.8", # We need this to check for the examples
Copy link

Copilot AI Oct 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The root project now allows pylint <5 and pins 4.0.0, but the template still pins 3.3.8, creating an inconsistency that will cause newly generated projects to lag behind the supported major version. Either bump this pin to 4.0.0 (or a compatible >= constraint within <5) or document why templates intentionally remain on 3.3.8; also update the golden test fixtures accordingly after adjusting.

Suggested change
"pylint == 3.3.8", # We need this to check for the examples
"pylint == 4.0.0", # We need this to check for the examples

Copilot uses AI. Check for mistakes.
"frequenz-repo-config[extra-lint-examples] == 0.13.1",
{%- if cookiecutter.type != "api" %}
"pytest-mock == 3.14.0",
"pytest-asyncio == 0.25.3",
"async-solipsism == 0.7",
"pytest-asyncio == 1.1.0",
"async-solipsism == 0.8",
{%- endif %}
]
dev = [
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ app = []
lib = []
model = []
extra-lint-examples = [
"pylint >= 2.17.3, < 4",
"pylint >= 2.17.3, < 5",
"pytest >= 7.3.0, < 9",
"sybil >= 6.1.1, < 10",
]
Expand Down Expand Up @@ -105,7 +105,7 @@ dev-pylint = [
]
dev-pytest = [
"pytest == 8.3.5",
"pylint == 3.3.7", # We need this to check for the examples
"pylint == 4.0.0", # We need this to check for the examples
"cookiecutter == 2.6.0", # For checking the cookiecutter scripts
"jinja2 == 3.1.6", # For checking the cookiecutter scripts
"sybil >= 6.1.1, < 10", # Should be consistent with the extra-lint-examples dependency
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ classifiers = [
requires-python = ">= 3.11, < 4"
# TODO(cookiecutter): Remove and add more dependencies if appropriate
dependencies = [
"typing-extensions >= 4.12.2, < 5",
"typing-extensions >= 4.14.1, < 5",
# Make sure to update the version for cross-referencing also in the
# mkdocs.yml file when changing the version here (look for the config key
# plugins.mkdocstrings.handlers.python.import)
"frequenz-sdk >= 1.0.0rc1500, < 1.0.0rc1600",
"frequenz-sdk >= 1.0.0rc2100, < 1.0.0rc2200",
]
dynamic = ["version"]

Expand All @@ -43,33 +43,33 @@ email = "[email protected]"
# TODO(cookiecutter): Remove and add more optional dependencies if appropriate
[project.optional-dependencies]
dev-flake8 = [
"flake8 == 7.1.1",
"flake8 == 7.3.0",
"flake8-docstrings == 1.7.0",
"flake8-pyproject == 1.2.3", # For reading the flake8 config from pyproject.toml
"pydoclint == 0.6.0",
"pydoclint == 0.6.10",
"pydocstyle == 6.3.0",
]
dev-formatting = ["black == 25.1.0", "isort == 6.0.0"]
dev-mkdocs = [
"Markdown == 3.7",
"Markdown == 3.8.2",
"black == 25.1.0",
"mike == 2.1.3",
"mkdocs-gen-files == 0.5.0",
"mkdocs-literate-nav == 0.6.1",
"mkdocs-macros-plugin == 1.3.7",
"mkdocs-material == 9.6.2",
"mkdocstrings[python] == 0.28.0",
"mkdocstrings-python == 1.14.6",
"mkdocs-literate-nav == 0.6.2",
"mkdocs-macros-plugin == 1.3.9",
"mkdocs-material == 9.6.18",
"mkdocstrings[python] == 0.30.0",
"mkdocstrings-python == 1.17.0",
"frequenz-repo-config[actor] == 0.13.1",
]
dev-mypy = [
"mypy == 1.9.0",
"types-Markdown == 3.7.0.20241204",
"types-Markdown == 3.8.0.20250809",
# For checking the noxfile, docs/ script, and tests
"frequenz-actor-test[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-noxfile = [
"nox == 2024.10.9",
"nox == 2025.5.1",
"frequenz-repo-config[actor] == 0.13.1",
]
dev-pylint = [
Expand All @@ -78,12 +78,12 @@ dev-pylint = [
"frequenz-actor-test[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-pytest = [
"pytest == 8.3.4",
"pylint == 3.3.4", # We need this to check for the examples
"pytest == 8.4.1",
"pylint == 3.3.8", # We need this to check for the examples
"frequenz-repo-config[extra-lint-examples] == 0.13.1",
"pytest-mock == 3.14.0",
"pytest-asyncio == 0.25.3",
"async-solipsism == 0.7",
"pytest-asyncio == 1.1.0",
"async-solipsism == 0.8",
]
dev = [
"frequenz-actor-test[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ classifiers = [
requires-python = ">= 3.11, < 4"
# TODO(cookiecutter): Remove and add more dependencies if appropriate
dependencies = [
"frequenz-api-common >= 0.6.3, < 0.7.0",
"frequenz-api-common >= 0.6.3, < 1",
# We can't widen beyond the current value unless we bump the minimum
# requirements too because of protobuf cross-version runtime guarantees:
# https://protobuf.dev/support/cross-version-runtime-guarantee/#major
"protobuf >= 5.29.3, < 7", # Do not widen beyond 7!
"protobuf >= 6.32.0, < 8", # Do not widen beyond 8!
# We couldn't find any document with a spec about the cross-version runtime
# guarantee for grpcio, so unless we find one in the future, we'll assume
# major version jumps are not compatible
"grpcio >= 1.70.0, < 2", # Do not widen beyond 2!
"grpcio >= 1.74.0, < 2", # Do not widen beyond 2!
]
dynamic = ["version"]

Expand All @@ -54,34 +54,34 @@ email = "[email protected]"
# TODO(cookiecutter): Remove and add more optional dependencies if appropriate
[project.optional-dependencies]
dev-flake8 = [
"flake8 == 7.1.1",
"flake8 == 7.3.0",
"flake8-docstrings == 1.7.0",
"flake8-pyproject == 1.2.3", # For reading the flake8 config from pyproject.toml
"pydoclint == 0.6.0",
"pydoclint == 0.6.10",
"pydocstyle == 6.3.0",
]
dev-formatting = ["black == 25.1.0", "isort == 6.0.0"]
dev-mkdocs = [
"Markdown == 3.7",
"Markdown == 3.8.2",
"black == 25.1.0",
"mike == 2.1.3",
"mkdocs-gen-files == 0.5.0",
"mkdocs-literate-nav == 0.6.1",
"mkdocs-macros-plugin == 1.3.7",
"mkdocs-material == 9.6.2",
"mkdocstrings[python] == 0.28.0",
"mkdocstrings-python == 1.14.6",
"mkdocs-literate-nav == 0.6.2",
"mkdocs-macros-plugin == 1.3.9",
"mkdocs-material == 9.6.18",
"mkdocstrings[python] == 0.30.0",
"mkdocstrings-python == 1.17.0",
"frequenz-repo-config[api] == 0.13.1",
]
dev-mypy = [
"mypy == 1.9.0",
"grpc-stubs == 1.53.0.5",
"types-Markdown == 3.7.0.20241204",
"grpc-stubs == 1.53.0.6",
"types-Markdown == 3.8.0.20250809",
# For checking the noxfile, docs/ script, and tests
"frequenz-api-test[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-noxfile = [
"nox == 2024.10.9",
"nox == 2025.5.1",
"frequenz-repo-config[api] == 0.13.1",
]
dev-pylint = [
Expand All @@ -90,8 +90,8 @@ dev-pylint = [
"frequenz-api-test[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-pytest = [
"pytest == 8.3.4",
"pylint == 3.3.4", # We need this to check for the examples
"pytest == 8.4.1",
"pylint == 3.3.8", # We need this to check for the examples
"frequenz-repo-config[extra-lint-examples] == 0.13.1",
]
dev = [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ classifiers = [
requires-python = ">= 3.11, < 4"
# TODO(cookiecutter): Remove and add more dependencies if appropriate
dependencies = [
"typing-extensions == 4.12.2",
"typing-extensions == 4.14.1",
# Make sure to update the version for cross-referencing also in the
# mkdocs.yml file when changing the version here (look for the config key
# plugins.mkdocstrings.handlers.python.import)
"frequenz-sdk == 1.0.0rc1500",
"frequenz-sdk == 1.0.0rc2100",
]
dynamic = ["version"]

Expand All @@ -42,33 +42,33 @@ email = "[email protected]"
# TODO(cookiecutter): Remove and add more optional dependencies if appropriate
[project.optional-dependencies]
dev-flake8 = [
"flake8 == 7.1.1",
"flake8 == 7.3.0",
"flake8-docstrings == 1.7.0",
"flake8-pyproject == 1.2.3", # For reading the flake8 config from pyproject.toml
"pydoclint == 0.6.0",
"pydoclint == 0.6.10",
"pydocstyle == 6.3.0",
]
dev-formatting = ["black == 25.1.0", "isort == 6.0.0"]
dev-mkdocs = [
"Markdown == 3.7",
"Markdown == 3.8.2",
"black == 25.1.0",
"mike == 2.1.3",
"mkdocs-gen-files == 0.5.0",
"mkdocs-literate-nav == 0.6.1",
"mkdocs-macros-plugin == 1.3.7",
"mkdocs-material == 9.6.2",
"mkdocstrings[python] == 0.28.0",
"mkdocstrings-python == 1.14.6",
"mkdocs-literate-nav == 0.6.2",
"mkdocs-macros-plugin == 1.3.9",
"mkdocs-material == 9.6.18",
"mkdocstrings[python] == 0.30.0",
"mkdocstrings-python == 1.17.0",
"frequenz-repo-config[app] == 0.13.1",
]
dev-mypy = [
"mypy == 1.9.0",
"types-Markdown == 3.7.0.20241204",
"types-Markdown == 3.8.0.20250809",
# For checking the noxfile, docs/ script, and tests
"frequenz-app-test[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-noxfile = [
"nox == 2024.10.9",
"nox == 2025.5.1",
"frequenz-repo-config[app] == 0.13.1",
]
dev-pylint = [
Expand All @@ -77,12 +77,12 @@ dev-pylint = [
"frequenz-app-test[dev-mkdocs,dev-noxfile,dev-pytest]",
]
dev-pytest = [
"pytest == 8.3.4",
"pylint == 3.3.4", # We need this to check for the examples
"pytest == 8.4.1",
"pylint == 3.3.8", # We need this to check for the examples
"frequenz-repo-config[extra-lint-examples] == 0.13.1",
"pytest-mock == 3.14.0",
"pytest-asyncio == 0.25.3",
"async-solipsism == 0.7",
"pytest-asyncio == 1.1.0",
"async-solipsism == 0.8",
]
dev = [
"frequenz-app-test[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]",
Expand Down
Loading
Loading