jolt 0.9.349__tar.gz → 0.9.352__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.349 → jolt-0.9.352}/PKG-INFO +1 -1
- {jolt-0.9.349 → jolt-0.9.352}/jolt/graph.py +27 -12
- {jolt-0.9.349 → jolt-0.9.352}/jolt/tasks.py +43 -0
- jolt-0.9.352/jolt/version.py +1 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/PKG-INFO +1 -1
- jolt-0.9.349/jolt/version.py +0 -1
- {jolt-0.9.349 → jolt-0.9.352}/README.rst +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/__init__.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/__main__.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/bin/fstree-darwin-x86_64 +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/bin/fstree-linux-x86_64 +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/cache.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/chroot.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/cli.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/colors.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/common_pb2.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/common_pb2_grpc.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/config.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/error.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/expires.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/filesystem.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/hooks.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/influence.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/inspection.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/loader.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/log.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/manifest.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/options.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/pkgs/__init__.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/pkgs/golang.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/pkgs/nodejs.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/__init__.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/alias.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/allure.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/autoweight.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cache.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cmake.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/conan.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cxx.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cxxinfo.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/dashboard.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/debian.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/docker.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/email.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/email.xslt +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/environ.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/gdb.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/gerrit.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/git.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/golang.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/googletest.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/http.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/junit.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/logstash.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/ninja-compdb.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/ninja.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/nodejs.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/paths.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/podman.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/python.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/__init__.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/administration_pb2.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/administration_pb2_grpc.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/log_pb2.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/log_pb2_grpc.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/scheduler_pb2.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/scheduler_pb2_grpc.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/worker_pb2.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/worker_pb2_grpc.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/repo.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/report.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/scheduler.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/selfdeploy.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/strings.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/symlinks.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/telemetry.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/timeline.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/volume.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/yaml-ninja.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/yamltask.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/scheduler.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/cxxexecutable.cmake.template +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/cxxlibrary.cmake.template +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/export.sh.template +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/timeline.html.template +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/timer.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/tools.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/utils.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/version_utils.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt/xmldom.py +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/SOURCES.txt +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/dependency_links.txt +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/entry_points.txt +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/requires.txt +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/top_level.txt +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/setup.cfg +0 -0
- {jolt-0.9.349 → jolt-0.9.352}/setup.py +0 -0
|
@@ -216,7 +216,7 @@ class TaskProxy(object):
|
|
|
216
216
|
for c in self.children:
|
|
217
217
|
if c.is_resource() or c.is_alias():
|
|
218
218
|
continue
|
|
219
|
-
if not c.is_available_locally():
|
|
219
|
+
if not c.is_available_locally(persistent_only=True):
|
|
220
220
|
return False
|
|
221
221
|
return True
|
|
222
222
|
|
|
@@ -335,16 +335,32 @@ class TaskProxy(object):
|
|
|
335
335
|
self._download = False
|
|
336
336
|
|
|
337
337
|
def download(self, force=False, session_only=False, persistent_only=False):
|
|
338
|
+
"""
|
|
339
|
+
Downloads all artifacts of this task.
|
|
340
|
+
|
|
341
|
+
If the task is not downloadable, the method returns True. Failure to
|
|
342
|
+
download persistent artifacts is considered a failure, and the method
|
|
343
|
+
returns False. Session artifacts are not required to be downloaded.
|
|
344
|
+
|
|
345
|
+
:param force: Force download even if the artifacts are already available.
|
|
346
|
+
:param session_only: Download only session artifacts.
|
|
347
|
+
:param persistent_only: Download only persistent artifacts.
|
|
348
|
+
|
|
349
|
+
"""
|
|
338
350
|
if not force and not self.is_downloadable():
|
|
339
351
|
return True
|
|
352
|
+
success = True
|
|
340
353
|
artifacts = self._artifacts
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
354
|
+
artifacts_session = list(filter(lambda a: a.is_session(), artifacts))
|
|
355
|
+
artifacts_persistent = list(filter(lambda a: not a.is_session(), artifacts))
|
|
356
|
+
download_all = not session_only and not persistent_only
|
|
357
|
+
if session_only or download_all:
|
|
358
|
+
for artifact in artifacts_session:
|
|
359
|
+
if not self.cache.download(artifact, force=force):
|
|
360
|
+
self.warning("Failed to download session artifact: {}", artifact.identity)
|
|
361
|
+
if persistent_only or download_all:
|
|
362
|
+
success = all([self.cache.download(artifact, force=force) for artifact in artifacts_persistent])
|
|
363
|
+
return success
|
|
348
364
|
|
|
349
365
|
def upload(self, force=False, locked=False, session_only=False, persistent_only=False, artifacts=None):
|
|
350
366
|
artifacts = artifacts or self._artifacts
|
|
@@ -429,7 +445,7 @@ class TaskProxy(object):
|
|
|
429
445
|
# Exclude transitive alias and resources dependencies.
|
|
430
446
|
# Workspace resources are included as they may be required by its dependencies.
|
|
431
447
|
self.children = list(
|
|
432
|
-
filter(lambda n:
|
|
448
|
+
filter(lambda n: dag.are_neighbors(self, n) or (not n.is_alias() and not n.is_resource()),
|
|
433
449
|
utils.unique_list(self.children)))
|
|
434
450
|
|
|
435
451
|
# Prepare workspace resources for this task so that influence can be calculated
|
|
@@ -717,8 +733,7 @@ class TaskProxy(object):
|
|
|
717
733
|
log_prefix = False
|
|
718
734
|
|
|
719
735
|
# Collect list of resource dependencies
|
|
720
|
-
resource_deps = [child for child in self.children if child.is_resource()
|
|
721
|
-
resource_deps_ws = [child for child in self.children if child.is_workspace_resource()]
|
|
736
|
+
resource_deps = [child for child in self.children if child.is_resource()]
|
|
722
737
|
|
|
723
738
|
if self.options.worker:
|
|
724
739
|
# Exclude local resources when running as worker. They are already acquired by the client.
|
|
@@ -733,7 +748,7 @@ class TaskProxy(object):
|
|
|
733
748
|
acquired = []
|
|
734
749
|
try:
|
|
735
750
|
# Acquire resource dependencies in reverse order.
|
|
736
|
-
for resource in reversed(resource_deps
|
|
751
|
+
for resource in reversed(resource_deps):
|
|
737
752
|
with resource.lock_artifacts(discard=False) if not resource.is_workspace_resource() else nullcontext():
|
|
738
753
|
resource.deps = self.cache.get_context(resource)
|
|
739
754
|
exitstack.enter_context(resource.deps)
|
|
@@ -20,6 +20,7 @@ import traceback
|
|
|
20
20
|
from jolt import filesystem as fs
|
|
21
21
|
from jolt import log
|
|
22
22
|
from jolt import utils
|
|
23
|
+
from jolt.cache import ArtifactAttributeSetProvider
|
|
23
24
|
from jolt.error import raise_error_if, raise_task_error, raise_task_error_if
|
|
24
25
|
from jolt.error import raise_unreported_task_error_if
|
|
25
26
|
from jolt.error import JoltError, JoltCommandError, LoggedJoltError
|
|
@@ -3394,3 +3395,45 @@ class Test(Task):
|
|
|
3394
3395
|
"{} tests out of {} were successful".format(
|
|
3395
3396
|
len(self.testresult.successes),
|
|
3396
3397
|
self.testresult.testsRun))
|
|
3398
|
+
|
|
3399
|
+
|
|
3400
|
+
@ArtifactAttributeSetProvider.Register
|
|
3401
|
+
class WorkspaceResourceAttributeSetProvider(ArtifactAttributeSetProvider):
|
|
3402
|
+
def create(self, artifact):
|
|
3403
|
+
pass
|
|
3404
|
+
|
|
3405
|
+
def parse(self, artifact, content):
|
|
3406
|
+
pass
|
|
3407
|
+
|
|
3408
|
+
def format(self, artifact, content):
|
|
3409
|
+
pass
|
|
3410
|
+
|
|
3411
|
+
def apply(self, task, artifact):
|
|
3412
|
+
resource = artifact.task
|
|
3413
|
+
node = artifact.get_node()
|
|
3414
|
+
if not node.is_workspace_resource():
|
|
3415
|
+
return
|
|
3416
|
+
|
|
3417
|
+
resource.deps = node.cache.get_context(node)
|
|
3418
|
+
resource.deps.__enter__()
|
|
3419
|
+
|
|
3420
|
+
try:
|
|
3421
|
+
resource.acquire(artifact=artifact, deps=resource.deps, tools=resource.tools, owner=task)
|
|
3422
|
+
except (KeyboardInterrupt, Exception) as e:
|
|
3423
|
+
if resource.release_on_error:
|
|
3424
|
+
with utils.ignore_exception():
|
|
3425
|
+
self.unapply(task, artifact)
|
|
3426
|
+
raise e
|
|
3427
|
+
|
|
3428
|
+
def unapply(self, task, artifact):
|
|
3429
|
+
resource = artifact.task
|
|
3430
|
+
node = artifact.get_node()
|
|
3431
|
+
if not node.is_workspace_resource():
|
|
3432
|
+
return
|
|
3433
|
+
|
|
3434
|
+
try:
|
|
3435
|
+
resource.release(artifact=artifact, deps=resource.deps, tools=resource.tools, owner=task)
|
|
3436
|
+
except Exception as e:
|
|
3437
|
+
raise e
|
|
3438
|
+
|
|
3439
|
+
resource.deps.__exit__(None, None, None)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.9.352"
|
jolt-0.9.349/jolt/version.py
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.9.349"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|