jolt 0.9.439__tar.gz → 0.9.444__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 (213) hide show
  1. {jolt-0.9.439 → jolt-0.9.444}/PKG-INFO +2 -1
  2. {jolt-0.9.439 → jolt-0.9.444}/jolt/graph.py +3 -3
  3. {jolt-0.9.439 → jolt-0.9.444}/jolt/influence.py +8 -9
  4. {jolt-0.9.439 → jolt-0.9.444}/jolt/loader.py +1 -1
  5. jolt-0.9.444/jolt/pkgs/blake3.py +15 -0
  6. jolt-0.9.444/jolt/pkgs/brotli.py +20 -0
  7. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/curl.py +8 -1
  8. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/grpc.py +0 -4
  9. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/poco.py +1 -0
  10. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/protobuf.py +1 -0
  11. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/allure.py +6 -6
  12. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/ninja.py +2 -2
  13. {jolt-0.9.439 → jolt-0.9.444}/jolt/tasks.py +12 -12
  14. {jolt-0.9.439 → jolt-0.9.444}/jolt/tools.py +15 -10
  15. {jolt-0.9.439 → jolt-0.9.444}/jolt/utils.py +23 -9
  16. jolt-0.9.444/jolt/version.py +1 -0
  17. {jolt-0.9.439 → jolt-0.9.444}/jolt.egg-info/PKG-INFO +2 -1
  18. {jolt-0.9.439 → jolt-0.9.444}/jolt.egg-info/SOURCES.txt +2 -0
  19. {jolt-0.9.439 → jolt-0.9.444}/jolt.egg-info/requires.txt +1 -0
  20. {jolt-0.9.439 → jolt-0.9.444}/setup.py +1 -0
  21. jolt-0.9.439/jolt/version.py +0 -1
  22. {jolt-0.9.439 → jolt-0.9.444}/README.rst +0 -0
  23. {jolt-0.9.439 → jolt-0.9.444}/jolt/__init__.py +0 -0
  24. {jolt-0.9.439 → jolt-0.9.444}/jolt/__main__.py +0 -0
  25. {jolt-0.9.439 → jolt-0.9.444}/jolt/bin/fstree-darwin-x86_64 +0 -0
  26. {jolt-0.9.439 → jolt-0.9.444}/jolt/bin/fstree-linux-x86_64 +0 -0
  27. {jolt-0.9.439 → jolt-0.9.444}/jolt/cache.py +0 -0
  28. {jolt-0.9.439 → jolt-0.9.444}/jolt/chroot.py +0 -0
  29. {jolt-0.9.439 → jolt-0.9.444}/jolt/cli.py +0 -0
  30. {jolt-0.9.439 → jolt-0.9.444}/jolt/colors.py +0 -0
  31. {jolt-0.9.439 → jolt-0.9.444}/jolt/common_pb2.py +0 -0
  32. {jolt-0.9.439 → jolt-0.9.444}/jolt/common_pb2_grpc.py +0 -0
  33. {jolt-0.9.439 → jolt-0.9.444}/jolt/config.py +0 -0
  34. {jolt-0.9.439 → jolt-0.9.444}/jolt/error.py +0 -0
  35. {jolt-0.9.439 → jolt-0.9.444}/jolt/expires.py +0 -0
  36. {jolt-0.9.439 → jolt-0.9.444}/jolt/filesystem.py +0 -0
  37. {jolt-0.9.439 → jolt-0.9.444}/jolt/hooks.py +0 -0
  38. {jolt-0.9.439 → jolt-0.9.444}/jolt/inspection.py +0 -0
  39. {jolt-0.9.439 → jolt-0.9.444}/jolt/log.py +0 -0
  40. {jolt-0.9.439 → jolt-0.9.444}/jolt/manifest.py +0 -0
  41. {jolt-0.9.439 → jolt-0.9.444}/jolt/options.py +0 -0
  42. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/__init__.py +0 -0
  43. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/abseil.py +0 -0
  44. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/asio.py +0 -0
  45. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/autoconf.py +0 -0
  46. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/automake.py +0 -0
  47. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/b2.py +0 -0
  48. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/boost.py +0 -0
  49. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/boringssl.py +0 -0
  50. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/busybox.py +0 -0
  51. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/bzip2.py +0 -0
  52. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/cares.py +0 -0
  53. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/catch2.py +0 -0
  54. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/cbindgen.py +0 -0
  55. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/cista.py +0 -0
  56. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/clang.py +0 -0
  57. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/cli11.py +0 -0
  58. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/cmake.py +0 -0
  59. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/cpython.py +0 -0
  60. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/crun.py +0 -0
  61. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/dbus.py +0 -0
  62. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/double_conversion.py +0 -0
  63. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/fastfloat.py +0 -0
  64. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/ffmpeg.py +0 -0
  65. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/flatbuffers.py +0 -0
  66. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/fmt.py +0 -0
  67. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/fstree.py +0 -0
  68. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/gflags.py +0 -0
  69. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/glib.py +0 -0
  70. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/glog.py +0 -0
  71. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/glslang.py +0 -0
  72. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/golang.py +0 -0
  73. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/googlebenchmark.py +0 -0
  74. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/googletest.py +0 -0
  75. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/gperf.py +0 -0
  76. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/hdf5.py +0 -0
  77. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/help2man.py +0 -0
  78. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/inja.py +0 -0
  79. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/jsoncpp.py +0 -0
  80. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libarchive.py +0 -0
  81. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libcap.py +0 -0
  82. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libdrm.py +0 -0
  83. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libedit.py +0 -0
  84. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libevent.py +0 -0
  85. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libexpat.py +0 -0
  86. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libfastjson.py +0 -0
  87. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libffi.py +0 -0
  88. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libglvnd.py +0 -0
  89. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libogg.py +0 -0
  90. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libpciaccess.py +0 -0
  91. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libseccomp.py +0 -0
  92. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libtirpc.py +0 -0
  93. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libtool.py +0 -0
  94. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libunwind.py +0 -0
  95. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libva.py +0 -0
  96. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libvorbis.py +0 -0
  97. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libxml2.py +0 -0
  98. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libxslt.py +0 -0
  99. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/libyajl.py +0 -0
  100. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/llvm.py +0 -0
  101. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/lua.py +0 -0
  102. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/lz4.py +0 -0
  103. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/m4.py +0 -0
  104. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/make.py +0 -0
  105. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/mesa.py +0 -0
  106. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/meson.py +0 -0
  107. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/mstch.py +0 -0
  108. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/mysql.py +0 -0
  109. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/nasm.py +0 -0
  110. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/ncurses.py +0 -0
  111. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/ng_log.py +0 -0
  112. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/ninja.py +0 -0
  113. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/nlohmann_json.py +0 -0
  114. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/nodejs.py +0 -0
  115. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/opencv.py +0 -0
  116. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/openjdk.py +0 -0
  117. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/openssl.py +0 -0
  118. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/paho.py +0 -0
  119. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/patchelf.py +0 -0
  120. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/perl.py +0 -0
  121. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/pkgconfig.py +0 -0
  122. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/pugixml.py +0 -0
  123. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/python.py +0 -0
  124. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/qt.py +0 -0
  125. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/rapidjson.py +0 -0
  126. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/rapidyaml.py +0 -0
  127. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/re2.py +0 -0
  128. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/re2c.py +0 -0
  129. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/readline.py +0 -0
  130. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/rust.py +0 -0
  131. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/sdl.py +0 -0
  132. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/simdjson.py +0 -0
  133. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/soci.py +0 -0
  134. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/spdlog.py +0 -0
  135. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/spirv_llvm.py +0 -0
  136. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/spirv_tools.py +0 -0
  137. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/sqlite.py +0 -0
  138. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/ssl.py +0 -0
  139. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/texinfo.py +0 -0
  140. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/tomlplusplus.py +0 -0
  141. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/wayland.py +0 -0
  142. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/x11.py +0 -0
  143. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/xerces_c.py +0 -0
  144. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/xorg.py +0 -0
  145. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/xz.py +0 -0
  146. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/yamlcpp.py +0 -0
  147. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/zeromq.py +0 -0
  148. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/zlib.py +0 -0
  149. {jolt-0.9.439 → jolt-0.9.444}/jolt/pkgs/zstd.py +0 -0
  150. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/__init__.py +0 -0
  151. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/alias.py +0 -0
  152. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/autotools.py +0 -0
  153. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/autoweight.py +0 -0
  154. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/cache.py +0 -0
  155. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/cmake.py +0 -0
  156. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/conan.py +0 -0
  157. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/cxx.py +0 -0
  158. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/cxxinfo.py +0 -0
  159. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/dashboard.py +0 -0
  160. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/docker.py +0 -0
  161. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/email.py +0 -0
  162. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/email.xslt +0 -0
  163. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/environ.py +0 -0
  164. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/fetch.py +0 -0
  165. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/gdb.py +0 -0
  166. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/gerrit.py +0 -0
  167. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/git.py +0 -0
  168. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/golang.py +0 -0
  169. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/googletest.py +0 -0
  170. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/http.py +0 -0
  171. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/junit.py +0 -0
  172. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/libtool.py +0 -0
  173. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/linux.py +0 -0
  174. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/logstash.py +0 -0
  175. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/meson.py +0 -0
  176. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/ninja-compdb.py +0 -0
  177. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/nodejs.py +0 -0
  178. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/paths.py +0 -0
  179. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/pkgconfig.py +0 -0
  180. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/podman.py +0 -0
  181. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/python.py +0 -0
  182. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/__init__.py +0 -0
  183. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/administration_pb2.py +0 -0
  184. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/administration_pb2_grpc.py +0 -0
  185. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/log_pb2.py +0 -0
  186. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/log_pb2_grpc.py +0 -0
  187. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/scheduler_pb2.py +0 -0
  188. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/scheduler_pb2_grpc.py +0 -0
  189. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/worker_pb2.py +0 -0
  190. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/remote_execution/worker_pb2_grpc.py +0 -0
  191. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/report.py +0 -0
  192. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/rust.py +0 -0
  193. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/scheduler.py +0 -0
  194. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/selfdeploy.py +0 -0
  195. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/strings.py +0 -0
  196. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/symlinks.py +0 -0
  197. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/telemetry.py +0 -0
  198. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/timeline.py +0 -0
  199. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/volume.py +0 -0
  200. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/yaml-ninja.py +0 -0
  201. {jolt-0.9.439 → jolt-0.9.444}/jolt/plugins/yamltask.py +0 -0
  202. {jolt-0.9.439 → jolt-0.9.444}/jolt/scheduler.py +0 -0
  203. {jolt-0.9.439 → jolt-0.9.444}/jolt/templates/cxxexecutable.cmake.template +0 -0
  204. {jolt-0.9.439 → jolt-0.9.444}/jolt/templates/cxxlibrary.cmake.template +0 -0
  205. {jolt-0.9.439 → jolt-0.9.444}/jolt/templates/export.sh.template +0 -0
  206. {jolt-0.9.439 → jolt-0.9.444}/jolt/templates/timeline.html.template +0 -0
  207. {jolt-0.9.439 → jolt-0.9.444}/jolt/timer.py +0 -0
  208. {jolt-0.9.439 → jolt-0.9.444}/jolt/version_utils.py +0 -0
  209. {jolt-0.9.439 → jolt-0.9.444}/jolt/xmldom.py +0 -0
  210. {jolt-0.9.439 → jolt-0.9.444}/jolt.egg-info/dependency_links.txt +0 -0
  211. {jolt-0.9.439 → jolt-0.9.444}/jolt.egg-info/entry_points.txt +0 -0
  212. {jolt-0.9.439 → jolt-0.9.444}/jolt.egg-info/top_level.txt +0 -0
  213. {jolt-0.9.439 → jolt-0.9.444}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jolt
