utilo 2.112.1__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.
Files changed (99) hide show
  1. {utilo-2.112.1/utilo.egg-info → utilo-2.112.3}/PKG-INFO +3 -3
  2. {utilo-2.112.1 → utilo-2.112.3}/pyproject.toml +6 -7
  3. {utilo-2.112.1 → utilo-2.112.3}/utilo/__init__.py +0 -3
  4. {utilo-2.112.1 → utilo-2.112.3}/utilo/cacher.py +6 -2
  5. {utilo-2.112.1 → utilo-2.112.3/utilo.egg-info}/PKG-INFO +3 -3
  6. {utilo-2.112.1 → utilo-2.112.3}/utilo.egg-info/SOURCES.txt +0 -2
  7. {utilo-2.112.1 → utilo-2.112.3}/utilo.egg-info/requires.txt +2 -2
  8. utilo-2.112.1/tests/test_quick.py +0 -30
  9. utilo-2.112.1/utilo/quick.py +0 -215
  10. {utilo-2.112.1 → utilo-2.112.3}/LICENSE +0 -0
  11. {utilo-2.112.1 → utilo-2.112.3}/README +0 -0
  12. {utilo-2.112.1 → utilo-2.112.3}/setup.cfg +0 -0
  13. {utilo-2.112.1 → utilo-2.112.3}/tests/test_collection.py +0 -0
  14. {utilo-2.112.1 → utilo-2.112.3}/tests/test_convert.py +0 -0
  15. {utilo-2.112.1 → utilo-2.112.3}/tests/test_datetime.py +0 -0
  16. {utilo-2.112.1 → utilo-2.112.3}/tests/test_decorators.py +0 -0
  17. {utilo-2.112.1 → utilo-2.112.3}/tests/test_error.py +0 -0
  18. {utilo-2.112.1 → utilo-2.112.3}/tests/test_file.py +0 -0
  19. {utilo-2.112.1 → utilo-2.112.3}/tests/test_likelihood.py +0 -0
  20. {utilo-2.112.1 → utilo-2.112.3}/tests/test_logger.py +0 -0
  21. {utilo-2.112.1 → utilo-2.112.3}/tests/test_math.py +0 -0
  22. {utilo-2.112.1 → utilo-2.112.3}/tests/test_pages.py +0 -0
  23. {utilo-2.112.1 → utilo-2.112.3}/tests/test_process.py +0 -0
  24. {utilo-2.112.1 → utilo-2.112.3}/tests/test_regex.py +0 -0
  25. {utilo-2.112.1 → utilo-2.112.3}/tests/test_string.py +0 -0
  26. {utilo-2.112.1 → utilo-2.112.3}/tests/test_todo.py +0 -0
  27. {utilo-2.112.1 → utilo-2.112.3}/tests/test_typechecker.py +0 -0
  28. {utilo-2.112.1 → utilo-2.112.3}/tests/test_utils.py +0 -0
  29. {utilo-2.112.1 → utilo-2.112.3}/tests/test_yaml.py +0 -0
  30. {utilo-2.112.1 → utilo-2.112.3}/utilo/__todo__.py +0 -0
  31. {utilo-2.112.1 → utilo-2.112.3}/utilo/alpha.py +0 -0
  32. {utilo-2.112.1 → utilo-2.112.3}/utilo/baw.py +0 -0
  33. {utilo-2.112.1 → utilo-2.112.3}/utilo/classes.py +0 -0
  34. {utilo-2.112.1 → utilo-2.112.3}/utilo/classifier/__init__.py +0 -0
  35. {utilo-2.112.1 → utilo-2.112.3}/utilo/classifier/base.py +0 -0
  36. {utilo-2.112.1 → utilo-2.112.3}/utilo/classifier/public.py +0 -0
  37. {utilo-2.112.1 → utilo-2.112.3}/utilo/classifier/strategy.py +0 -0
  38. {utilo-2.112.1 → utilo-2.112.3}/utilo/cli/__init__.py +0 -0
  39. {utilo-2.112.1 → utilo-2.112.3}/utilo/collection.py +0 -0
  40. {utilo-2.112.1 → utilo-2.112.3}/utilo/color.py +0 -0
  41. {utilo-2.112.1 → utilo-2.112.3}/utilo/config.py +0 -0
  42. {utilo-2.112.1 → utilo-2.112.3}/utilo/convert.py +0 -0
  43. {utilo-2.112.1 → utilo-2.112.3}/utilo/datetime.py +0 -0
  44. {utilo-2.112.1 → utilo-2.112.3}/utilo/decorator.py +0 -0
  45. {utilo-2.112.1 → utilo-2.112.3}/utilo/error.py +0 -0
  46. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/__init__.py +0 -0
  47. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/cache.py +0 -0
  48. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/collector.py +0 -0
  49. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/config.py +0 -0
  50. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/cprofile.py +0 -0
  51. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/description.py +0 -0
  52. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/outpath.py +0 -0
  53. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/pack.py +0 -0
  54. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/path.py +0 -0
  55. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/processor.py +0 -0
  56. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/userinput.py +0 -0
  57. {utilo-2.112.1 → utilo-2.112.3}/utilo/feature/workplan.py +0 -0
  58. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/__init__.py +0 -0
  59. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/action.py +0 -0
  60. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/directory.py +0 -0
  61. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/hashed.py +0 -0
  62. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/info.py +0 -0
  63. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/loader.py +0 -0
  64. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/securewrapper.py +0 -0
  65. {utilo-2.112.1 → utilo-2.112.3}/utilo/file/utils.py +0 -0
  66. {utilo-2.112.1 → utilo-2.112.3}/utilo/group.py +0 -0
  67. {utilo-2.112.1 → utilo-2.112.3}/utilo/hash.py +0 -0
  68. {utilo-2.112.1 → utilo-2.112.3}/utilo/likelihood.py +0 -0
  69. {utilo-2.112.1 → utilo-2.112.3}/utilo/logger.py +0 -0
  70. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/__init__.py +0 -0
  71. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/const.py +0 -0
  72. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/distance.py +0 -0
  73. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/func.py +0 -0
  74. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/line.py +0 -0
  75. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/near.py +0 -0
  76. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/number.py +0 -0
  77. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/rectangle.py +0 -0
  78. {utilo-2.112.1 → utilo-2.112.3}/utilo/math/roman.py +0 -0
  79. {utilo-2.112.1 → utilo-2.112.3}/utilo/optimizer.py +0 -0
  80. {utilo-2.112.1 → utilo-2.112.3}/utilo/pages.py +0 -0
  81. {utilo-2.112.1 → utilo-2.112.3}/utilo/process.py +0 -0
  82. {utilo-2.112.1 → utilo-2.112.3}/utilo/regex.py +0 -0
  83. {utilo-2.112.1 → utilo-2.112.3}/utilo/secret.py +0 -0
  84. {utilo-2.112.1 → utilo-2.112.3}/utilo/space.py +0 -0
  85. {utilo-2.112.1 → utilo-2.112.3}/utilo/string/__init__.py +0 -0
  86. {utilo-2.112.1 → utilo-2.112.3}/utilo/string/compare.py +0 -0
  87. {utilo-2.112.1 → utilo-2.112.3}/utilo/string/display.py +0 -0
  88. {utilo-2.112.1 → utilo-2.112.3}/utilo/string/modify.py +0 -0
  89. {utilo-2.112.1 → utilo-2.112.3}/utilo/string/table.py +0 -0
  90. {utilo-2.112.1 → utilo-2.112.3}/utilo/tuples.py +0 -0
  91. {utilo-2.112.1 → utilo-2.112.3}/utilo/typechecker.py +0 -0
  92. {utilo-2.112.1 → utilo-2.112.3}/utilo/utils.py +0 -0
  93. {utilo-2.112.1 → utilo-2.112.3}/utilo/xyz/__init__.py +0 -0
  94. {utilo-2.112.1 → utilo-2.112.3}/utilo/xyz/lock.py +0 -0
  95. {utilo-2.112.1 → utilo-2.112.3}/utilo/xyz/table.py +0 -0
  96. {utilo-2.112.1 → utilo-2.112.3}/utilo/xyz/tidy.py +0 -0
  97. {utilo-2.112.1 → utilo-2.112.3}/utilo.egg-info/dependency_links.txt +0 -0
  98. {utilo-2.112.1 → utilo-2.112.3}/utilo.egg-info/entry_points.txt +0 -0
  99. {utilo-2.112.1 → utilo-2.112.3}/utilo.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utilo
