logikal-utils 1.0.0__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.
- logikal-utils-1.0.0/.copier-answers.yml +24 -0
- logikal-utils-1.0.0/LICENSE.txt +16 -0
- logikal-utils-1.0.0/MANIFEST.in +4 -0
- logikal-utils-1.0.0/PKG-INFO +48 -0
- logikal-utils-1.0.0/README.rst +8 -0
- logikal-utils-1.0.0/compose.yml +6 -0
- logikal-utils-1.0.0/logikal_utils/__init__.py +0 -0
- logikal-utils-1.0.0/logikal_utils/docker.py +106 -0
- logikal-utils-1.0.0/logikal_utils/project.py +15 -0
- logikal-utils-1.0.0/logikal_utils/py.typed +0 -0
- logikal-utils-1.0.0/logikal_utils.egg-info/PKG-INFO +48 -0
- logikal-utils-1.0.0/logikal_utils.egg-info/SOURCES.txt +23 -0
- logikal-utils-1.0.0/logikal_utils.egg-info/dependency_links.txt +1 -0
- logikal-utils-1.0.0/logikal_utils.egg-info/requires.txt +5 -0
- logikal-utils-1.0.0/logikal_utils.egg-info/top_level.txt +1 -0
- logikal-utils-1.0.0/pyproject.toml +46 -0
- logikal-utils-1.0.0/requirements/build.txt +2 -0
- logikal-utils-1.0.0/requirements/build.txt.lock +45 -0
- logikal-utils-1.0.0/requirements/core.txt +2 -0
- logikal-utils-1.0.0/requirements/dev.txt +5 -0
- logikal-utils-1.0.0/requirements/dev.txt.lock +105 -0
- logikal-utils-1.0.0/requirements/docs.txt +5 -0
- logikal-utils-1.0.0/requirements/docs.txt.lock +42 -0
- logikal-utils-1.0.0/requirements/extras/docker.txt +1 -0
- logikal-utils-1.0.0/setup.cfg +4 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
###################################################################################################
|
|
2
|
+
##
|
|
3
|
+
## DO NOT EDIT THIS FILE.
|
|
4
|
+
## This is an answers file generated by Copier.
|
|
5
|
+
##
|
|
6
|
+
###################################################################################################
|
|
7
|
+
_commit: v1.0.2
|
|
8
|
+
_src_path: git@github.com:logikal-io/python-package-template.git
|
|
9
|
+
audience: Developers
|
|
10
|
+
classifiers:
|
|
11
|
+
- 'Topic :: Software Development'
|
|
12
|
+
cloud: false
|
|
13
|
+
description: Common Python utilities used at Logikal
|
|
14
|
+
extras:
|
|
15
|
+
- docker
|
|
16
|
+
jupyter: false
|
|
17
|
+
keywords:
|
|
18
|
+
- python
|
|
19
|
+
- utilities
|
|
20
|
+
license: mit
|
|
21
|
+
name: logikal-utils
|
|
22
|
+
scripts: []
|
|
23
|
+
title: logikal-utils
|
|
24
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
Copyright 2023 Logikal GmbH
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
4
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
5
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
|
6
|
+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
|
7
|
+
furnished to do so, subject to the following conditions:
|
|
8
|
+
|
|
9
|
+
The above copyright notice and this permission notice shall be included in all copies or
|
|
10
|
+
substantial portions of the Software.
|
|
11
|
+
|
|
12
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
13
|
+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
14
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
15
|
+
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
|
16
|
+
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: logikal-utils
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Common Python utilities used at Logikal
|
|
5
|
+
Author-email: Logikal GmbH <contact@logikal.io>
|
|
6
|
+
License: Copyright 2023 Logikal GmbH
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
9
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
10
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
|
11
|
+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
furnished to do so, subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be included in all copies or
|
|
15
|
+
substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
18
|
+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
20
|
+
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
|
21
|
+
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
Project-URL: Documentation, https://docs.logikal.io/logikal-utils/
|
|
24
|
+
Project-URL: Release notes, https://github.com/logikal-io/logikal-utils/releases
|
|
25
|
+
Project-URL: Issue tracker, https://github.com/logikal-io/logikal-utils/issues
|
|
26
|
+
Project-URL: Source code, https://github.com/logikal-io/logikal-utils
|
|
27
|
+
Keywords: python,utilities
|
|
28
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
29
|
+
Classifier: Intended Audience :: Developers
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
32
|
+
Classifier: Programming Language :: Python :: 3
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
34
|
+
Classifier: Topic :: Software Development
|
|
35
|
+
Classifier: Typing :: Typed
|
|
36
|
+
Requires-Python: ~=3.8
|
|
37
|
+
Description-Content-Type: text/x-rst
|
|
38
|
+
Provides-Extra: docker
|
|
39
|
+
License-File: LICENSE.txt
|
|
40
|
+
|
|
41
|
+
logikal-utils
|
|
42
|
+
=============
|
|
43
|
+
Common Python utilities used at Logikal.
|
|
44
|
+
|
|
45
|
+
Getting Started
|
|
46
|
+
---------------
|
|
47
|
+
You can find the project documentation under `docs.logikal.io/logikal-utils/
|
|
48
|
+
<https://docs.logikal.io/logikal-utils/>`_.
|
|
File without changes
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
from time import sleep, time
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
from docker import DockerClient, from_env as client_from_env
|
|
7
|
+
from docker.models.containers import Container
|
|
8
|
+
from termcolor import colored
|
|
9
|
+
|
|
10
|
+
from logikal_utils.project import PYPROJECT
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class Service:
|
|
14
|
+
def __init__( # pylint: disable=too-many-arguments
|
|
15
|
+
self,
|
|
16
|
+
name: str,
|
|
17
|
+
project: Optional[str] = None,
|
|
18
|
+
start_timeout_seconds: float = 30,
|
|
19
|
+
ready_log_text: Optional[str] = None,
|
|
20
|
+
log_poll_seconds: float = 3,
|
|
21
|
+
):
|
|
22
|
+
"""
|
|
23
|
+
Manage a project's Docker Compose services.
|
|
24
|
+
|
|
25
|
+
.. note:: Automatically starts all services during initialization whenever necessary.
|
|
26
|
+
.. note:: Requires the :ref:`docker extra <index:Docker>`.
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
name: The name of the service to manage.
|
|
30
|
+
project: The name of the project to use.
|
|
31
|
+
start_timeout_seconds: The time to wait for services to start.
|
|
32
|
+
ready_log_text: The log text that signals that the service is ready.
|
|
33
|
+
log_poll_seconds: The time to wait between log text polls while waiting for the service
|
|
34
|
+
to be ready.
|
|
35
|
+
|
|
36
|
+
"""
|
|
37
|
+
self.name = name
|
|
38
|
+
self.project = project or PYPROJECT['project']['name']
|
|
39
|
+
self.start_timeout_seconds = start_timeout_seconds
|
|
40
|
+
self.ready_log_text = ready_log_text
|
|
41
|
+
self.log_poll_seconds = log_poll_seconds
|
|
42
|
+
try:
|
|
43
|
+
client = client_from_env()
|
|
44
|
+
self.container = self._running_container(client=client, start_services=True)
|
|
45
|
+
finally:
|
|
46
|
+
client.close()
|
|
47
|
+
|
|
48
|
+
def __str__(self) -> str:
|
|
49
|
+
return f'Docker Compose project "{self.project}" service "{self.name}"'
|
|
50
|
+
|
|
51
|
+
def start_services(self) -> None:
|
|
52
|
+
"""
|
|
53
|
+
Start all Docker Compose services in the given project.
|
|
54
|
+
"""
|
|
55
|
+
print(colored('Starting Docker Compose services', 'yellow', attrs=['bold']))
|
|
56
|
+
command = [
|
|
57
|
+
'docker', 'compose', 'up', '--detach',
|
|
58
|
+
*(['--quiet-pull'] if 'GITHUB_ACTIONS' in os.environ else []),
|
|
59
|
+
'--wait', '--wait-timeout', str(self.start_timeout_seconds),
|
|
60
|
+
]
|
|
61
|
+
subprocess.run(command, text=True, check=True) # nosec: secure, not using untrusted input
|
|
62
|
+
print()
|
|
63
|
+
|
|
64
|
+
def _running_container(self, client: DockerClient, start_services: bool) -> Container:
|
|
65
|
+
filters = {
|
|
66
|
+
'status': 'running',
|
|
67
|
+
'label': [
|
|
68
|
+
f'com.docker.compose.project={self.project}',
|
|
69
|
+
f'com.docker.compose.service={self.name}',
|
|
70
|
+
],
|
|
71
|
+
}
|
|
72
|
+
if containers := client.containers.list(limit=1, filters=filters):
|
|
73
|
+
container = containers[0]
|
|
74
|
+
container.reload() # refresh container attributes
|
|
75
|
+
|
|
76
|
+
health = container.attrs['State'].get('Health', {})
|
|
77
|
+
health_status = health.get('Status')
|
|
78
|
+
if health_status and health_status != 'healthy':
|
|
79
|
+
logs = [log['Output'].strip() for log in health.get('Log', {}) if 'Output' in log]
|
|
80
|
+
logs_str = ('\n\nLogs:\n' + '\n'.join(logs)) if logs else ''
|
|
81
|
+
raise RuntimeError(f'{self} is not healthy{logs_str}')
|
|
82
|
+
|
|
83
|
+
if self.ready_log_text and not start_services:
|
|
84
|
+
print(f'Waiting for service "{self.name}" to be ready...')
|
|
85
|
+
wait_start_time = time()
|
|
86
|
+
while ( # pylint: disable=while-used
|
|
87
|
+
self.ready_log_text not in container.logs().decode()
|
|
88
|
+
):
|
|
89
|
+
if time() - wait_start_time >= self.start_timeout_seconds:
|
|
90
|
+
raise RuntimeError(f'{self} is not ready')
|
|
91
|
+
sleep(self.log_poll_seconds)
|
|
92
|
+
print()
|
|
93
|
+
|
|
94
|
+
return container
|
|
95
|
+
|
|
96
|
+
if start_services:
|
|
97
|
+
self.start_services()
|
|
98
|
+
return self._running_container(client=client, start_services=False)
|
|
99
|
+
|
|
100
|
+
raise RuntimeError(f'{self} not found')
|
|
101
|
+
|
|
102
|
+
def container_port(self, service_port: str) -> str:
|
|
103
|
+
"""
|
|
104
|
+
Return the container host port that is linked to the given service port.
|
|
105
|
+
"""
|
|
106
|
+
return str(self.container.ports[service_port][0]['HostPort'])
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
import tomli
|
|
5
|
+
|
|
6
|
+
PATH = Path('pyproject.toml')
|
|
7
|
+
#: The ``pyproject.toml`` configuration of the current project.
|
|
8
|
+
PYPROJECT: Any = tomli.loads(PATH.read_text(encoding='utf-8')) if PATH.exists() else {}
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def tool_config(name: str) -> Any:
|
|
12
|
+
"""
|
|
13
|
+
Return the ``pyproject.toml`` configuration of a given tool.
|
|
14
|
+
"""
|
|
15
|
+
return PYPROJECT.get('tool', {}).get(name, {})
|
|
File without changes
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: logikal-utils
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Common Python utilities used at Logikal
|
|
5
|
+
Author-email: Logikal GmbH <contact@logikal.io>
|
|
6
|
+
License: Copyright 2023 Logikal GmbH
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
9
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
10
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
|
11
|
+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
furnished to do so, subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be included in all copies or
|
|
15
|
+
substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
18
|
+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
20
|
+
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT
|
|
21
|
+
OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
22
|
+
|
|
23
|
+
Project-URL: Documentation, https://docs.logikal.io/logikal-utils/
|
|
24
|
+
Project-URL: Release notes, https://github.com/logikal-io/logikal-utils/releases
|
|
25
|
+
Project-URL: Issue tracker, https://github.com/logikal-io/logikal-utils/issues
|
|
26
|
+
Project-URL: Source code, https://github.com/logikal-io/logikal-utils
|
|
27
|
+
Keywords: python,utilities
|
|
28
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
29
|
+
Classifier: Intended Audience :: Developers
|
|
30
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
31
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
32
|
+
Classifier: Programming Language :: Python :: 3
|
|
33
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
34
|
+
Classifier: Topic :: Software Development
|
|
35
|
+
Classifier: Typing :: Typed
|
|
36
|
+
Requires-Python: ~=3.8
|
|
37
|
+
Description-Content-Type: text/x-rst
|
|
38
|
+
Provides-Extra: docker
|
|
39
|
+
License-File: LICENSE.txt
|
|
40
|
+
|
|
41
|
+
logikal-utils
|
|
42
|
+
=============
|
|
43
|
+
Common Python utilities used at Logikal.
|
|
44
|
+
|
|
45
|
+
Getting Started
|
|
46
|
+
---------------
|
|
47
|
+
You can find the project documentation under `docs.logikal.io/logikal-utils/
|
|
48
|
+
<https://docs.logikal.io/logikal-utils/>`_.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
.copier-answers.yml
|
|
2
|
+
LICENSE.txt
|
|
3
|
+
MANIFEST.in
|
|
4
|
+
README.rst
|
|
5
|
+
compose.yml
|
|
6
|
+
pyproject.toml
|
|
7
|
+
logikal_utils/__init__.py
|
|
8
|
+
logikal_utils/docker.py
|
|
9
|
+
logikal_utils/project.py
|
|
10
|
+
logikal_utils/py.typed
|
|
11
|
+
logikal_utils.egg-info/PKG-INFO
|
|
12
|
+
logikal_utils.egg-info/SOURCES.txt
|
|
13
|
+
logikal_utils.egg-info/dependency_links.txt
|
|
14
|
+
logikal_utils.egg-info/requires.txt
|
|
15
|
+
logikal_utils.egg-info/top_level.txt
|
|
16
|
+
requirements/build.txt
|
|
17
|
+
requirements/build.txt.lock
|
|
18
|
+
requirements/core.txt
|
|
19
|
+
requirements/dev.txt
|
|
20
|
+
requirements/dev.txt.lock
|
|
21
|
+
requirements/docs.txt
|
|
22
|
+
requirements/docs.txt.lock
|
|
23
|
+
requirements/extras/docker.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
logikal_utils
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ['setuptools>=45', 'setuptools-scm[toml]>=6.2']
|
|
3
|
+
build-backend = 'setuptools.build_meta'
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = 'logikal-utils'
|
|
7
|
+
description = 'Common Python utilities used at Logikal'
|
|
8
|
+
readme = 'README.rst'
|
|
9
|
+
requires-python = '~= 3.8'
|
|
10
|
+
license = {file = 'LICENSE.txt'}
|
|
11
|
+
authors = [{name = 'Logikal GmbH', email = 'contact@logikal.io'}]
|
|
12
|
+
keywords = ['python', 'utilities']
|
|
13
|
+
classifiers = [
|
|
14
|
+
'Development Status :: 5 - Production/Stable',
|
|
15
|
+
'Intended Audience :: Developers',
|
|
16
|
+
'License :: OSI Approved :: MIT License',
|
|
17
|
+
'Operating System :: POSIX :: Linux',
|
|
18
|
+
'Programming Language :: Python :: 3',
|
|
19
|
+
'Programming Language :: Python :: 3.8',
|
|
20
|
+
'Topic :: Software Development',
|
|
21
|
+
'Typing :: Typed',
|
|
22
|
+
]
|
|
23
|
+
dynamic = ['version', 'dependencies', 'optional-dependencies']
|
|
24
|
+
|
|
25
|
+
[project.urls]
|
|
26
|
+
'Documentation' = 'https://docs.logikal.io/logikal-utils/'
|
|
27
|
+
'Release notes' = 'https://github.com/logikal-io/logikal-utils/releases'
|
|
28
|
+
'Issue tracker' = 'https://github.com/logikal-io/logikal-utils/issues'
|
|
29
|
+
'Source code' = 'https://github.com/logikal-io/logikal-utils'
|
|
30
|
+
|
|
31
|
+
[tool.setuptools.dynamic]
|
|
32
|
+
dependencies = {file = 'requirements/core.txt'}
|
|
33
|
+
|
|
34
|
+
[tool.setuptools.dynamic.optional-dependencies]
|
|
35
|
+
docker = {file = 'requirements/extras/docker.txt'}
|
|
36
|
+
|
|
37
|
+
[tool.setuptools]
|
|
38
|
+
packages = ['logikal_utils']
|
|
39
|
+
|
|
40
|
+
[tool.setuptools_scm]
|
|
41
|
+
|
|
42
|
+
[[tool.mypy.overrides]]
|
|
43
|
+
ignore_missing_imports = true
|
|
44
|
+
module = [
|
|
45
|
+
'docker.*',
|
|
46
|
+
]
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
###################################################################################################
|
|
2
|
+
##
|
|
3
|
+
## DO NOT EDIT THIS FILE.
|
|
4
|
+
## This is a locked requirements file generated by pyorbs.
|
|
5
|
+
##
|
|
6
|
+
## Requirements hash: 1d6dda865959484538d6a587e0ca2c0953051494ea1d4a1dbb5a1d3a6044352d
|
|
7
|
+
##
|
|
8
|
+
###################################################################################################
|
|
9
|
+
bleach==6.0.0
|
|
10
|
+
build==0.10.0
|
|
11
|
+
certifi==2023.5.7
|
|
12
|
+
cffi==1.15.1
|
|
13
|
+
charset-normalizer==3.1.0
|
|
14
|
+
cryptography==41.0.1
|
|
15
|
+
docutils==0.20.1
|
|
16
|
+
idna==3.4
|
|
17
|
+
importlib-metadata==6.7.0
|
|
18
|
+
importlib-resources==5.12.0
|
|
19
|
+
jaraco.classes==3.2.3
|
|
20
|
+
jeepney==0.8.0
|
|
21
|
+
keyring==24.0.0
|
|
22
|
+
markdown-it-py==3.0.0
|
|
23
|
+
mdurl==0.1.2
|
|
24
|
+
more-itertools==9.1.0
|
|
25
|
+
packaging==23.1
|
|
26
|
+
pip==23.1.2
|
|
27
|
+
pkginfo==1.9.6
|
|
28
|
+
pycparser==2.21
|
|
29
|
+
Pygments==2.15.1
|
|
30
|
+
pyproject_hooks==1.0.0
|
|
31
|
+
readme-renderer==40.0
|
|
32
|
+
requests==2.31.0
|
|
33
|
+
requests-toolbelt==1.0.0
|
|
34
|
+
rfc3986==2.0.0
|
|
35
|
+
rich==13.4.2
|
|
36
|
+
SecretStorage==3.3.3
|
|
37
|
+
setuptools==68.0.0
|
|
38
|
+
six==1.16.0
|
|
39
|
+
tomli==2.0.1
|
|
40
|
+
twine==4.0.2
|
|
41
|
+
typing_extensions==4.6.3
|
|
42
|
+
urllib3==2.0.3
|
|
43
|
+
webencodings==0.5.1
|
|
44
|
+
wheel==0.40.0
|
|
45
|
+
zipp==3.15.0
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
###################################################################################################
|
|
2
|
+
##
|
|
3
|
+
## DO NOT EDIT THIS FILE.
|
|
4
|
+
## This is a locked requirements file generated by pyorbs.
|
|
5
|
+
##
|
|
6
|
+
## Requirements hash: 61dd452dd340aef4cc158330e72e7b6441e309322e0cbe26ce8894e95a406705
|
|
7
|
+
##
|
|
8
|
+
###################################################################################################
|
|
9
|
+
-e .
|
|
10
|
+
alabaster==0.7.13
|
|
11
|
+
astroid==2.15.5
|
|
12
|
+
attrs==23.1.0
|
|
13
|
+
Babel==2.12.1
|
|
14
|
+
bandit==1.7.5
|
|
15
|
+
bleach==6.0.0
|
|
16
|
+
build==0.10.0
|
|
17
|
+
certifi==2023.5.7
|
|
18
|
+
cffi==1.15.1
|
|
19
|
+
charset-normalizer==3.1.0
|
|
20
|
+
colorama==0.4.6
|
|
21
|
+
coverage==7.2.7
|
|
22
|
+
cryptography==41.0.1
|
|
23
|
+
dill==0.3.6
|
|
24
|
+
docker==6.1.3
|
|
25
|
+
docutils==0.17.1
|
|
26
|
+
exceptiongroup==1.1.1
|
|
27
|
+
execnet==1.9.0
|
|
28
|
+
filelock==3.12.2
|
|
29
|
+
gitdb==4.0.10
|
|
30
|
+
GitPython==3.1.31
|
|
31
|
+
idna==3.4
|
|
32
|
+
imagesize==1.4.1
|
|
33
|
+
importlib-metadata==6.7.0
|
|
34
|
+
importlib-resources==5.12.0
|
|
35
|
+
iniconfig==2.0.0
|
|
36
|
+
isort==5.12.0
|
|
37
|
+
jaraco.classes==3.2.3
|
|
38
|
+
jeepney==0.8.0
|
|
39
|
+
Jinja2==3.1.2
|
|
40
|
+
keyring==24.0.0
|
|
41
|
+
lazy-object-proxy==1.9.0
|
|
42
|
+
logikal-docs==1.1.3
|
|
43
|
+
markdown-it-py==3.0.0
|
|
44
|
+
MarkupSafe==2.1.3
|
|
45
|
+
mccabe==0.7.0
|
|
46
|
+
mdurl==0.1.2
|
|
47
|
+
more-itertools==9.1.0
|
|
48
|
+
mypy==1.3.0
|
|
49
|
+
mypy-extensions==1.0.0
|
|
50
|
+
packaging==23.1
|
|
51
|
+
pbr==5.11.1
|
|
52
|
+
Pillow==9.5.0
|
|
53
|
+
pip==23.1.2
|
|
54
|
+
pip-licenses==4.3.2
|
|
55
|
+
pkginfo==1.9.6
|
|
56
|
+
platformdirs==3.7.0
|
|
57
|
+
pluggy==1.2.0
|
|
58
|
+
prettytable==3.8.0
|
|
59
|
+
psutil==5.9.5
|
|
60
|
+
pycodestyle==2.10.0
|
|
61
|
+
pycparser==2.21
|
|
62
|
+
pydocstyle==6.3.0
|
|
63
|
+
Pygments==2.15.1
|
|
64
|
+
pylint==2.17.4
|
|
65
|
+
pyorbs==2.0.0
|
|
66
|
+
pyproject_hooks==1.0.0
|
|
67
|
+
pytest==7.3.1
|
|
68
|
+
pytest-cov==4.1.0
|
|
69
|
+
pytest-logikal==1.10.3
|
|
70
|
+
pytest-mock==3.10.0
|
|
71
|
+
pytest-mypy==0.10.3
|
|
72
|
+
pytest-xdist==3.3.1
|
|
73
|
+
pytz==2023.3
|
|
74
|
+
PyYAML==6.0
|
|
75
|
+
readme-renderer==40.0
|
|
76
|
+
requests==2.31.0
|
|
77
|
+
requests-toolbelt==1.0.0
|
|
78
|
+
rfc3986==2.0.0
|
|
79
|
+
rich==13.4.2
|
|
80
|
+
SecretStorage==3.3.3
|
|
81
|
+
setuptools==68.0.0
|
|
82
|
+
six==1.16.0
|
|
83
|
+
smmap==5.0.0
|
|
84
|
+
snowballstemmer==2.2.0
|
|
85
|
+
Sphinx==5.3.0
|
|
86
|
+
sphinx-rtd-theme==1.1.1
|
|
87
|
+
sphinxcontrib-applehelp==1.0.4
|
|
88
|
+
sphinxcontrib-devhelp==1.0.2
|
|
89
|
+
sphinxcontrib-htmlhelp==2.0.1
|
|
90
|
+
sphinxcontrib-jsmath==1.0.1
|
|
91
|
+
sphinxcontrib-qthelp==1.0.3
|
|
92
|
+
sphinxcontrib-serializinghtml==1.1.5
|
|
93
|
+
stevedore==5.1.0
|
|
94
|
+
termcolor==2.3.0
|
|
95
|
+
tomli==2.0.1
|
|
96
|
+
tomlkit==0.11.8
|
|
97
|
+
twine==4.0.2
|
|
98
|
+
typing_extensions==4.6.3
|
|
99
|
+
urllib3==2.0.3
|
|
100
|
+
wcwidth==0.2.6
|
|
101
|
+
webencodings==0.5.1
|
|
102
|
+
websocket-client==1.6.0
|
|
103
|
+
wheel==0.40.0
|
|
104
|
+
wrapt==1.15.0
|
|
105
|
+
zipp==3.15.0
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
###################################################################################################
|
|
2
|
+
##
|
|
3
|
+
## DO NOT EDIT THIS FILE.
|
|
4
|
+
## This is a locked requirements file generated by pyorbs.
|
|
5
|
+
##
|
|
6
|
+
## Requirements hash: 77d551a2ebc640afc10cd1e4f41d7c5bc48119e100bfb0bbffc67821d96ad388
|
|
7
|
+
##
|
|
8
|
+
###################################################################################################
|
|
9
|
+
-e .
|
|
10
|
+
alabaster==0.7.13
|
|
11
|
+
Babel==2.12.1
|
|
12
|
+
certifi==2023.5.7
|
|
13
|
+
charset-normalizer==3.1.0
|
|
14
|
+
docker==6.1.3
|
|
15
|
+
docutils==0.17.1
|
|
16
|
+
idna==3.4
|
|
17
|
+
imagesize==1.4.1
|
|
18
|
+
importlib-metadata==6.7.0
|
|
19
|
+
Jinja2==3.1.2
|
|
20
|
+
logikal-docs==1.1.3
|
|
21
|
+
MarkupSafe==2.1.3
|
|
22
|
+
packaging==23.1
|
|
23
|
+
pip==23.1.2
|
|
24
|
+
Pygments==2.15.1
|
|
25
|
+
pytz==2023.3
|
|
26
|
+
requests==2.31.0
|
|
27
|
+
setuptools==68.0.0
|
|
28
|
+
snowballstemmer==2.2.0
|
|
29
|
+
Sphinx==5.3.0
|
|
30
|
+
sphinx-rtd-theme==1.1.1
|
|
31
|
+
sphinxcontrib-applehelp==1.0.4
|
|
32
|
+
sphinxcontrib-devhelp==1.0.2
|
|
33
|
+
sphinxcontrib-htmlhelp==2.0.1
|
|
34
|
+
sphinxcontrib-jsmath==1.0.1
|
|
35
|
+
sphinxcontrib-qthelp==1.0.3
|
|
36
|
+
sphinxcontrib-serializinghtml==1.1.5
|
|
37
|
+
termcolor==2.3.0
|
|
38
|
+
tomli==2.0.1
|
|
39
|
+
urllib3==2.0.3
|
|
40
|
+
websocket-client==1.6.0
|
|
41
|
+
wheel==0.40.0
|
|
42
|
+
zipp==3.15.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
docker~=6.1
|