diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index b99e3a30..15f6883b 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -22,11 +22,11 @@ But you might still need to adapt your code: ## New Features - +* Pylint4 is now supported. ### Cookiecutter template - +- Dependencies have been updated. ## Bug Fixes diff --git a/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml b/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml index 3ee77e64..8e62afeb 100644 --- a/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml +++ b/cookiecutter/{{cookiecutter.github_repo_name}}/pyproject.toml @@ -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"] @@ -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 = [ @@ -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 "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 = [ diff --git a/pyproject.toml b/pyproject.toml index 0b0a7472..1f90aaaa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -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", ] @@ -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 diff --git a/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml index 4528a8af..e8f896b0 100644 --- a/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/actor/frequenz-actor-test/pyproject.toml @@ -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"] @@ -43,33 +43,33 @@ email = "floss@frequenz.com" # 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 = [ @@ -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]", diff --git a/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml index e063a5dc..eebb5994 100644 --- a/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/api/frequenz-api-test/pyproject.toml @@ -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"] @@ -54,34 +54,34 @@ email = "floss@frequenz.com" # 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 = [ @@ -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 = [ diff --git a/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml index dd744057..06711c8b 100644 --- a/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/app/frequenz-app-test/pyproject.toml @@ -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"] @@ -42,33 +42,33 @@ email = "floss@frequenz.com" # 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 = [ @@ -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]", diff --git a/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml index 160f5c5a..e27293d4 100644 --- a/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/lib/frequenz-test-python/pyproject.toml @@ -28,7 +28,7 @@ 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", ] dynamic = ["version"] @@ -39,33 +39,33 @@ email = "floss@frequenz.com" # 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[lib] == 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-test[dev-mkdocs,dev-noxfile,dev-pytest]", ] dev-noxfile = [ - "nox == 2024.10.9", + "nox == 2025.5.1", "frequenz-repo-config[lib] == 0.13.1", ] dev-pylint = [ @@ -74,12 +74,12 @@ dev-pylint = [ "frequenz-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-test[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]", diff --git a/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml b/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml index f841ae70..d76da08b 100644 --- a/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml +++ b/tests_golden/integration/test_cookiecutter_generation/model/frequenz-model-test/pyproject.toml @@ -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"] @@ -43,33 +43,33 @@ email = "floss@frequenz.com" # 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[model] == 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-model-test[dev-mkdocs,dev-noxfile,dev-pytest]", ] dev-noxfile = [ - "nox == 2024.10.9", + "nox == 2025.5.1", "frequenz-repo-config[model] == 0.13.1", ] dev-pylint = [ @@ -78,12 +78,12 @@ dev-pylint = [ "frequenz-model-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-model-test[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]",