csu 2.2.5__tar.gz → 2.3.1__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.
- {csu-2.2.5 → csu-2.3.1}/.bumpversion.cfg +1 -1
- {csu-2.2.5 → csu-2.3.1}/.cookiecutterrc +20 -19
- {csu-2.2.5 → csu-2.3.1}/.github/workflows/github-actions.yml +7 -19
- {csu-2.2.5 → csu-2.3.1}/.pre-commit-config.yaml +9 -5
- csu-2.3.1/.tombi.toml +4 -0
- {csu-2.2.5 → csu-2.3.1}/LICENSE +1 -1
- {csu-2.2.5 → csu-2.3.1}/MANIFEST.in +1 -1
- {csu-2.2.5 → csu-2.3.1}/PKG-INFO +9 -17
- {csu-2.2.5 → csu-2.3.1}/README.rst +2 -2
- {csu-2.2.5 → csu-2.3.1}/ci/bootstrap.py +1 -1
- {csu-2.2.5 → csu-2.3.1}/ci/templates/.github/workflows/github-actions.yml +3 -2
- csu-2.3.1/pyproject.toml +114 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/__init__.py +1 -1
- {csu-2.2.5 → csu-2.3.1}/src/csu/export.py +3 -4
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_logging.py +1 -1
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_management.py +1 -1
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_service.py +4 -5
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/admin.py +1 -2
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/engine.py +3 -4
- {csu-2.2.5 → csu-2.3.1}/src/csu.egg-info/PKG-INFO +9 -17
- {csu-2.2.5 → csu-2.3.1}/src/csu.egg-info/SOURCES.txt +1 -1
- {csu-2.2.5 → csu-2.3.1}/tests/exampleworker.py +1 -1
- {csu-2.2.5 → csu-2.3.1}/tests/test_worker.py +1 -1
- {csu-2.2.5 → csu-2.3.1}/tests/testproject/settings.py +0 -2
- {csu-2.2.5 → csu-2.3.1}/tox.ini +5 -6
- csu-2.2.5/.taplo.toml +0 -3
- csu-2.2.5/pyproject.toml +0 -125
- {csu-2.2.5 → csu-2.3.1}/.coveragerc +0 -0
- {csu-2.2.5 → csu-2.3.1}/.editorconfig +0 -0
- {csu-2.2.5 → csu-2.3.1}/AUTHORS.rst +0 -0
- {csu-2.2.5 → csu-2.3.1}/CHANGELOG.rst +0 -0
- {csu-2.2.5 → csu-2.3.1}/CONTRIBUTING.rst +0 -0
- {csu-2.2.5 → csu-2.3.1}/ci/requirements.txt +0 -0
- {csu-2.2.5 → csu-2.3.1}/pytest.ini +0 -0
- {csu-2.2.5 → csu-2.3.1}/setup.cfg +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/admin.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/conf.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/consts.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/__init__.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/auth.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/fields.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/forms.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/perms.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/phonenumber.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/serializers.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/test_auth.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/test_fields.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/test_forms.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/test_phonenumber.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/test_serializers.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/drf/views.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/enums.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/env.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/exceptions.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/fixups.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/forms/__init__.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/forms/crispy.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/forms/fields.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/gettext.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/gettext_lazy.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/locale/ro/LC_MESSAGES/django.mo +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/locale/ro/LC_MESSAGES/django.po +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/logging.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/management.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/models.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/query.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/routers.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/service.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/templates/api_exception.html +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/templates/forms/widgets/opaquewidget.html +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_consts.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_env.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_exceptions.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_timezones.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_utils.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/test_xml.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/timezones.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/utils.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/views.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/__init__.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/asgi.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/enums.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/job.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/models.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/worker/registry.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/wsgi.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu/xml.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu.egg-info/dependency_links.txt +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu.egg-info/requires.txt +0 -0
- {csu-2.2.5 → csu-2.3.1}/src/csu.egg-info/top_level.txt +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service/test_custom_context.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service/test_custom_context_0_retries.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service/test_decoding.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service/test_error.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service/test_logging.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service/test_redirects.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service_auth/test_async.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/cassettes/test_service_auth/test_sync.yaml +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/conftest.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/test_exampleworker.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/test_models.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/test_service.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/test_service_auth.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/test_views.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/testproject/__init__.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/testproject/fixtures/testuser.json +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/testproject/models.py +0 -0
- {csu-2.2.5 → csu-2.3.1}/tests/testproject/urls.py +0 -0
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
# Generated by cookiepatcher, a small shim around cookiecutter (pip install cookiepatcher)
|
|
2
2
|
|
|
3
3
|
default_context:
|
|
4
|
-
c_extension_optional:
|
|
4
|
+
c_extension_optional: false
|
|
5
5
|
c_extension_support: 'no'
|
|
6
|
-
codacy:
|
|
6
|
+
codacy: true
|
|
7
7
|
codacy_projectid: '[Get ID from https://app.codacy.com/gh/ionelmc/python-csu/settings]'
|
|
8
|
-
codeclimate:
|
|
9
|
-
codecov:
|
|
8
|
+
codeclimate: false
|
|
9
|
+
codecov: true
|
|
10
10
|
command_line_interface: 'no'
|
|
11
11
|
command_line_interface_bin_name: csu
|
|
12
|
-
coveralls:
|
|
12
|
+
coveralls: true
|
|
13
13
|
distribution_name: csu
|
|
14
14
|
email: contact@ionelmc.ro
|
|
15
15
|
formatter_quote_style: double
|
|
16
16
|
full_name: Ionel Cristian Mărieș
|
|
17
17
|
function_name: compute
|
|
18
|
-
github_actions:
|
|
19
|
-
github_actions_osx:
|
|
20
|
-
github_actions_windows:
|
|
18
|
+
github_actions: true
|
|
19
|
+
github_actions_osx: false
|
|
20
|
+
github_actions_windows: true
|
|
21
21
|
license: BSD 2-Clause License
|
|
22
22
|
module_name: core
|
|
23
23
|
package_name: csu
|
|
24
|
-
pre_commit:
|
|
24
|
+
pre_commit: true
|
|
25
25
|
project_name: CSU
|
|
26
26
|
project_short_description: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
|
|
27
|
-
pypi_badge:
|
|
28
|
-
pypi_disable_upload:
|
|
27
|
+
pypi_badge: true
|
|
28
|
+
pypi_disable_upload: false
|
|
29
29
|
release_date: today
|
|
30
30
|
repo_hosting: github.com
|
|
31
31
|
repo_hosting_domain: github.com
|
|
32
32
|
repo_main_branch: main
|
|
33
33
|
repo_name: python-csu
|
|
34
34
|
repo_username: ionelmc
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
ruff_unsafe_fixes: true
|
|
36
|
+
scrutinizer: true
|
|
37
|
+
setup_py_uses_setuptools_scm: false
|
|
38
|
+
sphinx_docs: false
|
|
38
39
|
sphinx_docs_hosting: https://python-csu.readthedocs.io/
|
|
39
|
-
sphinx_doctest:
|
|
40
|
+
sphinx_doctest: false
|
|
40
41
|
sphinx_theme: furo
|
|
41
|
-
test_matrix_separate_coverage:
|
|
42
|
-
tests_inside_package:
|
|
43
|
-
version: 2.
|
|
42
|
+
test_matrix_separate_coverage: false
|
|
43
|
+
tests_inside_package: true
|
|
44
|
+
version: 2.3.1
|
|
44
45
|
version_manager: bump2version
|
|
45
46
|
website: https://blog.ionelmc.ro
|
|
46
47
|
year_from: '2024'
|
|
47
|
-
year_to:
|
|
48
|
+
year_to: current
|
|
@@ -13,35 +13,23 @@ jobs:
|
|
|
13
13
|
python: '3.13'
|
|
14
14
|
tox_env: 'check'
|
|
15
15
|
os: 'ubuntu-latest'
|
|
16
|
-
- name: '
|
|
17
|
-
python: '3.13'
|
|
18
|
-
python_arch: 'x64'
|
|
19
|
-
tox_env: 'py313-dj4'
|
|
20
|
-
os: 'ubuntu-latest'
|
|
21
|
-
cover: true
|
|
22
|
-
- name: 'py313-dj5 (ubuntu/x64)'
|
|
23
|
-
python: '3.13'
|
|
24
|
-
python_arch: 'x64'
|
|
25
|
-
tox_env: 'py313-dj5'
|
|
26
|
-
os: 'ubuntu-latest'
|
|
27
|
-
cover: true
|
|
28
|
-
- name: 'py314-dj4 (ubuntu/x64)'
|
|
16
|
+
- name: 'py314 (ubuntu/x64)'
|
|
29
17
|
python: '3.14'
|
|
30
18
|
python_arch: 'x64'
|
|
31
|
-
tox_env: 'py314
|
|
19
|
+
tox_env: 'py314'
|
|
32
20
|
os: 'ubuntu-latest'
|
|
33
21
|
cover: true
|
|
34
|
-
- name: 'py314
|
|
22
|
+
- name: 'py314 (windows/x64)'
|
|
35
23
|
python: '3.14'
|
|
36
24
|
python_arch: 'x64'
|
|
37
|
-
tox_env: 'py314
|
|
38
|
-
os: '
|
|
25
|
+
tox_env: 'py314'
|
|
26
|
+
os: 'windows-latest'
|
|
39
27
|
cover: true
|
|
40
28
|
steps:
|
|
41
|
-
- uses: actions/checkout@
|
|
29
|
+
- uses: actions/checkout@v6
|
|
42
30
|
with:
|
|
43
31
|
fetch-depth: 0
|
|
44
|
-
- uses: actions/setup-python@
|
|
32
|
+
- uses: actions/setup-python@v6
|
|
45
33
|
with:
|
|
46
34
|
python-version: ${{ matrix.python }}
|
|
47
35
|
architecture: ${{ matrix.python_arch }}
|
|
@@ -11,16 +11,20 @@ repos:
|
|
|
11
11
|
- id: django-upgrade
|
|
12
12
|
args: [ --target-version, "5.2" ]
|
|
13
13
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
14
|
-
rev: v0.15.
|
|
14
|
+
rev: v0.15.10
|
|
15
15
|
hooks:
|
|
16
16
|
- id: ruff
|
|
17
|
+
# Using --unsafe-fixes can change code behavior
|
|
17
18
|
args: [--fix, --exit-non-zero-on-fix, --show-fixes, --unsafe-fixes]
|
|
18
19
|
- id: ruff-format
|
|
19
|
-
- repo: https://github.com/
|
|
20
|
-
rev: v0.9.
|
|
20
|
+
- repo: https://github.com/tombi-toml/tombi-pre-commit
|
|
21
|
+
rev: v0.9.16
|
|
21
22
|
hooks:
|
|
22
|
-
- id:
|
|
23
|
-
|
|
23
|
+
- id: tombi-format
|
|
24
|
+
# args: [ "--offline" ]
|
|
25
|
+
- id: tombi-lint
|
|
26
|
+
# args: [ "--offline" ]
|
|
27
|
+
# Should you use this offline, uncomment those args
|
|
24
28
|
- repo: https://github.com/rtts/djhtml
|
|
25
29
|
rev: 3.0.10
|
|
26
30
|
hooks:
|
csu-2.3.1/.tombi.toml
ADDED
{csu-2.2.5 → csu-2.3.1}/LICENSE
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
BSD 2-Clause License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2024, Ionel Cristian Mărieș. All rights reserved.
|
|
3
|
+
Copyright (c) 2024-2026, Ionel Cristian Mărieș. All rights reserved.
|
|
4
4
|
|
|
5
5
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
|
6
6
|
|
{csu-2.2.5 → csu-2.3.1}/PKG-INFO
RENAMED
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csu
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
|
|
5
5
|
Author-email: Ionel Cristian Mărieș <contact@ionelmc.ro>
|
|
6
6
|
License-Expression: BSD-2-Clause
|
|
7
|
-
Project-URL: Sources, https://github.com/ionelmc/python-csu
|
|
8
|
-
Project-URL: Changelog, https://github.com/ionelmc/python-csu/blob/master/CHANGELOG.rst
|
|
9
|
-
Project-URL: Issue Tracker, https://github.com/ionelmc/python-csu/issues
|
|
10
7
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
8
|
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: Operating System :: Unix
|
|
13
|
-
Classifier: Operating System :: POSIX
|
|
14
9
|
Classifier: Operating System :: Microsoft :: Windows
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: Unix
|
|
15
12
|
Classifier: Programming Language :: Python
|
|
16
13
|
Classifier: Programming Language :: Python :: 3
|
|
17
14
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
23
15
|
Classifier: Programming Language :: Python :: 3.14
|
|
24
16
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
25
17
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -27,18 +19,18 @@ Classifier: Topic :: Utilities
|
|
|
27
19
|
Requires-Python: >=3.14
|
|
28
20
|
Description-Content-Type: text/x-rst
|
|
29
21
|
License-File: LICENSE
|
|
30
|
-
Provides-Extra: http
|
|
31
|
-
Requires-Dist: niquests[brotli,http3]; extra == "http"
|
|
32
|
-
Provides-Extra: xml
|
|
33
|
-
Requires-Dist: defusedxml; extra == "xml"
|
|
34
22
|
Provides-Extra: django
|
|
35
23
|
Requires-Dist: django; extra == "django"
|
|
36
24
|
Requires-Dist: djangorestframework; extra == "django"
|
|
37
25
|
Requires-Dist: django-crispy-forms; extra == "django"
|
|
38
26
|
Requires-Dist: django-import-export; extra == "django"
|
|
27
|
+
Provides-Extra: http
|
|
28
|
+
Requires-Dist: niquests[brotli,http3]; extra == "http"
|
|
39
29
|
Provides-Extra: phonenumber
|
|
40
30
|
Requires-Dist: phonenumberslite; extra == "phonenumber"
|
|
41
31
|
Requires-Dist: django-phonenumber-field; extra == "phonenumber"
|
|
32
|
+
Provides-Extra: xml
|
|
33
|
+
Requires-Dist: defusedxml; extra == "xml"
|
|
42
34
|
Dynamic: license-file
|
|
43
35
|
|
|
44
36
|
========
|
|
@@ -77,9 +69,9 @@ Overview
|
|
|
77
69
|
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
|
|
78
70
|
:alt: Supported implementations
|
|
79
71
|
:target: https://pypi.org/project/csu
|
|
80
|
-
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.
|
|
72
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.3.1.svg
|
|
81
73
|
:alt: Commits since latest release
|
|
82
|
-
:target: https://github.com/ionelmc/python-csu/compare/v2.
|
|
74
|
+
:target: https://github.com/ionelmc/python-csu/compare/v2.3.1...main
|
|
83
75
|
.. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
|
|
84
76
|
:alt: Scrutinizer Status
|
|
85
77
|
:target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
|
|
@@ -34,9 +34,9 @@ Overview
|
|
|
34
34
|
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
|
|
35
35
|
:alt: Supported implementations
|
|
36
36
|
:target: https://pypi.org/project/csu
|
|
37
|
-
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.
|
|
37
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.3.1.svg
|
|
38
38
|
:alt: Commits since latest release
|
|
39
|
-
:target: https://github.com/ionelmc/python-csu/compare/v2.
|
|
39
|
+
:target: https://github.com/ionelmc/python-csu/compare/v2.3.1...main
|
|
40
40
|
.. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
|
|
41
41
|
:alt: Scrutinizer Status
|
|
42
42
|
:target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
|
|
@@ -57,7 +57,7 @@ def main():
|
|
|
57
57
|
# This uses sys.executable the same way that the call in
|
|
58
58
|
# cookiecutter-pylibrary/hooks/post_gen_project.py
|
|
59
59
|
# invokes this bootstrap.py itself.
|
|
60
|
-
for line in subprocess.check_output([sys.executable, "-m", "tox", "--listenvs"],
|
|
60
|
+
for line in subprocess.check_output([sys.executable, "-m", "tox", "--listenvs"], text=True).splitlines()
|
|
61
61
|
]
|
|
62
62
|
tox_environments = [line for line in tox_environments if line.startswith("py")]
|
|
63
63
|
for template in templates_path.rglob("*"):
|
|
@@ -25,6 +25,7 @@ jobs:
|
|
|
25
25
|
{% endif %}
|
|
26
26
|
{% for os, python_arch in [
|
|
27
27
|
['ubuntu', 'x64'],
|
|
28
|
+
['windows', 'x64'],
|
|
28
29
|
] %}
|
|
29
30
|
- name: '{{ env }} ({{ os }}/{{ python_arch }})'
|
|
30
31
|
python: '{{ python }}'
|
|
@@ -35,10 +36,10 @@ jobs:
|
|
|
35
36
|
{% endfor %}
|
|
36
37
|
{% endfor %}
|
|
37
38
|
steps:
|
|
38
|
-
- uses: actions/checkout@
|
|
39
|
+
- uses: actions/checkout@v6
|
|
39
40
|
with:
|
|
40
41
|
fetch-depth: 0
|
|
41
|
-
- uses: actions/setup-python@
|
|
42
|
+
- uses: actions/setup-python@v6
|
|
42
43
|
with:
|
|
43
44
|
python-version: {{ '${{ matrix.python }}' }}
|
|
44
45
|
architecture: {{ '${{ matrix.python_arch }}' }}
|
csu-2.3.1/pyproject.toml
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "csu"
|
|
3
|
+
version = "2.3.1"
|
|
4
|
+
description = "Clean Slate Utils - bunch of utility code, mostly Django/DRF specific."
|
|
5
|
+
requires-python = ">=3.14"
|
|
6
|
+
license = "BSD-2-Clause"
|
|
7
|
+
license-files = ["LICENSE"]
|
|
8
|
+
authors = [
|
|
9
|
+
{ name = "Ionel Cristian Mărieș", email = "contact@ionelmc.ro" },
|
|
10
|
+
]
|
|
11
|
+
keywords = [
|
|
12
|
+
# eg: "keyword1", "keyword2", "keyword3",
|
|
13
|
+
]
|
|
14
|
+
classifiers = [
|
|
15
|
+
# complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers
|
|
16
|
+
"Development Status :: 5 - Production/Stable",
|
|
17
|
+
"Intended Audience :: Developers",
|
|
18
|
+
"Operating System :: Microsoft :: Windows",
|
|
19
|
+
"Operating System :: POSIX",
|
|
20
|
+
"Operating System :: Unix",
|
|
21
|
+
"Programming Language :: Python",
|
|
22
|
+
"Programming Language :: Python :: 3",
|
|
23
|
+
"Programming Language :: Python :: 3 :: Only",
|
|
24
|
+
"Programming Language :: Python :: 3.14",
|
|
25
|
+
"Programming Language :: Python :: Implementation :: CPython",
|
|
26
|
+
"Programming Language :: Python :: Implementation :: PyPy",
|
|
27
|
+
# uncomment if you test on these interpreters:
|
|
28
|
+
# "Programming Language :: Python :: Implementation :: IronPython",
|
|
29
|
+
# "Programming Language :: Python :: Implementation :: Jython",
|
|
30
|
+
# "Programming Language :: Python :: Implementation :: Stackless",
|
|
31
|
+
"Topic :: Utilities",
|
|
32
|
+
]
|
|
33
|
+
dependencies = []
|
|
34
|
+
dynamic = [
|
|
35
|
+
"readme",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[project.optional-dependencies]
|
|
39
|
+
django = [
|
|
40
|
+
"django",
|
|
41
|
+
"djangorestframework",
|
|
42
|
+
"django-crispy-forms",
|
|
43
|
+
"django-import-export",
|
|
44
|
+
]
|
|
45
|
+
http = [
|
|
46
|
+
"niquests[brotli,http3]",
|
|
47
|
+
]
|
|
48
|
+
phonenumber = [
|
|
49
|
+
"phonenumberslite",
|
|
50
|
+
"django-phonenumber-field",
|
|
51
|
+
]
|
|
52
|
+
xml = [
|
|
53
|
+
"defusedxml",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
[build-system]
|
|
57
|
+
requires = [
|
|
58
|
+
"setuptools>=80",
|
|
59
|
+
]
|
|
60
|
+
build-backend = "setuptools.build_meta"
|
|
61
|
+
|
|
62
|
+
[tool.ruff]
|
|
63
|
+
extend-exclude = ["static", "ci/templates"]
|
|
64
|
+
line-length = 160
|
|
65
|
+
src = ["src", "tests"]
|
|
66
|
+
target-version = "py314"
|
|
67
|
+
|
|
68
|
+
[tool.ruff.lint]
|
|
69
|
+
ignore = [
|
|
70
|
+
"RUF001", # ruff-specific rules ambiguous-unicode-character-string
|
|
71
|
+
"RUF012", # ruff-specific rules mutable-class-default
|
|
72
|
+
"S101", # flake8-bandit assert
|
|
73
|
+
"S308", # flake8-bandit suspicious-mark-safe-usage
|
|
74
|
+
"S603", # flake8-bandit subprocess-without-shell-equals-true
|
|
75
|
+
"S607", # flake8-bandit start-process-with-partial-path
|
|
76
|
+
"E501", # pycodestyle line-too-long
|
|
77
|
+
]
|
|
78
|
+
select = [
|
|
79
|
+
"B", # flake8-bugbear
|
|
80
|
+
"C4", # flake8-comprehensions
|
|
81
|
+
"DTZ", # flake8-datetimez
|
|
82
|
+
"E", # pycodestyle errors
|
|
83
|
+
"EXE", # flake8-executable
|
|
84
|
+
"F", # pyflakes
|
|
85
|
+
"I", # isort
|
|
86
|
+
"INT", # flake8-gettext
|
|
87
|
+
"PIE", # flake8-pie
|
|
88
|
+
"PLC", # pylint convention
|
|
89
|
+
"PLE", # pylint errors
|
|
90
|
+
"PT", # flake8-pytest-style
|
|
91
|
+
"PTH", # flake8-use-pathlib
|
|
92
|
+
"RSE", # flake8-raise
|
|
93
|
+
"RUF", # ruff-specific rules
|
|
94
|
+
"S", # flake8-bandit
|
|
95
|
+
"UP", # pyupgrade
|
|
96
|
+
"W", # pycodestyle warnings
|
|
97
|
+
]
|
|
98
|
+
|
|
99
|
+
[tool.ruff.lint.per-file-ignores]
|
|
100
|
+
"ci/*" = ["S"]
|
|
101
|
+
|
|
102
|
+
[tool.ruff.lint.flake8-pytest-style]
|
|
103
|
+
fixture-parentheses = false
|
|
104
|
+
mark-parentheses = false
|
|
105
|
+
|
|
106
|
+
[tool.ruff.lint.isort]
|
|
107
|
+
forced-separate = ["conftest"]
|
|
108
|
+
force-single-line = true
|
|
109
|
+
|
|
110
|
+
[tool.ruff.format]
|
|
111
|
+
quote-style = "double"
|
|
112
|
+
|
|
113
|
+
[tool.setuptools.dynamic]
|
|
114
|
+
readme = { file = ["README.rst", "CHANGELOG.rst"] }
|
|
@@ -26,10 +26,9 @@ from import_export.widgets import Widget
|
|
|
26
26
|
from rest_framework import serializers
|
|
27
27
|
from tablib import InvalidDimensions
|
|
28
28
|
|
|
29
|
-
from
|
|
30
|
-
from
|
|
31
|
-
from
|
|
32
|
-
|
|
29
|
+
from .gettext import _
|
|
30
|
+
from .timezones import adjust_dt
|
|
31
|
+
from .timezones import now
|
|
33
32
|
from .timezones import today
|
|
34
33
|
|
|
35
34
|
EXPORT_FORMATS = {
|
|
@@ -4,13 +4,12 @@ import time_machine
|
|
|
4
4
|
from niquests import PreparedRequest
|
|
5
5
|
from niquests import Response
|
|
6
6
|
|
|
7
|
-
from csu.service import AsyncHTTPService
|
|
8
|
-
from csu.service import AsyncHTTPServiceContext
|
|
9
|
-
from csu.service import HTTPService
|
|
10
|
-
from csu.service import HTTPServiceContext
|
|
11
|
-
|
|
12
7
|
from . import exceptions
|
|
13
8
|
from .exceptions import get_event_id
|
|
9
|
+
from .service import AsyncHTTPService
|
|
10
|
+
from .service import AsyncHTTPServiceContext
|
|
11
|
+
from .service import HTTPService
|
|
12
|
+
from .service import HTTPServiceContext
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
def test_get_accident_id(monkeypatch):
|
|
@@ -8,8 +8,6 @@ from django.utils.html import format_html
|
|
|
8
8
|
from django.utils.safestring import mark_safe
|
|
9
9
|
from import_export.admin import ImportExportMixin
|
|
10
10
|
|
|
11
|
-
from csu.timezones import now
|
|
12
|
-
|
|
13
11
|
from ..export import ChoiceWidget
|
|
14
12
|
from ..export import FullFilenameExportAdminMixin
|
|
15
13
|
from ..export import SmartModelResource
|
|
@@ -17,6 +15,7 @@ from ..gettext import _
|
|
|
17
15
|
from .models import AbstractTask
|
|
18
16
|
from .models import QueueState
|
|
19
17
|
from .models import ResultType
|
|
18
|
+
from .timezones import now
|
|
20
19
|
|
|
21
20
|
|
|
22
21
|
class AbstractTaskResource(SmartModelResource):
|
|
@@ -64,7 +64,7 @@ class AbstractWorker(ABC):
|
|
|
64
64
|
cls = type(self)
|
|
65
65
|
cls.id_counter += 1
|
|
66
66
|
self.id = cls.id_counter
|
|
67
|
-
self.runner = asyncio.create_task(self.run())
|
|
67
|
+
self.runner = asyncio.create_task(self.run(), name=f"{type(self).__name__}({self.id}).runner")
|
|
68
68
|
# noinspection PyTypeChecker
|
|
69
69
|
self.runner.add_done_callback(self.on_exit)
|
|
70
70
|
logger.info("%s started.", self)
|
|
@@ -248,7 +248,6 @@ class AbstractConsumer(AbstractWorker):
|
|
|
248
248
|
result = await self.save_result(
|
|
249
249
|
job,
|
|
250
250
|
result_type=self.result_type_enum.SUCCESS if fields else self.result_type_enum.ABSENT,
|
|
251
|
-
result_details=None if fields else repr(fields),
|
|
252
251
|
**fields or {},
|
|
253
252
|
)
|
|
254
253
|
idle = False
|
|
@@ -331,9 +330,9 @@ class AbstractEngine(ABC):
|
|
|
331
330
|
if not graceful:
|
|
332
331
|
self.shutdown_tasks[True].cancel()
|
|
333
332
|
if graceful in self.shutdown_tasks:
|
|
334
|
-
logger.
|
|
333
|
+
logger.warning("%s.shutdown_handler(%s) already requested", self, sig_name)
|
|
335
334
|
else:
|
|
336
|
-
self.shutdown_tasks[graceful] = asyncio.create_task(self.stop(graceful=graceful))
|
|
335
|
+
self.shutdown_tasks[graceful] = asyncio.create_task(self.stop(graceful=graceful), name=f"{type(self).__name__}.stop(graceful={graceful})")
|
|
337
336
|
self.shutdown_requested = True
|
|
338
337
|
|
|
339
338
|
async def stop(self, graceful=False):
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csu
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
4
4
|
Summary: Clean Slate Utils - bunch of utility code, mostly Django/DRF specific.
|
|
5
5
|
Author-email: Ionel Cristian Mărieș <contact@ionelmc.ro>
|
|
6
6
|
License-Expression: BSD-2-Clause
|
|
7
|
-
Project-URL: Sources, https://github.com/ionelmc/python-csu
|
|
8
|
-
Project-URL: Changelog, https://github.com/ionelmc/python-csu/blob/master/CHANGELOG.rst
|
|
9
|
-
Project-URL: Issue Tracker, https://github.com/ionelmc/python-csu/issues
|
|
10
7
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
8
|
Classifier: Intended Audience :: Developers
|
|
12
|
-
Classifier: Operating System :: Unix
|
|
13
|
-
Classifier: Operating System :: POSIX
|
|
14
9
|
Classifier: Operating System :: Microsoft :: Windows
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: Unix
|
|
15
12
|
Classifier: Programming Language :: Python
|
|
16
13
|
Classifier: Programming Language :: Python :: 3
|
|
17
14
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
23
15
|
Classifier: Programming Language :: Python :: 3.14
|
|
24
16
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
25
17
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -27,18 +19,18 @@ Classifier: Topic :: Utilities
|
|
|
27
19
|
Requires-Python: >=3.14
|
|
28
20
|
Description-Content-Type: text/x-rst
|
|
29
21
|
License-File: LICENSE
|
|
30
|
-
Provides-Extra: http
|
|
31
|
-
Requires-Dist: niquests[brotli,http3]; extra == "http"
|
|
32
|
-
Provides-Extra: xml
|
|
33
|
-
Requires-Dist: defusedxml; extra == "xml"
|
|
34
22
|
Provides-Extra: django
|
|
35
23
|
Requires-Dist: django; extra == "django"
|
|
36
24
|
Requires-Dist: djangorestframework; extra == "django"
|
|
37
25
|
Requires-Dist: django-crispy-forms; extra == "django"
|
|
38
26
|
Requires-Dist: django-import-export; extra == "django"
|
|
27
|
+
Provides-Extra: http
|
|
28
|
+
Requires-Dist: niquests[brotli,http3]; extra == "http"
|
|
39
29
|
Provides-Extra: phonenumber
|
|
40
30
|
Requires-Dist: phonenumberslite; extra == "phonenumber"
|
|
41
31
|
Requires-Dist: django-phonenumber-field; extra == "phonenumber"
|
|
32
|
+
Provides-Extra: xml
|
|
33
|
+
Requires-Dist: defusedxml; extra == "xml"
|
|
42
34
|
Dynamic: license-file
|
|
43
35
|
|
|
44
36
|
========
|
|
@@ -77,9 +69,9 @@ Overview
|
|
|
77
69
|
.. |supported-implementations| image:: https://img.shields.io/pypi/implementation/csu.svg
|
|
78
70
|
:alt: Supported implementations
|
|
79
71
|
:target: https://pypi.org/project/csu
|
|
80
|
-
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.
|
|
72
|
+
.. |commits-since| image:: https://img.shields.io/github/commits-since/ionelmc/python-csu/v2.3.1.svg
|
|
81
73
|
:alt: Commits since latest release
|
|
82
|
-
:target: https://github.com/ionelmc/python-csu/compare/v2.
|
|
74
|
+
:target: https://github.com/ionelmc/python-csu/compare/v2.3.1...main
|
|
83
75
|
.. |scrutinizer| image:: https://img.shields.io/scrutinizer/quality/g/ionelmc/python-csu/main.svg
|
|
84
76
|
:alt: Scrutinizer Status
|
|
85
77
|
:target: https://scrutinizer-ci.com/g/ionelmc/python-csu/
|
|
@@ -59,4 +59,4 @@ async def test_cancel():
|
|
|
59
59
|
with pytest.raises(TimeoutError):
|
|
60
60
|
await asyncio.wait_for(job1.done, 0.1)
|
|
61
61
|
result = await asyncio.wait_for(job2.done, 1)
|
|
62
|
-
assert result == {"result_type": ResultType.SUCCESS, "
|
|
62
|
+
assert result == {"result_type": ResultType.SUCCESS, "time": 0}
|
{csu-2.2.5 → csu-2.3.1}/tox.ini
RENAMED
|
@@ -13,7 +13,7 @@ passenv =
|
|
|
13
13
|
envlist =
|
|
14
14
|
clean,
|
|
15
15
|
check,
|
|
16
|
-
py314
|
|
16
|
+
py314,
|
|
17
17
|
report
|
|
18
18
|
ignore_basepython_conflict = true
|
|
19
19
|
|
|
@@ -41,15 +41,14 @@ deps =
|
|
|
41
41
|
hunter
|
|
42
42
|
django-crispy-forms==2.6
|
|
43
43
|
django-import-export==4.4.0
|
|
44
|
-
djangorestframework==3.
|
|
45
|
-
phonenumberslite==9.0.
|
|
44
|
+
djangorestframework==3.17.1
|
|
45
|
+
phonenumberslite==9.0.28
|
|
46
46
|
django-phonenumber-field==8.4.0
|
|
47
|
-
niquests[brotli,http3]==3.18.
|
|
47
|
+
niquests[brotli,http3]==3.18.6
|
|
48
48
|
datetimerange==2.3.2
|
|
49
49
|
defusedxml==0.7.1
|
|
50
50
|
django-rosetta
|
|
51
|
-
|
|
52
|
-
dj6: django==6.0.2
|
|
51
|
+
django==6.0.4
|
|
53
52
|
commands =
|
|
54
53
|
{posargs:pytest --cov --cov-report=term-missing --cov-report=xml -vv}
|
|
55
54
|
|
csu-2.2.5/.taplo.toml
DELETED
csu-2.2.5/pyproject.toml
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
[build-system]
|
|
2
|
-
requires = [
|
|
3
|
-
"setuptools>=80",
|
|
4
|
-
]
|
|
5
|
-
build-backend = "setuptools.build_meta"
|
|
6
|
-
|
|
7
|
-
[tool.setuptools.dynamic]
|
|
8
|
-
readme = { file = ["README.rst", "CHANGELOG.rst"] }
|
|
9
|
-
|
|
10
|
-
[project]
|
|
11
|
-
dynamic = [
|
|
12
|
-
"readme",
|
|
13
|
-
]
|
|
14
|
-
name = "csu"
|
|
15
|
-
version = "2.2.5"
|
|
16
|
-
license = "BSD-2-Clause"
|
|
17
|
-
license-files = ["LICENSE"]
|
|
18
|
-
description = "Clean Slate Utils - bunch of utility code, mostly Django/DRF specific."
|
|
19
|
-
authors = [
|
|
20
|
-
{ name = "Ionel Cristian Mărieș", email = "contact@ionelmc.ro" },
|
|
21
|
-
]
|
|
22
|
-
classifiers = [
|
|
23
|
-
# complete classifier list: http://pypi.python.org/pypi?%3Aaction=list_classifiers
|
|
24
|
-
"Development Status :: 5 - Production/Stable",
|
|
25
|
-
"Intended Audience :: Developers",
|
|
26
|
-
"Operating System :: Unix",
|
|
27
|
-
"Operating System :: POSIX",
|
|
28
|
-
"Operating System :: Microsoft :: Windows",
|
|
29
|
-
"Programming Language :: Python",
|
|
30
|
-
"Programming Language :: Python :: 3",
|
|
31
|
-
"Programming Language :: Python :: 3 :: Only",
|
|
32
|
-
"Programming Language :: Python :: 3.9",
|
|
33
|
-
"Programming Language :: Python :: 3.10",
|
|
34
|
-
"Programming Language :: Python :: 3.11",
|
|
35
|
-
"Programming Language :: Python :: 3.12",
|
|
36
|
-
"Programming Language :: Python :: 3.13",
|
|
37
|
-
"Programming Language :: Python :: 3.14",
|
|
38
|
-
"Programming Language :: Python :: Implementation :: CPython",
|
|
39
|
-
"Programming Language :: Python :: Implementation :: PyPy",
|
|
40
|
-
# uncomment if you test on these interpreters:
|
|
41
|
-
# "Programming Language :: Python :: Implementation :: IronPython",
|
|
42
|
-
# "Programming Language :: Python :: Implementation :: Jython",
|
|
43
|
-
# "Programming Language :: Python :: Implementation :: Stackless",
|
|
44
|
-
"Topic :: Utilities",
|
|
45
|
-
]
|
|
46
|
-
keywords = [
|
|
47
|
-
# eg: "keyword1", "keyword2", "keyword3",
|
|
48
|
-
]
|
|
49
|
-
requires-python = ">=3.14"
|
|
50
|
-
dependencies = [
|
|
51
|
-
]
|
|
52
|
-
|
|
53
|
-
[project.optional-dependencies]
|
|
54
|
-
http = [
|
|
55
|
-
"niquests[brotli,http3]",
|
|
56
|
-
]
|
|
57
|
-
xml = [
|
|
58
|
-
"defusedxml",
|
|
59
|
-
]
|
|
60
|
-
django = [
|
|
61
|
-
"django",
|
|
62
|
-
"djangorestframework",
|
|
63
|
-
"django-crispy-forms",
|
|
64
|
-
"django-import-export",
|
|
65
|
-
]
|
|
66
|
-
phonenumber = [
|
|
67
|
-
"phonenumberslite",
|
|
68
|
-
"django-phonenumber-field",
|
|
69
|
-
]
|
|
70
|
-
|
|
71
|
-
[project.urls]
|
|
72
|
-
"Sources" = "https://github.com/ionelmc/python-csu"
|
|
73
|
-
"Changelog" = "https://github.com/ionelmc/python-csu/blob/master/CHANGELOG.rst"
|
|
74
|
-
"Issue Tracker" = "https://github.com/ionelmc/python-csu/issues"
|
|
75
|
-
|
|
76
|
-
[tool.ruff]
|
|
77
|
-
extend-exclude = ["static", "ci/templates"]
|
|
78
|
-
line-length = 160
|
|
79
|
-
src = ["src", "tests"]
|
|
80
|
-
target-version = "py314"
|
|
81
|
-
|
|
82
|
-
[tool.ruff.lint.per-file-ignores]
|
|
83
|
-
"ci/*" = ["S"]
|
|
84
|
-
|
|
85
|
-
[tool.ruff.lint]
|
|
86
|
-
ignore = [
|
|
87
|
-
"RUF001", # ruff-specific rules ambiguous-unicode-character-string
|
|
88
|
-
"RUF012", # ruff-specific rules mutable-class-default
|
|
89
|
-
"S101", # flake8-bandit assert
|
|
90
|
-
"S308", # flake8-bandit suspicious-mark-safe-usage
|
|
91
|
-
"S603", # flake8-bandit subprocess-without-shell-equals-true
|
|
92
|
-
"S607", # flake8-bandit start-process-with-partial-path
|
|
93
|
-
"E501", # pycodestyle line-too-long
|
|
94
|
-
]
|
|
95
|
-
select = [
|
|
96
|
-
"B", # flake8-bugbear
|
|
97
|
-
"C4", # flake8-comprehensions
|
|
98
|
-
"DTZ", # flake8-datetimez
|
|
99
|
-
"E", # pycodestyle errors
|
|
100
|
-
"EXE", # flake8-executable
|
|
101
|
-
"F", # pyflakes
|
|
102
|
-
"I", # isort
|
|
103
|
-
"INT", # flake8-gettext
|
|
104
|
-
"PIE", # flake8-pie
|
|
105
|
-
"PLC", # pylint convention
|
|
106
|
-
"PLE", # pylint errors
|
|
107
|
-
"PT", # flake8-pytest-style
|
|
108
|
-
"PTH", # flake8-use-pathlib
|
|
109
|
-
"RSE", # flake8-raise
|
|
110
|
-
"RUF", # ruff-specific rules
|
|
111
|
-
"S", # flake8-bandit
|
|
112
|
-
"UP", # pyupgrade
|
|
113
|
-
"W", # pycodestyle warnings
|
|
114
|
-
]
|
|
115
|
-
|
|
116
|
-
[tool.ruff.lint.flake8-pytest-style]
|
|
117
|
-
fixture-parentheses = false
|
|
118
|
-
mark-parentheses = false
|
|
119
|
-
|
|
120
|
-
[tool.ruff.lint.isort]
|
|
121
|
-
forced-separate = ["conftest"]
|
|
122
|
-
force-single-line = true
|
|
123
|
-
|
|
124
|
-
[tool.ruff.format]
|
|
125
|
-
quote-style = "double"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|