3
- Version: 0.9.439
3
+ Version: 0.9.444
4
4
  Summary: A task executor
5
5
  Home-page: https://github.com/srand/jolt
6
6
  Author: Robert Andersson
@@ -33,6 +33,7 @@ Requires-Dist: SecretStorage==3.3.3
33
33
  Requires-Dist: allure-python-commons==2.13.5
34
34
  Requires-Dist: attrs==24.2.0
35
35
  Requires-Dist: backports.tarfile==1.2.0
36
+ Requires-Dist: blake3==1.0.8
36
37
  Requires-Dist: bottle==0.12.25
37
38
  Requires-Dist: brotli==1.2.0
38
39
  Requires-Dist: bz2file==0.98
@@ -139,9 +139,9 @@ class TaskProxy(object):
139
139
  if c.is_workspace_resource():
140
140
  c.task.acquire_ws()
141
141
 
142
- sha = hashlib.sha1()
143
- HashInfluenceRegistry.get().apply_all(self.task, sha)
144
- self.task.identity = sha.hexdigest()
142
+ hash = utils.hashfn()
143
+ HashInfluenceRegistry.get().apply_all(self.task, hash)
144
+ self.task.identity = hash.hexdigest()
145
145
 
146
146
  return str(self.task.identity)
147
147
 
