jolt 0.9.392__py3-none-any.whl → 0.9.404__py3-none-any.whl

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/influence.py CHANGED
@@ -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 config.get_cachedir()
318
+ return jolt_config.get_cachedir()
254
319
 
255
320
 
256
321
  @HashInfluenceRegistry.Register
jolt/plugins/git.py CHANGED
@@ -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.tools.run("git fetch origin", output_on_error=True)
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)
jolt/plugins/linux.py CHANGED
@@ -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 """
jolt/plugins/podman.py CHANGED
@@ -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
- dist = pkg_resources.working_set.by_key.get(req)
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.name not in pkgs:
115
- reqs.append(dep.name)
118
+ for dep in dist.requires or []:
119
+ if dep not in pkgs:
120
+ reqs.append(dep)
116
121
 
117
- pkgs[req] = f"{dist.project_name}=={dist.version}"
122
+ pkgs[req] = f"{dist.name}=={dist.version}"
118
123
 
119
124
  try:
120
125
  del pkgs["jolt"]
jolt/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.9.392"
1
+ __version__ = "0.9.404"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jolt
3
- Version: 0.9.392
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: MarkupSafe
25
- Requires-Dist: SecretStorage
26
- Requires-Dist: backports.tarfile==1.2.0
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==2024.8.30
29
- Requires-Dist: cffi==1.17.1
30
- Requires-Dist: charset-normalizer==3.3.2
31
- Requires-Dist: click==8.1.7
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: grpcio==1.66.1
35
- Requires-Dist: idna==3.10
36
- Requires-Dist: importlib-metadata==8.5.0
37
- Requires-Dist: importlib_metadata
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: jeepney==0.8.0
42
- Requires-Dist: jinja2==3.1.4
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: pycparser==2.22
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: urllib3==1.26.20
56
- Requires-Dist: zipp==3.20.2
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"
@@ -12,7 +12,7 @@ jolt/expires.py,sha256=GDagfgJOlX_z2LLIFhKHBaXI96jo1S3ca2OGWQi1oj4,2330
12
12
  jolt/filesystem.py,sha256=BytxYk6Xq0peuRB9gUZ7EDsvbgirfp4EcjPANNDIstQ,5916
13
13
  jolt/graph.py,sha256=7OCfz_Q00tV1ewGUKjwKIhk6nbfd0KemprFTs3n3XTQ,45978
14
14
  jolt/hooks.py,sha256=jcCaNwlyFrWkXrO6MiO_roDQVohefbablfXnuQ3dmmM,11029
15
- jolt/influence.py,sha256=c5Vdizk9kK-8O7cSU9LAHhh8xkvchudstBn7HLIr9hg,16937
15
+ jolt/influence.py,sha256=uqf8jdKDOLIt2LXgW6FX7Q74d94kebiTJ6nlgMs6-hg,18786
16
16
  jolt/inspection.py,sha256=QkOCXAbjJBdw1SMsb6xH_3GHXV5BcdzaGD7HrGmOJss,3931
17
17
  jolt/loader.py,sha256=-WpYcYDhdZBAncgtn9MPUMudOn2dr-nsWj9KEDKet-8,19152
18
18
  jolt/log.py,sha256=cqEfX__AWSA4onueTTdoL4HnovEtzT4yoRoyKQk2MH8,14592
@@ -23,7 +23,7 @@ jolt/tasks.py,sha256=fD-huf0h0xN5x3MjClaZMRDPuhjwHeF3SBnqXXlHjtM,115888
23
23
  jolt/timer.py,sha256=PE-7vmsqZpF73e_cKSsrhd36-A7fJ9_XGYI_oBWJn5w,644
24
24
  jolt/tools.py,sha256=A9mbyZkp4NH9Xkroz5KKhsvn8jIqnvnogVaI4VbgM20,80171
25
25
  jolt/utils.py,sha256=bbp5mMhQRdq7sHDAxaqVVgD4QGGWXcwMCyIgG8LvyoA,19133
26
- jolt/version.py,sha256=sk8L-ugb_KBT7lDDr4VTCyuxfBzDlZfQ-zzckWweQmI,24
26
+ jolt/version.py,sha256=l32M_D066-fZJ9087fsj8fKEiXRWzLAQFXJk_XiSNlE,24
27
27
  jolt/version_utils.py,sha256=tNCGT6ZmSGFHW1aw2Hx1l19m-RR1UnTN6xJV1I54KRw,3900
28
28
  jolt/xmldom.py,sha256=SbygiDUMYczzWGxXa60ZguWS6Nztg8gDAirdbtjT15I,5982
29
29
  jolt/bin/fstree-darwin-x86_64,sha256=i4Ppbdr7CxsEhJzWpy3GMB5Gn5ikmskh41MyUwQS3-o,29549000
@@ -47,22 +47,22 @@ jolt/plugins/email.xslt,sha256=3vrrfnG-KH_cfJq6RDOXHKQxKd-6s28qy4znapGaciM,8513
47
47
  jolt/plugins/environ.py,sha256=k382rvEKWj-nlibJcCUWcYtYheU8p9df9ZY0DAAkjDE,3561
48
48
  jolt/plugins/gdb.py,sha256=gg-H_IQvRRPDZpk-djdIU7j3PO8CDINCSxWOemD2fA8,6288
49
49
  jolt/plugins/gerrit.py,sha256=tc8NeIDAg3mZJINU5aZg1fs3YsaVxM_MvkHa149aAIs,768
50
- jolt/plugins/git.py,sha256=AiPzYl0eqPcrd1bw8il42cUUrBLcCQIAG4f54wSVhyQ,21204
50
+ jolt/plugins/git.py,sha256=PJhOp0uWKMylJoNqHGm7NRqIAU20kv9fc2ZnfvSTqjo,21571
51
51
  jolt/plugins/golang.py,sha256=vV4iRoJpWkyfrBa96s6jgU8Sz8GnGl-lzG_FSj5epzQ,2049
52
52
  jolt/plugins/googletest.py,sha256=9aV_T21JY84YgeSiaV4ppZhVs1XFt19m3pPrJW2iGfI,18708
53
53
  jolt/plugins/http.py,sha256=HwuABHR2tuWm_jBdQpCO3AMkjFdwOzUfEi26X-2v_y8,3816
54
54
  jolt/plugins/junit.py,sha256=_1vXMEQBNuLbwc8l4UFm1iONYdehxJxWDRgFtPy3do8,1342
55
- jolt/plugins/linux.py,sha256=GfytBgIFcWjKDZ1ozTqksboQi80FHJHtmhJQ8QGSdzE,30363
55
+ jolt/plugins/linux.py,sha256=XuJwr5UFW3_JbitXpZ3A6G_hKRLZ_uTG7-ph01kq6_M,31807
56
56
  jolt/plugins/logstash.py,sha256=ShUdqSRyQL_ATlgHwLP-uI1mJXprs15knyWbk58nMFo,1847
57
57
  jolt/plugins/ninja-compdb.py,sha256=Otxz-nQnJx-aAPuAf8-T0AOi_34ENHGb5gypGVVGFB0,10989
58
58
  jolt/plugins/ninja.py,sha256=7ToQS3Pl81R2qoSRvGvWlkITONjOwV2wRklrB64wURQ,102787
59
59
  jolt/plugins/nodejs.py,sha256=HHDbvmdlqnao3qOtpCD9UY7iyTIX4gb2WxKUBtn-3cM,1879
60
60
  jolt/plugins/paths.py,sha256=DgiPI5K5bV3lVuyNEMIjRO26iTwf6RL5-2WPQ3rSmj8,1920
61
- jolt/plugins/podman.py,sha256=vxcR9-X4MtMLrejgwZCH80TAS7SujFVx5NeTXCHqoGk,21975
61
+ jolt/plugins/podman.py,sha256=7xrPWaJvSzsBSsEUaCwBfVtMfzx5pLUrZB7pxf8hLzs,22487
62
62
  jolt/plugins/python.py,sha256=kLx1Y3ezMH9AOW36DH_cNyDlvbIdTkyvPjwLYolnCEU,3073
63
63
  jolt/plugins/report.py,sha256=EiPuZSoxEM-fXDsHBQuRTf1xtvN_gPBodMej3E9CGx0,2695
64
64
  jolt/plugins/scheduler.py,sha256=SJdRb0taOF4zhKkPfc9zg8UyvDn7rJYtbyMPC93XXsk,24560
65
- jolt/plugins/selfdeploy.py,sha256=Mpjxr3O4xqHiBf1wN-fXRp0slfvbH1usSGcthaLO6_c,6508
65
+ jolt/plugins/selfdeploy.py,sha256=Dm-iTsdx6CtKIEul8s50A59i8OXc42UPrSmfyTSh-7M,6656
66
66
  jolt/plugins/strings.py,sha256=sHDroW0srlQI1aRwu_WANkmR35sUxPvZGO28CYo-ClY,1783
67
67
  jolt/plugins/symlinks.py,sha256=u4lTcpkepf0_mr_RI85uiSkI_WAUGebAOsbH5WlAnzo,2399
68
68
  jolt/plugins/telemetry.py,sha256=xHgJVbSVRaPy67kblL4wj86mDESlFS1z3NGDJ2uDXZ8,3572
@@ -85,8 +85,8 @@ jolt/templates/cxxexecutable.cmake.template,sha256=f0dg1VOFlamlF8fuHFTki5dsJ2ssS
85
85
  jolt/templates/cxxlibrary.cmake.template,sha256=GMEG2G3QoY3E5fsNer52zOqgM221-abeCkV__mVbZ94,1750
86
86
  jolt/templates/export.sh.template,sha256=PKkflGXFbq70EIsowqcnLvzbnEDnqh_WgC4E_JNT0VE,1937
87
87
  jolt/templates/timeline.html.template,sha256=xdqvFBmhE8XRQaWgcIFBVbd__9HdRq6O-U0o276PyjU,1222
88
- jolt-0.9.392.dist-info/METADATA,sha256=kTc_CmciBlOKv1Vs_3bgBBuwCB9VEIsOB09_cSuP7aM,5763
89
- jolt-0.9.392.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
90
- jolt-0.9.392.dist-info/entry_points.txt,sha256=VZ-QH38Z9HJc1O57wfzr-soHn6exwc3N0TSrRum4tYg,44
91
- jolt-0.9.392.dist-info/top_level.txt,sha256=HwzVmAwUrvCUUHRi3zUfcpdKTsdNrZmPCvsrsWSFyqE,5
92
- jolt-0.9.392.dist-info/RECORD,,
88
+ jolt-0.9.404.dist-info/METADATA,sha256=2Yyxc9HR0RGreDcmQnVCAbF7W7sepIu-dLRsYnIAgDA,10284
89
+ jolt-0.9.404.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
90
+ jolt-0.9.404.dist-info/entry_points.txt,sha256=VZ-QH38Z9HJc1O57wfzr-soHn6exwc3N0TSrRum4tYg,44
91
+ jolt-0.9.404.dist-info/top_level.txt,sha256=HwzVmAwUrvCUUHRi3zUfcpdKTsdNrZmPCvsrsWSFyqE,5
92
+ jolt-0.9.404.dist-info/RECORD,,
File without changes