diff --git a/.github/workflows/docs_rtd.yaml b/.github/workflows/docs_rtd.yaml index 07a1acb9c..99e5e1e46 100644 --- a/.github/workflows/docs_rtd.yaml +++ b/.github/workflows/docs_rtd.yaml @@ -7,4 +7,5 @@ jobs: secrets: inherit with: enable-sphinx-python-dependency-build-checks: false + python-version: '3.12' diff --git a/docs/requirements.txt b/docs/requirements.txt index 4ea51cd9c..4ec4c8b30 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,18 +1,18 @@ # Canonical theme (still needed for Furo theme and custom templates) -canonical-sphinx==0.5.2 +canonical-sphinx==0.6.0 # Extensions previously auto-loaded by canonical-sphinx myst-parser==4.0.1 sphinx-autobuild==2024.10.3 -sphinx-design==0.6.1 +sphinx-design==0.7.0 sphinx-notfound-page==1.1.0 sphinx-reredirects==0.1.6 -sphinx-tabs==3.4.7 +sphinx-tabs==3.5.0 sphinxcontrib-jquery==4.1 sphinxext-opengraph==0.13.0 # Extra extensions, previously bundled as canonical-sphinx-extensions -sphinx-config-options==0.1.0 +sphinx-config-options==0.1.1 sphinx-contributor-listing==0.1.0 sphinx-filtered-toctree==0.1.0 sphinx-related-links==0.1.2 @@ -23,7 +23,7 @@ sphinx-youtube-links==0.1.0 # Other dependencies packaging==26.0 -sphinxcontrib-svg2pdfconverter[CairoSVG]==2.0.0 +sphinxcontrib-svg2pdfconverter[CairoSVG]==2.1.0 sphinx-last-updated-by-git==0.3.8 sphinx-sitemap==2.9.0 @@ -32,4 +32,4 @@ rst2html==2020.7.4 vale==3.13.0.0 # Additional extensions -sphinxcontrib-mermaid==2.0.0 +sphinxcontrib-mermaid==2.0.1 diff --git a/haproxy-ddos-protection-configurator/pyproject.toml b/haproxy-ddos-protection-configurator/pyproject.toml index e76c8a304..ebdcd0e65 100644 --- a/haproxy-ddos-protection-configurator/pyproject.toml +++ b/haproxy-ddos-protection-configurator/pyproject.toml @@ -14,7 +14,7 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dependencies = [ - "ops==3.5.2", + "ops==3.6.0", "pydantic==2.12.5", ] diff --git a/haproxy-ddos-protection-configurator/uv.lock b/haproxy-ddos-protection-configurator/uv.lock index 206e5cb50..3568a315b 100644 --- a/haproxy-ddos-protection-configurator/uv.lock +++ b/haproxy-ddos-protection-configurator/uv.lock @@ -582,7 +582,7 @@ unit = [ [package.metadata] requires-dist = [ - { name = "ops", specifier = "==3.5.2" }, + { name = "ops", specifier = "==3.6.0" }, { name = "pydantic", specifier = "==2.12.5" }, ] @@ -1101,16 +1101,16 @@ wheels = [ [[package]] name = "ops" -version = "3.5.2" +version = "3.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "pyyaml" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/72/50bdb29831b8ed92034e9657fec89301d8df3aa8da3da1d37ecbdf1baab6/ops-3.5.2.tar.gz", hash = "sha256:849c9ed85eadf265b8a927d5e857cd112221dd71b35e4b13329ccb938c3afd18", size = 578181, upload-time = "2026-02-11T01:49:48.345Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/bb/79b7efdb1243cbad11b6568c51ba4fb7358cd2c4d13bfd971a77c0aa7440/ops-3.6.0.tar.gz", hash = "sha256:a1c3361049c66759840a436143b07c74c2a46dcc44cbfd1177a9051f849c7971", size = 579236, upload-time = "2026-02-26T04:19:12.689Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/5c/84b41a67c2dc904f92f424e981eb65641ce095936fb9e6d7b4a315072d1a/ops-3.5.2-py3-none-any.whl", hash = "sha256:c715128a51ddcdf0fff463428b0f56a93e5963187e599b66594b4fc74458781b", size = 211688, upload-time = "2026-02-11T01:49:43.935Z" }, + { url = "https://files.pythonhosted.org/packages/8c/b6/d7daab4f841566d3cb0402d3463f7c1a00626724d6d7c02d7bf934ae6c86/ops-3.6.0-py3-none-any.whl", hash = "sha256:341c6688684446cc4b42860738898683feb271175bb9c4775ae68c81e4e0976a", size = 211856, upload-time = "2026-02-26T04:19:08.012Z" }, ] [package.optional-dependencies] @@ -1120,16 +1120,16 @@ testing = [ [[package]] name = "ops-scenario" -version = "8.5.2" +version = "8.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ops" }, { name = "pyyaml" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cb/27/a999aa877a34fc1b2c07b0f51cb1dc58a89e23bcaf4f626e28bec39825fd/ops_scenario-8.5.2.tar.gz", hash = "sha256:ebcdc4f8837f9a1cd42624f49d9d8b2502ebeeedad552516225b3420f989c369", size = 71693, upload-time = "2026-02-11T01:49:49.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/c8/15d9f91eafa46d1dfa7f580be3274c22399f941724b74e274334de9468bb/ops_scenario-8.6.0.tar.gz", hash = "sha256:5a40a91fd5e9b6c8249933944dfc6e807ad2ddbd36a68c800746b9bb8a0eabfb", size = 71728, upload-time = "2026-02-26T04:19:15.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/b1/57816b48087fa391d0b113e067ca80fdd36a2103c57cf9cf28fe5a82f52e/ops_scenario-8.5.2-py3-none-any.whl", hash = "sha256:79125d82ca753394d9d9e4a53c55931d3d0114421c1b745f5611cb5827d37012", size = 64241, upload-time = "2026-02-11T01:49:45.753Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d2/fb3176805339d3aa95b9d6e43478d0e34355c6c46f27723249f46bb8d19d/ops_scenario-8.6.0-py3-none-any.whl", hash = "sha256:469490a042dc45eca24eef7aa1b9214704d97d67503ad8465414ab68dc989d30", size = 64241, upload-time = "2026-02-26T04:19:09.579Z" }, ] [[package]] diff --git a/haproxy-operator/pyproject.toml b/haproxy-operator/pyproject.toml index b989cdecb..b1343c939 100644 --- a/haproxy-operator/pyproject.toml +++ b/haproxy-operator/pyproject.toml @@ -14,12 +14,12 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dependencies = [ - "cosl==1.4.0", + "cosl==1.6.1", "cryptography==46.0.5", "interface-hacluster @ git+https://github.com/charmed-kubernetes/charm-interface-hacluster@1.32+ck2", "jsonschema==4.26.0", - "opentelemetry-api==1.39.1", - "ops==3.5.2", + "opentelemetry-api==1.40.0", + "ops==3.6.0", "pydantic==2.12.5", "validators>=0.35.0", ] diff --git a/haproxy-operator/uv.lock b/haproxy-operator/uv.lock index 5b838d65b..342591401 100644 --- a/haproxy-operator/uv.lock +++ b/haproxy-operator/uv.lock @@ -339,7 +339,7 @@ wheels = [ [[package]] name = "cosl" -version = "1.4.0" +version = "1.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ops" }, @@ -348,9 +348,9 @@ dependencies = [ { name = "tenacity" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/de/c41b6308ce2a6a1523fe1d5cebb831ad779e55008f8d8c0c724fccc4b407/cosl-1.4.0.tar.gz", hash = "sha256:eb6ebf682f76eec24e3c9759fb6fe5185660fcf7bb3dd8adc42e5a74816c8615", size = 46191, upload-time = "2025-11-25T17:16:01.105Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/98/1a1f8aa7965ede9abfeb649b83375baf4e2f523778f90b841281cbe3603a/cosl-1.6.1.tar.gz", hash = "sha256:f96a6a978dfdee4a3b460cc48fa18514663bbc1c3a4f323315e3dbe3e6a2a596", size = 149512, upload-time = "2026-03-09T21:44:46.744Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/9b/716ceb6021530b9cdbbfd681b7f296b660cdc763c365283e82581a71c299/cosl-1.4.0-py3-none-any.whl", hash = "sha256:410042805b17876c19d405ff5bf5c2461a84a7bff389ce3ad928f44e8c09b882", size = 36649, upload-time = "2025-11-25T17:16:00.098Z" }, + { url = "https://files.pythonhosted.org/packages/f0/8f/3ca0f470fbc7b26ed33b5fe5815e38b6a628b8bb4df961924cae38755c46/cosl-1.6.1-py3-none-any.whl", hash = "sha256:12db85a81317c5b056171642098be91c09e78e04875ed1262b99681dea43b533", size = 37800, upload-time = "2026-03-09T21:44:45.373Z" }, ] [[package]] @@ -710,12 +710,12 @@ unit = [ [package.metadata] requires-dist = [ - { name = "cosl", specifier = "==1.4.0" }, + { name = "cosl", specifier = "==1.6.1" }, { name = "cryptography", specifier = "==46.0.5" }, { name = "interface-hacluster", git = "https://github.com/charmed-kubernetes/charm-interface-hacluster?rev=1.32%2Bck2" }, { name = "jsonschema", specifier = "==4.26.0" }, - { name = "opentelemetry-api", specifier = "==1.39.1" }, - { name = "ops", specifier = "==3.5.2" }, + { name = "opentelemetry-api", specifier = "==1.40.0" }, + { name = "ops", specifier = "==3.6.0" }, { name = "pydantic", specifier = "==2.12.5" }, { name = "validators", specifier = ">=0.35.0" }, ] @@ -1217,29 +1217,29 @@ wheels = [ [[package]] name = "opentelemetry-api" -version = "1.39.1" +version = "1.40.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "importlib-metadata" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/97/b9/3161be15bb8e3ad01be8be5a968a9237c3027c5be504362ff800fca3e442/opentelemetry_api-1.39.1.tar.gz", hash = "sha256:fbde8c80e1b937a2c61f20347e91c0c18a1940cecf012d62e65a7caf08967c9c", size = 65767, upload-time = "2025-12-11T13:32:39.182Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/1d/4049a9e8698361cc1a1aa03a6c59e4fa4c71e0c0f94a30f988a6876a2ae6/opentelemetry_api-1.40.0.tar.gz", hash = "sha256:159be641c0b04d11e9ecd576906462773eb97ae1b657730f0ecf64d32071569f", size = 70851, upload-time = "2026-03-04T14:17:21.555Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/df/d3f1ddf4bb4cb50ed9b1139cc7b1c54c34a1e7ce8fd1b9a37c0d1551a6bd/opentelemetry_api-1.39.1-py3-none-any.whl", hash = "sha256:2edd8463432a7f8443edce90972169b195e7d6a05500cd29e6d13898187c9950", size = 66356, upload-time = "2025-12-11T13:32:17.304Z" }, + { url = "https://files.pythonhosted.org/packages/5f/bf/93795954016c522008da367da292adceed71cca6ee1717e1d64c83089099/opentelemetry_api-1.40.0-py3-none-any.whl", hash = "sha256:82dd69331ae74b06f6a874704be0cfaa49a1650e1537d4a813b86ecef7d0ecf9", size = 68676, upload-time = "2026-03-04T14:17:01.24Z" }, ] [[package]] name = "ops" -version = "3.5.2" +version = "3.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "pyyaml" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/72/50bdb29831b8ed92034e9657fec89301d8df3aa8da3da1d37ecbdf1baab6/ops-3.5.2.tar.gz", hash = "sha256:849c9ed85eadf265b8a927d5e857cd112221dd71b35e4b13329ccb938c3afd18", size = 578181, upload-time = "2026-02-11T01:49:48.345Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/bb/79b7efdb1243cbad11b6568c51ba4fb7358cd2c4d13bfd971a77c0aa7440/ops-3.6.0.tar.gz", hash = "sha256:a1c3361049c66759840a436143b07c74c2a46dcc44cbfd1177a9051f849c7971", size = 579236, upload-time = "2026-02-26T04:19:12.689Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/5c/84b41a67c2dc904f92f424e981eb65641ce095936fb9e6d7b4a315072d1a/ops-3.5.2-py3-none-any.whl", hash = "sha256:c715128a51ddcdf0fff463428b0f56a93e5963187e599b66594b4fc74458781b", size = 211688, upload-time = "2026-02-11T01:49:43.935Z" }, + { url = "https://files.pythonhosted.org/packages/8c/b6/d7daab4f841566d3cb0402d3463f7c1a00626724d6d7c02d7bf934ae6c86/ops-3.6.0-py3-none-any.whl", hash = "sha256:341c6688684446cc4b42860738898683feb271175bb9c4775ae68c81e4e0976a", size = 211856, upload-time = "2026-02-26T04:19:08.012Z" }, ] [package.optional-dependencies] @@ -1249,16 +1249,16 @@ testing = [ [[package]] name = "ops-scenario" -version = "8.5.2" +version = "8.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ops" }, { name = "pyyaml" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cb/27/a999aa877a34fc1b2c07b0f51cb1dc58a89e23bcaf4f626e28bec39825fd/ops_scenario-8.5.2.tar.gz", hash = "sha256:ebcdc4f8837f9a1cd42624f49d9d8b2502ebeeedad552516225b3420f989c369", size = 71693, upload-time = "2026-02-11T01:49:49.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/c8/15d9f91eafa46d1dfa7f580be3274c22399f941724b74e274334de9468bb/ops_scenario-8.6.0.tar.gz", hash = "sha256:5a40a91fd5e9b6c8249933944dfc6e807ad2ddbd36a68c800746b9bb8a0eabfb", size = 71728, upload-time = "2026-02-26T04:19:15.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/b1/57816b48087fa391d0b113e067ca80fdd36a2103c57cf9cf28fe5a82f52e/ops_scenario-8.5.2-py3-none-any.whl", hash = "sha256:79125d82ca753394d9d9e4a53c55931d3d0114421c1b745f5611cb5827d37012", size = 64241, upload-time = "2026-02-11T01:49:45.753Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d2/fb3176805339d3aa95b9d6e43478d0e34355c6c46f27723249f46bb8d19d/ops_scenario-8.6.0-py3-none-any.whl", hash = "sha256:469490a042dc45eca24eef7aa1b9214704d97d67503ad8465414ab68dc989d30", size = 64241, upload-time = "2026-02-26T04:19:09.579Z" }, ] [[package]] diff --git a/haproxy-spoe-auth-operator/pyproject.toml b/haproxy-spoe-auth-operator/pyproject.toml index f1bac528c..cc2b563c8 100644 --- a/haproxy-spoe-auth-operator/pyproject.toml +++ b/haproxy-spoe-auth-operator/pyproject.toml @@ -17,7 +17,7 @@ dependencies = [ "charmlibs-snap==1.0.1", "jinja2==3.1.6", "jsonschema==4.26.0", - "ops==3.5.2", + "ops==3.6.0", "pydantic==2.12.5", ] diff --git a/haproxy-spoe-auth-operator/uv.lock b/haproxy-spoe-auth-operator/uv.lock index 468ac81e2..e6e23f718 100644 --- a/haproxy-spoe-auth-operator/uv.lock +++ b/haproxy-spoe-auth-operator/uv.lock @@ -498,7 +498,7 @@ requires-dist = [ { name = "charmlibs-snap", specifier = "==1.0.1" }, { name = "jinja2", specifier = "==3.1.6" }, { name = "jsonschema", specifier = "==4.26.0" }, - { name = "ops", specifier = "==3.5.2" }, + { name = "ops", specifier = "==3.6.0" }, { name = "pydantic", specifier = "==2.12.5" }, ] @@ -911,16 +911,16 @@ wheels = [ [[package]] name = "ops" -version = "3.5.2" +version = "3.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "opentelemetry-api" }, { name = "pyyaml" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/05/72/50bdb29831b8ed92034e9657fec89301d8df3aa8da3da1d37ecbdf1baab6/ops-3.5.2.tar.gz", hash = "sha256:849c9ed85eadf265b8a927d5e857cd112221dd71b35e4b13329ccb938c3afd18", size = 578181, upload-time = "2026-02-11T01:49:48.345Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/bb/79b7efdb1243cbad11b6568c51ba4fb7358cd2c4d13bfd971a77c0aa7440/ops-3.6.0.tar.gz", hash = "sha256:a1c3361049c66759840a436143b07c74c2a46dcc44cbfd1177a9051f849c7971", size = 579236, upload-time = "2026-02-26T04:19:12.689Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/5c/84b41a67c2dc904f92f424e981eb65641ce095936fb9e6d7b4a315072d1a/ops-3.5.2-py3-none-any.whl", hash = "sha256:c715128a51ddcdf0fff463428b0f56a93e5963187e599b66594b4fc74458781b", size = 211688, upload-time = "2026-02-11T01:49:43.935Z" }, + { url = "https://files.pythonhosted.org/packages/8c/b6/d7daab4f841566d3cb0402d3463f7c1a00626724d6d7c02d7bf934ae6c86/ops-3.6.0-py3-none-any.whl", hash = "sha256:341c6688684446cc4b42860738898683feb271175bb9c4775ae68c81e4e0976a", size = 211856, upload-time = "2026-02-26T04:19:08.012Z" }, ] [package.optional-dependencies] @@ -930,16 +930,16 @@ testing = [ [[package]] name = "ops-scenario" -version = "8.5.2" +version = "8.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ops" }, { name = "pyyaml" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cb/27/a999aa877a34fc1b2c07b0f51cb1dc58a89e23bcaf4f626e28bec39825fd/ops_scenario-8.5.2.tar.gz", hash = "sha256:ebcdc4f8837f9a1cd42624f49d9d8b2502ebeeedad552516225b3420f989c369", size = 71693, upload-time = "2026-02-11T01:49:49.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/c8/15d9f91eafa46d1dfa7f580be3274c22399f941724b74e274334de9468bb/ops_scenario-8.6.0.tar.gz", hash = "sha256:5a40a91fd5e9b6c8249933944dfc6e807ad2ddbd36a68c800746b9bb8a0eabfb", size = 71728, upload-time = "2026-02-26T04:19:15.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/b1/57816b48087fa391d0b113e067ca80fdd36a2103c57cf9cf28fe5a82f52e/ops_scenario-8.5.2-py3-none-any.whl", hash = "sha256:79125d82ca753394d9d9e4a53c55931d3d0114421c1b745f5611cb5827d37012", size = 64241, upload-time = "2026-02-11T01:49:45.753Z" }, + { url = "https://files.pythonhosted.org/packages/ea/d2/fb3176805339d3aa95b9d6e43478d0e34355c6c46f27723249f46bb8d19d/ops_scenario-8.6.0-py3-none-any.whl", hash = "sha256:469490a042dc45eca24eef7aa1b9214704d97d67503ad8465414ab68dc989d30", size = 64241, upload-time = "2026-02-26T04:19:09.579Z" }, ] [[package]]