3
- Version: 2.112.1
3
+ Version: 2.112.3
4
4
  Author-email: Helmut Konrad Schewe <helmutus@outlook.com>
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/anaticulae/utilo
@@ -11,13 +11,13 @@ Classifier: Programming Language :: Python :: 3.14
11
11
  Requires-Python: >=3.12
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: filelock<5.0.0,>=4.0.0
14
+ Requires-Dist: filelock<5.0.0,>=4.2.10
15
15
  Requires-Dist: utilosafe<2.0.0,>=1.0.0
16
16
  Provides-Extra: dev
17
17
  Requires-Dist: PyYAML<7.0.0,>=6.0.3; extra == "dev"
18
18
  Requires-Dist: pytest-timeout<3.0.0,>=2.4.0; extra == "dev"
19
19
  Requires-Dist: utilotest<2.0.0,>=1.1.1; extra == "dev"
20
- Requires-Dist: iamraw<5.0.0,>=4.95.0; extra == "dev"
20
+ Requires-Dist: iamraw<5.0.0,>=4.95.1; extra == "dev"
21
21
  Dynamic: license-file
22
22
 
23
23
  UTILA
@@ -7,14 +7,14 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "utilo"
10
- version = "2.112.1"
10
+ version = "2.112.3"
11
11
  description = ""
