volvocarsapi 0.0.2b0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1 @@
1
+ ko_fi: thomasddn
@@ -0,0 +1,42 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types:
6
+ - published
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ pypi-publish:
11
+ name: Publish package to PyPI
12
+ runs-on: ubuntu-latest
13
+ environment: pypi
14
+ permissions:
15
+ id-token: write
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set version in manifest.json
20
+ run: |
21
+ # Extract version from tag (e.g., "refs/tags/v1.2.3" becomes "1.2.3")
22
+ version="${GITHUB_REF#refs/tags/v}"
23
+ echo "Setting version to ${version}"
24
+ # Update the version in pyproject.toml (assumes a `version = "..."` line)
25
+ sed -i -E "s/^version = \"[^\"]+\"/version = \"${version}\"/" pyproject.toml
26
+
27
+ - name: Set up Python
28
+ uses: actions/setup-python@v4
29
+ with:
30
+ python-version: "3.x"
31
+
32
+ - name: Install dependencies
33
+ run: |
34
+ python -m pip install --upgrade pip
35
+ pip install -r requirements.package.txt
36
+
37
+ - name: Build package
38
+ run: |
39
+ python -m build
40
+
41
+ - name: Publish to PyPI
42
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,4 @@
1
+ __pycache__
2
+ .mypy_cache/
3
+ .venv/
4
+ dist/
@@ -0,0 +1,26 @@
1
+ # The contents of this file is based on https://github.com/home-assistant/core/blob/dev/mypy.ini
2
+
3
+ [mypy]
4
+ python_version = 3.12
5
+ platform = linux
6
+ show_error_codes = true
7
+ follow_imports = normal
8
+ local_partial_types = true
9
+ strict_equality = true
10
+ #strict_bytes = true
11
+ no_implicit_optional = true
12
+ warn_incomplete_stub = true
13
+ warn_redundant_casts = true
14
+ warn_unused_configs = true
15
+ warn_unused_ignores = true
16
+ enable_error_code = ignore-without-code, redundant-self, truthy-iterable
17
+ disable_error_code = annotation-unchecked, import-not-found, import-untyped
18
+ extra_checks = false
19
+ check_untyped_defs = true
20
+ disallow_incomplete_defs = true
21
+ disallow_subclassing_any = true
22
+ disallow_untyped_calls = true
23
+ disallow_untyped_decorators = true
24
+ disallow_untyped_defs = true
25
+ warn_return_any = true
26
+ warn_unreachable = true
@@ -0,0 +1,319 @@
1
+ # The contents of this file is based on https://github.com/home-assistant/core/blob/dev/pyproject.toml
2
+
3
+ [MAIN]
4
+ # Specify the Python version
5
+ py-version=3.12
6
+
7
+ # Use a conservative default here; 2 should speed up most setups and not hurt
8
+ # any too bad. Override on command line as appropriate.
9
+ jobs=2
10
+
11
+ load-plugins=
12
+ pylint.extensions.code_style,
13
+ pylint.extensions.typing
14
+
15
+ persistent = false
16
+ fail-on = [
17
+ "I",
18
+ ]
19
+
20
+ [BASIC]
21
+ class-const-naming-style = "any"
22
+
23
+ ["MESSAGES CONTROL"]
24
+ # Reasons disabled:
25
+ # format - handled by ruff
26
+ # locally-disabled - it spams too much
27
+ # duplicate-code - unavoidable
28
+ # cyclic-import - doesn't test if both import on load
29
+ # abstract-class-little-used - prevents from setting right foundation
30
+ # unused-argument - generic callbacks and setup methods create a lot of warnings
31
+ # too-many-* - are not enforced for the sake of readability
32
+ # too-few-* - same as too-many-*
33
+ # abstract-method - with intro of async there are always methods missing
34
+ # inconsistent-return-statements - doesn't handle raise
35
+ # too-many-ancestors - it's too strict.
36
+ # wrong-import-order - isort guards this
37
+ # possibly-used-before-assignment - too many errors / not necessarily issues
38
+ # ---
39
+ # Pylint CodeStyle plugin
40
+ # consider-using-namedtuple-or-dataclass - too opinionated
41
+ # consider-using-assignment-expr - decision to use := better left to devs
42
+ disable = [
43
+ "format",
44
+ "abstract-method",
45
+ "cyclic-import",
46
+ "duplicate-code",
47
+ "inconsistent-return-statements",
48
+ "locally-disabled",
49
+ "not-context-manager",
50
+ "too-few-public-methods",
51
+ "too-many-ancestors",
52
+ "too-many-arguments",
53
+ "too-many-instance-attributes",
54
+ "too-many-lines",
55
+ "too-many-locals",
56
+ "too-many-public-methods",
57
+ "too-many-boolean-expressions",
58
+ "too-many-positional-arguments",
59
+ "wrong-import-order",
60
+ "consider-using-namedtuple-or-dataclass",
61
+ "consider-using-assignment-expr",
62
+ "possibly-used-before-assignment",
63
+
64
+ # Handled by ruff
65
+ # Ref: <https://github.com/astral-sh/ruff/issues/970>
66
+ "await-outside-async", # PLE1142
67
+ "bad-str-strip-call", # PLE1310
68
+ "bad-string-format-type", # PLE1307
69
+ "bidirectional-unicode", # PLE2502
70
+ "continue-in-finally", # PLE0116
71
+ "duplicate-bases", # PLE0241
72
+ "misplaced-bare-raise", # PLE0704
73
+ "format-needs-mapping", # F502
74
+ "function-redefined", # F811
75
+ # Needed because ruff does not understand type of __all__ generated by a function
76
+ # "invalid-all-format", # PLE0605
77
+ "invalid-all-object", # PLE0604
78
+ "invalid-character-backspace", # PLE2510
79
+ "invalid-character-esc", # PLE2513
80
+ "invalid-character-nul", # PLE2514
81
+ "invalid-character-sub", # PLE2512
82
+ "invalid-character-zero-width-space", # PLE2515
83
+ "logging-too-few-args", # PLE1206
84
+ "logging-too-many-args", # PLE1205
85
+ "missing-format-string-key", # F524
86
+ "mixed-format-string", # F506
87
+ "no-method-argument", # N805
88
+ "no-self-argument", # N805
89
+ "nonexistent-operator", # B002
90
+ "nonlocal-without-binding", # PLE0117
91
+ "not-in-loop", # F701, F702
92
+ "notimplemented-raised", # F901
93
+ "return-in-init", # PLE0101
94
+ "return-outside-function", # F706
95
+ "syntax-error", # E999
96
+ "too-few-format-args", # F524
97
+ "too-many-format-args", # F522
98
+ "too-many-star-expressions", # F622
99
+ "truncated-format-string", # F501
100
+ "undefined-all-variable", # F822
101
+ "undefined-variable", # F821
102
+ "used-prior-global-declaration", # PLE0118
103
+ "yield-inside-async-function", # PLE1700
104
+ "yield-outside-function", # F704
105
+ "anomalous-backslash-in-string", # W605
106
+ "assert-on-string-literal", # PLW0129
107
+ "assert-on-tuple", # F631
108
+ "bad-format-string", # W1302, F
109
+ "bad-format-string-key", # W1300, F
110
+ "bare-except", # E722
111
+ "binary-op-exception", # PLW0711
112
+ "cell-var-from-loop", # B023
113
+ # "dangerous-default-value", # B006, ruff catches new occurrences, needs more work
114
+ "duplicate-except", # B014
115
+ "duplicate-key", # F601
116
+ "duplicate-string-formatting-argument", # F
117
+ "duplicate-value", # F
118
+ "eval-used", # S307
119
+ "exec-used", # S102
120
+ "expression-not-assigned", # B018
121
+ "f-string-without-interpolation", # F541
122
+ "forgotten-debug-statement", # T100
123
+ "format-string-without-interpolation", # F
124
+ # "global-statement", # PLW0603, ruff catches new occurrences, needs more work
125
+ "global-variable-not-assigned", # PLW0602
126
+ "implicit-str-concat", # ISC001
127
+ "import-self", # PLW0406
128
+ "inconsistent-quotes", # Q000
129
+ "invalid-envvar-default", # PLW1508
130
+ "keyword-arg-before-vararg", # B026
131
+ "logging-format-interpolation", # G
132
+ "logging-fstring-interpolation", # G
133
+ "logging-not-lazy", # G
134
+ "misplaced-future", # F404
135
+ "named-expr-without-context", # PLW0131
136
+ "nested-min-max", # PLW3301
137
+ "pointless-statement", # B018
138
+ "raise-missing-from", # B904
139
+ "redefined-builtin", # A001
140
+ "try-except-raise", # TRY302
141
+ "unused-argument", # ARG001, we don't use it
142
+ "unused-format-string-argument", #F507
143
+ "unused-format-string-key", # F504
144
+ "unused-import", # F401
145
+ "unused-variable", # F841
146
+ "useless-else-on-loop", # PLW0120
147
+ "wildcard-import", # F403
148
+ "bad-classmethod-argument", # N804
149
+ "consider-iterating-dictionary", # SIM118
150
+ "empty-docstring", # D419
151
+ "invalid-name", # N815
152
+ "line-too-long", # E501, disabled globally
153
+ "missing-class-docstring", # D101
154
+ "missing-final-newline", # W292
155
+ "missing-function-docstring", # D103
156
+ "missing-module-docstring", # D100
157
+ "multiple-imports", #E401
158
+ "singleton-comparison", # E711, E712
159
+ "subprocess-run-check", # PLW1510
160
+ "superfluous-parens", # UP034
161
+ "ungrouped-imports", # I001
162
+ "unidiomatic-typecheck", # E721
163
+ "unnecessary-direct-lambda-call", # PLC3002
164
+ "unnecessary-lambda-assignment", # PLC3001
165
+ "unnecessary-pass", # PIE790
166
+ "unneeded-not", # SIM208
167
+ "useless-import-alias", # PLC0414
168
+ "wrong-import-order", # I001
169
+ "wrong-import-position", # E402
170
+ "comparison-of-constants", # PLR0133
171
+ "comparison-with-itself", # PLR0124
172
+ "consider-alternative-union-syntax", # UP007
173
+ "consider-merging-isinstance", # PLR1701
174
+ "consider-using-alias", # UP006
175
+ "consider-using-dict-comprehension", # C402
176
+ "consider-using-generator", # C417
177
+ "consider-using-get", # SIM401
178
+ "consider-using-set-comprehension", # C401
179
+ "consider-using-sys-exit", # PLR1722
180
+ "consider-using-ternary", # SIM108
181
+ "literal-comparison", # F632
182
+ "property-with-parameters", # PLR0206
183
+ "super-with-arguments", # UP008
184
+ "too-many-branches", # PLR0912
185
+ "too-many-return-statements", # PLR0911
186
+ "too-many-statements", # PLR0915
187
+ "trailing-comma-tuple", # COM818
188
+ "unnecessary-comprehension", # C416
189
+ "use-a-generator", # C417
190
+ "use-dict-literal", # C406
191
+ "use-list-literal", # C405
192
+ "useless-object-inheritance", # UP004
193
+ "useless-return", # PLR1711
194
+ "no-else-break", # RET508
195
+ "no-else-continue", # RET507
196
+ "no-else-raise", # RET506
197
+ "no-else-return", # RET505
198
+ "broad-except", # BLE001
199
+ "protected-access", # SLF001
200
+ "broad-exception-raised", # TRY002
201
+ "consider-using-f-string", # PLC0209
202
+ # "no-self-use", # PLR6301 # Optional plugin, not enabled
203
+
204
+ # Handled by mypy
205
+ # Ref: <https://github.com/antonagestam/pylint-mypy-overlap>
206
+ "abstract-class-instantiated",
207
+ "arguments-differ",
208
+ "assigning-non-slot",
209
+ "assignment-from-no-return",
210
+ "assignment-from-none",
211
+ "bad-exception-cause",
212
+ "bad-format-character",
213
+ "bad-reversed-sequence",
214
+ "bad-super-call",
215
+ "bad-thread-instantiation",
216
+ "catching-non-exception",
217
+ "comparison-with-callable",
218
+ "deprecated-class",
219
+ "dict-iter-missing-items",
220
+ "format-combined-specification",
221
+ "global-variable-undefined",
222
+ "import-error",
223
+ "inconsistent-mro",
224
+ "inherit-non-class",
225
+ "init-is-generator",
226
+ "invalid-class-object",
227
+ "invalid-enum-extension",
228
+ "invalid-envvar-value",
229
+ "invalid-format-returned",
230
+ "invalid-hash-returned",
231
+ "invalid-metaclass",
232
+ "invalid-overridden-method",
233
+ "invalid-repr-returned",
234
+ "invalid-sequence-index",
235
+ "invalid-slice-index",
236
+ "invalid-slots-object",
237
+ "invalid-slots",
238
+ "invalid-star-assignment-target",
239
+ "invalid-str-returned",
240
+ "invalid-unary-operand-type",
241
+ "invalid-unicode-codec",
242
+ "isinstance-second-argument-not-valid-type",
243
+ "method-hidden",
244
+ "misplaced-format-function",
245
+ "missing-format-argument-key",
246
+ "missing-format-attribute",
247
+ "missing-kwoa",
248
+ "no-member",
249
+ "no-value-for-parameter",
250
+ "non-iterator-returned",
251
+ "non-str-assignment-to-dunder-name",
252
+ "nonlocal-and-global",
253
+ "not-a-mapping",
254
+ "not-an-iterable",
255
+ "not-async-context-manager",
256
+ "not-callable",
257
+ "not-context-manager",
258
+ "overridden-final-method",
259
+ "raising-bad-type",
260
+ "raising-non-exception",
261
+ "redundant-keyword-arg",
262
+ "relative-beyond-top-level",
263
+ "self-cls-assignment",
264
+ "signature-differs",
265
+ "star-needs-assignment-target",
266
+ "subclassed-final-class",
267
+ "super-without-brackets",
268
+ "too-many-function-args",
269
+ "typevar-double-variance",
270
+ "typevar-name-mismatch",
271
+ "unbalanced-dict-unpacking",
272
+ "unbalanced-tuple-unpacking",
273
+ "unexpected-keyword-arg",
274
+ "unhashable-member",
275
+ "unpacking-non-sequence",
276
+ "unsubscriptable-object",
277
+ "unsupported-assignment-operation",
278
+ "unsupported-binary-operation",
279
+ "unsupported-delete-operation",
280
+ "unsupported-membership-test",
281
+ "used-before-assignment",
282
+ "using-final-decorator-in-unsupported-version",
283
+ "wrong-exception-operation",
284
+ ]
285
+ enable = [
286
+ #"useless-suppression", # temporarily every now and then to clean them up
287
+ "use-symbolic-message-instead",
288
+ ]
289
+ per-file-ignores = [
290
+ # redefined-outer-name: Tests reference fixtures in the test function
291
+ # use-implicit-booleaness-not-comparison: Tests need to validate that a list
292
+ # or a dict is returned
293
+ "/tests/:redefined-outer-name,use-implicit-booleaness-not-comparison",
294
+ ]
295
+
296
+ [REPORTS]
297
+ score = false
298
+
299
+ [TYPECHECK]
300
+ ignored-classes = [
301
+ "_CountingAttr", # for attrs
302
+ ]
303
+ mixin-class-rgx = ".*[Mm]ix[Ii]n"
304
+
305
+ [FORMAT]
306
+ expected-line-ending-format = "LF"
307
+
308
+ [EXCEPTIONS]
309
+ overgeneral-exceptions = [
310
+ "builtins.BaseException",
311
+ "builtins.Exception",
312
+ # "homeassistant.exceptions.HomeAssistantError", # too many issues
313
+ ]
314
+
315
+ [TYPING]
316
+ runtime-typing = false
317
+
318
+ [CODE_STYLE]
319
+ max-line-length-suggestions = 72
@@ -0,0 +1,175 @@
1
+ # The contents of this file is based on https://github.com/home-assistant/core/blob/dev/pyproject.toml
2
+ required-version = ">=0.8.0"
3
+ target-version = "py312"
4
+
5
+ [lint]
6
+ select = [
7
+ "A001", # Variable {name} is shadowing a Python builtin
8
+ "ASYNC210", # Async functions should not call blocking HTTP methods
9
+ "ASYNC220", # Async functions should not create subprocesses with blocking methods
10
+ "ASYNC221", # Async functions should not run processes with blocking methods
11
+ "ASYNC222", # Async functions should not wait on processes with blocking methods
12
+ "ASYNC230", # Async functions should not open files with blocking methods like open
13
+ "ASYNC251", # Async functions should not call time.sleep
14
+ "B002", # Python does not support the unary prefix increment
15
+ "B005", # Using .strip() with multi-character strings is misleading
16
+ "B007", # Loop control variable {name} not used within loop body
17
+ "B014", # Exception handler with duplicate exception
18
+ "B015", # Pointless comparison. Did you mean to assign a value? Otherwise, prepend assert or remove it.
19
+ "B017", # pytest.raises(BaseException) should be considered evil
20
+ "B018", # Found useless attribute access. Either assign it to a variable or remove it.
21
+ "B023", # Function definition does not bind loop variable {name}
22
+ "B026", # Star-arg unpacking after a keyword argument is strongly discouraged
23
+ "B032", # Possible unintentional type annotation (using :). Did you mean to assign (using =)?
24
+ "B904", # Use raise from to specify exception cause
25
+ "B905", # zip() without an explicit strict= parameter
26
+ "BLE",
27
+ "C", # complexity
28
+ "COM818", # Trailing comma on bare tuple prohibited
29
+ "D", # docstrings
30
+ "DTZ003", # Use datetime.now(tz=) instead of datetime.utcnow()
31
+ "DTZ004", # Use datetime.fromtimestamp(ts, tz=) instead of datetime.utcfromtimestamp(ts)
32
+ "E", # pycodestyle
33
+ "F", # pyflakes/autoflake
34
+ "F541", # f-string without any placeholders
35
+ "FLY", # flynt
36
+ "FURB", # refurb
37
+ "G", # flake8-logging-format
38
+ "I", # isort
39
+ "INP", # flake8-no-pep420
40
+ "ISC", # flake8-implicit-str-concat
41
+ "ICN001", # import conventions; {name} should be imported as {asname}
42
+ "LOG", # flake8-logging
43
+ "N804", # First argument of a class method should be named cls
44
+ "N805", # First argument of a method should be named self
45
+ "N815", # Variable {name} in class scope should not be mixedCase
46
+ "PERF", # Perflint
47
+ "PGH", # pygrep-hooks
48
+ "PIE", # flake8-pie
49
+ "PL", # pylint
50
+ "PT", # flake8-pytest-style
51
+ "PTH", # flake8-pathlib
52
+ "PYI", # flake8-pyi
53
+ "RET", # flake8-return
54
+ "RSE", # flake8-raise
55
+ "RUF005", # Consider iterable unpacking instead of concatenation
56
+ "RUF006", # Store a reference to the return value of asyncio.create_task
57
+ "RUF010", # Use explicit conversion flag
58
+ "RUF013", # PEP 484 prohibits implicit Optional
59
+ "RUF017", # Avoid quadratic list summation
60
+ "RUF018", # Avoid assignment expressions in assert statements
61
+ "RUF019", # Unnecessary key check before dictionary access
62
+ # "RUF100", # Unused `noqa` directive; temporarily every now and then to clean them up
63
+ "S102", # Use of exec detected
64
+ "S103", # bad-file-permissions
65
+ "S108", # hardcoded-temp-file
66
+ "S306", # suspicious-mktemp-usage
67
+ "S307", # suspicious-eval-usage
68
+ "S313", # suspicious-xmlc-element-tree-usage
69
+ "S314", # suspicious-xml-element-tree-usage
70
+ "S315", # suspicious-xml-expat-reader-usage
71
+ "S316", # suspicious-xml-expat-builder-usage
72
+ "S317", # suspicious-xml-sax-usage
73
+ "S318", # suspicious-xml-mini-dom-usage
74
+ "S319", # suspicious-xml-pull-dom-usage
75
+ "S320", # suspicious-xmle-tree-usage
76
+ "S601", # paramiko-call
77
+ "S602", # subprocess-popen-with-shell-equals-true
78
+ "S604", # call-with-shell-equals-true
79
+ "S608", # hardcoded-sql-expression
80
+ "S609", # unix-command-wildcard-injection
81
+ "SIM", # flake8-simplify
82
+ "SLF", # flake8-self
83
+ "SLOT", # flake8-slots
84
+ "T100", # Trace found: {name} used
85
+ "T20", # flake8-print
86
+ "TC", # flake8-type-checking
87
+ "TID", # Tidy imports
88
+ "TRY", # tryceratops
89
+ "UP", # pyupgrade
90
+ "UP031", # Use format specifiers instead of percent format
91
+ "UP032", # Use f-string instead of `format` call
92
+ "W", # pycodestyle
93
+ ]
94
+
95
+ ignore = [
96
+ "D202", # No blank lines allowed after function docstring
97
+ "D203", # 1 blank line required before class docstring
98
+ "D213", # Multi-line docstring summary should start at the second line
99
+ "D406", # Section name should end with a newline
100
+ "D407", # Section name underlining
101
+ "E501", # line too long
102
+
103
+ "PLC1901", # {existing} can be simplified to {replacement} as an empty string is falsey; too many false positives
104
+ "PLR0911", # Too many return statements ({returns} > {max_returns})
105
+ "PLR0912", # Too many branches ({branches} > {max_branches})
106
+ "PLR0913", # Too many arguments to function call ({c_args} > {max_args})
107
+ "PLR0915", # Too many statements ({statements} > {max_statements})
108
+ "PLR2004", # Magic value used in comparison, consider replacing {value} with a constant variable
109
+ "PLW2901", # Outer {outer_kind} variable {name} overwritten by inner {inner_kind} target
110
+ "PT011", # pytest.raises({exception}) is too broad, set the `match` parameter or use a more specific exception
111
+ "PT018", # Assertion should be broken down into multiple parts
112
+ "RUF001", # String contains ambiguous unicode character.
113
+ "RUF002", # Docstring contains ambiguous unicode character.
114
+ "RUF003", # Comment contains ambiguous unicode character.
115
+ "RUF015", # Prefer next(...) over single element slice
116
+ "SIM102", # Use a single if statement instead of nested if statements
117
+ "SIM103", # Return the condition {condition} directly
118
+ "SIM108", # Use ternary operator {contents} instead of if-else-block
119
+ "SIM115", # Use context handler for opening files
120
+
121
+ # Moving imports into type-checking blocks can mess with pytest.patch()
122
+ "TC001", # Move application import {} into a type-checking block
123
+ "TC002", # Move third-party import {} into a type-checking block
124
+ "TC003", # Move standard library import {} into a type-checking block
125
+
126
+ "TRY003", # Avoid specifying long messages outside the exception class
127
+ "TRY400", # Use `logging.exception` instead of `logging.error`
128
+ # Ignored due to performance: https://github.com/charliermarsh/ruff/issues/2923
129
+ "UP038", # Use `X | Y` in `isinstance` call instead of `(X, Y)`
130
+
131
+ # May conflict with the formatter, https://docs.astral.sh/ruff/formatter/#conflicting-lint-rules
132
+ "W191",
133
+ "E111",
134
+ "E114",
135
+ "E117",
136
+ "D206",
137
+ "D300",
138
+ "Q",
139
+ "COM812",
140
+ "COM819",
141
+ "ISC001",
142
+
143
+ # Disabled because ruff does not understand type of __all__ generated by a function
144
+ "PLE0605"
145
+ ]
146
+
147
+ [lint.flake8-pytest-style]
148
+ fixture-parentheses = false
149
+ mark-parentheses = false
150
+
151
+ [lint.flake8-tidy-imports.banned-api]
152
+ "async_timeout".msg = "use asyncio.timeout instead"
153
+ "pytz".msg = "use zoneinfo instead"
154
+
155
+ [lint.isort]
156
+ force-sort-within-sections = true
157
+ known-first-party = [
158
+ "pylint",
159
+ ]
160
+ combine-as-imports = true
161
+ split-on-trailing-comma = false
162
+
163
+ [lint.per-file-ignores]
164
+ # Allow for main entry & scripts to write to stdout
165
+ "scripts/*" = ["T20"]
166
+
167
+ # Allow relative imports within auth and within components
168
+ "src/**" = ["TID252"]
169
+ "tests/**" = ["TID252"]
170
+
171
+ # Temporary
172
+ "tests/**" = ["PTH"]
173
+
174
+ [lint.mccabe]
175
+ max-complexity = 25
@@ -0,0 +1,13 @@
1
+ {
2
+ "python.testing.pytestArgs": [
3
+ "tests"
4
+ ],
5
+ // https://code.visualstudio.com/docs/python/testing#_pytest-configuration-settings
6
+ "python.testing.pytestEnabled": true,
7
+ // https://code.visualstudio.com/docs/python/linting#_general-settings
8
+ "pylint.importStrategy": "fromEnvironment",
9
+ // "python.analysis.typeCheckingMode": "basic",
10
+ "python.analysis.diagnosticMode": "workspace",
11
+ "python.testing.unittestEnabled": false,
12
+ }
13
+
@@ -0,0 +1,28 @@
1
+ {
2
+ // See https://go.microsoft.com/fwlink/?LinkId=733558
3
+ // for the documentation about the tasks.json format
4
+ "version": "2.0.0",
5
+ "tasks": [
6
+ {
7
+ "label": "Activate virtual environment",
8
+ "type": "shell",
9
+ "command": "source .venv/bin/activate"
10
+ },
11
+ {
12
+ "label": "Build package",
13
+ "type": "shell",
14
+ "command": "${command:python.interpreterPath}",
15
+ "args": ["-m", "build"]
16
+ },
17
+ {
18
+ "label": "Upload package to test",
19
+ "type": "shell",
20
+ "command": "${command:python.interpreterPath}",
21
+ "args": [
22
+ "-m", "twine", "upload",
23
+ "--repository", "testpypi",
24
+ "dist/*"
25
+ ]
26
+ }
27
+ ]
28
+ }