wexample-filestate-python 6.7.1__tar.gz → 6.8.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.
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/PKG-INFO +4 -4
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/README.md +2 -2
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/pyproject.toml +2 -2
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_class_attributes_utils.py +26 -1
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/common/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/common/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/common/pipy_gateway.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_option/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_option/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_option/mixin/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_option/mixin/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_option/mixin/with_stdout_wrapping_mixin.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_value/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_value/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/config_value/python_config_value.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/const/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/const/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/const/name_pattern.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/const/path.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/const/python_file.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/event/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/event/src/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/event/src/wexample_event/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/file/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/file/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/file/python_file.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/helpers/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/helpers/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/helpers/package.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/helpers/python/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/helpers/toml.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/abstract_python_file_content_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/add_future_annotations_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/add_return_types_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/class_name_matches_file_name_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/fix_attrs_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/fix_blank_lines_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/format_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/fstringify_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/modernize_typing_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_class_attributes_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_class_docstring_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_class_methods_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_constants_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_iterable_items_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_main_guard_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_module_docstring_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_module_functions_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_module_metadata_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/order_type_checking_block_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/relocate_imports_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/remove_unused_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/sort_imports_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python/unquote_annotations_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/option/python_option.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/options_provider/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/options_provider/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/options_provider/python_options_provider.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/py.typed +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/cst_cache.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_attrs_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_blank_lines_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_class_docstring_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_class_methods_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_constants_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_docstring_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_functions_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_iterable_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_main_guard_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_module_metadata_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/python_type_checking_utils.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/__pycache__/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/python_import_rewriter.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/python_localize_runtime_imports.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/python_parser_import_index.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/python_runtime_symbol_collector.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/src/wexample_filestate_python/utils/relocate_imports/python_usage_collector.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/tests/tests/__init__.py +0 -0
- {wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/tests/wexample_tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: wexample-filestate-python
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.8.1
|
|
4
4
|
Summary: Helpers for Python.
|
|
5
5
|
Author-Email: weeger <contact@wexample.com>
|
|
6
6
|
License: MIT
|
|
@@ -20,7 +20,7 @@ Requires-Dist: packaging
|
|
|
20
20
|
Requires-Dist: pyupgrade
|
|
21
21
|
Requires-Dist: tomli
|
|
22
22
|
Requires-Dist: wexample-api>=6.1.0
|
|
23
|
-
Requires-Dist: wexample-filestate>=11.
|
|
23
|
+
Requires-Dist: wexample-filestate>=11.2.0
|
|
24
24
|
Provides-Extra: dev
|
|
25
25
|
Requires-Dist: pytest; extra == "dev"
|
|
26
26
|
Requires-Dist: pytest-cov; extra == "dev"
|
|
@@ -28,7 +28,7 @@ Description-Content-Type: text/markdown
|
|
|
28
28
|
|
|
29
29
|
# filestate_python
|
|
30
30
|
|
|
31
|
-
Version: 6.
|
|
31
|
+
Version: 6.8.1
|
|
32
32
|
|
|
33
33
|
Helpers for Python.
|
|
34
34
|
|
|
@@ -119,7 +119,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
119
119
|
- pyupgrade:
|
|
120
120
|
- tomli:
|
|
121
121
|
- wexample-api: >=6.1.0
|
|
122
|
-
- wexample-filestate: >=11.
|
|
122
|
+
- wexample-filestate: >=11.2.0
|
|
123
123
|
|
|
124
124
|
## Versioning & Compatibility Policy
|
|
125
125
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# filestate_python
|
|
2
2
|
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.8.1
|
|
4
4
|
|
|
5
5
|
Helpers for Python.
|
|
6
6
|
|
|
@@ -91,7 +91,7 @@ Visit the [Wexample Suite documentation](https://docs.wexample.com) for the comp
|
|
|
91
91
|
- pyupgrade:
|
|
92
92
|
- tomli:
|
|
93
93
|
- wexample-api: >=6.1.0
|
|
94
|
-
- wexample-filestate: >=11.
|
|
94
|
+
- wexample-filestate: >=11.2.0
|
|
95
95
|
|
|
96
96
|
## Versioning & Compatibility Policy
|
|
97
97
|
|
|
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
|
|
|
6
6
|
|
|
7
7
|
[project]
|
|
8
8
|
name = "wexample-filestate-python"
|
|
9
|
-
version = "6.
|
|
9
|
+
version = "6.8.1"
|
|
10
10
|
description = "Helpers for Python."
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "weeger", email = "contact@wexample.com" },
|
|
@@ -29,7 +29,7 @@ dependencies = [
|
|
|
29
29
|
"pyupgrade",
|
|
30
30
|
"tomli",
|
|
31
31
|
"wexample-api>=6.1.0",
|
|
32
|
-
"wexample-filestate>=11.
|
|
32
|
+
"wexample-filestate>=11.2.0",
|
|
33
33
|
]
|
|
34
34
|
|
|
35
35
|
[project.readme]
|
|
@@ -229,10 +229,24 @@ def _is_comment_line(node: cst.CSTNode) -> bool:
|
|
|
229
229
|
|
|
230
230
|
|
|
231
231
|
def _is_dataclass(classdef: cst.ClassDef) -> bool:
|
|
232
|
-
"""Detect if class
|
|
232
|
+
"""Detect if class needs "required-first" field ordering.
|
|
233
|
+
|
|
234
|
+
Triggers on:
|
|
235
|
+
- ``@dataclass`` / ``@dataclasses.dataclass`` decorator (incl. parenthesized form)
|
|
236
|
+
- ``NamedTuple`` / ``typing.NamedTuple`` in the base classes
|
|
237
|
+
|
|
238
|
+
For both kinds, Python enforces that fields without a default appear
|
|
239
|
+
before fields with a default. The plain alphabetical sort applied
|
|
240
|
+
otherwise would silently swap them and raise ``TypeError`` at class
|
|
241
|
+
creation time (NamedTuple) or produce surprising defaults (dataclass).
|
|
242
|
+
"""
|
|
243
|
+
# Decorators: @dataclass, @dataclasses.dataclass, @dataclass(...), @dataclasses.dataclass(...)
|
|
233
244
|
for dec in classdef.decorators:
|
|
234
245
|
try:
|
|
235
246
|
expr = dec.decorator
|
|
247
|
+
# Unwrap parenthesized decorator calls like @dataclass(frozen=True)
|
|
248
|
+
if isinstance(expr, cst.Call):
|
|
249
|
+
expr = expr.func
|
|
236
250
|
if isinstance(expr, cst.Name) and expr.value == "dataclass":
|
|
237
251
|
return True
|
|
238
252
|
if isinstance(expr, cst.Attribute) and isinstance(expr.attr, cst.Name):
|
|
@@ -240,6 +254,17 @@ def _is_dataclass(classdef: cst.ClassDef) -> bool:
|
|
|
240
254
|
return True
|
|
241
255
|
except Exception:
|
|
242
256
|
continue
|
|
257
|
+
# Base classes: NamedTuple / typing.NamedTuple
|
|
258
|
+
for base in classdef.bases:
|
|
259
|
+
try:
|
|
260
|
+
expr = base.value
|
|
261
|
+
if isinstance(expr, cst.Name) and expr.value == "NamedTuple":
|
|
262
|
+
return True
|
|
263
|
+
if isinstance(expr, cst.Attribute) and isinstance(expr.attr, cst.Name):
|
|
264
|
+
if expr.attr.value == "NamedTuple":
|
|
265
|
+
return True
|
|
266
|
+
except Exception:
|
|
267
|
+
continue
|
|
243
268
|
return False
|
|
244
269
|
|
|
245
270
|
|
|
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
|
|
File without changes
|
{wexample_filestate_python-6.7.1 → wexample_filestate_python-6.8.1}/tests/wexample_tests/__init__.py
RENAMED
|
File without changes
|