jolt 0.9.392__tar.gz → 0.9.404__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.
- {jolt-0.9.392 → jolt-0.9.404}/PKG-INFO +104 -18
- {jolt-0.9.392 → jolt-0.9.404}/jolt/influence.py +67 -2
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/git.py +8 -2
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/linux.py +49 -2
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/podman.py +10 -1
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/selfdeploy.py +11 -6
- jolt-0.9.404/jolt/version.py +1 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt.egg-info/PKG-INFO +104 -18
- jolt-0.9.404/jolt.egg-info/requires.txt +214 -0
- jolt-0.9.392/jolt/version.py +0 -1
- jolt-0.9.392/jolt.egg-info/requires.txt +0 -50
- {jolt-0.9.392 → jolt-0.9.404}/README.rst +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/__init__.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/__main__.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/bin/fstree-darwin-x86_64 +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/bin/fstree-linux-x86_64 +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/cache.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/chroot.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/cli.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/colors.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/common_pb2.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/common_pb2_grpc.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/config.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/error.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/expires.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/filesystem.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/graph.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/hooks.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/inspection.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/loader.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/log.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/manifest.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/options.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/pkgs/__init__.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/pkgs/golang.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/pkgs/nodejs.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/__init__.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/alias.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/allure.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/autoweight.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/cache.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/cmake.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/conan.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/cxx.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/cxxinfo.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/dashboard.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/docker.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/email.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/email.xslt +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/environ.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/gdb.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/gerrit.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/golang.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/googletest.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/http.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/junit.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/logstash.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/ninja-compdb.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/ninja.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/nodejs.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/paths.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/python.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/__init__.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/administration_pb2.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/administration_pb2_grpc.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/log_pb2.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/log_pb2_grpc.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/scheduler_pb2.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/scheduler_pb2_grpc.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/worker_pb2.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/remote_execution/worker_pb2_grpc.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/report.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/scheduler.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/strings.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/symlinks.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/telemetry.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/timeline.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/volume.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/yaml-ninja.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/plugins/yamltask.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/scheduler.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/tasks.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/templates/cxxexecutable.cmake.template +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/templates/cxxlibrary.cmake.template +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/templates/export.sh.template +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/templates/timeline.html.template +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/timer.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/tools.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/utils.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/version_utils.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt/xmldom.py +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt.egg-info/SOURCES.txt +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt.egg-info/dependency_links.txt +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt.egg-info/entry_points.txt +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/jolt.egg-info/top_level.txt +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/setup.cfg +0 -0
- {jolt-0.9.392 → jolt-0.9.404}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jolt
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.404
|
|
4
4
|
Summary: A task executor
|
|
5
5
|
Home-page: https://github.com/srand/jolt
|
|
6
6
|
Author: Robert Andersson
|
|
@@ -21,39 +21,125 @@ Classifier: Programming Language :: Java
|
|
|
21
21
|
Classifier: Programming Language :: JavaScript
|
|
22
22
|
Classifier: Programming Language :: Python :: 3
|
|
23
23
|
Requires-Python: >=3.8
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: Babel>=2.7; extra == "i18n"
|
|
25
|
+
Requires-Dist: BeautifulSoup4; extra == "htmlsoup"
|
|
26
|
+
Requires-Dist: Cython>=3.0.11; extra == "source"
|
|
27
|
+
Requires-Dist: Jinja2==3.1.4
|
|
28
|
+
Requires-Dist: MarkupSafe>=2.0
|
|
29
|
+
Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks"
|
|
30
|
+
Requires-Dist: SecretStorage>=3.2; sys_platform == "linux"
|
|
31
|
+
Requires-Dist: allure-python-commons; extra == "allure"
|
|
32
|
+
Requires-Dist: backports.tarfile; python_version < "3.12"
|
|
27
33
|
Requires-Dist: bz2file==0.98
|
|
28
|
-
Requires-Dist: certifi
|
|
29
|
-
Requires-Dist: cffi
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: certifi>=2017.4.17
|
|
35
|
+
Requires-Dist: cffi>=1.11; extra == "cffi"
|
|
36
|
+
Requires-Dist: cffi>=1.11; platform_python_implementation == "PyPy"
|
|
37
|
+
Requires-Dist: cffi>=1.16.0
|
|
38
|
+
Requires-Dist: chardet<6,>=3.0.2; extra == "use-chardet-on-py3"
|
|
39
|
+
Requires-Dist: charset-normalizer<4,>=2
|
|
40
|
+
Requires-Dist: check-manifest; extra == "dev"
|
|
41
|
+
Requires-Dist: click>=8.1
|
|
42
|
+
Requires-Dist: codecov>=2.0.5; extra == "test"
|
|
43
|
+
Requires-Dist: colorama; platform_system == "Windows"
|
|
32
44
|
Requires-Dist: colorama==0.4.6
|
|
45
|
+
Requires-Dist: conan>=2.0; extra == "conan"
|
|
46
|
+
Requires-Dist: coverage>=4.2; extra == "test"
|
|
47
|
+
Requires-Dist: coverage; extra == "test"
|
|
48
|
+
Requires-Dist: cssselect>=0.7; extra == "cssselect"
|
|
49
|
+
Requires-Dist: enum34; python_version <= "3.4" and extra == "test"
|
|
33
50
|
Requires-Dist: fasteners==0.19
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
51
|
+
Requires-Dist: flake8>=3.0.4; extra == "test"
|
|
52
|
+
Requires-Dist: flufl.flake8; extra == "test"
|
|
53
|
+
Requires-Dist: furo; extra == "doc"
|
|
54
|
+
Requires-Dist: furo; extra == "docs"
|
|
55
|
+
Requires-Dist: gdata; python_version == "2.7" and extra == "test"
|
|
56
|
+
Requires-Dist: grpcio>=1.62.2
|
|
57
|
+
Requires-Dist: html5lib; extra == "html5"
|
|
58
|
+
Requires-Dist: idna<4,>=2.5
|
|
59
|
+
Requires-Dist: importlib-metadata>=4.11.4; python_version < "3.12"
|
|
60
|
+
Requires-Dist: importlib-resources; python_version < "3.9"
|
|
61
|
+
Requires-Dist: importlib-resources>=1.3; python_version < "3.9" and extra == "test"
|
|
62
|
+
Requires-Dist: importlib_metadata==8.5.0
|
|
63
|
+
Requires-Dist: ipaddress; python_version < "3.0" and extra == "test"
|
|
64
|
+
Requires-Dist: ipython; extra == "perf"
|
|
65
|
+
Requires-Dist: ipywidgets>=6; extra == "notebook"
|
|
66
|
+
Requires-Dist: jaraco.classes; extra == "test"
|
|
38
67
|
Requires-Dist: jaraco.classes==3.4.0
|
|
39
68
|
Requires-Dist: jaraco.context==6.0.1
|
|
40
69
|
Requires-Dist: jaraco.functools==4.0.2
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
70
|
+
Requires-Dist: jaraco.packaging>=9.3; extra == "doc"
|
|
71
|
+
Requires-Dist: jaraco.packaging>=9.3; extra == "docs"
|
|
72
|
+
Requires-Dist: jaraco.test>=5.4; extra == "test"
|
|
73
|
+
Requires-Dist: jaraco.tidelift>=1.4; extra == "doc"
|
|
74
|
+
Requires-Dist: jaraco.tidelift>=1.4; extra == "docs"
|
|
75
|
+
Requires-Dist: jeepney>=0.4.2; sys_platform == "linux"
|
|
76
|
+
Requires-Dist: keyring>=20; extra == "test"
|
|
43
77
|
Requires-Dist: keyring==25.4.1
|
|
44
78
|
Requires-Dist: keyrings.alt==5.0.2
|
|
79
|
+
Requires-Dist: lxml-html-clean; extra == "html-clean"
|
|
45
80
|
Requires-Dist: lxml==5.3.0
|
|
81
|
+
Requires-Dist: mock; python_version < "3.0" and extra == "test"
|
|
46
82
|
Requires-Dist: more-itertools==10.5.0
|
|
47
|
-
Requires-Dist: multi_key_dict
|
|
83
|
+
Requires-Dist: multi_key_dict==2.0.3
|
|
48
84
|
Requires-Dist: ninja==1.11.1.1
|
|
85
|
+
Requires-Dist: packaging; extra == "test"
|
|
86
|
+
Requires-Dist: portend; extra == "test"
|
|
49
87
|
Requires-Dist: protobuf==5.28.2
|
|
50
88
|
Requires-Dist: psutil==6.0.0
|
|
51
|
-
Requires-Dist:
|
|
89
|
+
Requires-Dist: pycryptodome; extra == "test"
|
|
90
|
+
Requires-Dist: pycryptodomex; extra == "test"
|
|
91
|
+
Requires-Dist: pyfakefs; extra == "test"
|
|
52
92
|
Requires-Dist: pygit2==1.15.1
|
|
93
|
+
Requires-Dist: pygobject-stubs; extra == "type"
|
|
94
|
+
Requires-Dist: pytest!=8.1.*,>=6; extra == "test"
|
|
95
|
+
Requires-Dist: pytest>=4.5.0; extra == "test"
|
|
96
|
+
Requires-Dist: pytest>=6; extra == "dev"
|
|
97
|
+
Requires-Dist: pytest>=6; extra == "testing"
|
|
98
|
+
Requires-Dist: pytest-checkdocs>=2.4; extra == "check"
|
|
99
|
+
Requires-Dist: pytest-checkdocs>=2.4; extra == "test"
|
|
100
|
+
Requires-Dist: pytest-checkdocs>=2.4; extra == "testing"
|
|
101
|
+
Requires-Dist: pytest-cov; extra == "cover"
|
|
102
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
103
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
104
|
+
Requires-Dist: pytest-cov; extra == "testing"
|
|
105
|
+
Requires-Dist: pytest-cov>=2.7.1; extra == "test"
|
|
106
|
+
Requires-Dist: pytest-enabler>=2.2; extra == "enabler"
|
|
107
|
+
Requires-Dist: pytest-enabler>=2.2; extra == "test"
|
|
108
|
+
Requires-Dist: pytest-enabler>=2.2; extra == "testing"
|
|
109
|
+
Requires-Dist: pytest-mypy; extra == "test"
|
|
110
|
+
Requires-Dist: pytest-mypy; extra == "testing"
|
|
111
|
+
Requires-Dist: pytest-mypy; extra == "type"
|
|
112
|
+
Requires-Dist: pytest-perf>=0.9.2; extra == "test"
|
|
113
|
+
Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "check"
|
|
114
|
+
Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "test"
|
|
115
|
+
Requires-Dist: pytest-ruff>=0.2.1; extra == "testing"
|
|
116
|
+
Requires-Dist: pytest-runner>=5.1; extra == "test"
|
|
117
|
+
Requires-Dist: pytest-timeout; extra == "dev"
|
|
118
|
+
Requires-Dist: pytest-virtualenv>=1.7.0; extra == "test"
|
|
119
|
+
Requires-Dist: pytest-xdist; extra == "dev"
|
|
120
|
+
Requires-Dist: python-keyczar; python_version == "2.7" and extra == "test"
|
|
121
|
+
Requires-Dist: pywin32; sys_platform == "win32" and extra == "test"
|
|
122
|
+
Requires-Dist: pywin32-ctypes>=0.2.0; sys_platform == "win32"
|
|
123
|
+
Requires-Dist: requests; extra == "telegram"
|
|
53
124
|
Requires-Dist: requests==2.32.3
|
|
125
|
+
Requires-Dist: rst.linker>=1.9; extra == "doc"
|
|
126
|
+
Requires-Dist: rst.linker>=1.9; extra == "docs"
|
|
127
|
+
Requires-Dist: shtab; extra == "type"
|
|
128
|
+
Requires-Dist: shtab>=1.1.0; extra == "completion"
|
|
129
|
+
Requires-Dist: slack-sdk; extra == "slack"
|
|
130
|
+
Requires-Dist: sphinx>=3.5; extra == "doc"
|
|
131
|
+
Requires-Dist: sphinx>=3.5; extra == "docs"
|
|
132
|
+
Requires-Dist: sphinx-click; extra == "doc"
|
|
133
|
+
Requires-Dist: sphinx-lint; extra == "doc"
|
|
134
|
+
Requires-Dist: sphinx-lint; extra == "docs"
|
|
135
|
+
Requires-Dist: sphinx-rtd-theme; extra == "doc"
|
|
54
136
|
Requires-Dist: tqdm==4.66.5
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist:
|
|
137
|
+
Requires-Dist: types-pywin32; extra == "type"
|
|
138
|
+
Requires-Dist: typing-extensions>=3.6.4; python_version < "3.8"
|
|
139
|
+
Requires-Dist: urllib3<3,>=1.21.1
|
|
140
|
+
Requires-Dist: virtualenv>=15.0.3; extra == "test"
|
|
141
|
+
Requires-Dist: wmi; sys_platform == "win32" and extra == "test"
|
|
142
|
+
Requires-Dist: zipp>=3.20
|
|
57
143
|
Requires-Dist: zstandard==0.23.0
|
|
58
144
|
Provides-Extra: allure
|
|
59
145
|
Requires-Dist: allure-python-commons; extra == "allure"
|
|
@@ -3,7 +3,7 @@ import hashlib
|
|
|
3
3
|
import os
|
|
4
4
|
from pathlib import Path, PurePath
|
|
5
5
|
|
|
6
|
-
from jolt import config
|
|
6
|
+
from jolt import config as jolt_config
|
|
7
7
|
from jolt import inspection
|
|
8
8
|
from jolt import utils
|
|
9
9
|
from jolt import filesystem as fs
|
|
@@ -202,6 +202,71 @@ def source(name, obj=None):
|
|
|
202
202
|
return _decorate
|
|
203
203
|
|
|
204
204
|
|
|
205
|
+
class ConfigInfluence(HashInfluenceProvider):
|
|
206
|
+
name = "Config"
|
|
207
|
+
|
|
208
|
+
def __init__(self, section, key):
|
|
209
|
+
self.section = section
|
|
210
|
+
self.key = key
|
|
211
|
+
|
|
212
|
+
def get_influence(self, task):
|
|
213
|
+
value = jolt_config.get(self.section, self.key)
|
|
214
|
+
if value is None:
|
|
215
|
+
value = "<unset>"
|
|
216
|
+
return "{}.{}: {}".format(self.section, self.key, value)
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
def config(section, key):
|
|
220
|
+
""" Add configuration value as hash influence.
|
|
221
|
+
|
|
222
|
+
Note that the configuration value is read at the time
|
|
223
|
+
when the task is prepared, not when it is executed.
|
|
224
|
+
This means that if the configuration value changes after
|
|
225
|
+
influence has been calculated, the task will not be re-executed.
|
|
226
|
+
This is true also in distributed mode, where the task
|
|
227
|
+
is prepared locally and executed remotely on a worker
|
|
228
|
+
where the configuration value may be different.
|
|
229
|
+
|
|
230
|
+
Args:
|
|
231
|
+
section (str): Name of the configuration section.
|
|
232
|
+
key (str): Name of the configuration key.
|
|
233
|
+
|
|
234
|
+
Example:
|
|
235
|
+
.. code-block:: python
|
|
236
|
+
|
|
237
|
+
from jolt import influence
|
|
238
|
+
|
|
239
|
+
@influence.config("jolt", "task_timeout")
|
|
240
|
+
class Example(Task):
|
|
241
|
+
|
|
242
|
+
"""
|
|
243
|
+
def _decorate(cls):
|
|
244
|
+
_old_influence = cls._influence
|
|
245
|
+
|
|
246
|
+
def _influence(self, *args, **kwargs):
|
|
247
|
+
influence = _old_influence(self, *args, **kwargs)
|
|
248
|
+
influence.append(ConfigInfluence(section, key))
|
|
249
|
+
return influence
|
|
250
|
+
|
|
251
|
+
cls._influence = _influence
|
|
252
|
+
return cls
|
|
253
|
+
|
|
254
|
+
return _decorate
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def global_config(section, key):
|
|
258
|
+
""" Register a configuration influence globally.
|
|
259
|
+
|
|
260
|
+
See :py:func:`config` for more information.
|
|
261
|
+
|
|
262
|
+
Args:
|
|
263
|
+
section (str): Name of the configuration section.
|
|
264
|
+
key (str): Name of the configuration key.
|
|
265
|
+
"""
|
|
266
|
+
|
|
267
|
+
HashInfluenceRegistry.get().register(ConfigInfluence(section, key))
|
|
268
|
+
|
|
269
|
+
|
|
205
270
|
class TaskClassSourceInfluence(HashInfluenceProvider):
|
|
206
271
|
name = "Source"
|
|
207
272
|
|
|
@@ -250,7 +315,7 @@ class CacheLocationInfluence(HashInfluenceProvider):
|
|
|
250
315
|
name = "Cache"
|
|
251
316
|
|
|
252
317
|
def get_influence(self, task):
|
|
253
|
-
return
|
|
318
|
+
return jolt_config.get_cachedir()
|
|
254
319
|
|
|
255
320
|
|
|
256
321
|
@HashInfluenceRegistry.Register
|
|
@@ -111,7 +111,7 @@ class GitRepository(object):
|
|
|
111
111
|
|
|
112
112
|
utils.call_and_catch(self.tools.run, "git remote remove origin", output=False)
|
|
113
113
|
self.tools.run("git remote add origin {}", self.url, output_on_error=True)
|
|
114
|
-
self.
|
|
114
|
+
self._fetch_origin()
|
|
115
115
|
self.tools.run("git checkout -f FETCH_HEAD", output_on_error=True)
|
|
116
116
|
else:
|
|
117
117
|
if refpath and os.path.isdir(refpath):
|
|
@@ -124,6 +124,11 @@ class GitRepository(object):
|
|
|
124
124
|
self.repository is None,
|
|
125
125
|
"Failed to clone repository '{0}'", self.relpath)
|
|
126
126
|
|
|
127
|
+
@utils.retried.on_exception(JoltCommandError, pattern="Command failed: git fetch", count=6, backoff=[2, 5, 10, 15, 20, 30])
|
|
128
|
+
def _fetch_origin(self):
|
|
129
|
+
with self.tools.cwd(self.path):
|
|
130
|
+
self.tools.run("git fetch origin", output_on_error=True)
|
|
131
|
+
|
|
127
132
|
@utils.cached.instance
|
|
128
133
|
def diff_unchecked(self):
|
|
129
134
|
if not self.is_indexed():
|
|
@@ -247,6 +252,7 @@ class GitRepository(object):
|
|
|
247
252
|
with self.tools.cwd(self.path):
|
|
248
253
|
return self.tools.run("git reset --hard", output_on_error=True)
|
|
249
254
|
|
|
255
|
+
@utils.retried.on_exception(JoltCommandError, pattern="Command failed: git fetch", count=6, backoff=[2, 5, 10, 15, 20, 30])
|
|
250
256
|
def fetch(self, commit=None):
|
|
251
257
|
if commit and not self.is_valid_sha(commit):
|
|
252
258
|
commit = None
|
|
@@ -255,7 +261,7 @@ class GitRepository(object):
|
|
|
255
261
|
with self.tools.cwd(self.path):
|
|
256
262
|
log.info("Fetching {0} from {1}", commit or refspec or 'commits', self.url)
|
|
257
263
|
self.tools.run(
|
|
258
|
-
"git fetch --prune {url} {what}",
|
|
264
|
+
"git fetch --force --prune {url} {what}",
|
|
259
265
|
url=self.url,
|
|
260
266
|
what=commit or refspec or '',
|
|
261
267
|
output_on_error=True)
|
|
@@ -21,6 +21,7 @@ def linux_arch_to_container_platform(arch):
|
|
|
21
21
|
Returns:
|
|
22
22
|
- linux/amd64
|
|
23
23
|
- linux/arm
|
|
24
|
+
- linux/arm/v5
|
|
24
25
|
- linux/arm64
|
|
25
26
|
- linux/mips
|
|
26
27
|
- linux/ppc64
|
|
@@ -30,6 +31,7 @@ def linux_arch_to_container_platform(arch):
|
|
|
30
31
|
platforms = {
|
|
31
32
|
"arm": "linux/arm",
|
|
32
33
|
"arm64": "linux/arm64",
|
|
34
|
+
"armv5": "linux/arm/v5",
|
|
33
35
|
"mips": "linux/mips64le",
|
|
34
36
|
"powerpc": "linux/ppc64le",
|
|
35
37
|
"riscv": "linux/riscv64",
|
|
@@ -63,6 +65,7 @@ def linux_arch_to_debian_arch(arch):
|
|
|
63
65
|
"amd64": "amd64",
|
|
64
66
|
"arm": "armhf",
|
|
65
67
|
"arm64": "arm64",
|
|
68
|
+
"armv5": "armel",
|
|
66
69
|
"mips": "mips",
|
|
67
70
|
"powerpc": "ppc64el",
|
|
68
71
|
"riscv": "riscv64",
|
|
@@ -81,6 +84,7 @@ class ArchParameter(Parameter):
|
|
|
81
84
|
- amd64
|
|
82
85
|
- arm
|
|
83
86
|
- arm64
|
|
87
|
+
- armv5
|
|
84
88
|
- mips
|
|
85
89
|
- powerpc
|
|
86
90
|
- riscv
|
|
@@ -94,6 +98,7 @@ class ArchParameter(Parameter):
|
|
|
94
98
|
"amd64",
|
|
95
99
|
"arm",
|
|
96
100
|
"arm64",
|
|
101
|
+
"armv5",
|
|
97
102
|
"mips",
|
|
98
103
|
"powerpc",
|
|
99
104
|
"riscv",
|
|
@@ -111,7 +116,7 @@ class _ContainerImageBase(podman.ContainerImage):
|
|
|
111
116
|
""" Must be subclassed """
|
|
112
117
|
|
|
113
118
|
arch = ArchParameter()
|
|
114
|
-
""" Target architecture [amd64, arm, arm64, mips, powerpc, riscv, s390, x86] """
|
|
119
|
+
""" Target architecture [amd64, arm, arm64, armv5, mips, powerpc, riscv, s390, x86] """
|
|
115
120
|
|
|
116
121
|
@property
|
|
117
122
|
def target(self):
|
|
@@ -169,13 +174,14 @@ class DebianHostSdk(Task):
|
|
|
169
174
|
""" Must be subclassed """
|
|
170
175
|
|
|
171
176
|
arch = ArchParameter()
|
|
172
|
-
""" Target architecture [amd64, arm, arm64, mips, powerpc, riscv, s390, x86] """
|
|
177
|
+
""" Target architecture [amd64, arm, arm64, armv5, mips, powerpc, riscv, s390, x86] """
|
|
173
178
|
|
|
174
179
|
def publish(self, artifact, tools):
|
|
175
180
|
arch_to_cross_compile = {
|
|
176
181
|
"amd64": "x86_64-linux-gnu-",
|
|
177
182
|
"arm": "arm-linux-gnueabihf-",
|
|
178
183
|
"arm64": "aarch64-linux-gnu-",
|
|
184
|
+
"armv5": "arm-linux-gnueabi-",
|
|
179
185
|
"mips": "mips-linux-gnu-",
|
|
180
186
|
"powerpc": "powerpc64-linux-gnu-",
|
|
181
187
|
"riscv": "riscv64-linux-gnu-",
|
|
@@ -264,6 +270,47 @@ class Squashfs(_ContainerImageBase):
|
|
|
264
270
|
artifact.paths.squashfs = "squashfs/{_imagefile}.squashfs"
|
|
265
271
|
|
|
266
272
|
|
|
273
|
+
class Ext4(_ContainerImageBase):
|
|
274
|
+
"""
|
|
275
|
+
Builds an ext4 image using Podman.
|
|
276
|
+
|
|
277
|
+
The task builds a container image using the given Dockerfile and converts
|
|
278
|
+
the resulting container filesystem to an ext4 image which is published.
|
|
279
|
+
|
|
280
|
+
When building images for an architecture other than the host, the
|
|
281
|
+
binfmt-support package must be installed and configured to support running
|
|
282
|
+
applications for the target architecture. The package is available in most
|
|
283
|
+
Linux distributions.
|
|
284
|
+
|
|
285
|
+
The location of the resulting squashfs image is stored in the
|
|
286
|
+
``artifact.paths.squashfs`` artifact attribute.
|
|
287
|
+
"""
|
|
288
|
+
abstract = True
|
|
289
|
+
""" Must be subclassed """
|
|
290
|
+
|
|
291
|
+
output = ["ext4"]
|
|
292
|
+
|
|
293
|
+
size = None
|
|
294
|
+
"""
|
|
295
|
+
Size of the ext4 image.
|
|
296
|
+
|
|
297
|
+
Typically used to align the image size to a supported SD card size (power of two).
|
|
298
|
+
|
|
299
|
+
Supported units are 'K', 'M', 'G', 'T'.
|
|
300
|
+
"""
|
|
301
|
+
|
|
302
|
+
def run(self, deps, tools):
|
|
303
|
+
super().run(deps, tools)
|
|
304
|
+
if self.size:
|
|
305
|
+
with tools.cwd(tools.builddir("ext4")):
|
|
306
|
+
tools.run("fallocate -l {size} image.ext4")
|
|
307
|
+
|
|
308
|
+
def publish(self, artifact, tools):
|
|
309
|
+
super().publish(artifact, tools)
|
|
310
|
+
artifact.strings.arch = str(self.arch)
|
|
311
|
+
artifact.paths.ext4 = "ext4/{_imagefile}.ext4"
|
|
312
|
+
|
|
313
|
+
|
|
267
314
|
class _KernelBase(Task):
|
|
268
315
|
abstract = True
|
|
269
316
|
""" Must be subclassed """
|
|
@@ -483,6 +483,7 @@ class ContainerImage(Task):
|
|
|
483
483
|
- custom
|
|
484
484
|
- directory
|
|
485
485
|
- docker-archive
|
|
486
|
+
- ext4
|
|
486
487
|
- oci-archive
|
|
487
488
|
- oci-directory
|
|
488
489
|
- squashfs
|
|
@@ -516,6 +517,9 @@ class ContainerImage(Task):
|
|
|
516
517
|
The ``podman/login`` Jolt resource can be used for that purpose.
|
|
517
518
|
"""
|
|
518
519
|
|
|
520
|
+
size = None
|
|
521
|
+
""" Size of the image, e.g. "64M" (for certain output formats). """
|
|
522
|
+
|
|
519
523
|
squash = False
|
|
520
524
|
""" Squash image layers """
|
|
521
525
|
|
|
@@ -594,7 +598,7 @@ class ContainerImage(Task):
|
|
|
594
598
|
tools.run("podman image save --format={output} {} -o {}", self.tags[0], "image.tar")
|
|
595
599
|
if output == "oci-directory":
|
|
596
600
|
tools.run("podman image save --format=oci-dir {} -o {}", self.tags[0], "image.dir")
|
|
597
|
-
if output in ["archive", "cpio", "custom", "directory", "squashfs"]:
|
|
601
|
+
if output in ["archive", "cpio", "custom", "directory", "ext4", "squashfs"]:
|
|
598
602
|
ctr = tools.run("podman create {}", self.tags[0])
|
|
599
603
|
try:
|
|
600
604
|
with tools.runprefix("podman unshare "):
|
|
@@ -606,6 +610,9 @@ class ContainerImage(Task):
|
|
|
606
610
|
elif output == "cpio":
|
|
607
611
|
with tools.cwd(mount_path):
|
|
608
612
|
tools.run("find | podman unshare cpio -o -F {}/image.cpio -H newc", outdir, output_on_error=True)
|
|
613
|
+
elif output == "ext4":
|
|
614
|
+
assert self.size, "Size must be set for ext4 output"
|
|
615
|
+
tools.run("mke2fs -t ext4 -F -L rootfs -d {} image.ext4 {size}", mount_path, output_on_error=True)
|
|
609
616
|
elif output == "squashfs":
|
|
610
617
|
tools.run("mksquashfs {} image.squashfs", mount_path, output_on_error=True)
|
|
611
618
|
else:
|
|
@@ -660,6 +667,8 @@ class ContainerImage(Task):
|
|
|
660
667
|
self.publish_custom(artifact, tools)
|
|
661
668
|
if output in ["directory"]:
|
|
662
669
|
artifact.paths.rootfs = output
|
|
670
|
+
if output in ["ext4"]:
|
|
671
|
+
artifact.collect("image.ext4", output + "/{_imagefile}.ext4")
|
|
663
672
|
if output in ["squashfs"]:
|
|
664
673
|
artifact.collect("image.squashfs", output + "/{_imagefile}.squashfs")
|
|
665
674
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import importlib_metadata
|
|
1
2
|
import os
|
|
2
|
-
import pkg_resources
|
|
3
3
|
|
|
4
4
|
from jolt import config
|
|
5
5
|
from jolt import filesystem as fs
|
|
@@ -104,17 +104,22 @@ def get_dependencies(packages=None):
|
|
|
104
104
|
while reqs:
|
|
105
105
|
req = reqs.pop()
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
try:
|
|
108
|
+
dist = importlib_metadata.distribution(req)
|
|
109
|
+
except (ImportError, importlib_metadata.PackageNotFoundError):
|
|
110
|
+
dist = None
|
|
111
|
+
except Exception:
|
|
112
|
+
dist = None
|
|
108
113
|
if dist is None:
|
|
109
114
|
log.debug("[SelfDeploy] Dependency not found: {}", req)
|
|
110
115
|
pkgs[req] = req
|
|
111
116
|
continue
|
|
112
117
|
|
|
113
|
-
for dep in dist.requires
|
|
114
|
-
if dep
|
|
115
|
-
reqs.append(dep
|
|
118
|
+
for dep in dist.requires or []:
|
|
119
|
+
if dep not in pkgs:
|
|
120
|
+
reqs.append(dep)
|
|
116
121
|
|
|
117
|
-
pkgs[req] = f"{dist.
|
|
122
|
+
pkgs[req] = f"{dist.name}=={dist.version}"
|
|
118
123
|
|
|
119
124
|
try:
|
|
120
125
|
del pkgs["jolt"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.404"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jolt
|
|
3
|
-
Version: 0.9.
|
|
3
|
+
Version: 0.9.404
|
|
4
4
|
Summary: A task executor
|
|
5
5
|
Home-page: https://github.com/srand/jolt
|
|
6
6
|
Author: Robert Andersson
|
|
@@ -21,39 +21,125 @@ Classifier: Programming Language :: Java
|
|
|
21
21
|
Classifier: Programming Language :: JavaScript
|
|
22
22
|
Classifier: Programming Language :: Python :: 3
|
|
23
23
|
Requires-Python: >=3.8
|
|
24
|
-
Requires-Dist:
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: Babel>=2.7; extra == "i18n"
|
|
25
|
+
Requires-Dist: BeautifulSoup4; extra == "htmlsoup"
|
|
26
|
+
Requires-Dist: Cython>=3.0.11; extra == "source"
|
|
27
|
+
Requires-Dist: Jinja2==3.1.4
|
|
28
|
+
Requires-Dist: MarkupSafe>=2.0
|
|
29
|
+
Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks"
|
|
30
|
+
Requires-Dist: SecretStorage>=3.2; sys_platform == "linux"
|
|
31
|
+
Requires-Dist: allure-python-commons; extra == "allure"
|
|
32
|
+
Requires-Dist: backports.tarfile; python_version < "3.12"
|
|
27
33
|
Requires-Dist: bz2file==0.98
|
|
28
|
-
Requires-Dist: certifi
|
|
29
|
-
Requires-Dist: cffi
|
|
30
|
-
Requires-Dist:
|
|
31
|
-
Requires-Dist:
|
|
34
|
+
Requires-Dist: certifi>=2017.4.17
|
|
35
|
+
Requires-Dist: cffi>=1.11; extra == "cffi"
|
|
36
|
+
Requires-Dist: cffi>=1.11; platform_python_implementation == "PyPy"
|
|
37
|
+
Requires-Dist: cffi>=1.16.0
|
|
38
|
+
Requires-Dist: chardet<6,>=3.0.2; extra == "use-chardet-on-py3"
|
|
39
|
+
Requires-Dist: charset-normalizer<4,>=2
|
|
40
|
+
Requires-Dist: check-manifest; extra == "dev"
|
|
41
|
+
Requires-Dist: click>=8.1
|
|
42
|
+
Requires-Dist: codecov>=2.0.5; extra == "test"
|
|
43
|
+
Requires-Dist: colorama; platform_system == "Windows"
|
|
32
44
|
Requires-Dist: colorama==0.4.6
|
|
45
|
+
Requires-Dist: conan>=2.0; extra == "conan"
|
|
46
|
+
Requires-Dist: coverage>=4.2; extra == "test"
|
|
47
|
+
Requires-Dist: coverage; extra == "test"
|
|
48
|
+
Requires-Dist: cssselect>=0.7; extra == "cssselect"
|
|
49
|
+
Requires-Dist: enum34; python_version <= "3.4" and extra == "test"
|
|
33
50
|
Requires-Dist: fasteners==0.19
|
|
34
|
-
Requires-Dist:
|
|
35
|
-
Requires-Dist:
|
|
36
|
-
Requires-Dist:
|
|
37
|
-
Requires-Dist:
|
|
51
|
+
Requires-Dist: flake8>=3.0.4; extra == "test"
|
|
52
|
+
Requires-Dist: flufl.flake8; extra == "test"
|
|
53
|
+
Requires-Dist: furo; extra == "doc"
|
|
54
|
+
Requires-Dist: furo; extra == "docs"
|
|
55
|
+
Requires-Dist: gdata; python_version == "2.7" and extra == "test"
|
|
56
|
+
Requires-Dist: grpcio>=1.62.2
|
|
57
|
+
Requires-Dist: html5lib; extra == "html5"
|
|
58
|
+
Requires-Dist: idna<4,>=2.5
|
|
59
|
+
Requires-Dist: importlib-metadata>=4.11.4; python_version < "3.12"
|
|
60
|
+
Requires-Dist: importlib-resources; python_version < "3.9"
|
|
61
|
+
Requires-Dist: importlib-resources>=1.3; python_version < "3.9" and extra == "test"
|
|
62
|
+
Requires-Dist: importlib_metadata==8.5.0
|
|
63
|
+
Requires-Dist: ipaddress; python_version < "3.0" and extra == "test"
|
|
64
|
+
Requires-Dist: ipython; extra == "perf"
|
|
65
|
+
Requires-Dist: ipywidgets>=6; extra == "notebook"
|
|
66
|
+
Requires-Dist: jaraco.classes; extra == "test"
|
|
38
67
|
Requires-Dist: jaraco.classes==3.4.0
|
|
39
68
|
Requires-Dist: jaraco.context==6.0.1
|
|
40
69
|
Requires-Dist: jaraco.functools==4.0.2
|
|
41
|
-
Requires-Dist:
|
|
42
|
-
Requires-Dist:
|
|
70
|
+
Requires-Dist: jaraco.packaging>=9.3; extra == "doc"
|
|
71
|
+
Requires-Dist: jaraco.packaging>=9.3; extra == "docs"
|
|
72
|
+
Requires-Dist: jaraco.test>=5.4; extra == "test"
|
|
73
|
+
Requires-Dist: jaraco.tidelift>=1.4; extra == "doc"
|
|
74
|
+
Requires-Dist: jaraco.tidelift>=1.4; extra == "docs"
|
|
75
|
+
Requires-Dist: jeepney>=0.4.2; sys_platform == "linux"
|
|
76
|
+
Requires-Dist: keyring>=20; extra == "test"
|
|
43
77
|
Requires-Dist: keyring==25.4.1
|
|
44
78
|
Requires-Dist: keyrings.alt==5.0.2
|
|
79
|
+
Requires-Dist: lxml-html-clean; extra == "html-clean"
|
|
45
80
|
Requires-Dist: lxml==5.3.0
|
|
81
|
+
Requires-Dist: mock; python_version < "3.0" and extra == "test"
|
|
46
82
|
Requires-Dist: more-itertools==10.5.0
|
|
47
|
-
Requires-Dist: multi_key_dict
|
|
83
|
+
Requires-Dist: multi_key_dict==2.0.3
|
|
48
84
|
Requires-Dist: ninja==1.11.1.1
|
|
85
|
+
Requires-Dist: packaging; extra == "test"
|
|
86
|
+
Requires-Dist: portend; extra == "test"
|
|
49
87
|
Requires-Dist: protobuf==5.28.2
|
|
50
88
|
Requires-Dist: psutil==6.0.0
|
|
51
|
-
Requires-Dist:
|
|
89
|
+
Requires-Dist: pycryptodome; extra == "test"
|
|
90
|
+
Requires-Dist: pycryptodomex; extra == "test"
|
|
91
|
+
Requires-Dist: pyfakefs; extra == "test"
|
|
52
92
|
Requires-Dist: pygit2==1.15.1
|
|
93
|
+
Requires-Dist: pygobject-stubs; extra == "type"
|
|
94
|
+
Requires-Dist: pytest!=8.1.*,>=6; extra == "test"
|
|
95
|
+
Requires-Dist: pytest>=4.5.0; extra == "test"
|
|
96
|
+
Requires-Dist: pytest>=6; extra == "dev"
|
|
97
|
+
Requires-Dist: pytest>=6; extra == "testing"
|
|
98
|
+
Requires-Dist: pytest-checkdocs>=2.4; extra == "check"
|
|
99
|
+
Requires-Dist: pytest-checkdocs>=2.4; extra == "test"
|
|
100
|
+
Requires-Dist: pytest-checkdocs>=2.4; extra == "testing"
|
|
101
|
+
Requires-Dist: pytest-cov; extra == "cover"
|
|
102
|
+
Requires-Dist: pytest-cov; extra == "dev"
|
|
103
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
104
|
+
Requires-Dist: pytest-cov; extra == "testing"
|
|
105
|
+
Requires-Dist: pytest-cov>=2.7.1; extra == "test"
|
|
106
|
+
Requires-Dist: pytest-enabler>=2.2; extra == "enabler"
|
|
107
|
+
Requires-Dist: pytest-enabler>=2.2; extra == "test"
|
|
108
|
+
Requires-Dist: pytest-enabler>=2.2; extra == "testing"
|
|
109
|
+
Requires-Dist: pytest-mypy; extra == "test"
|
|
110
|
+
Requires-Dist: pytest-mypy; extra == "testing"
|
|
111
|
+
Requires-Dist: pytest-mypy; extra == "type"
|
|
112
|
+
Requires-Dist: pytest-perf>=0.9.2; extra == "test"
|
|
113
|
+
Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "check"
|
|
114
|
+
Requires-Dist: pytest-ruff>=0.2.1; sys_platform != "cygwin" and extra == "test"
|
|
115
|
+
Requires-Dist: pytest-ruff>=0.2.1; extra == "testing"
|
|
116
|
+
Requires-Dist: pytest-runner>=5.1; extra == "test"
|
|
117
|
+
Requires-Dist: pytest-timeout; extra == "dev"
|
|
118
|
+
Requires-Dist: pytest-virtualenv>=1.7.0; extra == "test"
|
|
119
|
+
Requires-Dist: pytest-xdist; extra == "dev"
|
|
120
|
+
Requires-Dist: python-keyczar; python_version == "2.7" and extra == "test"
|
|
121
|
+
Requires-Dist: pywin32; sys_platform == "win32" and extra == "test"
|
|
122
|
+
Requires-Dist: pywin32-ctypes>=0.2.0; sys_platform == "win32"
|
|
123
|
+
Requires-Dist: requests; extra == "telegram"
|
|
53
124
|
Requires-Dist: requests==2.32.3
|
|
125
|
+
Requires-Dist: rst.linker>=1.9; extra == "doc"
|
|
126
|
+
Requires-Dist: rst.linker>=1.9; extra == "docs"
|
|
127
|
+
Requires-Dist: shtab; extra == "type"
|
|
128
|
+
Requires-Dist: shtab>=1.1.0; extra == "completion"
|
|
129
|
+
Requires-Dist: slack-sdk; extra == "slack"
|
|
130
|
+
Requires-Dist: sphinx>=3.5; extra == "doc"
|
|
131
|
+
Requires-Dist: sphinx>=3.5; extra == "docs"
|
|
132
|
+
Requires-Dist: sphinx-click; extra == "doc"
|
|
133
|
+
Requires-Dist: sphinx-lint; extra == "doc"
|
|
134
|
+
Requires-Dist: sphinx-lint; extra == "docs"
|
|
135
|
+
Requires-Dist: sphinx-rtd-theme; extra == "doc"
|
|
54
136
|
Requires-Dist: tqdm==4.66.5
|
|
55
|
-
Requires-Dist:
|
|
56
|
-
Requires-Dist:
|
|
137
|
+
Requires-Dist: types-pywin32; extra == "type"
|
|
138
|
+
Requires-Dist: typing-extensions>=3.6.4; python_version < "3.8"
|
|
139
|
+
Requires-Dist: urllib3<3,>=1.21.1
|
|
140
|
+
Requires-Dist: virtualenv>=15.0.3; extra == "test"
|
|
141
|
+
Requires-Dist: wmi; sys_platform == "win32" and extra == "test"
|
|
142
|
+
Requires-Dist: zipp>=3.20
|
|
57
143
|
Requires-Dist: zstandard==0.23.0
|
|
58
144
|
Provides-Extra: allure
|
|
59
145
|
Requires-Dist: allure-python-commons; extra == "allure"
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
Jinja2==3.1.4
|
|
2
|
+
MarkupSafe>=2.0
|
|
3
|
+
bz2file==0.98
|
|
4
|
+
certifi>=2017.4.17
|
|
5
|
+
cffi>=1.16.0
|
|
6
|
+
charset-normalizer<4,>=2
|
|
7
|
+
click>=8.1
|
|
8
|
+
colorama==0.4.6
|
|
9
|
+
fasteners==0.19
|
|
10
|
+
grpcio>=1.62.2
|
|
11
|
+
idna<4,>=2.5
|
|
12
|
+
importlib_metadata==8.5.0
|
|
13
|
+
jaraco.classes==3.4.0
|
|
14
|
+
jaraco.context==6.0.1
|
|
15
|
+
jaraco.functools==4.0.2
|
|
16
|
+
keyring==25.4.1
|
|
17
|
+
keyrings.alt==5.0.2
|
|
18
|
+
lxml==5.3.0
|
|
19
|
+
more-itertools==10.5.0
|
|
20
|
+
multi_key_dict==2.0.3
|
|
21
|
+
ninja==1.11.1.1
|
|
22
|
+
protobuf==5.28.2
|
|
23
|
+
psutil==6.0.0
|
|
24
|
+
pygit2==1.15.1
|
|
25
|
+
requests==2.32.3
|
|
26
|
+
tqdm==4.66.5
|
|
27
|
+
urllib3<3,>=1.21.1
|
|
28
|
+
zipp>=3.20
|
|
29
|
+
zstandard==0.23.0
|
|
30
|
+
|
|
31
|
+
[:extra == "allure"]
|
|
32
|
+
allure-python-commons
|
|
33
|
+
|
|
34
|
+
[:extra == "cffi"]
|
|
35
|
+
cffi>=1.11
|
|
36
|
+
|
|
37
|
+
[:extra == "check"]
|
|
38
|
+
pytest-checkdocs>=2.4
|
|
39
|
+
|
|
40
|
+
[:extra == "completion"]
|
|
41
|
+
shtab>=1.1.0
|
|
42
|
+
|
|
43
|
+
[:extra == "conan"]
|
|
44
|
+
conan>=2.0
|
|
45
|
+
|
|
46
|
+
[:extra == "cover"]
|
|
47
|
+
pytest-cov
|
|
48
|
+
|
|
49
|
+
[:extra == "cssselect"]
|
|
50
|
+
cssselect>=0.7
|
|
51
|
+
|
|
52
|
+
[:extra == "dev"]
|
|
53
|
+
check-manifest
|
|
54
|
+
pytest>=6
|
|
55
|
+
pytest-cov
|
|
56
|
+
pytest-timeout
|
|
57
|
+
pytest-xdist
|
|
58
|
+
|
|
59
|
+
[:extra == "doc"]
|
|
60
|
+
furo
|
|
61
|
+
jaraco.packaging>=9.3
|
|
62
|
+
jaraco.tidelift>=1.4
|
|
63
|
+
rst.linker>=1.9
|
|
64
|
+
sphinx>=3.5
|
|
65
|
+
sphinx-click
|
|
66
|
+
sphinx-lint
|
|
67
|
+
sphinx-rtd-theme
|
|
68
|
+
|
|
69
|
+
[:extra == "docs"]
|
|
70
|
+
furo
|
|
71
|
+
jaraco.packaging>=9.3
|
|
72
|
+
jaraco.tidelift>=1.4
|
|
73
|
+
rst.linker>=1.9
|
|
74
|
+
sphinx>=3.5
|
|
75
|
+
sphinx-lint
|
|
76
|
+
|
|
77
|
+
[:extra == "enabler"]
|
|
78
|
+
pytest-enabler>=2.2
|
|
79
|
+
|
|
80
|
+
[:extra == "html-clean"]
|
|
81
|
+
lxml-html-clean
|
|
82
|
+
|
|
83
|
+
[:extra == "html5"]
|
|
84
|
+
html5lib
|
|
85
|
+
|
|
86
|
+
[:extra == "htmlsoup"]
|
|
87
|
+
BeautifulSoup4
|
|
88
|
+
|
|
89
|
+
[:extra == "i18n"]
|
|
90
|
+
Babel>=2.7
|
|
91
|
+
|
|
92
|
+
[:extra == "notebook"]
|
|
93
|
+
ipywidgets>=6
|
|
94
|
+
|
|
95
|
+
[:extra == "perf"]
|
|
96
|
+
ipython
|
|
97
|
+
|
|
98
|
+
[:extra == "slack"]
|
|
99
|
+
slack-sdk
|
|
100
|
+
|
|
101
|
+
[:extra == "socks"]
|
|
102
|
+
PySocks!=1.5.7,>=1.5.6
|
|
103
|
+
|
|
104
|
+
[:extra == "source"]
|
|
105
|
+
Cython>=3.0.11
|
|
106
|
+
|
|
107
|
+
[:extra == "telegram"]
|
|
108
|
+
requests
|
|
109
|
+
|
|
110
|
+
[:extra == "test"]
|
|
111
|
+
codecov>=2.0.5
|
|
112
|
+
coverage>=4.2
|
|
113
|
+
coverage
|
|
114
|
+
flake8>=3.0.4
|
|
115
|
+
flufl.flake8
|
|
116
|
+
jaraco.classes
|
|
117
|
+
jaraco.test>=5.4
|
|
118
|
+
keyring>=20
|
|
119
|
+
packaging
|
|
120
|
+
portend
|
|
121
|
+
pycryptodome
|
|
122
|
+
pycryptodomex
|
|
123
|
+
pyfakefs
|
|
124
|
+
pytest!=8.1.*,>=6
|
|
125
|
+
pytest>=4.5.0
|
|
126
|
+
pytest-checkdocs>=2.4
|
|
127
|
+
pytest-cov
|
|
128
|
+
pytest-cov>=2.7.1
|
|
129
|
+
pytest-enabler>=2.2
|
|
130
|
+
pytest-mypy
|
|
131
|
+
pytest-perf>=0.9.2
|
|
132
|
+
pytest-runner>=5.1
|
|
133
|
+
pytest-virtualenv>=1.7.0
|
|
134
|
+
virtualenv>=15.0.3
|
|
135
|
+
|
|
136
|
+
[:extra == "testing"]
|
|
137
|
+
pytest>=6
|
|
138
|
+
pytest-checkdocs>=2.4
|
|
139
|
+
pytest-cov
|
|
140
|
+
pytest-enabler>=2.2
|
|
141
|
+
pytest-mypy
|
|
142
|
+
pytest-ruff>=0.2.1
|
|
143
|
+
|
|
144
|
+
[:extra == "type"]
|
|
145
|
+
pygobject-stubs
|
|
146
|
+
pytest-mypy
|
|
147
|
+
shtab
|
|
148
|
+
types-pywin32
|
|
149
|
+
|
|
150
|
+
[:extra == "use-chardet-on-py3"]
|
|
151
|
+
chardet<6,>=3.0.2
|
|
152
|
+
|
|
153
|
+
[:platform_python_implementation == "PyPy"]
|
|
154
|
+
cffi>=1.11
|
|
155
|
+
|
|
156
|
+
[:platform_system == "Windows"]
|
|
157
|
+
colorama
|
|
158
|
+
|
|
159
|
+
[:python_version < "3.0" and extra == "test"]
|
|
160
|
+
ipaddress
|
|
161
|
+
mock
|
|
162
|
+
|
|
163
|
+
[:python_version < "3.12"]
|
|
164
|
+
backports.tarfile
|
|
165
|
+
importlib-metadata>=4.11.4
|
|
166
|
+
|
|
167
|
+
[:python_version < "3.8"]
|
|
168
|
+
typing-extensions>=3.6.4
|
|
169
|
+
|
|
170
|
+
[:python_version < "3.9"]
|
|
171
|
+
importlib-resources
|
|
172
|
+
|
|
173
|
+
[:python_version < "3.9" and extra == "test"]
|
|
174
|
+
importlib-resources>=1.3
|
|
175
|
+
|
|
176
|
+
[:python_version <= "3.4" and extra == "test"]
|
|
177
|
+
enum34
|
|
178
|
+
|
|
179
|
+
[:python_version == "2.7" and extra == "test"]
|
|
180
|
+
gdata
|
|
181
|
+
python-keyczar
|
|
182
|
+
|
|
183
|
+
[:sys_platform != "cygwin" and extra == "check"]
|
|
184
|
+
pytest-ruff>=0.2.1
|
|
185
|
+
|
|
186
|
+
[:sys_platform != "cygwin" and extra == "test"]
|
|
187
|
+
pytest-ruff>=0.2.1
|
|
188
|
+
|
|
189
|
+
[:sys_platform == "linux"]
|
|
190
|
+
SecretStorage>=3.2
|
|
191
|
+
jeepney>=0.4.2
|
|
192
|
+
|
|
193
|
+
[:sys_platform == "win32"]
|
|
194
|
+
pywin32-ctypes>=0.2.0
|
|
195
|
+
|
|
196
|
+
[:sys_platform == "win32" and extra == "test"]
|
|
197
|
+
pywin32
|
|
198
|
+
wmi
|
|
199
|
+
|
|
200
|
+
[allure]
|
|
201
|
+
allure-python-commons
|
|
202
|
+
|
|
203
|
+
[conan]
|
|
204
|
+
conan>=2.0
|
|
205
|
+
|
|
206
|
+
[dev]
|
|
207
|
+
check-manifest
|
|
208
|
+
|
|
209
|
+
[doc]
|
|
210
|
+
sphinx-click
|
|
211
|
+
sphinx-rtd-theme
|
|
212
|
+
|
|
213
|
+
[test]
|
|
214
|
+
coverage
|
jolt-0.9.392/jolt/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.9.392"
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
MarkupSafe
|
|
2
|
-
SecretStorage
|
|
3
|
-
backports.tarfile==1.2.0
|
|
4
|
-
bz2file==0.98
|
|
5
|
-
certifi==2024.8.30
|
|
6
|
-
cffi==1.17.1
|
|
7
|
-
charset-normalizer==3.3.2
|
|
8
|
-
click==8.1.7
|
|
9
|
-
colorama==0.4.6
|
|
10
|
-
fasteners==0.19
|
|
11
|
-
grpcio==1.66.1
|
|
12
|
-
idna==3.10
|
|
13
|
-
importlib-metadata==8.5.0
|
|
14
|
-
importlib_metadata
|
|
15
|
-
jaraco.classes==3.4.0
|
|
16
|
-
jaraco.context==6.0.1
|
|
17
|
-
jaraco.functools==4.0.2
|
|
18
|
-
jeepney==0.8.0
|
|
19
|
-
jinja2==3.1.4
|
|
20
|
-
keyring==25.4.1
|
|
21
|
-
keyrings.alt==5.0.2
|
|
22
|
-
lxml==5.3.0
|
|
23
|
-
more-itertools==10.5.0
|
|
24
|
-
multi_key_dict
|
|
25
|
-
ninja==1.11.1.1
|
|
26
|
-
protobuf==5.28.2
|
|
27
|
-
psutil==6.0.0
|
|
28
|
-
pycparser==2.22
|
|
29
|
-
pygit2==1.15.1
|
|
30
|
-
requests==2.32.3
|
|
31
|
-
tqdm==4.66.5
|
|
32
|
-
urllib3==1.26.20
|
|
33
|
-
zipp==3.20.2
|
|
34
|
-
zstandard==0.23.0
|
|
35
|
-
|
|
36
|
-
[allure]
|
|
37
|
-
allure-python-commons
|
|
38
|
-
|
|
39
|
-
[conan]
|
|
40
|
-
conan>=2.0
|
|
41
|
-
|
|
42
|
-
[dev]
|
|
43
|
-
check-manifest
|
|
44
|
-
|
|
45
|
-
[doc]
|
|
46
|
-
sphinx-click
|
|
47
|
-
sphinx-rtd-theme
|
|
48
|
-
|
|
49
|
-
[test]
|
|
50
|
-
coverage
|
|
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
|