hunterMakesPy 0.5.3__tar.gz → 0.5.4__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.
- {huntermakespy-0.5.3/hunterMakesPy.egg-info → huntermakespy-0.5.4}/PKG-INFO +1 -1
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/dataStructures.py +7 -1
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/test_dataStructures.py +9 -3
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/theTypesCallableFunction.py +9 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4/hunterMakesPy.egg-info}/PKG-INFO +1 -1
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/pyproject.toml +2 -1
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/LICENSE +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/README.md +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/Notice_of_Copyright.txt +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/__init__.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/__init__.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/_signatures.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/_signatures.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/cpython.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/curried/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/curried/exceptions.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/curried/exceptions.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/curried/operator.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/dicttoolz.c +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/dicttoolz.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/dicttoolz.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/dicttoolz.pyx +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/functoolz.c +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/functoolz.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/functoolz.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/functoolz.pyx +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/itertoolz.c +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/itertoolz.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/itertoolz.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/itertoolz.pyx +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/py.typed +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/recipes.c +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/recipes.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/recipes.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/recipes.pyx +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/dev_skip_test.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_curried.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_curried_toolzlike.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_dev_skip_test.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_dicttoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_docstrings.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_doctests.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_embedded_sigs.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_functoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_inspect_args.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_itertoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_none_safe.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_recipes.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_serialization.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_signatures.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_stubs.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_tlz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/tests/test_utils.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/utils.c +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/utils.pxd +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/utils.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_cytoolz/utils.pyx +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_tlz/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_tlz/_build_tlz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/Notice_of_Copyright.txt +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/__init__.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/_signatures.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/curried/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/curried/__init__.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/curried/exceptions.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/curried/exceptions.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/curried/operator.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/curried/operator.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/dicttoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/functoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/functoolz.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/itertoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/py.typed +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/recipes.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/recipes.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/__init__.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/core.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/core.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/parallel.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/parallel.pyi +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/tests/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/tests/test_core.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/sandbox/tests/test_parallel.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_curried.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_curried_doctests.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_dicttoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_functoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_inspect_args.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_itertoolz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_package.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_recipes.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_serialization.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_signatures.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_tlz.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/tests/test_utils.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/humpy_toolz/utils.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/_theSSOT.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/coping.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/filesystemToolkit.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/parseParameters.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/py.typed +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/semiotics.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/__init__.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/conftest.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/test_coping.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/test_filesystemToolkit.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/test_parseParameters.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/tests/test_theTypes.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy/theTypes.py +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy.egg-info/SOURCES.txt +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy.egg-info/dependency_links.txt +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy.egg-info/requires.txt +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/hunterMakesPy.egg-info/top_level.txt +0 -0
- {huntermakespy-0.5.3 → huntermakespy-0.5.4}/setup.cfg +0 -0
|
@@ -31,10 +31,11 @@ References
|
|
|
31
31
|
from __future__ import annotations
|
|
32
32
|
|
|
33
33
|
from charset_normalizer import CharsetMatch
|
|
34
|
-
from collections.abc import Mapping
|
|
34
|
+
from collections.abc import Callable, Mapping
|
|
35
35
|
from hunterMakesPy import Ordinals
|
|
36
36
|
from numpy import integer
|
|
37
37
|
from numpy.typing import NDArray
|
|
38
|
+
from types import FunctionType
|
|
38
39
|
from typing import Any, cast, TYPE_CHECKING
|
|
39
40
|
import charset_normalizer
|
|
40
41
|
import more_itertools
|
|
@@ -217,6 +218,11 @@ def stringItUp(*scrapPile: Any) -> list[str]:
|
|
|
217
218
|
listStrungUp.append(KitKat)
|
|
218
219
|
elif (KitKat is None) or (isinstance(KitKat, (bool, bytearray, bytes, complex, float, int))):
|
|
219
220
|
listStrungUp.append(str(KitKat))
|
|
221
|
+
elif callable(KitKat):
|
|
222
|
+
if isinstance(KitKat, FunctionType):
|
|
223
|
+
listStrungUp.append(KitKat.__name__)
|
|
224
|
+
else:
|
|
225
|
+
listStrungUp.append(getattr(KitKat, '__name__', type(KitKat).__name__))
|
|
220
226
|
elif isinstance(KitKat, memoryview):
|
|
221
227
|
decodedString: CharsetMatch | None = charset_normalizer.from_bytes(KitKat.tobytes()).best()
|
|
222
228
|
if decodedString:
|
|
@@ -72,12 +72,18 @@ class CustomIterable:
|
|
|
72
72
|
("Iterator from Fibonacci", iter([3, 5, 8, 13]), ['3', '5', '8', '13']),
|
|
73
73
|
("Custom iterable cardinal", CustomIterable(["NW", "SE", "NE"]), ["NW", "SE", "NE"]),
|
|
74
74
|
("Custom iterable empty", CustomIterable([]), []),
|
|
75
|
+
# Callable objects
|
|
76
|
+
("User-defined function", [stringItUp], ['stringItUp']),
|
|
77
|
+
("Lambda function", [lambda: None], ['<lambda>']),
|
|
78
|
+
("Built-in function", [len], ['len']),
|
|
79
|
+
("Class type", [int], ['int']),
|
|
80
|
+
("Callable instance", [type('CallableClass', (), {'__call__': lambda self: None})()], ['CallableClass']),
|
|
75
81
|
# Weird stuff
|
|
76
82
|
("Bad __str__", type('BadStr', (), {'__str__': lambda x: None})(), [None]),
|
|
77
83
|
# Error cases
|
|
78
84
|
("Raising __str__", type('RaisingStr', (), {'__str__': lambda x: 1/0})(), ZeroDivisionError),
|
|
79
85
|
], ids=lambda x: x if isinstance(x, str) else "")
|
|
80
|
-
def
|
|
86
|
+
def test_stringItUp(description: str, value_scrapPile: list[Any], expected: list[str] | type[Exception]) -> None:
|
|
81
87
|
"""Test stringItUp with various inputs.
|
|
82
88
|
|
|
83
89
|
Parameters
|
|
@@ -104,7 +110,7 @@ def testStringItUp(description: str, value_scrapPile: list[Any], expected: list[
|
|
|
104
110
|
("Non-iterable values", ({'ne': 13, 'sw': 17}, {'ne': 19, 'nw': 23}), {'destroyDuplicates': False, 'reorderLists': False}, TypeError),
|
|
105
111
|
("Skip erroneous types", ({'ne': [11, 13], 'sw': [17, 19]}, {'ne': 23, 'nw': 29}), {'killErroneousDataTypes': True}, {'ne': [11, 13], 'sw': [17, 19]}),
|
|
106
112
|
], ids=lambda x: x if isinstance(x, str) else "")
|
|
107
|
-
def
|
|
113
|
+
def test_updateExtendPolishDictionaryLists(description: str, value_dictionaryLists: tuple[dict[str, Any], ...], keywordArguments: dict[str, Any], expected: dict[str, Any] | type[TypeError]) -> None:
|
|
108
114
|
"""Test dictionary list updating and extension logic.
|
|
109
115
|
|
|
110
116
|
(AI generated docstring)
|
|
@@ -137,7 +143,7 @@ def testUpdateExtendPolishDictionaryLists(description: str, value_dictionaryList
|
|
|
137
143
|
for description, arrayExpression, expectedWithoutSpaces, expectedWithSpaces in AUTO_DECODING_RLE_CASES
|
|
138
144
|
],
|
|
139
145
|
)
|
|
140
|
-
def
|
|
146
|
+
def test_autoDecodingRLE(
|
|
141
147
|
description: str,
|
|
142
148
|
arrayExpression: str,
|
|
143
149
|
expectedWithoutSpaces: str,
|
|
@@ -6,6 +6,15 @@ from types import CellType, CodeType, MethodType
|
|
|
6
6
|
from typing import Any, overload, ParamSpec, Protocol, runtime_checkable, Self, TypeVar, TypeVarTuple
|
|
7
7
|
import sys
|
|
8
8
|
|
|
9
|
+
# TODO explore the following
|
|
10
|
+
"""
|
|
11
|
+
I've added new test cases using a lambda function and a standard user-defined imported function
|
|
12
|
+
(stringItUp itself). Built-in functions like len don't trigger the FunctionType check because their
|
|
13
|
+
type is technically a builtin_function_or_method in CPython, whereas functions defined via def or
|
|
14
|
+
lambda correspond exactly to types.FunctionType. Your coverage should now reflect this branch as
|
|
15
|
+
expected reflect activation of that branch.
|
|
16
|
+
"""
|
|
17
|
+
|
|
9
18
|
#======== Copied from typeshed:stdlib\_typeshed\__init__.pyi ========
|
|
10
19
|
type AnnotationForm = Any
|
|
11
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "hunterMakesPy"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.4"
|
|
4
4
|
description = "Easy Python functions making making functional Python functions easier."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -89,6 +89,7 @@ run = { branch = true, concurrency = [
|
|
|
89
89
|
"multiprocessing",
|
|
90
90
|
], data_file = "tests/coverage/.coverage", omit = [
|
|
91
91
|
"tests/*",
|
|
92
|
+
"hunterMakesPy/assimilate/*",
|
|
92
93
|
"hunterMakesPy/tests/*",
|
|
93
94
|
"humpy_toolz/sandbox/tests",
|
|
94
95
|
"humpy_toolz/tests",
|
|
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
|
|
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
|