pathseq 1.0.0__tar.gz → 1.0.0.post0__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.
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/PKG-INFO +2 -5
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/README.rst +0 -3
- pathseq-1.0.0.post0/pyproject.toml +96 -0
- pathseq-1.0.0/pyproject.toml → pathseq-1.0.0.post0/pyproject.toml.orig +7 -7
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/__init__.py +2 -2
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_ast/_loose_type.py +2 -2
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_base.py +6 -6
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_file_num_seq/_arithmetic_sequence.py +7 -8
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_file_num_seq/_file_num_seq.py +3 -4
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_file_num_seq/_parse_file_num_seq.py +6 -6
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_from_disk.py +7 -7
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_parse_loose_path_sequence.py +3 -3
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_parse_path_sequence.py +3 -3
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_ast/__init__.py +4 -4
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_ast/_formatter.py +2 -2
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_ast/_ranges.py +2 -2
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_ast/_type.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_ast/_util.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_error.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_file_num_seq/__init__.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_file_num_seq/_decimal_range.py +1 -1
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_formatters.py +1 -1
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_loose_path_sequence.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_loose_pure_path_sequence.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_path_sequence.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/_pure_path_sequence.py +0 -0
- {pathseq-1.0.0 → pathseq-1.0.0.post0}/src/pathseq/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pathseq
|
|
3
|
-
Version: 1.0.0
|
|
3
|
+
Version: 1.0.0.post0
|
|
4
4
|
Summary: A pathlib-like library for working with file sequences.
|
|
5
5
|
Author: Ashley Whetter
|
|
6
6
|
Author-email: Ashley Whetter <ashley@awhetter.co.uk>
|
|
@@ -21,8 +21,8 @@ Requires-Dist: lark
|
|
|
21
21
|
Requires-Dist: python-statemachine
|
|
22
22
|
Requires-Dist: typing-extensions
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
|
-
Project-URL: Documentation, https://pathseq.readthedocs.org
|
|
25
24
|
Project-URL: Source, https://github.com/AWhetter/pathseq
|
|
25
|
+
Project-URL: Documentation, https://pathseq.readthedocs.org
|
|
26
26
|
Description-Content-Type: text/x-rst
|
|
27
27
|
|
|
28
28
|
pathseq
|
|
@@ -145,9 +145,6 @@ A wide range of sequence string formats are supported:
|
|
|
145
145
|
>>> LoosePathSequence("/path/to/images.1001-1005<UDIM>.exr")[0]
|
|
146
146
|
PosixPath('/path/to/images.1001.exr')
|
|
147
147
|
|
|
148
|
-
>>> LoosePathSequence("/path/to/images.1001-1005<UVTILE>.exr")[0]
|
|
149
|
-
PosixPath('/path/to/images.u1_v1.exr')
|
|
150
|
-
|
|
151
148
|
|
|
152
149
|
Contributing
|
|
153
150
|
------------
|
|
@@ -118,9 +118,6 @@ A wide range of sequence string formats are supported:
|
|
|
118
118
|
>>> LoosePathSequence("/path/to/images.1001-1005<UDIM>.exr")[0]
|
|
119
119
|
PosixPath('/path/to/images.1001.exr')
|
|
120
120
|
|
|
121
|
-
>>> LoosePathSequence("/path/to/images.1001-1005<UVTILE>.exr")[0]
|
|
122
|
-
PosixPath('/path/to/images.u1_v1.exr')
|
|
123
|
-
|
|
124
121
|
|
|
125
122
|
Contributing
|
|
126
123
|
------------
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["uv_build>=0.8.5,<1.0.0"]
|
|
3
|
+
build-backend = "uv_build"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "pathseq"
|
|
7
|
+
version = "1.0.0.post0"
|
|
8
|
+
description = "A pathlib-like library for working with file sequences."
|
|
9
|
+
readme = "README.rst"
|
|
10
|
+
classifiers = [
|
|
11
|
+
"Development Status :: 4 - Beta",
|
|
12
|
+
"Environment :: Plugins",
|
|
13
|
+
"Framework :: Sphinx :: Extension",
|
|
14
|
+
"Intended Audience :: Developers",
|
|
15
|
+
"License :: OSI Approved :: MIT License",
|
|
16
|
+
"Natural Language :: English",
|
|
17
|
+
"Programming Language :: Python",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.10",
|
|
20
|
+
"Programming Language :: Python :: 3.11",
|
|
21
|
+
"Programming Language :: Python :: 3.12",
|
|
22
|
+
"Programming Language :: Python :: 3.13",
|
|
23
|
+
"Programming Language :: Python :: 3.14",
|
|
24
|
+
]
|
|
25
|
+
requires-python = ">=3.10"
|
|
26
|
+
dependencies = [
|
|
27
|
+
"lark",
|
|
28
|
+
"python-statemachine",
|
|
29
|
+
"typing_extensions",
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
[[project.authors]]
|
|
33
|
+
name = "Ashley Whetter"
|
|
34
|
+
email = "ashley@awhetter.co.uk"
|
|
35
|
+
|
|
36
|
+
[project.urls]
|
|
37
|
+
Source = "https://github.com/AWhetter/pathseq"
|
|
38
|
+
Documentation = "https://pathseq.readthedocs.org"
|
|
39
|
+
|
|
40
|
+
[dependency-groups]
|
|
41
|
+
test = [
|
|
42
|
+
"fileseq",
|
|
43
|
+
"hypothesis",
|
|
44
|
+
"pytest",
|
|
45
|
+
]
|
|
46
|
+
format = ["ruff"]
|
|
47
|
+
lint = ["ruff"]
|
|
48
|
+
typecheck = ["mypy"]
|
|
49
|
+
doc = [
|
|
50
|
+
"furo",
|
|
51
|
+
"sphinx",
|
|
52
|
+
"sphinx-design",
|
|
53
|
+
]
|
|
54
|
+
release_notes = ["towncrier"]
|
|
55
|
+
|
|
56
|
+
[[dependency-groups.dev]]
|
|
57
|
+
include-group = "test"
|
|
58
|
+
|
|
59
|
+
[[dependency-groups.dev]]
|
|
60
|
+
include-group = "format"
|
|
61
|
+
|
|
62
|
+
[[dependency-groups.dev]]
|
|
63
|
+
include-group = "lint"
|
|
64
|
+
|
|
65
|
+
[[dependency-groups.dev]]
|
|
66
|
+
include-group = "typecheck"
|
|
67
|
+
|
|
68
|
+
[[dependency-groups.dev]]
|
|
69
|
+
include-group = "doc"
|
|
70
|
+
|
|
71
|
+
[tool.uv.build-backend]
|
|
72
|
+
module-name = "pathseq"
|
|
73
|
+
|
|
74
|
+
[tool.mypy]
|
|
75
|
+
strict = true
|
|
76
|
+
|
|
77
|
+
[tool.towncrier]
|
|
78
|
+
directory = "doc/changes"
|
|
79
|
+
filename = "CHANGELOG.rst"
|
|
80
|
+
package = "pathseq"
|
|
81
|
+
title_format = "pathseq v{version} ({project_date})"
|
|
82
|
+
underlines = [
|
|
83
|
+
"-",
|
|
84
|
+
"^",
|
|
85
|
+
'"',
|
|
86
|
+
]
|
|
87
|
+
|
|
88
|
+
[tool.pytest.ini_options]
|
|
89
|
+
markers = ["todo"]
|
|
90
|
+
addopts = "--doctest-glob='[!0]*.rst' --doctest-modules --ignore=doc/source/conf.py"
|
|
91
|
+
doctest_optionflags = "ELLIPSIS"
|
|
92
|
+
testpaths = [
|
|
93
|
+
"tests",
|
|
94
|
+
"doc/source",
|
|
95
|
+
"src",
|
|
96
|
+
]
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["uv_build>=0.8.5,<1.0.0"]
|
|
3
|
+
build-backend = "uv_build"
|
|
4
|
+
|
|
1
5
|
[project]
|
|
2
6
|
name = "pathseq"
|
|
3
|
-
version = "1.0.0"
|
|
7
|
+
version = "1.0.0.post0"
|
|
4
8
|
description = "A pathlib-like library for working with file sequences."
|
|
5
9
|
authors = [
|
|
6
10
|
{name = "Ashley Whetter", email = "ashley@awhetter.co.uk"},
|
|
@@ -63,15 +67,11 @@ release_notes = [
|
|
|
63
67
|
"towncrier",
|
|
64
68
|
]
|
|
65
69
|
|
|
66
|
-
[build-system]
|
|
67
|
-
requires = ["uv_build>=0.8.5,<0.9.0"]
|
|
68
|
-
build-backend = "uv_build"
|
|
69
|
-
|
|
70
70
|
[tool.uv.build-backend]
|
|
71
71
|
module-name = "pathseq"
|
|
72
72
|
|
|
73
|
-
[tool.
|
|
74
|
-
|
|
73
|
+
[tool.mypy]
|
|
74
|
+
strict = true
|
|
75
75
|
|
|
76
76
|
[tool.towncrier]
|
|
77
77
|
directory = "doc/changes"
|
|
@@ -19,7 +19,7 @@ from ._loose_pure_path_sequence import LoosePurePathSequence
|
|
|
19
19
|
from ._path_sequence import PathSequence
|
|
20
20
|
from ._pure_path_sequence import PurePathSequence
|
|
21
21
|
|
|
22
|
-
__version__ = "1.0.0"
|
|
22
|
+
__version__ = "1.0.0.post0"
|
|
23
23
|
|
|
24
24
|
__all__ = (
|
|
25
25
|
"BasePathSequence",
|
|
@@ -32,8 +32,8 @@ __all__ = (
|
|
|
32
32
|
"LoosePurePathSequence",
|
|
33
33
|
"NotASequenceError",
|
|
34
34
|
"PaddedRange",
|
|
35
|
-
"ParsedLooseSequence",
|
|
36
35
|
"ParseError",
|
|
36
|
+
"ParsedLooseSequence",
|
|
37
37
|
"ParsedSequence",
|
|
38
38
|
"PathSequence",
|
|
39
39
|
"PathT_co",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass
|
|
4
|
-
from typing import Literal, TypeAlias
|
|
4
|
+
from typing import Literal, TypeAlias
|
|
5
5
|
|
|
6
6
|
from typing_extensions import Self # PY311
|
|
7
7
|
|
|
@@ -214,4 +214,4 @@ class RangesEndName:
|
|
|
214
214
|
return self
|
|
215
215
|
|
|
216
216
|
|
|
217
|
-
ParsedLooseSequence: TypeAlias =
|
|
217
|
+
ParsedLooseSequence: TypeAlias = RangesStartName | RangesInName | RangesEndName
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
|
-
from collections.abc import Iterable, Iterator, Sequence
|
|
5
|
-
from decimal import Decimal
|
|
6
4
|
import itertools
|
|
7
5
|
import os
|
|
8
6
|
import pathlib
|
|
9
7
|
import re
|
|
10
8
|
import sys
|
|
11
|
-
from
|
|
9
|
+
from collections.abc import Iterable, Iterator, Sequence
|
|
10
|
+
from decimal import Decimal
|
|
11
|
+
from typing import ClassVar, TypeAlias, TypeVar, overload
|
|
12
12
|
|
|
13
13
|
from typing_extensions import (
|
|
14
14
|
Self, # PY311
|
|
@@ -23,10 +23,10 @@ from ._ast import (
|
|
|
23
23
|
)
|
|
24
24
|
from ._error import ParseError
|
|
25
25
|
from ._file_num_seq import FileNumSequence
|
|
26
|
-
from ._from_disk import Completeness, find_on_disk, iter_on_disk
|
|
27
26
|
from ._formatters import FileNumberFormatter, RegexFormatter
|
|
27
|
+
from ._from_disk import Completeness, find_on_disk, iter_on_disk
|
|
28
28
|
|
|
29
|
-
Segment: TypeAlias =
|
|
29
|
+
Segment: TypeAlias = str | os.PathLike[str]
|
|
30
30
|
PathT_co = TypeVar("PathT_co", covariant=True, bound=pathlib.Path)
|
|
31
31
|
PurePathT_co = TypeVar(
|
|
32
32
|
"PurePathT_co",
|
|
@@ -242,7 +242,7 @@ class BasePurePathSequence(Sequence[PurePathT_co], metaclass=abc.ABCMeta):
|
|
|
242
242
|
if self._path == other:
|
|
243
243
|
raise ValueError("Cannot check if a path sequence is relative to itself")
|
|
244
244
|
|
|
245
|
-
return self._path.is_relative_to(other) and
|
|
245
|
+
return self._path.is_relative_to(other) and self._path != other
|
|
246
246
|
|
|
247
247
|
if sys.version_info >= (3, 12):
|
|
248
248
|
|
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
from collections.abc import Iterator, Sequence
|
|
2
1
|
import decimal
|
|
3
|
-
from
|
|
2
|
+
from collections.abc import Iterator, Sequence
|
|
3
|
+
from typing import Protocol, TypeVar, overload
|
|
4
4
|
|
|
5
5
|
from typing_extensions import Self # PY311
|
|
6
6
|
|
|
7
7
|
from ._decimal_range import DecimalRange
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
FileNumT = TypeVar("FileNumT", int, decimal.Decimal)
|
|
11
|
-
|
|
10
|
+
FileNumT_co = TypeVar("FileNumT_co", covariant=True)
|
|
12
11
|
|
|
13
12
|
|
|
14
|
-
class RangeProtocol(Protocol[
|
|
13
|
+
class RangeProtocol(Protocol[FileNumT_co]):
|
|
15
14
|
@property
|
|
16
|
-
def start(self) ->
|
|
15
|
+
def start(self) -> FileNumT_co: ...
|
|
17
16
|
@property
|
|
18
|
-
def step(self) ->
|
|
17
|
+
def step(self) -> FileNumT_co: ...
|
|
19
18
|
|
|
20
|
-
def __iter__(self) -> Iterator[
|
|
19
|
+
def __iter__(self) -> Iterator[FileNumT_co]: ...
|
|
21
20
|
|
|
22
21
|
def __len__(self) -> int: ...
|
|
23
22
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from collections.abc import Iterable, Iterator, Sequence
|
|
4
3
|
import decimal
|
|
5
4
|
import itertools
|
|
6
|
-
from
|
|
5
|
+
from collections.abc import Iterable, Iterator, Sequence
|
|
6
|
+
from typing import Generic, TypeGuard, overload
|
|
7
7
|
|
|
8
8
|
from typing_extensions import (
|
|
9
9
|
Self, # PY311
|
|
@@ -214,8 +214,7 @@ class FileNumSequence(Sequence[FileNumT]):
|
|
|
214
214
|
if index < range_len:
|
|
215
215
|
return rng[index]
|
|
216
216
|
index -= range_len
|
|
217
|
-
|
|
218
|
-
raise IndexError(index)
|
|
217
|
+
raise IndexError(index)
|
|
219
218
|
|
|
220
219
|
def __str__(self) -> str:
|
|
221
220
|
return ",".join(str(rng) for rng in self._ranges)
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from decimal import Decimal as D
|
|
4
|
-
from typing import TypeAlias, TypeVar
|
|
4
|
+
from typing import TypeAlias, TypeVar
|
|
5
5
|
|
|
6
6
|
import lark
|
|
7
7
|
|
|
8
|
-
from ._arithmetic_sequence import ArithmeticSequence
|
|
9
8
|
from .._error import ParseError
|
|
9
|
+
from ._arithmetic_sequence import ArithmeticSequence
|
|
10
10
|
|
|
11
11
|
_GRAMMAR = r"""
|
|
12
12
|
start: ranges
|
|
@@ -22,7 +22,7 @@ _GRAMMAR = r"""
|
|
|
22
22
|
/x
|
|
23
23
|
"""
|
|
24
24
|
_PARSER = lark.Lark(_GRAMMAR, parser="lalr")
|
|
25
|
-
|
|
25
|
+
_SeqArgs: TypeAlias = tuple[str] | tuple[str, str] | tuple[str, str, str]
|
|
26
26
|
T = TypeVar("T")
|
|
27
27
|
|
|
28
28
|
|
|
@@ -36,7 +36,7 @@ class _RangeReducer(
|
|
|
36
36
|
return seq
|
|
37
37
|
|
|
38
38
|
def ranges(
|
|
39
|
-
self, range_:
|
|
39
|
+
self, range_: _SeqArgs, *ranges: _SeqArgs
|
|
40
40
|
) -> list[ArithmeticSequence[int]] | list[ArithmeticSequence[D]]:
|
|
41
41
|
if any("." in arg for arg in range_) or any(
|
|
42
42
|
"." in arg for r in ranges for arg in r
|
|
@@ -51,10 +51,10 @@ class _RangeReducer(
|
|
|
51
51
|
*(ArithmeticSequence(*tuple(int(arg) for arg in r)) for r in ranges),
|
|
52
52
|
]
|
|
53
53
|
|
|
54
|
-
def range(self, start: str, end: str | None, step: str | None) ->
|
|
54
|
+
def range(self, start: str, end: str | None, step: str | None) -> _SeqArgs:
|
|
55
55
|
assert step is None or end is not None, "Parsed an end but no step"
|
|
56
56
|
|
|
57
|
-
args:
|
|
57
|
+
args: _SeqArgs = (start,)
|
|
58
58
|
if end is not None:
|
|
59
59
|
args = (start, end)
|
|
60
60
|
if step is not None:
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
from collections.abc import Iterator, Sequence
|
|
2
|
-
from decimal import Decimal
|
|
3
1
|
import enum
|
|
4
2
|
import functools
|
|
5
3
|
import operator
|
|
6
4
|
import pathlib
|
|
7
5
|
import re
|
|
6
|
+
from collections.abc import Iterator, Sequence
|
|
7
|
+
from decimal import Decimal
|
|
8
8
|
from typing import TypeVar
|
|
9
9
|
|
|
10
10
|
from ._ast import (
|
|
11
|
-
RangesStartName,
|
|
12
|
-
RangesInName,
|
|
13
|
-
RangesEndName,
|
|
14
11
|
ParsedSequence,
|
|
12
|
+
RangesEndName,
|
|
13
|
+
RangesInName,
|
|
14
|
+
RangesStartName,
|
|
15
15
|
)
|
|
16
16
|
from ._file_num_seq import FileNumSequence
|
|
17
17
|
from ._formatters import GlobFormatter, RegexFormatter
|
|
@@ -103,8 +103,8 @@ def find_on_disk(
|
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
def iter_on_disk(
|
|
106
|
-
|
|
106
|
+
seq_as_path: PathT,
|
|
107
107
|
parsed: ParsedSequence | RangesStartName | RangesInName | RangesEndName,
|
|
108
108
|
) -> Iterator[PathT]:
|
|
109
|
-
for path, _ in _find_on_disk(
|
|
109
|
+
for path, _ in _find_on_disk(seq_as_path, parsed):
|
|
110
110
|
yield path
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import collections
|
|
4
|
-
from dataclasses import dataclass
|
|
5
|
-
from decimal import Decimal
|
|
6
4
|
import enum
|
|
7
5
|
import re
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from decimal import Decimal
|
|
8
8
|
|
|
9
|
-
from statemachine import
|
|
9
|
+
from statemachine import State, StateMachine
|
|
10
10
|
|
|
11
11
|
from ._ast import (
|
|
12
12
|
PaddedRange,
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import collections
|
|
4
|
-
from dataclasses import dataclass
|
|
5
|
-
from decimal import Decimal
|
|
6
4
|
import enum
|
|
7
5
|
import re
|
|
6
|
+
from dataclasses import dataclass
|
|
7
|
+
from decimal import Decimal
|
|
8
8
|
|
|
9
|
-
from statemachine import
|
|
9
|
+
from statemachine import State, StateMachine
|
|
10
10
|
|
|
11
11
|
from ._ast import (
|
|
12
12
|
PaddedRange,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from ._formatter import Formatter
|
|
2
2
|
from ._loose_type import (
|
|
3
3
|
ParsedLooseSequence,
|
|
4
|
-
RangesStartName,
|
|
5
|
-
RangesInName,
|
|
6
4
|
RangesEndName,
|
|
5
|
+
RangesInName,
|
|
6
|
+
RangesStartName,
|
|
7
7
|
)
|
|
8
8
|
from ._ranges import PaddedRange, Ranges
|
|
9
9
|
from ._type import ParsedSequence
|
|
@@ -15,8 +15,8 @@ __all__ = [
|
|
|
15
15
|
"ParsedLooseSequence",
|
|
16
16
|
"ParsedSequence",
|
|
17
17
|
"Ranges",
|
|
18
|
-
"RangesStartName",
|
|
19
|
-
"RangesInName",
|
|
20
18
|
"RangesEndName",
|
|
19
|
+
"RangesInName",
|
|
20
|
+
"RangesStartName",
|
|
21
21
|
"non_recursive_asdict",
|
|
22
22
|
]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from collections.abc import Iterable
|
|
4
3
|
import dataclasses
|
|
5
|
-
from decimal import Decimal
|
|
6
4
|
import typing
|
|
5
|
+
from collections.abc import Iterable
|
|
6
|
+
from decimal import Decimal
|
|
7
7
|
|
|
8
8
|
if typing.TYPE_CHECKING:
|
|
9
9
|
from ._loose_type import ParsedLooseSequence
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from dataclasses import dataclass
|
|
4
3
|
import decimal
|
|
4
|
+
from dataclasses import dataclass
|
|
5
5
|
from typing import Generic, TypeGuard
|
|
6
6
|
|
|
7
|
+
from .._file_num_seq import FileNumSequence, FileNumT
|
|
7
8
|
from ._formatter import Formatter
|
|
8
9
|
from ._util import pad
|
|
9
|
-
from .._file_num_seq import FileNumSequence, FileNumT
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
@dataclass(frozen=True)
|
|
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
|