@@ -1,5 +1,4 @@
1
1
  import datetime
2
- import hashlib
3
2
  import os
4
3
  from pathlib import Path, PurePath
5
4
 
@@ -158,17 +157,17 @@ class TaskSourceInfluence(HashInfluenceProvider):
158
157
  else:
159
158
  funcs = []
160
159
 
161
- # Calculate sha1 sum for all functions
162
- shasum = hashlib.sha1()
160
+ # Calculate hash sum for all functions
161
+ sum = ""
163
162
  for func in funcs:
164
163
  try:
165
164
  func.__influence
166
165
  except AttributeError:
167
- func.__influence = utils.sha1(inspection.getfuncsource(func))
166
+ func.__influence = utils.hashstring(inspection.getfuncsource(func))
168
167
  finally:
169
- shasum.update(func.__influence.encode())
168
+ sum += func.__influence
170
169
 
171
- return shasum.hexdigest() + ": " + funcname
170
+ return utils.hashstring(sum) + ": " + funcname
172
171
 
173
172
 
174
173
  def source(name, obj=None):
@@ -271,7 +270,7 @@ class TaskClassSourceInfluence(HashInfluenceProvider):
271
270
  name = "Source"
272
271
 
273
272
  def get_influence(self, task):
274
- # Calculate sha1 sum for classes in hierarchy
273
+ # Calculate hash sum for classes in hierarchy
275
274
  result = ""