12
12
  requires-python = ">=3.12"
13
13
  authors = [
14
14
  { name = "Helmut Konrad Schewe", email = "helmutus@outlook.com" },
15
15
  ]
16
16
  dependencies = [
17
- "filelock>=4.0.0,<5.0.0",
17
+ "filelock>=4.2.10,<5.0.0",
18
18
  "utilosafe>=1.0.0,<2.0.0",
19
19
  ]
20
20
  keywords = []
@@ -43,7 +43,7 @@ dev = [
43
43
  "PyYAML>=6.0.3,<7.0.0",
44
44
  "pytest-timeout>=2.4.0,<3.0.0",
45
45
  "utilotest>=1.1.1,<2.0.0",
46
- "iamraw>=4.95.0,<5.0.0",
46
+ "iamraw>=4.95.1,<5.0.0",
47
47
  ]
48
48
 
49
49
  [project.urls]
@@ -63,21 +63,20 @@ output_format = "md"
63
63
  changelog_file = "CHANGELOG"
64
64
 
65
65
  [tool.semantic_release.commit_parser_options]
66
- patch_tags = [
66
+ allowed_tags = [
67
67
  "build",
68
68
  "chore",
69
69
  "ci",
70
70
  "deps",
71
71
  "docs",
72
+ "feat",
72
73
  "fix",
73
74
  "perf",
74
75
  "refactor",
75
76
  "style",
76
77
  "test",
77
78
  ]
78
- minor_tags = [
79
- "feat",
80
- ]
79
+ default_bump_level = 2
81
80
 
82
81
  [tool.setuptools.packages.find]
83
82
  where = [
@@ -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
@@ -78,8 +78,12 @@ def safehash(item):
78
78
  return hash(str(item))
79
79
 
80
80
 
81
- functools._HashedSeq.__init__.__defaults__ = (safehash,)
82
-
81
+ try:
82
+ # python <= 3.12
83
+ functools._HashedSeq.__init__.__defaults__ = (safehash,)
84
+ except AttributeError:
85
+ pass
86
+ # python >= 3.13
83
87
  # pylint:disable=all
84
88
 
85
89
  ################################################################################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: utilo
3
- Version: 2.112.1
3
+ Version: 2.112.3
4
4
  Author-email: Helmut Konrad Schewe <helmutus@outlook.com>
5
5
  License-Expression: MIT
6
6
  Project-URL: Homepage, https://github.com/anaticulae/utilo
@@ -11,13 +11,13 @@ Classifier: Programming Language :: Python :: 3.14
11
11
  Requires-Python: >=3.12
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: filelock<5.0.0,>=4.0.0
14
+ Requires-Dist: filelock<5.0.0,>=4.2.10
15
15
  Requires-Dist: utilosafe<2.0.0,>=1.0.0
16
16
  Provides-Extra: dev
17
17
  Requires-Dist: PyYAML<7.0.0,>=6.0.3; extra == "dev"
18
18
  Requires-Dist: pytest-timeout<3.0.0,>=2.4.0; extra == "dev"
19
19
  Requires-Dist: utilotest<2.0.0,>=1.1.1; extra == "dev"
20
- Requires-Dist: iamraw<5.0.0,>=4.95.0; extra == "dev"
20
+ Requires-Dist: iamraw<5.0.0,>=4.95.1; extra == "dev"
21
21
  Dynamic: license-file
22
22
 
23
23
  UTILA
@@ -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,8 +1,8 @@
1
- filelock<5.0.0,>=4.0.0
1
+ filelock<5.0.0,>=4.2.10
2
2
  utilosafe<2.0.0,>=1.0.0
3
3
 
4
4
  [dev]
5
5
  PyYAML<7.0.0,>=6.0.3
6
6
  pytest-timeout<3.0.0,>=2.4.0
7
7
  utilotest<2.0.0,>=1.1.1
8
- iamraw<5.0.0,>=4.95.0
8
+ iamraw<5.0.0,>=4.95.1
@@ -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)
@@ -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