forked from empicano/aiomqtt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pyproject.toml
143 lines (128 loc) · 4.75 KB
/
pyproject.toml
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
[build-system]
requires = ["setuptools >= 65", "setuptools-scm >= 7"]
build-backend = "setuptools.build_meta"
[project]
name = "asyncio_mqtt"
description = "Idiomatic asyncio wrapper around paho-mqtt"
readme = "README.md"
authors = [{ name = "Frederik Aalund", email = "fpa@sbtinstruments.com" }]
maintainers = [
{ name = "Jonathan Plasse", email = "jonathan.plasse@live.fr" },
{ name = "Felix Böhm", email = "felix@felixboehm.dev" },
]
keywords = ["mqtt", "async", "asyncio", "paho-mqtt", "wrapper"]
license = { text = "BSD 3-Clause License" }
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Operating System :: MacOS",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
]
requires-python = ">= 3.7"
dependencies = [
"paho-mqtt>=1.6.0",
"typing_extensions>=4.4.0; python_version<'3.10'",
]
dynamic = ["version"]
[project.urls]
"Source code" = "https://github.com/sbtinstruments/asyncio-mqtt"
"Issue tracker" = "https://github.com/sbtinstruments/asyncio-mqtt/issues"
[project.optional-dependencies]
lint = ["mypy>=0.991", "ruff==0.0.237", "types-paho-mqtt>=1.6.0.1"]
format = ["black>=22.10.0"]
tests = ["pytest>=7.2.0", "pytest-cov>=4.0.0", "anyio>=3.6.2"]
docs = [
"sphinx>=5.3.0",
"furo>=2022.9.29",
"sphinx-autobuild>=2021.3.14",
"myst-parser>=0.18.1",
"sphinx-copybutton>=0.5.1",
]
[tool.setuptools] # https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
packages = ["asyncio_mqtt"]
[tool.setuptools_scm] # https://github.com/pypa/setuptools_scm/
write_to = "asyncio_mqtt/_version.py"
[tool.black] # https://black.readthedocs.io/en/stable/usage_and_configuration/the_basics.html#configuration-via-a-file
target-version = ["py37", "py38", "py39", "py310", "py311"]
[tool.isort] # https://pycqa.github.io/isort/docs/configuration/options.html
color_output = true
profile = "black"
[tool.ruff]
required-version = "0.0.237"
target-version = "py37"
select = ["ALL"]
ignore = [
"ANN101", # missing-type-self
"ANN102", # missing-type-cls
"ANN401", # dynamically-typed-expression
"ARG001", # unused-function-argument
"ARG002", # unused-method-argument
"BLE001", # blind-except # TODO: remove when ruff supports our use-case
"COM", # trailing-comma
"D10", # missing-docstring
"E501", # line-too-long
"FBT", # boolean-trap
"G004", # logging-f-string
"S101", # assert-used
"SIM105", # use-contextlib-suppress
"TCH", # type-checking
]
unfixable = [
"ERA001", # commented-out-code
"F401", # unused-import
"F841", # unused-variable
"T20", # print-found
]
task-tags = [
"SPDX-License-Identifier", # TODO: remove when ruff fix https://github.com/charliermarsh/ruff/issues/2068
]
[tool.ruff.flake8-pytest-style] # https://github.com/charliermarsh/ruff#flake8-pytest-style-pt
fixture-parentheses = false
mark-parentheses = false
parametrize-names-type = "csv"
[tool.ruff.pydocstyle] # https://github.com/charliermarsh/ruff#pydocstyle
convention = "pep257"
[tool.mypy] # https://mypy.readthedocs.io/en/latest/config_file.html
python_version = "3.8"
strict = true
show_column_numbers = true
show_error_codes = true
show_error_context = true
junit_xml = "reports/mypy.xml"
pretty = true
no_strict_concatenate = true # TODO: remove when dropping python 3.7
[tool.pytest.ini_options] # https://docs.pytest.org/en/latest/reference/reference.html#ini-options-ref
addopts = "--color=yes --doctest-modules --exitfirst --failed-first --strict-config --strict-markers --verbosity=2 --junitxml=reports/pytest.xml tests"
filterwarnings = [
"error",
"ignore:ssl.PROTOCOL_TLS is deprecated:DeprecationWarning",
]
xfail_strict = true
[tool.coverage.run] # https://coverage.readthedocs.io/en/latest/config.html#run
branch = true
data_file = "reports/.coverage"
[tool.coverage.report] # https://coverage.readthedocs.io/en/latest/config.html#report
fail_under = 85
precision = 1
show_missing = true
skip_covered = true
# Regexes for lines to exclude from consideration
exclude_lines = [
# Have to re-enable the standard pragma
"pragma: no cover",
# Don't complain if tests do not hit defensive assertion code:
"raise AssertionError",
"raise NotImplementedError",
]
[tool.coverage.xml] # https://coverage.readthedocs.io/en/latest/config.html#xml
output = "reports/coverage.xml"