276
275
  for cls in reversed(task.__class__.mro()):
277
276
  if cls is object:
@@ -280,7 +279,7 @@ class TaskClassSourceInfluence(HashInfluenceProvider):
280
279
  cls.__dict__["_TaskClassSourceInfluence__influence"]
281
280
  except KeyError:
282
281
  try:
283
- cls.__influence = utils.sha1(inspection.getclasssource(cls))
282
+ cls.__influence = utils.hashstring(inspection.getclasssource(cls))
284
283
  except TypeError:
285
284
  continue
286
285
  result += cls.__dict__["_TaskClassSourceInfluence__influence"] + \
@@ -529,7 +528,7 @@ class FileInfluence(HashInfluenceProvider):
529
528
  self._files = {}
530
529
 
531
530
  def get_file_influence(self, path):
532
- return utils.filesha1(str(path))
531
+ return utils.hashfile(str(path))
533
532
 
534
533
  def get_filelist(self, task):
535
534
  try:
@@ -462,7 +462,7 @@ def export_workspace(tasks=None) -> common_pb.Workspace:
462
462
  with tools.cwd(loader.workspace_path):
463
463
  cwd = tools.getcwd()
464
464
  cachedir = config.get_cachedir()
465
- indexhash = utils.sha1(cwd)
465
+ indexhash = utils.hashstring(cwd)
466
466
  indexfile = tools.expand_path(
467
467
  "{cachedir}/indexes/{}/{}",
468
468
  indexhash[:2], indexhash[2:],
@@ -0,0 +1,15 @@
1
+ from jolt import attributes, Parameter
2
+ from jolt.plugins import cmake, git
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @cmake.requires()
8
+ class Blake3(cmake.CMake):
9
+ name = "blake3"
10
+ version = Parameter("1.8.3", help="blake3 version.")
11
+ requires_git = ["git:url=https://github.com/BLAKE3-team/BLAKE3.git,rev={version}"]
12
+ srcdir = "{git[BLAKE3]}/c"
13
+
14
+
15
+ TaskRegistry.get().add_task_class(Blake3)
@@ -0,0 +1,20 @@
1
+ from jolt import attributes, BooleanParameter, Parameter
2
+ from jolt.plugins import git, cmake
3
+ from jolt.tasks import TaskRegistry
4
+
5
+
6
+ @attributes.requires("requires_git")
7
+ @cmake.requires()
8
+ @cmake.use_ninja()
9
+ class Brotli(cmake.CMake):
10
+ name = "brotli"
11
+ version = Parameter("1.2.0", help="Brotli version.")
12
+ shared = BooleanParameter(False, help="Build shared libraries.")
13
+ requires_git = ["git:url=https://github.com/google/brotli.git,rev=v{version},submodules=true"]
14
+ srcdir = "{git[brotli]}"
15
+ options = [
16
+ "BUILD_SHARED_LIBS={shared[ON,OFF]}",
17
+ ]
18
+
19
+
20
+ TaskRegistry.get().add_task_class(Brotli)
@@ -1,11 +1,14 @@
1
1
  from jolt import attributes, BooleanParameter, Parameter
2
- from jolt.pkgs import cmake, ssl
2
+ from jolt.pkgs import brotli, ssl, zlib, zstd
3
3
  from jolt.plugins import git, cmake
4
4
  from jolt.tasks import TaskRegistry
5
5
 
6
6
 
7
+ @attributes.requires("requires_brotli")
7
8
  @attributes.requires("requires_git")
8
9
  @attributes.requires("requires_ssl")
10
+ @attributes.requires("requires_zlib")
11
+ @attributes.requires("requires_zstd")
9
12
  @attributes.system
10
13
  @cmake.requires()
11
14
  @cmake.use_ninja()
@@ -13,12 +16,16 @@ class Curl(cmake.CMake):
13
16
  name = "curl"
14
17
  version = Parameter("8.17.0", help="Curl version.")
15
18
  shared = BooleanParameter(False, help="Build shared libraries.")
19
+ requires_brotli = ["brotli"]
16
20
  requires_git = ["git:url=https://github.com/curl/curl.git,rev=curl-{_version_tag},submodules=true"]
17
21
  requires_ssl = ["virtual/ssl"]
22
+ requires_zlib = ["virtual/zlib"]
23
+ requires_zstd = ["zstd"]
18
24
  srcdir = "{git[curl]}"
19
25
  options = [
20
26
  "BUILD_SHARED_LIBS={shared[ON,OFF]}",
21
27
  "CURL_USE_LIBPSL=OFF",
28
+ "USE_LIBIDN2=OFF",
22
29
  ]
23
30
 
24
31
  @property
@@ -56,8 +56,6 @@ class GrpcC(Task):
56
56
  extends = "grpc"
57
57
 
58
58
  def publish(self, artifact, tools):
59
- if self.system == "windows":
60
- artifact.cxxinfo.msvcrt = "Dynamic"
61
59
  artifact.cxxinfo.libraries.append("grpc")
62
60
 
63
61
 
@@ -66,8 +64,6 @@ class GrpcCXX(Task):
66
64
  extends = "grpc"
67
65
 
68
66
  def publish(self, artifact, tools):
69
- if self.system == "windows":
70
- artifact.cxxinfo.msvcrt = "Dynamic"
71
67
  artifact.cxxinfo.libraries.append("grpc++")
72
68
 
73
69
 
@@ -7,6 +7,7 @@ import os
7
7
 
8
8
  @attributes.requires("requires_git")
9
9
  @attributes.requires("requires_ssl")
10
+ @attributes.system
10
11
  @cmake.requires()
11
12
  @cmake.use_ninja()
12
13
  class Poco(cmake.CMake):
@@ -6,6 +6,7 @@ from jolt.tasks import TaskRegistry
6
6
 
7
7
  @attributes.requires("requires_abseil")
8
8
  @attributes.requires("requires_git")
9
+ @attributes.system
9
10
  @cmake.requires()
10
11
  @cmake.use_ninja()
11
12
  class Protobuf(cmake.CMake):
@@ -40,7 +40,7 @@ class _ReporterTest(object):
40
40
 
41
41
  def attach(self, name, content, mime_type=None):
42
42
  with self._task.tools.cwd(self._outdirfull):
43
- logpath = utils.sha1(content) + "-" + name
43
+ logpath = utils.hashstring(content) + "-" + name
44
44
  self._task.tools.write_file(logpath, content, expand=False)
45
45
  self._result.attachments.append(
46
46
  Attachment(source=logpath, name=name, type=mime_type))
@@ -96,8 +96,8 @@ class Reporter(object):
96
96
  result.name = name
97
97
  result.start = time.time() * 1000
98
98
  result.fullName = self._task.__class__.__name__ + "." + name
99
- result.testCaseId = utils.sha1(result.fullName)
100
- result.historyId = utils.sha1(self._task.qualified_name + result.testCaseId)
99
+ result.testCaseId = utils.hashstring(result.fullName)
100
+ result.historyId = utils.hashstring(self._task.qualified_name + result.testCaseId)
101
101
  result.description = description
102
102
  result.labels.append(Label(name=LabelType.HOST, value=self._host))
103
103
  result.labels.append(Label(name=LabelType.THREAD, value=self._thread))
@@ -202,8 +202,8 @@ class AllureHooks(TaskHook):
202
202
  result.start = time.time() * 1000
203
203
  result.fullName = task.qualified_name
204
204
  result.description = task.task.__doc__
205
- result.testCaseId = utils.sha1(result.fullName)
206
- result.historyId = utils.sha1(task.qualified_name + result.testCaseId)
205
+ result.testCaseId = utils.hashstring(result.fullName)
206
+ result.historyId = utils.hashstring(task.qualified_name + result.testCaseId)
207
207
  result.labels.append(Label(name=LabelType.HOST, value=host_tag()))
208
208
  result.labels.append(Label(name=LabelType.THREAD, value=thread_tag()))
209
209
  result.labels.append(Label(name=LabelType.FRAMEWORK, value='jolt'))
@@ -217,7 +217,7 @@ class AllureHooks(TaskHook):
217
217
  with task.tools.cwd(self._logpath):
218
218
  content = task.allure_logsink_buffer.getvalue()
219
219
  if content:
220
- logpath = utils.sha1(content) + "-" + "log"
220
+ logpath = utils.hashstring(content) + "-" + "log"
221
221
  task.tools.write_file(logpath, content, expand=False)
222
222
  result.attachments.append(
223
223
  Attachment(source=logpath, name="log", type="text/plain"))
@@ -1281,7 +1281,7 @@ class FileListWriter(Rule):
1281
1281
 
1282
1282
  def _data(self, project, files):
1283
1283
  data = "\n".join(files)
1284
- return data, utils.sha1(data)
1284
+ return data, utils.hashstring(data)
1285
1285
 
1286
1286
  def build(self, project, writer, infiles, implicit=None, order_only=None):
1287
1287
  infiles = [fs.as_posix(infile) for infile in infiles] if self.posix else infiles
@@ -1320,7 +1320,7 @@ class GNUMRIWriter(FileListWriter):
1320
1320
  else:
1321
1321
  data += "addmod {}\n".format(infile)
1322
1322
  data += "save\nend\n"
1323
- return data, utils.sha1(data)
1323
+ return data, utils.hashstring(data)
1324
1324
 
1325
1325
  @utils.cached.instance
1326
1326
  def get_influence(self, task):
@@ -1977,26 +1977,26 @@ class SubTask(object):
1977
1977
 
1978
1978
  @functools.cached_property
1979
1979
  def identity(self):
1980
- sha = hashlib.sha1()
1980
+ hash = utils.hashfn()
1981
1981
  for ident in self._identity:
1982
- sha.update(ident.encode())
1982
+ hash.update(ident.encode())
1983
1983
  for output in self._outputs:
1984
- sha.update(output.encode())
1984
+ hash.update(output.encode())
1985
1985
  if self.message:
1986
- sha.update(self.message.encode())
1987
- return sha.hexdigest()
1986
+ hash.update(self.message.encode())
1987
+ return hash.hexdigest()
1988
1988
 
1989
1989
  @functools.cached_property
1990
1990
  def influence(self):
1991
- sha = hashlib.sha1()
1991
+ hash = utils.hashfn()
1992
1992
  for infl in self._influence:
1993
1993
  if callable(infl):
1994
- sha.update(infl().encode())
1994
+ hash.update(infl().encode())
1995
1995
  else:
1996
- sha.update(infl.encode())
1996
+ hash.update(infl.encode())
1997
1997
  for dep in self._deps:
1998
- sha.update(dep.influence.encode())
1999
- return sha.hexdigest()
1998
+ hash.update(dep.influence.encode())
1999
+ return hash.hexdigest()
2000
2000
 
2001
2001
  @functools.cached_property
2002
2002
  def is_outdated(self):
@@ -2049,7 +2049,7 @@ class SubTask(object):
2049
2049
 
2050
2050
  def add_influence_file(self, path):
2051
2051
  path = self._tools.expand_path(path)
2052
- self.add_influence(utils.filesha1(path))
2052
+ self.add_influence(utils.hashfile(path))
2053
2053
 
2054
2054
  def add_influence_depfile(self, path):
2055
2055
  def depfile():
@@ -2062,7 +2062,7 @@ class SubTask(object):
2062
2062
  for output in self.outputs:
2063
2063
  for input in deps.get(output, []):
2064
2064
  input = self._tools.expand_path(input)
2065
- result += utils.filesha1(input)
2065
+ result += utils.hashfile(input)
2066
2066
  return result
2067
2067
  self.add_influence(depfile)
2068
2068
 
@@ -1,10 +1,12 @@
1
1
  import py7zr
2
+ import blake3
2
3
  import bz2
3
4
  import copy
4
5
  import getpass
5
6
  import gzip
6
7
  import json
7
8
  import lzma
9
+ import mmap
8
10
  import subprocess
9
11
  import os
10
12
  import platform
@@ -710,7 +712,7 @@ class Tools(object):
710
712
  from jolt.loader import JoltLoader
711
713
  return fs.path.normpath(JoltLoader.get().build_path)
712
714
 
713
- def checksum_file(self, filelist, concat=False, hashfn=hashlib.sha1, filterfn=None):
715
+ def checksum_file(self, filelist, concat=False, hashfn=blake3.blake3):
714
716
  """ Calculate a checksum of one or multiple files.
715
717
 
716
718
  Args:
@@ -718,24 +720,27 @@ class Tools(object):
718
720
  concat (boolean): Concatenate files and return a single digest. If False,
719
721
  a list with one digest for each file is returned. Default: False.
720
722
  hashfn: The hash algorithm used. Any type which provides an update() and
721
- hexdigest() method is accepted. Default: hashlib.sha1
722
- filterfn: An optional data filter function. It is called repeatedly
723
- with each block of data read from files as its only argument.
724
- It should return the data to be included in the checksum.
725
- Default: None
723
+ hexdigest() method is accepted. Default: blake3
726
724
 
727
725
  Returns:
728
726
  A list of checksum digests, or a single digest if files where concatenated.
729
727
  """
730
728
  files = [self.expand_path(fname) for fname in utils.as_list(filelist)]
731
- filterfn = filterfn or (lambda data: data)
732
729
  result = []
733
- checksum = hashfn()
734
730
 
735
731
  for fname in files:
732
+ checksum = hashfn()
736
733
  with open(fname, "rb") as f:
737
- for block in iter(lambda: f.read(0x10000), b''):
738
- checksum.update(bytes(filterfn(block)))
734
+ mm = None
735
+ try:
736
+ mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
737
+ checksum.update(mm)
738
+ except ValueError:
739
+ # File is empty
740
+ pass
741
+ finally:
742
+ if mm is not None:
743
+ mm.close()
739
744
  result.append(checksum.hexdigest())
740
745
  if not concat:
741
746
  checksum = hashfn()
@@ -1,6 +1,8 @@
1
+ import blake3
1
2
  import contextlib
2
3
  import ctypes
3
4
  import fnmatch
5
+ import mmap
4
6
  import re
5
7
  import time
6
8
  from concurrent.futures import ThreadPoolExecutor, as_completed
@@ -515,18 +517,30 @@ def map_concurrent(method, iterable, *args, **kwargs):
515
517
  return [future.result() for future in futures]
516
518
 
517
519
 
518
- def sha1(string):
519
- sha = hashlib.sha1()
520
- sha.update(string.encode())
521
- return sha.hexdigest()
520
+ def hashstring(string, hashfn=blake3.blake3):
521
+ hash = hashfn()
522
+ hash.update(string.encode())
523
+ return hash.hexdigest()
522
524
 
523
525
 
524
- def filesha1(path):
525
- sha = hashlib.sha1()
526
+ def hashfile(path, hashfn=blake3.blake3):
527
+ hash = hashfn()
526
528
  with open(path, "rb") as f:
527
- for data in iter(lambda: f.read(0x10000), b''):
528
- sha.update(data)
529
- return sha.hexdigest()
529
+ mm = None
530
+ try:
531
+ mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
532
+ hash.update(mm)
533
+ except ValueError:
534
+ # File is empty
535
+ pass
536
+ finally:
537
+ if mm is not None:
538
+ mm.close()
539
+ return hash.hexdigest()
540
+
541
+
542
+ def hashfn(hashfn=blake3.blake3):
543
+ return hashfn()
530
544
 
531
545
 
532
546
  def fromjson(filepath, ignore_errors=False):
@@ -0,0 +1 @@
1
+ __version__ = "0.9.444"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jolt
3
- Version: 0.9.439
3
+ Version: 0.9.444
4
4
  Summary: A task executor
5
5
  Home-page: https://github.com/srand/jolt
6
6
  Author: Robert Andersson
@@ -33,6 +33,7 @@ Requires-Dist: SecretStorage==3.3.3
33
33
  Requires-Dist: allure-python-commons==2.13.5
34
34
  Requires-Dist: attrs==24.2.0
35
35
  Requires-Dist: backports.tarfile==1.2.0
36
+ Requires-Dist: blake3==1.0.8
36
37
  Requires-Dist: bottle==0.12.25
37
38
  Requires-Dist: brotli==1.2.0
38
39
  Requires-Dist: bz2file==0.98
@@ -42,8 +42,10 @@ jolt/pkgs/asio.py
42
42
  jolt/pkgs/autoconf.py
43
43
  jolt/pkgs/automake.py
44
44
  jolt/pkgs/b2.py
45
+ jolt/pkgs/blake3.py
45
46
  jolt/pkgs/boost.py
46
47
  jolt/pkgs/boringssl.py
48
+ jolt/pkgs/brotli.py
47
49
  jolt/pkgs/busybox.py
48
50
  jolt/pkgs/bzip2.py
49
51
  jolt/pkgs/cares.py
@@ -10,6 +10,7 @@ SecretStorage==3.3.3
10
10
  allure-python-commons==2.13.5
11
11
  attrs==24.2.0
12
12
  backports.tarfile==1.2.0
13
+ blake3==1.0.8
13
14
  bottle==0.12.25
14
15
  brotli==1.2.0
15
16
  bz2file==0.98
@@ -70,6 +70,7 @@ setup(
70
70
  ],
71
71
  packages=find_packages(exclude=["contrib", "docs", "tests"]),
72
72
  install_requires=pinned_reqs or [
73
+ "blake3",
73
74
  "bz2file",
74
75
  "click>=8.1",
75
76
  "colorama",
@@ -1 +0,0 @@
1
- __version__ = "0.9.439"
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