From 9c99ae04fe78e413dc0b8aac1ab7c490b922a342 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Jul 2025 07:21:59 +0000 Subject: [PATCH 01/21] Bump the minor group with 2 updates Bumps the minor group with 2 updates: [flake8](https://github.com/pycqa/flake8) and [pytest](https://github.com/pytest-dev/pytest). Updates `flake8` from 7.2.0 to 7.3.0 - [Commits](https://github.com/pycqa/flake8/compare/7.2.0...7.3.0) Updates `pytest` from 8.3.5 to 8.4.1 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.5...8.4.1) --- updated-dependencies: - dependency-name: flake8 dependency-version: 7.3.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor - dependency-name: pytest dependency-version: 8.4.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index d3015749..f47e1ae3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,7 @@ email = "floss@frequenz.com" [project.optional-dependencies] dev-flake8 = [ - "flake8 == 7.2.0", + "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.6", @@ -87,7 +87,7 @@ dev-pylint = [ "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", ] dev-pytest = [ - "pytest == 8.3.5", + "pytest == 8.4.1", "frequenz-repo-config[extra-lint-examples] == 0.13.4", "pytest-mock == 3.14.1", "pytest-asyncio == 0.26.0", From 478dc5df0b802b4e06ca13ada8b16a75c2fb76de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Jul 2025 07:34:26 +0000 Subject: [PATCH 02/21] Bump the patch group with 5 updates Bumps the patch group with 5 updates: | Package | From | To | | --- | --- | --- | | [markdown](https://github.com/Python-Markdown/markdown) | `3.8` | `3.8.2` | | [mkdocstrings-python](https://github.com/mkdocstrings/python) | `1.16.11` | `1.16.12` | | [frequenz-repo-config[lib]](https://github.com/frequenz-floss/frequenz-repo-config-python) | `0.13.4` | `0.13.5` | | [mypy](https://github.com/python/mypy) | `1.16.0` | `1.16.1` | | [frequenz-repo-config[extra-lint-examples]](https://github.com/frequenz-floss/frequenz-repo-config-python) | `0.13.4` | `0.13.5` | Updates `markdown` from 3.8 to 3.8.2 - [Release notes](https://github.com/Python-Markdown/markdown/releases) - [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md) - [Commits](https://github.com/Python-Markdown/markdown/compare/3.8...3.8.2) Updates `mkdocstrings-python` from 1.16.11 to 1.16.12 - [Release notes](https://github.com/mkdocstrings/python/releases) - [Changelog](https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md) - [Commits](https://github.com/mkdocstrings/python/compare/1.16.11...1.16.12) Updates `frequenz-repo-config[lib]` from 0.13.4 to 0.13.5 - [Release notes](https://github.com/frequenz-floss/frequenz-repo-config-python/releases) - [Changelog](https://github.com/frequenz-floss/frequenz-repo-config-python/blob/v0.x.x/RELEASE_NOTES.md) - [Commits](https://github.com/frequenz-floss/frequenz-repo-config-python/compare/v0.13.4...v0.13.5) Updates `mypy` from 1.16.0 to 1.16.1 - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.16.0...v1.16.1) Updates `frequenz-repo-config[extra-lint-examples]` from 0.13.4 to 0.13.5 - [Release notes](https://github.com/frequenz-floss/frequenz-repo-config-python/releases) - [Changelog](https://github.com/frequenz-floss/frequenz-repo-config-python/blob/v0.x.x/RELEASE_NOTES.md) - [Commits](https://github.com/frequenz-floss/frequenz-repo-config-python/compare/v0.13.4...v0.13.5) --- updated-dependencies: - dependency-name: markdown dependency-version: 3.8.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: mkdocstrings-python dependency-version: 1.16.12 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: frequenz-repo-config[lib] dependency-version: 0.13.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: mypy dependency-version: 1.16.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: frequenz-repo-config[extra-lint-examples] dependency-version: 0.13.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index f47e1ae3..9ef37d43 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ requires = [ "setuptools == 80.9.0", "setuptools_scm[toml] == 8.3.1", - "frequenz-repo-config[lib] == 0.13.4", + "frequenz-repo-config[lib] == 0.13.5", ] build-backend = "setuptools.build_meta" @@ -62,25 +62,25 @@ dev-flake8 = [ dev-formatting = ["black == 25.1.0", "isort == 6.0.1"] dev-mkdocs = [ "black == 25.1.0", - "Markdown==3.8", + "Markdown==3.8.2", "mike == 2.1.3", "mkdocs-gen-files == 0.5.0", "mkdocs-literate-nav == 0.6.2", "mkdocs-macros-plugin == 1.3.7", "mkdocs-material == 9.6.14", "mkdocstrings[python] == 0.29.1", - "mkdocstrings-python == 1.16.11", - "frequenz-repo-config[lib] == 0.13.4", + "mkdocstrings-python == 1.16.12", + "frequenz-repo-config[lib] == 0.13.5", ] dev-mypy = [ - "mypy == 1.16.0", + "mypy == 1.16.1", "grpc-stubs == 1.53.0.6", "types-Markdown == 3.8.0.20250415", "types-protobuf == 6.30.2.20250516", # For checking the noxfile, docs/ script, and tests "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", ] -dev-noxfile = ["nox == 2025.5.1", "frequenz-repo-config[lib] == 0.13.4"] +dev-noxfile = ["nox == 2025.5.1", "frequenz-repo-config[lib] == 0.13.5"] dev-pylint = [ "pylint == 3.3.7", # For checking the noxfile, docs/ script, and tests @@ -88,7 +88,7 @@ dev-pylint = [ ] dev-pytest = [ "pytest == 8.4.1", - "frequenz-repo-config[extra-lint-examples] == 0.13.4", + "frequenz-repo-config[extra-lint-examples] == 0.13.5", "pytest-mock == 3.14.1", "pytest-asyncio == 0.26.0", "async-solipsism == 0.7", From b517c51f5a616b06bab9158b8d280948365bbbf2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Jul 2025 09:31:34 +0000 Subject: [PATCH 03/21] Bump pytest-asyncio from 0.26.0 to 1.0.0 Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 0.26.0 to 1.0.0. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v0.26.0...v1.0.0) --- updated-dependencies: - dependency-name: pytest-asyncio dependency-version: 1.0.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9ef37d43..ed4496ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,7 +90,7 @@ dev-pytest = [ "pytest == 8.4.1", "frequenz-repo-config[extra-lint-examples] == 0.13.5", "pytest-mock == 3.14.1", - "pytest-asyncio == 0.26.0", + "pytest-asyncio == 1.0.0", "async-solipsism == 0.7", ] dev = [ From 576d6d7b397ab2ac1e7a4b1ded4e23cc4fb1c796 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 31 Jul 2025 08:10:39 +0000 Subject: [PATCH 04/21] Remove timezonefinder dependency and automatic timezone lookup Remove the `timezonefinder` dependency to significantly reduce package size by 66M+ and improve ARM platform support, as no pre-built wheels are available anymore in PyPI. Signed-off-by: Leandro Lucarella Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> --- RELEASE_NOTES.md | 27 ++++++++--- pyproject.toml | 1 - src/frequenz/client/microgrid/_metadata.py | 21 +-------- tests/test_metadata.py | 54 +++------------------- 4 files changed, 29 insertions(+), 74 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 80e5f0cb..33e27ce8 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,16 +2,31 @@ ## Summary - +This release removes the `timezonefinder` dependency to significantly reduce package size by 66M+ and enable ARM platform support. + +> [!WARNING] +> This is a **breaking change** shipped in a patch release because this feature has no known users. ## Upgrading - +The `Location.timezone` field no longer performs automatic timezone lookup from latitude/longitude coordinates. -## New Features +```python +# Automatic timezone lookup (no longer works) +location = Location(latitude=52.52, longitude=13.405) +print(location.timezone) # Previously: ZoneInfo('Europe/Berlin'), now None +``` - +If you need timezone lookup from coordinates, install [`timezonefinder`](https://pypi.org/project/timezonefinder/) separately and implement manual lookup: -## Bug Fixes +```python +# Install: pip install timezonefinder +from timezonefinder import TimezoneFinder +from zoneinfo import ZoneInfo +from frequenz.client.microgrid import Location - +tf = TimezoneFinder() +tz_name = tf.timezone_at(lat=52.52, lng=13.405) +timezone = ZoneInfo(tz_name) if tz_name else None +location = Location(latitude=52.52, longitude=13.405, timezone=timezone) +``` diff --git a/pyproject.toml b/pyproject.toml index ed4496ea..fe9fcee4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,6 @@ dependencies = [ "frequenz-client-common >= 0.3.2, < 0.4.0", "grpcio >= 1.63.0, < 2", "protobuf >= 5.26.1, < 7", - "timezonefinder >= 6.2.0, < 7", "typing-extensions >= 4.13.0, < 5", ] dynamic = ["version"] diff --git a/src/frequenz/client/microgrid/_metadata.py b/src/frequenz/client/microgrid/_metadata.py index 135dafca..b48c8fd6 100644 --- a/src/frequenz/client/microgrid/_metadata.py +++ b/src/frequenz/client/microgrid/_metadata.py @@ -7,9 +7,6 @@ from zoneinfo import ZoneInfo from frequenz.client.common.microgrid import MicrogridId -from timezonefinder import TimezoneFinder - -_timezone_finder = TimezoneFinder() @dataclass(frozen=True, kw_only=True) @@ -23,23 +20,7 @@ class Location: """The longitude of the microgrid in degree.""" timezone: ZoneInfo | None = None - """The timezone of the microgrid. - - If not passed during construction (or `None` is passed), and there is a `longitude` - and `latitude`, then the timezone wil be looked up in a database based on the - coordinates. This lookup could fail, in which case the timezone will still be - `None`. - """ - - def __post_init__(self) -> None: - """Initialize the timezone of the microgrid.""" - if self.latitude is None or self.longitude is None or self.timezone is not None: - return - - timezone = _timezone_finder.timezone_at(lat=self.latitude, lng=self.longitude) - if timezone: - # The dataclass is frozen, so it needs to use __setattr__ to set the timezone. - object.__setattr__(self, "timezone", ZoneInfo(key=timezone)) + """The timezone of the microgrid.""" @dataclass(frozen=True, kw_only=True) diff --git a/tests/test_metadata.py b/tests/test_metadata.py index 1276d2b5..b14eb35f 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -3,8 +3,6 @@ """Tests for the microgrid metadata types.""" -from collections.abc import Iterator -from unittest.mock import MagicMock, patch from zoneinfo import ZoneInfo import pytest @@ -13,59 +11,20 @@ from frequenz.client.microgrid import Location, Metadata -@pytest.fixture -def timezone_finder() -> Iterator[MagicMock]: - """Return a mock timezone finder.""" - with patch( - "frequenz.client.microgrid._metadata._timezone_finder", autospec=True - ) as mock_timezone_finder: - yield mock_timezone_finder - - -@pytest.mark.parametrize( - "latitude, longitude, timezone", - [ - (None, None, None), - (52.52, None, None), - (None, 13.405, None), - (None, None, ZoneInfo(key="UTC")), - (52.52, None, ZoneInfo(key="UTC")), - (None, 13.405, ZoneInfo(key="UTC")), - (52.52, 13.405, ZoneInfo(key="UTC")), - ], - ids=str, -) -def test_location_timezone_not_looked_up_if_not_possible_or_necessary( - timezone_finder: MagicMock, +@pytest.mark.parametrize("latitude", [None, 52.52], ids=str) +@pytest.mark.parametrize("longitude", [None, 13.405], ids=str) +@pytest.mark.parametrize("timezone", [None, ZoneInfo(key="UTC")], ids=str) +def test_location_initialization( latitude: float | None, longitude: float | None, timezone: ZoneInfo | None, ) -> None: - """Test the location timezone is not looked up if is not necessary or possible.""" - timezone_finder.timezone_at.return_value = "Europe/Berlin" - + """Test location initialization with different combinations of parameters.""" location = Location(latitude=latitude, longitude=longitude, timezone=timezone) assert location.latitude == latitude assert location.longitude == longitude assert location.timezone == timezone - timezone_finder.timezone_at.assert_not_called() - - -@pytest.mark.parametrize("timezone", [None, "Europe/Berlin"], ids=str) -def test_location_timezone_lookup( - timezone_finder: MagicMock, timezone: str | None -) -> None: - """Test the location timezone is looked up if not provided and there is enough info.""" - timezone_finder.timezone_at.return_value = timezone - - location = Location(latitude=52.52, longitude=13.405) - - if timezone is None: - assert location.timezone is None - else: - assert location.timezone == ZoneInfo(key=timezone) - timezone_finder.timezone_at.assert_called_once_with(lat=52.52, lng=13.405) def test_metadata_initialization() -> None: @@ -81,11 +40,12 @@ def test_metadata_initialization() -> None: assert metadata.microgrid_id == microgrid_id assert metadata.location is None - # Test with only location + # Test with only location - timezone should be None even with lat/lng location = Location(latitude=52.52, longitude=13.405) metadata = Metadata(location=location) assert metadata.microgrid_id is None assert metadata.location == location + assert metadata.location.timezone is None # Test with both parameters metadata = Metadata(microgrid_id=microgrid_id, location=location) From c6aa8efa0a183fd994c9897eaaa1e311e52504d7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 03:09:06 +0000 Subject: [PATCH 05/21] Bump mkdocs-material from 9.6.14 to 9.6.16 in the patch group Bumps the patch group with 1 update: [mkdocs-material](https://github.com/squidfunk/mkdocs-material). Updates `mkdocs-material` from 9.6.14 to 9.6.16 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.14...9.6.16) --- updated-dependencies: - dependency-name: mkdocs-material dependency-version: 9.6.16 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fe9fcee4..7cbe98ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ dev-mkdocs = [ "mkdocs-gen-files == 0.5.0", "mkdocs-literate-nav == 0.6.2", "mkdocs-macros-plugin == 1.3.7", - "mkdocs-material == 9.6.14", + "mkdocs-material == 9.6.16", "mkdocstrings[python] == 0.29.1", "mkdocstrings-python == 1.16.12", "frequenz-repo-config[lib] == 0.13.5", From e32bf050cd87968accac5bdcf29b150e7b79591e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 03:09:36 +0000 Subject: [PATCH 06/21] Bump mypy from 1.16.1 to 1.17.1 in the minor group Bumps the minor group with 1 update: [mypy](https://github.com/python/mypy). Updates `mypy` from 1.16.1 to 1.17.1 - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.16.1...v1.17.1) --- updated-dependencies: - dependency-name: mypy dependency-version: 1.17.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fe9fcee4..45819c1f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -72,7 +72,7 @@ dev-mkdocs = [ "frequenz-repo-config[lib] == 0.13.5", ] dev-mypy = [ - "mypy == 1.16.1", + "mypy == 1.17.1", "grpc-stubs == 1.53.0.6", "types-Markdown == 3.8.0.20250415", "types-protobuf == 6.30.2.20250516", From 3eebf412e42aa88ce67873df9b132d96bc81fd39 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 03:09:50 +0000 Subject: [PATCH 07/21] Bump types-markdown from 3.8.0.20250415 to 3.8.0.20250708 Bumps [types-markdown](https://github.com/typeshed-internal/stub_uploader) from 3.8.0.20250415 to 3.8.0.20250708. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-markdown dependency-version: 3.8.0.20250708 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fe9fcee4..15986d44 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,7 +74,7 @@ dev-mkdocs = [ dev-mypy = [ "mypy == 1.16.1", "grpc-stubs == 1.53.0.6", - "types-Markdown == 3.8.0.20250415", + "types-Markdown == 3.8.0.20250708", "types-protobuf == 6.30.2.20250516", # For checking the noxfile, docs/ script, and tests "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", From ebe2d1057f7970d2e8b415d130cc32a727f50ee6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 03:10:05 +0000 Subject: [PATCH 08/21] Bump pytest-asyncio from 1.0.0 to 1.1.0 Bumps [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) from 1.0.0 to 1.1.0. - [Release notes](https://github.com/pytest-dev/pytest-asyncio/releases) - [Commits](https://github.com/pytest-dev/pytest-asyncio/compare/v1.0.0...v1.1.0) --- updated-dependencies: - dependency-name: pytest-asyncio dependency-version: 1.1.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index fe9fcee4..80ddc56a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -89,7 +89,7 @@ dev-pytest = [ "pytest == 8.4.1", "frequenz-repo-config[extra-lint-examples] == 0.13.5", "pytest-mock == 3.14.1", - "pytest-asyncio == 1.0.0", + "pytest-asyncio == 1.1.0", "async-solipsism == 0.7", ] dev = [ From 8b3e1175eb27fedb55059c1663bd375b5cc1145a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 03:54:57 +0000 Subject: [PATCH 09/21] Bump the compatible group with 2 updates Bumps the compatible group with 2 updates: [frequenz-floss/gh-action-nox](https://github.com/frequenz-floss/gh-action-nox) and [frequenz-floss/gh-action-setup-python-with-deps](https://github.com/frequenz-floss/gh-action-setup-python-with-deps). Updates `frequenz-floss/gh-action-nox` from 1.0.0 to 1.0.1 - [Release notes](https://github.com/frequenz-floss/gh-action-nox/releases) - [Commits](https://github.com/frequenz-floss/gh-action-nox/compare/v1.0.0...v1.0.1) Updates `frequenz-floss/gh-action-setup-python-with-deps` from 1.0.0 to 1.0.1 - [Release notes](https://github.com/frequenz-floss/gh-action-setup-python-with-deps/releases) - [Commits](https://github.com/frequenz-floss/gh-action-setup-python-with-deps/compare/v1.0.0...v1.0.1) --- updated-dependencies: - dependency-name: frequenz-floss/gh-action-nox dependency-version: 1.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: compatible - dependency-name: frequenz-floss/gh-action-setup-python-with-deps dependency-version: 1.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: compatible ... Signed-off-by: dependabot[bot] --- .github/workflows/ci-pr.yaml | 4 ++-- .github/workflows/ci.yaml | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci-pr.yaml b/.github/workflows/ci-pr.yaml index 2c74ec0c..09f99f79 100644 --- a/.github/workflows/ci-pr.yaml +++ b/.github/workflows/ci-pr.yaml @@ -17,7 +17,7 @@ jobs: steps: - name: Run nox - uses: frequenz-floss/gh-action-nox@v1.0.0 + uses: frequenz-floss/gh-action-nox@v1.0.1 with: python-version: "3.11" nox-session: ci_checks_max @@ -35,7 +35,7 @@ jobs: submodules: true - name: Setup Python - uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.0 + uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.1 with: python-version: ${{ env.DEFAULT_PYTHON_VERSION }} dependencies: .[dev-mkdocs] diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 55dddda6..ccb6363e 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -45,7 +45,7 @@ jobs: steps: - name: Run nox - uses: frequenz-floss/gh-action-nox@v1.0.0 + uses: frequenz-floss/gh-action-nox@v1.0.1 with: python-version: ${{ matrix.python }} nox-session: ${{ matrix.nox-session }} @@ -84,7 +84,7 @@ jobs: submodules: true - name: Setup Python - uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.0 + uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.1 with: python-version: ${{ env.DEFAULT_PYTHON_VERSION }} dependencies: build @@ -143,7 +143,7 @@ jobs: > pyproject.toml - name: Setup Python - uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.0 + uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.1 with: python-version: ${{ matrix.python }} dependencies: dist/*.whl @@ -182,7 +182,7 @@ jobs: submodules: true - name: Setup Python - uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.0 + uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.1 with: python-version: ${{ env.DEFAULT_PYTHON_VERSION }} dependencies: .[dev-mkdocs] @@ -218,7 +218,7 @@ jobs: submodules: true - name: Setup Python - uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.0 + uses: frequenz-floss/gh-action-setup-python-with-deps@v1.0.1 with: python-version: ${{ env.DEFAULT_PYTHON_VERSION }} dependencies: .[dev-mkdocs] From b91e45dd7177aa6a0aa5fda6473320028ef03559 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 08:30:36 +0000 Subject: [PATCH 10/21] Bump types-protobuf from 6.30.2.20250516 to 6.30.2.20250703 Bumps [types-protobuf](https://github.com/typeshed-internal/stub_uploader) from 6.30.2.20250516 to 6.30.2.20250703. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-protobuf dependency-version: 6.30.2.20250703 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 90a48aef..ce052ee4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,7 @@ dev-mypy = [ "mypy == 1.17.1", "grpc-stubs == 1.53.0.6", "types-Markdown == 3.8.0.20250708", - "types-protobuf == 6.30.2.20250516", + "types-protobuf == 6.30.2.20250703", # For checking the noxfile, docs/ script, and tests "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", ] From 34172dd6e40c84d36e0a4c1cd970e16ef673a625 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 08:30:49 +0000 Subject: [PATCH 11/21] Bump async-solipsism from 0.7 to 0.8 Bumps [async-solipsism](https://github.com/bmerry/async-solipsism) from 0.7 to 0.8. - [Commits](https://github.com/bmerry/async-solipsism/compare/0.7...0.8) --- updated-dependencies: - dependency-name: async-solipsism dependency-version: '0.8' dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 90a48aef..d2c6ccbe 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -90,7 +90,7 @@ dev-pytest = [ "frequenz-repo-config[extra-lint-examples] == 0.13.5", "pytest-mock == 3.14.1", "pytest-asyncio == 1.1.0", - "async-solipsism == 0.7", + "async-solipsism == 0.8", ] dev = [ "frequenz-client-microgrid[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]", From 8ca57d5b38e9428e8f524d628899a43b0066ab4c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 Aug 2025 08:30:57 +0000 Subject: [PATCH 12/21] Bump mkdocstrings[python] in the mkdocstrings group Bumps the mkdocstrings group with 1 update: [mkdocstrings[python]](https://github.com/mkdocstrings/mkdocstrings). Updates `mkdocstrings[python]` from 0.29.1 to 0.30.0 - [Release notes](https://github.com/mkdocstrings/mkdocstrings/releases) - [Changelog](https://github.com/mkdocstrings/mkdocstrings/blob/main/CHANGELOG.md) - [Commits](https://github.com/mkdocstrings/mkdocstrings/compare/0.29.1...0.30.0) --- updated-dependencies: - dependency-name: mkdocstrings[python] dependency-version: 0.30.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mkdocstrings ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 90a48aef..aa978f97 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -67,7 +67,7 @@ dev-mkdocs = [ "mkdocs-literate-nav == 0.6.2", "mkdocs-macros-plugin == 1.3.7", "mkdocs-material == 9.6.16", - "mkdocstrings[python] == 0.29.1", + "mkdocstrings[python] == 0.30.0", "mkdocstrings-python == 1.16.12", "frequenz-repo-config[lib] == 0.13.5", ] From 342aae4c63f6cd5363f7f42e8baccfef62ca0f5a Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Thu, 21 Aug 2025 15:14:50 +0200 Subject: [PATCH 13/21] Clear release notes Signed-off-by: Leandro Lucarella --- RELEASE_NOTES.md | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 33e27ce8..80e5f0cb 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -2,31 +2,16 @@ ## Summary -This release removes the `timezonefinder` dependency to significantly reduce package size by 66M+ and enable ARM platform support. - -> [!WARNING] -> This is a **breaking change** shipped in a patch release because this feature has no known users. + ## Upgrading -The `Location.timezone` field no longer performs automatic timezone lookup from latitude/longitude coordinates. + -```python -# Automatic timezone lookup (no longer works) -location = Location(latitude=52.52, longitude=13.405) -print(location.timezone) # Previously: ZoneInfo('Europe/Berlin'), now None -``` +## New Features -If you need timezone lookup from coordinates, install [`timezonefinder`](https://pypi.org/project/timezonefinder/) separately and implement manual lookup: + -```python -# Install: pip install timezonefinder -from timezonefinder import TimezoneFinder -from zoneinfo import ZoneInfo -from frequenz.client.microgrid import Location +## Bug Fixes -tf = TimezoneFinder() -tz_name = tf.timezone_at(lat=52.52, lng=13.405) -timezone = ZoneInfo(tz_name) if tz_name else None -location = Location(latitude=52.52, longitude=13.405, timezone=timezone) -``` + From b6f5032b93445a6a95d54a1406e8cdb00cdb6f00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 05:41:48 +0000 Subject: [PATCH 14/21] Bump actions/download-artifact from 4 to 5 in the artifacts group Bumps the artifacts group with 1 update: [actions/download-artifact](https://github.com/actions/download-artifact). Updates `actions/download-artifact` from 4 to 5 - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major dependency-group: artifacts ... Signed-off-by: dependabot[bot] --- .github/workflows/ci.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ccb6363e..82d5bb35 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -123,7 +123,7 @@ jobs: run: env - name: Download package - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: dist-packages path: dist @@ -279,7 +279,7 @@ jobs: runs-on: ubuntu-24.04 steps: - name: Download distribution files - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: dist-packages path: dist @@ -325,7 +325,7 @@ jobs: id-token: write steps: - name: Download distribution files - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 with: name: dist-packages path: dist From cf002d487c2b4fb0b953c4dbd0febdd46f193f5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 05:44:30 +0000 Subject: [PATCH 15/21] Bump actions/checkout from 4 to 5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/ci-pr.yaml | 2 +- .github/workflows/ci.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci-pr.yaml b/.github/workflows/ci-pr.yaml index 09f99f79..4ad3582a 100644 --- a/.github/workflows/ci-pr.yaml +++ b/.github/workflows/ci-pr.yaml @@ -30,7 +30,7 @@ jobs: uses: frequenz-floss/gh-action-setup-git@v1.0.0 - name: Fetch sources - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: true diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ccb6363e..4fc2f7bd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -79,7 +79,7 @@ jobs: uses: frequenz-floss/gh-action-setup-git@v1.0.0 - name: Fetch sources - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: true @@ -177,7 +177,7 @@ jobs: uses: frequenz-floss/gh-action-setup-git@v1.0.0 - name: Fetch sources - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: true @@ -213,7 +213,7 @@ jobs: uses: frequenz-floss/gh-action-setup-git@v1.0.0 - name: Fetch sources - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: submodules: true From ff259d12c212a235117661b62a6ac21e453e585e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 06:19:08 +0000 Subject: [PATCH 16/21] Bump mkdocstrings-python in the mkdocstrings group Bumps the mkdocstrings group with 1 update: [mkdocstrings-python](https://github.com/mkdocstrings/python). Updates `mkdocstrings-python` from 1.16.12 to 1.18.2 - [Release notes](https://github.com/mkdocstrings/python/releases) - [Changelog](https://github.com/mkdocstrings/python/blob/main/CHANGELOG.md) - [Commits](https://github.com/mkdocstrings/python/compare/1.16.12...1.18.2) --- updated-dependencies: - dependency-name: mkdocstrings-python dependency-version: 1.18.2 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: mkdocstrings ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0d2ad477..da5264a8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,7 +68,7 @@ dev-mkdocs = [ "mkdocs-macros-plugin == 1.3.7", "mkdocs-material == 9.6.16", "mkdocstrings[python] == 0.30.0", - "mkdocstrings-python == 1.16.12", + "mkdocstrings-python == 1.18.2", "frequenz-repo-config[lib] == 0.13.5", ] dev-mypy = [ From 6c0dc5ae0d5dbe7354a9e44e54169ca17ae96a1e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 06:22:04 +0000 Subject: [PATCH 17/21] Bump pydoclint from 0.6.6 to 0.6.11 Bumps [pydoclint](https://github.com/jsh9/pydoclint) from 0.6.6 to 0.6.11. - [Release notes](https://github.com/jsh9/pydoclint/releases) - [Changelog](https://github.com/jsh9/pydoclint/blob/main/CHANGELOG.md) - [Commits](https://github.com/jsh9/pydoclint/compare/0.6.6...0.6.11) --- updated-dependencies: - dependency-name: pydoclint dependency-version: 0.6.11 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0d2ad477..910fa71a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ dev-flake8 = [ "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.6", + "pydoclint == 0.6.11", "pydocstyle == 6.3.0", ] dev-formatting = ["black == 25.1.0", "isort == 6.0.1"] From f65c970671df049d12466adb6ad7f3198eb4758f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 06:22:38 +0000 Subject: [PATCH 18/21] Bump setuptools-scm[toml] from 8.3.1 to 9.2.0 Bumps [setuptools-scm[toml]](https://github.com/pypa/setuptools-scm) from 8.3.1 to 9.2.0. - [Release notes](https://github.com/pypa/setuptools-scm/releases) - [Changelog](https://github.com/pypa/setuptools-scm/blob/main/CHANGELOG.md) - [Commits](https://github.com/pypa/setuptools-scm/compare/v8.3.1...v9.2.0) --- updated-dependencies: - dependency-name: setuptools-scm[toml] dependency-version: 9.2.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0d2ad477..acc2b95f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ [build-system] requires = [ "setuptools == 80.9.0", - "setuptools_scm[toml] == 8.3.1", + "setuptools_scm[toml] == 9.2.0", "frequenz-repo-config[lib] == 0.13.5", ] build-backend = "setuptools.build_meta" From 33453c39c1735c2cd84f12451968fffbb062bf4f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 06:24:49 +0000 Subject: [PATCH 19/21] Bump the patch group with 3 updates Bumps the patch group with 3 updates: [mkdocs-macros-plugin](https://github.com/fralau/mkdocs_macros_plugin), [mkdocs-material](https://github.com/squidfunk/mkdocs-material) and [pylint](https://github.com/pylint-dev/pylint). Updates `mkdocs-macros-plugin` from 1.3.7 to 1.3.9 - [Release notes](https://github.com/fralau/mkdocs_macros_plugin/releases) - [Changelog](https://github.com/fralau/mkdocs-macros-plugin/blob/master/CHANGELOG.md) - [Commits](https://github.com/fralau/mkdocs_macros_plugin/compare/v1.3.7...v1.3.9) Updates `mkdocs-material` from 9.6.16 to 9.6.18 - [Release notes](https://github.com/squidfunk/mkdocs-material/releases) - [Changelog](https://github.com/squidfunk/mkdocs-material/blob/master/CHANGELOG) - [Commits](https://github.com/squidfunk/mkdocs-material/compare/9.6.16...9.6.18) Updates `pylint` from 3.3.7 to 3.3.8 - [Release notes](https://github.com/pylint-dev/pylint/releases) - [Commits](https://github.com/pylint-dev/pylint/compare/v3.3.7...v3.3.8) --- updated-dependencies: - dependency-name: mkdocs-macros-plugin dependency-version: 1.3.9 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: mkdocs-material dependency-version: 9.6.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch - dependency-name: pylint dependency-version: 3.3.8 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0d2ad477..8b0ea12a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,8 +65,8 @@ dev-mkdocs = [ "mike == 2.1.3", "mkdocs-gen-files == 0.5.0", "mkdocs-literate-nav == 0.6.2", - "mkdocs-macros-plugin == 1.3.7", - "mkdocs-material == 9.6.16", + "mkdocs-macros-plugin == 1.3.9", + "mkdocs-material == 9.6.18", "mkdocstrings[python] == 0.30.0", "mkdocstrings-python == 1.16.12", "frequenz-repo-config[lib] == 0.13.5", @@ -81,7 +81,7 @@ dev-mypy = [ ] dev-noxfile = ["nox == 2025.5.1", "frequenz-repo-config[lib] == 0.13.5"] dev-pylint = [ - "pylint == 3.3.7", + "pylint == 3.3.8", # For checking the noxfile, docs/ script, and tests "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", ] From 8f495663af87679c109e8c16fd58a040c3d61e9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 06:26:19 +0000 Subject: [PATCH 20/21] Bump types-markdown from 3.8.0.20250708 to 3.8.0.20250809 Bumps [types-markdown](https://github.com/typeshed-internal/stub_uploader) from 3.8.0.20250708 to 3.8.0.20250809. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-markdown dependency-version: 3.8.0.20250809 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0d2ad477..2e5e6a4c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -74,7 +74,7 @@ dev-mkdocs = [ dev-mypy = [ "mypy == 1.17.1", "grpc-stubs == 1.53.0.6", - "types-Markdown == 3.8.0.20250708", + "types-Markdown == 3.8.0.20250809", "types-protobuf == 6.30.2.20250703", # For checking the noxfile, docs/ script, and tests "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", From 1fc09b42006f5b7a4a67c1f18f36f209478d3cc3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Sep 2025 08:12:16 +0000 Subject: [PATCH 21/21] Bump types-protobuf from 6.30.2.20250703 to 6.30.2.20250822 Bumps [types-protobuf](https://github.com/typeshed-internal/stub_uploader) from 6.30.2.20250703 to 6.30.2.20250822. - [Commits](https://github.com/typeshed-internal/stub_uploader/commits) --- updated-dependencies: - dependency-name: types-protobuf dependency-version: 6.30.2.20250822 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 8f4fe792..4773d0a1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,7 @@ dev-mypy = [ "mypy == 1.17.1", "grpc-stubs == 1.53.0.6", "types-Markdown == 3.8.0.20250809", - "types-protobuf == 6.30.2.20250703", + "types-protobuf == 6.30.2.20250822", # For checking the noxfile, docs/ script, and tests "frequenz-client-microgrid[dev-mkdocs,dev-noxfile,dev-pytest]", ]