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.
Files changed (97) hide show
  1. {jolt-0.9.349 → jolt-0.9.352}/PKG-INFO +1 -1
  2. {jolt-0.9.349 → jolt-0.9.352}/jolt/graph.py +27 -12
  3. {jolt-0.9.349 → jolt-0.9.352}/jolt/tasks.py +43 -0
  4. jolt-0.9.352/jolt/version.py +1 -0
  5. {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/PKG-INFO +1 -1
  6. jolt-0.9.349/jolt/version.py +0 -1
  7. {jolt-0.9.349 → jolt-0.9.352}/README.rst +0 -0
  8. {jolt-0.9.349 → jolt-0.9.352}/jolt/__init__.py +0 -0
  9. {jolt-0.9.349 → jolt-0.9.352}/jolt/__main__.py +0 -0
  10. {jolt-0.9.349 → jolt-0.9.352}/jolt/bin/fstree-darwin-x86_64 +0 -0
  11. {jolt-0.9.349 → jolt-0.9.352}/jolt/bin/fstree-linux-x86_64 +0 -0
  12. {jolt-0.9.349 → jolt-0.9.352}/jolt/cache.py +0 -0
  13. {jolt-0.9.349 → jolt-0.9.352}/jolt/chroot.py +0 -0
  14. {jolt-0.9.349 → jolt-0.9.352}/jolt/cli.py +0 -0
  15. {jolt-0.9.349 → jolt-0.9.352}/jolt/colors.py +0 -0
  16. {jolt-0.9.349 → jolt-0.9.352}/jolt/common_pb2.py +0 -0
  17. {jolt-0.9.349 → jolt-0.9.352}/jolt/common_pb2_grpc.py +0 -0
  18. {jolt-0.9.349 → jolt-0.9.352}/jolt/config.py +0 -0
  19. {jolt-0.9.349 → jolt-0.9.352}/jolt/error.py +0 -0
  20. {jolt-0.9.349 → jolt-0.9.352}/jolt/expires.py +0 -0
  21. {jolt-0.9.349 → jolt-0.9.352}/jolt/filesystem.py +0 -0
  22. {jolt-0.9.349 → jolt-0.9.352}/jolt/hooks.py +0 -0
  23. {jolt-0.9.349 → jolt-0.9.352}/jolt/influence.py +0 -0
  24. {jolt-0.9.349 → jolt-0.9.352}/jolt/inspection.py +0 -0
  25. {jolt-0.9.349 → jolt-0.9.352}/jolt/loader.py +0 -0
  26. {jolt-0.9.349 → jolt-0.9.352}/jolt/log.py +0 -0
  27. {jolt-0.9.349 → jolt-0.9.352}/jolt/manifest.py +0 -0
  28. {jolt-0.9.349 → jolt-0.9.352}/jolt/options.py +0 -0
  29. {jolt-0.9.349 → jolt-0.9.352}/jolt/pkgs/__init__.py +0 -0
  30. {jolt-0.9.349 → jolt-0.9.352}/jolt/pkgs/golang.py +0 -0
  31. {jolt-0.9.349 → jolt-0.9.352}/jolt/pkgs/nodejs.py +0 -0
  32. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/__init__.py +0 -0
  33. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/alias.py +0 -0
  34. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/allure.py +0 -0
  35. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/autoweight.py +0 -0
  36. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cache.py +0 -0
  37. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cmake.py +0 -0
  38. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/conan.py +0 -0
  39. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cxx.py +0 -0
  40. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/cxxinfo.py +0 -0
  41. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/dashboard.py +0 -0
  42. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/debian.py +0 -0
  43. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/docker.py +0 -0
  44. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/email.py +0 -0
  45. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/email.xslt +0 -0
  46. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/environ.py +0 -0
  47. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/gdb.py +0 -0
  48. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/gerrit.py +0 -0
  49. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/git.py +0 -0
  50. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/golang.py +0 -0
  51. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/googletest.py +0 -0
  52. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/http.py +0 -0
  53. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/junit.py +0 -0
  54. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/logstash.py +0 -0
  55. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/ninja-compdb.py +0 -0
  56. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/ninja.py +0 -0
  57. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/nodejs.py +0 -0
  58. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/paths.py +0 -0
  59. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/podman.py +0 -0
  60. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/python.py +0 -0
  61. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/__init__.py +0 -0
  62. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/administration_pb2.py +0 -0
  63. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/administration_pb2_grpc.py +0 -0
  64. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/log_pb2.py +0 -0
  65. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/log_pb2_grpc.py +0 -0
  66. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/scheduler_pb2.py +0 -0
  67. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/scheduler_pb2_grpc.py +0 -0
  68. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/worker_pb2.py +0 -0
  69. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/remote_execution/worker_pb2_grpc.py +0 -0
  70. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/repo.py +0 -0
  71. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/report.py +0 -0
  72. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/scheduler.py +0 -0
  73. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/selfdeploy.py +0 -0
  74. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/strings.py +0 -0
  75. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/symlinks.py +0 -0
  76. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/telemetry.py +0 -0
  77. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/timeline.py +0 -0
  78. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/volume.py +0 -0
  79. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/yaml-ninja.py +0 -0
  80. {jolt-0.9.349 → jolt-0.9.352}/jolt/plugins/yamltask.py +0 -0
  81. {jolt-0.9.349 → jolt-0.9.352}/jolt/scheduler.py +0 -0
  82. {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/cxxexecutable.cmake.template +0 -0
  83. {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/cxxlibrary.cmake.template +0 -0
  84. {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/export.sh.template +0 -0
  85. {jolt-0.9.349 → jolt-0.9.352}/jolt/templates/timeline.html.template +0 -0
  86. {jolt-0.9.349 → jolt-0.9.352}/jolt/timer.py +0 -0
  87. {jolt-0.9.349 → jolt-0.9.352}/jolt/tools.py +0 -0
  88. {jolt-0.9.349 → jolt-0.9.352}/jolt/utils.py +0 -0
  89. {jolt-0.9.349 → jolt-0.9.352}/jolt/version_utils.py +0 -0
  90. {jolt-0.9.349 → jolt-0.9.352}/jolt/xmldom.py +0 -0
  91. {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/SOURCES.txt +0 -0
  92. {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/dependency_links.txt +0 -0
  93. {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/entry_points.txt +0 -0
  94. {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/requires.txt +0 -0
  95. {jolt-0.9.349 → jolt-0.9.352}/jolt.egg-info/top_level.txt +0 -0
  96. {jolt-0.9.349 → jolt-0.9.352}/setup.cfg +0 -0
  97. {jolt-0.9.349 → jolt-0.9.352}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jolt
3
- Version: 0.9.349
3
+ Version: 0.9.352
4
4
  Summary: A task executor
5
5
  Home-page: https://github.com/srand/jolt
6
6
  Author: Robert Andersson
@@ -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
- if session_only:
342
- artifacts = list(filter(lambda a: a.is_session(), artifacts))
343
- if persistent_only:
344
- artifacts = list(filter(lambda a: not a.is_session(), artifacts))
345
- if not artifacts:
346
- return True
347
- return all([self.cache.download(artifact, force=force) for artifact in artifacts])
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: (dag.are_neighbors(self, n) or n.is_workspace_resource()) or (not n.is_alias() and not n.is_resource()),
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() and not child.is_workspace_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 + resource_deps_ws):
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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jolt
3
- Version: 0.9.349
3
+ Version: 0.9.352
4
4
  Summary: A task executor
5
5
  Home-page: https://github.com/srand/jolt
6
6
  Author: Robert Andersson
@@ -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