33
44[build-system ]
55requires = [
6- " setuptools == 75.8 .0" ,
7- " setuptools_scm[toml] == 8.1.0 " ,
8- " frequenz-repo-config[lib] == 0.13.1 " ,
6+ " setuptools == 80.9 .0" ,
7+ " setuptools_scm[toml] == 9.2.2 " ,
8+ " frequenz-repo-config[lib] == 0.13.8 " ,
99]
1010build-backend = " setuptools.build_meta"
1111
@@ -14,8 +14,19 @@ name = "frequenz-client-marketmetering"
1414description = " Market Metering API client for Python"
1515readme = " README.md"
1616license = { text = " MIT" }
17- keywords = [" frequenz" , " python" , " lib" , " library" , " client-marketmetering" , " marketmetering" , " client" , " api" , " grpc" ]
18- # TODO(cookiecutter): Remove and add more classifiers if appropriate
17+ keywords = [
18+ " frequenz" ,
19+ " python" ,
20+ " lib" ,
21+ " library" ,
22+ " marketmetering-client" ,
23+ " marketmetering" ,
24+ " client" ,
25+ " api" ,
26+ " grpc" ,
27+ " energy" ,
28+ " metering" ,
29+ ]
1930classifiers = [
2031 " Development Status :: 3 - Alpha" ,
2132 " Intended Audience :: Developers" ,
@@ -26,60 +37,69 @@ classifiers = [
2637 " Typing :: Typed" ,
2738]
2839requires-python = " >= 3.11, < 4"
29- # TODO(cookiecutter): Remove and add more dependencies if appropriate
3040dependencies = [
31- " typing-extensions >= 4.14.1, < 5" ,
41+ " typing-extensions >= 4.13.0, < 5" ,
42+ " frequenz-api-market-metering >= 0.1.0, < 1" ,
43+ " frequenz-client-base >= 0.11.0, < 0.12.0" ,
44+ " grpcio >= 1.72.1, < 2" ,
3245]
3346dynamic = [" version" ]
3447
48+ [project .scripts ]
49+ marketmetering-cli = " frequenz.client.marketmetering.__main__:main"
50+
3551[[project .authors ]]
3652name = " Frequenz Energy-as-a-Service GmbH"
37533854
39- # TODO(cookiecutter): Remove and add more optional dependencies if appropriate
4055[project .optional-dependencies ]
56+ cli = [
57+ " asyncclick == 8.3.0.7" ,
58+ " prompt-toolkit == 3.0.52" ,
59+ ]
60+
4161dev-flake8 = [
4262 " flake8 == 7.3.0" ,
4363 " flake8-docstrings == 1.7.0" ,
4464 " flake8-pyproject == 1.2.3" , # For reading the flake8 config from pyproject.toml
45- " pydoclint == 0.6.10 " ,
65+ " pydoclint == 0.7.6 " ,
4666 " pydocstyle == 6.3.0" ,
4767]
48- dev-formatting = [" black == 25.1 .0" , " isort == 6.0.0 " ]
68+ dev-formatting = [" black == 25.9 .0" , " isort == 6.0.1 " ]
4969dev-mkdocs = [
50- " Markdown == 3.8.2 " ,
51- " black == 25.1.0 " ,
70+ " black == 25.9.0 " ,
71+ " Markdown == 3.9 " ,
5272 " mike == 2.1.3" ,
5373 " mkdocs-gen-files == 0.5.0" ,
5474 " mkdocs-literate-nav == 0.6.2" ,
55- " mkdocs-macros-plugin == 1.3.9 " ,
56- " mkdocs-material == 9.6.18 " ,
57- " mkdocstrings[python] == 1.0.0 " ,
58- " mkdocstrings- python == 2.0 .1" ,
59- " frequenz-repo-config[lib] == 0.13.1 " ,
75+ " frequenz-api-market-metering >= 0.1.0, < 1 " ,
76+ " mkdocs-macros-plugin == 1.4.1 " ,
77+ " mkdocs-material == 9.6.23 " ,
78+ " mkdocstrings[ python] == 0.30 .1" ,
79+ " frequenz-repo-config[lib] == 0.13.8 " ,
6080]
6181dev-mypy = [
62- " mypy == 1.9.0 " ,
63- " types-Markdown == 3.8 .0.20250809 " ,
82+ " mypy == 1.18.2 " ,
83+ " types-Markdown == 3.9 .0.20250906 " ,
6484 # For checking the noxfile, docs/ script, and tests
65- " frequenz-client-marketmetering[dev-mkdocs,dev-noxfile,dev-pytest]" ,
66- ]
67- dev-noxfile = [
68- " nox == 2025.5.1" ,
69- " frequenz-repo-config[lib] == 0.13.1" ,
85+ " frequenz-client-marketmetering[cli,dev-mkdocs,dev-noxfile,dev-pytest]" ,
86+ " grpc-stubs == 1.53.0.6" ,
87+ " types-protobuf == 6.32.1.20250918" ,
7088]
89+ dev-noxfile = [" nox == 2025.10.16" , " frequenz-repo-config[lib] == 0.13.8" ]
7190dev-pylint = [
72- # dev-pytest already defines a dependency to pylint because of the examples
91+ " pylint == 3.3.9 " ,
7392 # For checking the noxfile, docs/ script, and tests
74- " frequenz-client-marketmetering[dev-mkdocs,dev-noxfile,dev-pytest]" ,
93+ " frequenz-client-marketmetering[cli,dev-mkdocs,dev-noxfile,dev-pytest]" ,
94+ " frequenz-api-market-metering >= 0.1.0, < 1" ,
7595]
7696dev-pytest = [
77- " pytest == 8.4.1" ,
78- " pylint == 3.3.8" , # We need this to check for the examples
79- " frequenz-repo-config[extra-lint-examples] == 0.13.1" ,
80- " pytest-mock == 3.14.0" ,
81- " pytest-asyncio == 1.1.0" ,
97+ " pytest == 8.4.2" ,
98+ " frequenz-repo-config[extra-lint-examples] == 0.13.8" ,
99+ " pytest-mock == 3.15.1" ,
100+ " pytest-asyncio == 1.2.0" ,
82101 " async-solipsism == 0.8" ,
102+ " frequenz-client-marketmetering[cli]" ,
83103]
84104dev = [
85105 " frequenz-client-marketmetering[dev-mkdocs,dev-flake8,dev-formatting,dev-mkdocs,dev-mypy,dev-noxfile,dev-pylint,dev-pytest]" ,
@@ -118,7 +138,6 @@ check-yield-types = false
118138arg-type-hints-in-docstring = false
119139arg-type-hints-in-signature = true
120140allow-init-docstring = true
121- check-class-attributes = false
122141
123142[tool .pylint .similarities ]
124143ignore-comments = [' yes' ]
@@ -133,34 +152,33 @@ disable = [
133152 # disabled because it conflicts with isort
134153 " wrong-import-order" ,
135154 " ungrouped-imports" ,
136- # Checked by mypy (and pylint is very flaky checking these)
155+ # pylint's unsubscriptable check is buggy and is not needed because
156+ # it is a type-check, for which we already have mypy.
137157 " unsubscriptable-object" ,
158+ # Checked by mypy
138159 " no-member" ,
139- " no-name-in-module" ,
140160 " possibly-used-before-assignment" ,
161+ " no-name-in-module" ,
141162 # Checked by flake8
142- " f-string-without-interpolation" ,
163+ " redefined-outer-name" ,
164+ " unused-import" ,
143165 " line-too-long" ,
144- " missing-function-docstring" ,
145166 " redefined-outer-name" ,
146167 " unnecessary-lambda-assignment" ,
147168 " unused-import" ,
148169 " unused-variable" ,
149170]
150171
151172[tool .pytest .ini_options ]
152- addopts = " -vv"
153173filterwarnings = [
154174 " error" ,
155175 " once::DeprecationWarning" ,
156176 " once::PendingDeprecationWarning" ,
157- # We ignore warnings about protobuf gencode version being one version older
158- # than the current version, as this is supported by protobuf, and we expect to
159- # have such cases. If we go too far, we will get a proper error anyways.
160- # We use a raw string (single quotes) to avoid the need to escape special
161- # characters as this is a regex.
177+ # We use a raw string (single quote) to avoid the need to escape special
178+ # chars as this is a regex
162179 ' ignore:Protobuf gencode version .*exactly one major version older.*:UserWarning' ,
163180]
181+ addopts = " -vv"
164182testpaths = [" tests" , " src" ]
165183asyncio_mode = " auto"
166184asyncio_default_fixture_loop_scope = " function"
@@ -175,11 +193,11 @@ namespace_packages = true
175193# used but getting the original ignored error when removing the type: ignore.
176194# See for example: https://github.com/python/mypy/issues/2960
177195# no_incremental = true
178- packages = [" frequenz.client_marketmetering " ]
196+ packages = [" frequenz.client.marketmetering " ]
179197strict = true
180198
181199[[tool .mypy .overrides ]]
182- module = [" mkdocs_macros.*" , " sybil " , " sybil.* " ]
200+ module = [" mkdocs_macros.*" ]
183201ignore_missing_imports = true
184202
185203[tool .setuptools_scm ]
0 commit comments