Repository navigation
Expand file tree
/
Copy pathpyproject.toml
More file actions
113 lines (102 loc) · 4.88 KB
/
Copy pathpyproject.toml
File metadata and controls
113 lines (102 loc) · 4.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
[build-system]
requires = ["maturin>=1.7,<2.0"]
build-backend = "maturin"
[project]
# The base wheel is `dynamic-config-py`; this is the same name with what it
# adds on the end, so `pip install dynamic-config-py[remote]` reads as what
# it is. It is never installed on its own by anybody sensible — the import
# name to write is `dynamic_config.remote`, which is in the base package.
name = "dynamic-config-py-remote"
description = "The Rust remote stores (Consul, etcd, Firestore, NATS, Redis, S3, Vault) for dynamic-config-py"
readme = "README.md"
license = { text = "MIT" }
requires-python = ">=3.9"
authors = [{ name = "Cevat Batuhan Tolon", email = "cevatbatuhan.tolon@gmail.com" }]
keywords = [
"config", "configuration", "remote-config", "hot-reload", "etcd",
"consul", "vault", "nats", "redis", "s3", "firestore", "git",
"service-discovery", "secrets", "kubernetes", "rust", "pyo3",
]
classifiers = [
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
# One row per interpreter this wheel is *tested* against, because that is
# what PyPI's filter answers and what `requires-python` cannot say on its
# own: the abi3 wheel would install on anything from 3.9 upwards, and the
# CI matrix is what makes the claim true.
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Rust",
"Topic :: Software Development :: Libraries",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Software Development :: Libraries :: Application Frameworks",
"Topic :: System :: Systems Administration",
"Topic :: System :: Distributed Computing",
"Topic :: Utilities",
"Operating System :: OS Independent",
"Framework :: AsyncIO",
"Typing :: Typed",
]
# The base wheel, and nothing else. Not an optional dependency and not a
# duck-typed hope: this package imports `dynamic_config`'s `Format`,
# `RemoteSource`, `AuthError` and `RemoteError`, and a store here is only
# useful when handed to a `DynamicConfig` there.
#
# The floor is a lower bound rather than an exact pin, because the surface
# this uses is four names that have been stable since the base wheel had a
# remote path at all. It is not `==` for the reason the Rust crates are: a
# wheel that pinned its sibling exactly would make every base-wheel patch a
# forced upgrade of this one.
dependencies = ["dynamic-config-py>=0.3.3"]
dynamic = ["version"]
[project.urls]
# The Python book, for the reason the base wheel's points there.
Homepage = "https://dynamic-config-rs.github.io/python/"
Documentation = "https://dynamic-config-rs.github.io/python/remote-wheel.html"
Repository = "https://github.com/dynamic-config-rs/dynamic-config-python"
Changelog = "https://github.com/dynamic-config-rs/dynamic-config-python/blob/main/dynamic-config-python-remote/CHANGELOG.md"
Issues = "https://github.com/dynamic-config-rs/dynamic-config-python/issues"
[project.optional-dependencies]
test = ["pytest>=7", "pytest-asyncio>=0.23"]
[tool.maturin]
# A mixed project, the same shape as the base wheel's: the clients are
# compiled, and the credential resolution, the typing and the error
# translation are ordinary Python.
python-source = "python"
module-name = "dynamic_config_remote._core"
features = ["pyo3/extension-module"]
[tool.pytest.ini_options]
testpaths = ["tests"]
# ── Linting ────────────────────────────────────────────────────────────
#
# The base wheel's configuration, deliberately identical: two packages that
# ship together and are read side by side should not be formatted by two
# sets of rules. The comments explaining each choice are there, in
# `dynamic-config-python/pyproject.toml`.
[tool.ruff]
target-version = "py39"
line-length = 88
src = ["python", "tests", "examples"]
include = ["*.py", "*.pyi"]
[tool.ruff.lint]
select = [
"F", "E", "W", "I", "N", "D", "UP", "B", "A", "C4", "ISC", "PIE", "PT",
"RET", "SIM", "TID", "PTH", "ERA", "RUF",
]
ignore = ["D203", "D213", "D401", "EM101", "EM102", "UP007", "UP045"]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["D100", "D101", "D102", "D103", "D104", "D105", "D107", "S101", "B011"]
# Examples are scripts: they print, and they narrate in comments rather than
# in a docstring on every inner definition.
"examples/*" = ["D101", "D102", "D103", "D105", "D107", "T201", "INP001"]
[tool.ruff.lint.pydocstyle]
convention = "pep257"
[tool.ruff.lint.isort]
known-first-party = ["dynamic_config", "dynamic_config_remote"]