utilo 2.112.2__tar.gz → 2.112.3__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.
- {utilo-2.112.2/utilo.egg-info → utilo-2.112.3}/PKG-INFO +1 -1
- {utilo-2.112.2 → utilo-2.112.3}/pyproject.toml +1 -1
- {utilo-2.112.2 → utilo-2.112.3}/utilo/__init__.py +0 -3
- {utilo-2.112.2 → utilo-2.112.3/utilo.egg-info}/PKG-INFO +1 -1
- {utilo-2.112.2 → utilo-2.112.3}/utilo.egg-info/SOURCES.txt +0 -2
- utilo-2.112.2/tests/test_quick.py +0 -30
- utilo-2.112.2/utilo/quick.py +0 -215
- {utilo-2.112.2 → utilo-2.112.3}/LICENSE +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/README +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/setup.cfg +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_collection.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_convert.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_datetime.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_decorators.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_error.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_file.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_likelihood.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_logger.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_math.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_pages.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_process.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_regex.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_string.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_todo.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_typechecker.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_utils.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/tests/test_yaml.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/__todo__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/alpha.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/baw.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/cacher.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/classes.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/classifier/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/classifier/base.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/classifier/public.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/classifier/strategy.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/cli/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/collection.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/color.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/config.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/convert.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/datetime.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/decorator.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/error.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/cache.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/collector.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/config.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/cprofile.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/description.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/outpath.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/pack.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/path.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/processor.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/userinput.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/feature/workplan.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/action.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/directory.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/hashed.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/info.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/loader.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/securewrapper.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/file/utils.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/group.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/hash.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/likelihood.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/logger.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/const.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/distance.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/func.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/line.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/near.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/number.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/rectangle.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/math/roman.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/optimizer.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/pages.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/process.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/regex.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/secret.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/space.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/string/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/string/compare.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/string/display.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/string/modify.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/string/table.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/tuples.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/typechecker.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/utils.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/xyz/__init__.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/xyz/lock.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/xyz/table.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo/xyz/tidy.py +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo.egg-info/dependency_links.txt +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo.egg-info/entry_points.txt +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo.egg-info/requires.txt +0 -0
- {utilo-2.112.2 → utilo-2.112.3}/utilo.egg-info/top_level.txt +0 -0
|
@@ -361,9 +361,6 @@ from utilo.process import process_ids
|
|
|
361
361
|
from utilo.process import returnvalue as returncode
|
|
362
362
|
from utilo.process import run
|
|
363
363
|
from utilo.process import run_parallel
|
|
364
|
-
# quick
|
|
365
|
-
from utilo.quick import install
|
|
366
|
-
from utilo.quick import version
|
|
367
364
|
# regex
|
|
368
365
|
from utilo.regex import NOCASE_VERBOSE
|
|
369
366
|
from utilo.regex import compiles
|
|
@@ -12,7 +12,6 @@ tests/test_logger.py
|
|
|
12
12
|
tests/test_math.py
|
|
13
13
|
tests/test_pages.py
|
|
14
14
|
tests/test_process.py
|
|
15
|
-
tests/test_quick.py
|
|
16
15
|
tests/test_regex.py
|
|
17
16
|
tests/test_string.py
|
|
18
17
|
tests/test_todo.py
|
|
@@ -39,7 +38,6 @@ utilo/logger.py
|
|
|
39
38
|
utilo/optimizer.py
|
|
40
39
|
utilo/pages.py
|
|
41
40
|
utilo/process.py
|
|
42
|
-
utilo/quick.py
|
|
43
41
|
utilo/regex.py
|
|
44
42
|
utilo/secret.py
|
|
45
43
|
utilo/space.py
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# =============================================================================
|
|
2
|
-
# C O P Y R I G H T
|
|
3
|
-
# -----------------------------------------------------------------------------
|
|
4
|
-
# Copyright (c) 2023-2024 by Helmut Konrad Schewe. All rights reserved.
|
|
5
|
-
# This file is property of Helmut Konrad Schewe. Any unauthorized copy,
|
|
6
|
-
# use or distribution is an offensive act against international law and may
|
|
7
|
-
# be prosecuted under federal law. Its content is company confidential.
|
|
8
|
-
# =============================================================================
|
|
9
|
-
|
|
10
|
-
import setuptools._distutils.core
|
|
11
|
-
|
|
12
|
-
import utilo
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
def test_quick_install(td, mp):
|
|
16
|
-
root = str(td.tmpdir)
|
|
17
|
-
project = 'no_project'
|
|
18
|
-
cmd = f'baw init {project} "nice example"'
|
|
19
|
-
utilo.run(
|
|
20
|
-
cmd,
|
|
21
|
-
cwd=root,
|
|
22
|
-
)
|
|
23
|
-
setup = td.tmpdir.join('setup.py') # pylint:disable=W0612
|
|
24
|
-
|
|
25
|
-
def no_install(**attrs): # pylint:disable=W0613
|
|
26
|
-
pass
|
|
27
|
-
|
|
28
|
-
with mp.context() as context:
|
|
29
|
-
context.setattr(setuptools._distutils.core, 'setup', no_install) # pylint:disable=W0212
|
|
30
|
-
# utilo.install(root=setup)
|
utilo-2.112.2/utilo/quick.py
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
# =============================================================================
|
|
2
|
-
# C O P Y R I G H T
|
|
3
|
-
# -----------------------------------------------------------------------------
|
|
4
|
-
# Copyright (c) 2022-2024 by Helmut Konrad Schewe. All rights reserved.
|
|
5
|
-
# This file is property of Helmut Konrad Schewe. Any unauthorized copy,
|
|
6
|
-
# use or distribution is an offensive act against international law and may
|
|
7
|
-
# be prosecuted under federal law. Its content is company confidential.
|
|
8
|
-
# =============================================================================
|
|
9
|
-
|
|
10
|
-
import importlib.metadata
|
|
11
|
-
import re
|
|
12
|
-
|
|
13
|
-
import setuptools
|
|
14
|
-
|
|
15
|
-
import utilo
|
|
16
|
-
|
|
17
|
-
AUTHOR = 'Helmut Konrad Schewe'
|
|
18
|
-
AUTHOR_EMAIL = 'helmutus@outlook.com'
|
|
19
|
-
|
|
20
|
-
CLASSIFIERS = [
|
|
21
|
-
'Programming Language :: Python :: 3.9',
|
|
22
|
-
'Programming Language :: Python :: 3.10',
|
|
23
|
-
'Programming Language :: Python :: 3.11',
|
|
24
|
-
'Programming Language :: Python :: 3.12',
|
|
25
|
-
'Programming Language :: Python :: 3.13',
|
|
26
|
-
'Programming Language :: Python :: 3.14',
|
|
27
|
-
]
|
|
28
|
-
|
|
29
|
-
URL = 'https://github.com/anaticulae/'
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def install(
|
|
33
|
-
root: str,
|
|
34
|
-
include_package_data: bool = True,
|
|
35
|
-
):
|
|
36
|
-
root = utilo.make_absolute(str(root))
|
|
37
|
-
utilo.log(f'install: {root}')
|
|
38
|
-
module = utilo.load_module(root)
|
|
39
|
-
xpackages = packages(module)
|
|
40
|
-
xentry = entry_points(module)
|
|
41
|
-
root = utilo.baw_root(root)
|
|
42
|
-
short = utilo.baw_name(root)
|
|
43
|
-
xreadme = readme(root)
|
|
44
|
-
xrequires = requires(root)
|
|
45
|
-
xpackage_data = package_data(module)
|
|
46
|
-
description = utilo.baw_desc(root)
|
|
47
|
-
setuptools.setup(
|
|
48
|
-
author=AUTHOR,
|
|
49
|
-
author_email=AUTHOR_EMAIL,
|
|
50
|
-
description=description,
|
|
51
|
-
classifiers=CLASSIFIERS,
|
|
52
|
-
entry_points=xentry,
|
|
53
|
-
include_package_data=include_package_data,
|
|
54
|
-
install_requires=xrequires,
|
|
55
|
-
long_description=xreadme,
|
|
56
|
-
long_description_content_type='text/markdown',
|
|
57
|
-
name=short,
|
|
58
|
-
package_data=xpackage_data,
|
|
59
|
-
packages=xpackages,
|
|
60
|
-
platforms='any',
|
|
61
|
-
url=f'{URL}{short}',
|
|
62
|
-
version=current(root),
|
|
63
|
-
zip_safe=False, # create 'zip'-file if True. Don't do it!
|
|
64
|
-
)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def packages(module):
|
|
68
|
-
"""\
|
|
69
|
-
>>> import collections; Module=collections.namedtuple('Module', 'PACKAGES')
|
|
70
|
-
>>> packages(Module('first second third'.split()))
|
|
71
|
-
['first', 'second', 'third']
|
|
72
|
-
>>> PACKAGES=['first', 'second', 'third'],
|
|
73
|
-
>>> packages(Module(PACKAGES))
|
|
74
|
-
Traceback (most recent call last):
|
|
75
|
-
...
|
|
76
|
-
ValueError: require list or single tuple: (['first', 'second', 'third'],)
|
|
77
|
-
"""
|
|
78
|
-
result = module.PACKAGES
|
|
79
|
-
if not all(isinstance(item, str) for item in result):
|
|
80
|
-
# PACKAGES = [
|
|
81
|
-
# 'lists',
|
|
82
|
-
# 'lists.features',
|
|
83
|
-
# 'lists.strategies',
|
|
84
|
-
# ], <-ATTENTION COMMA!
|
|
85
|
-
raise ValueError(f'require list or single tuple: {result}')
|
|
86
|
-
return result
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
def entry_points(module):
|
|
90
|
-
"""\
|
|
91
|
-
>>> import collections; Module=collections.namedtuple('Module', 'entry_points')
|
|
92
|
-
>>> entry_points(Module(dict()))
|
|
93
|
-
Traceback (most recent call last):
|
|
94
|
-
...
|
|
95
|
-
ValueError: require upper-case: entry_points:...
|
|
96
|
-
"""
|
|
97
|
-
if hasattr(module, 'entry_points'):
|
|
98
|
-
raise ValueError(f'require upper-case: entry_points: {dir(module)}')
|
|
99
|
-
try:
|
|
100
|
-
entry = module.ENTRY_POINTS
|
|
101
|
-
except AttributeError:
|
|
102
|
-
entry = None
|
|
103
|
-
return entry
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
def package_data(module):
|
|
107
|
-
try:
|
|
108
|
-
return module.PACKAGE_DATA
|
|
109
|
-
except AttributeError:
|
|
110
|
-
return {}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
def version(package):
|
|
114
|
-
"""Determine precise package version/githash.
|
|
115
|
-
|
|
116
|
-
>>> import utilo; version(utilo)
|
|
117
|
-
'...'
|
|
118
|
-
>>> import re; version(re)
|
|
119
|
-
Traceback (most recent call last):
|
|
120
|
-
...
|
|
121
|
-
ValueError: re not installed/no metadata
|
|
122
|
-
"""
|
|
123
|
-
assert not isinstance(package, str), f'require module: {package}'
|
|
124
|
-
name = package.__name__
|
|
125
|
-
try:
|
|
126
|
-
live = importlib.metadata.version(name)
|
|
127
|
-
except importlib.metadata.PackageNotFoundError as notfound:
|
|
128
|
-
raise ValueError(f'{name} not installed/no metadata') from notfound
|
|
129
|
-
return live
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
def requires(root) -> list:
|
|
133
|
-
"""\
|
|
134
|
-
>>> requires(__file__)
|
|
135
|
-
[]
|
|
136
|
-
"""
|
|
137
|
-
root = utilo.baw_root(root)
|
|
138
|
-
path = utilo.join(root, 'requirements.txt')
|
|
139
|
-
if not utilo.exists(path):
|
|
140
|
-
return []
|
|
141
|
-
content = utilo.file_read(path)
|
|
142
|
-
result = [line for line in content.splitlines() if line and '#' not in line]
|
|
143
|
-
return result
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
def readme(root):
|
|
147
|
-
for name in 'README README.md README.rst'.split():
|
|
148
|
-
path = utilo.join(root, name)
|
|
149
|
-
if utilo.exists(path):
|
|
150
|
-
return utilo.file_read(path)
|
|
151
|
-
raise ValueError(f'could not locate any README: {root}')
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
def current(root, backup: bool = False):
|
|
155
|
-
"""\
|
|
156
|
-
TODO Enable later
|
|
157
|
-
>>> str(current(__file__, backup=True))
|
|
158
|
-
'...'
|
|
159
|
-
|
|
160
|
-
# >>> current(__file__, backup=True) == utilo.__version__
|
|
161
|
-
# True
|
|
162
|
-
"""
|
|
163
|
-
root = utilo.baw_root(root)
|
|
164
|
-
backup |= not utilo.hasprog('git')
|
|
165
|
-
backup |= not utilo.exists(utilo.join(root, '.git'))
|
|
166
|
-
if backup:
|
|
167
|
-
# determine version out of package information
|
|
168
|
-
return static(root)
|
|
169
|
-
result = git_hash(root)
|
|
170
|
-
result = result.strip()
|
|
171
|
-
if not result:
|
|
172
|
-
# determine version out of package information
|
|
173
|
-
result = static(root)
|
|
174
|
-
assert result, result
|
|
175
|
-
return result
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
def git_hash(root) -> str:
|
|
179
|
-
"""\
|
|
180
|
-
>>> git_hash('.')
|
|
181
|
-
'...'
|
|
182
|
-
"""
|
|
183
|
-
if not utilo.hasprog('git'):
|
|
184
|
-
utilo.exitx('install git, please')
|
|
185
|
-
completed = utilo.run(
|
|
186
|
-
'git describe',
|
|
187
|
-
cwd=root,
|
|
188
|
-
expect=None,
|
|
189
|
-
)
|
|
190
|
-
value = completed.stdout.strip()
|
|
191
|
-
if value == 'empty!':
|
|
192
|
-
# no git repository available
|
|
193
|
-
return static(root)
|
|
194
|
-
if value == static(root):
|
|
195
|
-
return value
|
|
196
|
-
# transform v2.40.1-5-gc1b4bee to
|
|
197
|
-
# utilo-2.93.0.post6+g3b6726a
|
|
198
|
-
value = value[1:]
|
|
199
|
-
value = value.replace('-', '.post', 1)
|
|
200
|
-
value = value.replace('-g', '+g')
|
|
201
|
-
return value
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
def static(root) -> str | None:
|
|
205
|
-
short = utilo.baw_name(root)
|
|
206
|
-
if not short:
|
|
207
|
-
utilo.exitx(msg=f'missing short `{short}` def in .baw: {root}')
|
|
208
|
-
path = utilo.join(root, short, '__init__.py', exist=True)
|
|
209
|
-
content = utilo.file_read(path)
|
|
210
|
-
searched = re.search(r'__version__ = \'(.*?)\'', content)
|
|
211
|
-
if searched:
|
|
212
|
-
result = searched.group(1)
|
|
213
|
-
else:
|
|
214
|
-
result = None
|
|
215
|
-
return result
|
|
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
|