toil 9.0.0__tar.gz → 9.1.1__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 (615) hide show
  1. {toil-9.0.0 → toil-9.1.1}/.github/workflows/codeql-analysis.yml +1 -1
  2. {toil-9.0.0 → toil-9.1.1}/.gitlab-ci.yml +10 -5
  3. {toil-9.0.0 → toil-9.1.1}/Makefile +16 -5
  4. {toil-9.0.0 → toil-9.1.1}/PKG-INFO +12 -12
  5. {toil-9.0.0 → toil-9.1.1}/contrib/admin/cleanup_aws_resources.py +5 -2
  6. {toil-9.0.0 → toil-9.1.1}/contrib/admin/mypy-with-ignore.py +2 -6
  7. {toil-9.0.0 → toil-9.1.1}/docker/Dockerfile.py +2 -3
  8. {toil-9.0.0 → toil-9.1.1}/docs/appendices/aws_min_permissions.rst +0 -1
  9. {toil-9.0.0 → toil-9.1.1}/requirements-cwl.txt +2 -2
  10. {toil-9.0.0 → toil-9.1.1}/requirements-dev.txt +5 -4
  11. {toil-9.0.0 → toil-9.1.1}/requirements-google.txt +1 -1
  12. {toil-9.0.0 → toil-9.1.1}/requirements-kubernetes.txt +1 -1
  13. {toil-9.0.0 → toil-9.1.1}/requirements-server.txt +1 -1
  14. {toil-9.0.0 → toil-9.1.1}/requirements.txt +1 -1
  15. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/abstractBatchSystem.py +13 -5
  16. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/abstractGridEngineBatchSystem.py +17 -5
  17. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/kubernetes.py +13 -2
  18. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/mesos/batchSystem.py +33 -2
  19. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/slurm.py +191 -16
  20. {toil-9.0.0 → toil-9.1.1}/src/toil/cwl/cwltoil.py +17 -82
  21. {toil-9.0.0 → toil-9.1.1}/src/toil/fileStores/__init__.py +1 -1
  22. {toil-9.0.0 → toil-9.1.1}/src/toil/fileStores/abstractFileStore.py +5 -2
  23. {toil-9.0.0 → toil-9.1.1}/src/toil/fileStores/cachingFileStore.py +1 -1
  24. {toil-9.0.0 → toil-9.1.1}/src/toil/job.py +30 -14
  25. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/abstractJobStore.py +24 -19
  26. toil-9.1.1/src/toil/jobStores/aws/jobStore.py +1009 -0
  27. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/aws/utils.py +24 -270
  28. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/googleJobStore.py +25 -9
  29. toil-9.1.1/src/toil/jobStores/utils.py +84 -0
  30. {toil-9.0.0 → toil-9.1.1}/src/toil/leader.py +27 -22
  31. toil-9.1.1/src/toil/lib/aws/config.py +22 -0
  32. toil-9.1.1/src/toil/lib/aws/s3.py +499 -0
  33. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/aws/utils.py +22 -33
  34. toil-9.1.1/src/toil/lib/checksum.py +88 -0
  35. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/conversions.py +33 -31
  36. toil-9.1.1/src/toil/lib/directory.py +217 -0
  37. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/ec2.py +97 -29
  38. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/exceptions.py +2 -1
  39. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/expando.py +2 -2
  40. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/generatedEC2Lists.py +73 -16
  41. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/io.py +33 -2
  42. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/memoize.py +21 -7
  43. toil-9.0.0/src/toil/jobStores/utils.py → toil-9.1.1/src/toil/lib/pipes.py +96 -122
  44. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/retry.py +1 -1
  45. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/threading.py +1 -1
  46. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/web.py +4 -5
  47. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/__init__.py +5 -2
  48. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/aws/__init__.py +43 -36
  49. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/aws/awsProvisioner.py +22 -13
  50. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/node.py +60 -12
  51. {toil-9.0.0 → toil-9.1.1}/src/toil/resource.py +3 -13
  52. {toil-9.0.0 → toil-9.1.1}/src/toil/test/__init__.py +14 -16
  53. {toil-9.0.0 → toil-9.1.1}/src/toil/test/batchSystems/test_slurm.py +103 -14
  54. toil-9.1.1/src/toil/test/cwl/staging_cat.cwl +27 -0
  55. toil-9.1.1/src/toil/test/cwl/staging_make_file.cwl +25 -0
  56. toil-9.1.1/src/toil/test/cwl/staging_workflow.cwl +43 -0
  57. toil-9.1.1/src/toil/test/cwl/zero_default.cwl +61 -0
  58. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_staging.py +17 -8
  59. {toil-9.0.0 → toil-9.1.1}/src/toil/test/jobStores/jobStoreTest.py +23 -133
  60. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/aws/test_iam.py +7 -7
  61. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/aws/test_s3.py +30 -33
  62. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/aws/test_utils.py +9 -9
  63. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/aws/awsProvisionerTest.py +59 -6
  64. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/autoDeploymentTest.py +2 -3
  65. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/fileStoreTest.py +89 -87
  66. toil-9.1.1/src/toil/test/utils/ABCWorkflowDebug/ABC.txt +1 -0
  67. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/ABCWorkflowDebug/debugWorkflow.py +4 -4
  68. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/toilKillTest.py +35 -28
  69. toil-9.1.1/src/toil/test/wdl/md5sum/md5sum.json +1 -0
  70. toil-9.1.1/src/toil/test/wdl/testfiles/gather.wdl +52 -0
  71. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdltoil_test.py +120 -38
  72. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdltoil_test_kubernetes.py +9 -0
  73. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilDebugFile.py +6 -3
  74. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilStats.py +17 -2
  75. toil-9.1.1/src/toil/version.py +14 -0
  76. {toil-9.0.0 → toil-9.1.1}/src/toil/wdl/wdltoil.py +1038 -549
  77. {toil-9.0.0 → toil-9.1.1}/src/toil/worker.py +5 -2
  78. {toil-9.0.0 → toil-9.1.1}/src/toil.egg-info/PKG-INFO +12 -12
  79. {toil-9.0.0 → toil-9.1.1}/src/toil.egg-info/SOURCES.txt +10 -2
  80. {toil-9.0.0 → toil-9.1.1}/src/toil.egg-info/requires.txt +11 -11
  81. {toil-9.0.0 → toil-9.1.1}/version_template.py +1 -1
  82. toil-9.0.0/src/toil/jobStores/aws/jobStore.py +0 -2110
  83. toil-9.0.0/src/toil/lib/aws/s3.py +0 -31
  84. toil-9.0.0/src/toil/lib/iterables.py +0 -112
  85. toil-9.0.0/src/toil/test/docs/scripts/stagingExampleFiles/in.txt +0 -1
  86. toil-9.0.0/src/toil/test/wdl/md5sum/md5sum.json +0 -1
  87. toil-9.0.0/src/toil/version.py +0 -14
  88. {toil-9.0.0 → toil-9.1.1}/.git-blame-ignore-revs +0 -0
  89. {toil-9.0.0 → toil-9.1.1}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  90. {toil-9.0.0 → toil-9.1.1}/.github/dependabot.yml +0 -0
  91. {toil-9.0.0 → toil-9.1.1}/.gitignore +0 -0
  92. {toil-9.0.0 → toil-9.1.1}/.readthedocs.yaml +0 -0
  93. {toil-9.0.0 → toil-9.1.1}/CODE_OF_CONDUCT.md +0 -0
  94. {toil-9.0.0 → toil-9.1.1}/CONTRIBUTING.md +0 -0
  95. {toil-9.0.0 → toil-9.1.1}/LICENSE +0 -0
  96. {toil-9.0.0 → toil-9.1.1}/MANIFEST.in +0 -0
  97. {toil-9.0.0 → toil-9.1.1}/README.rst +0 -0
  98. {toil-9.0.0 → toil-9.1.1}/ROADMAP.md +0 -0
  99. {toil-9.0.0 → toil-9.1.1}/attic/README.md +0 -0
  100. {toil-9.0.0 → toil-9.1.1}/attic/absolute_imports.py +0 -0
  101. {toil-9.0.0 → toil-9.1.1}/attic/jobTreeSlides.pdf +0 -0
  102. {toil-9.0.0 → toil-9.1.1}/attic/toil-sort-example.py +0 -0
  103. {toil-9.0.0 → toil-9.1.1}/common.mk +0 -0
  104. {toil-9.0.0 → toil-9.1.1}/contrib/admin/buildkit-deployment.yml +0 -0
  105. {toil-9.0.0 → toil-9.1.1}/contrib/admin/remove_trailing_whitespace.py +0 -0
  106. {toil-9.0.0 → toil-9.1.1}/contrib/admin/test-pr +0 -0
  107. {toil-9.0.0 → toil-9.1.1}/contrib/admin/wheel-of-issues +0 -0
  108. {toil-9.0.0 → toil-9.1.1}/contrib/assets/toil-slug-logo-wordmark-2022.svg +0 -0
  109. {toil-9.0.0 → toil-9.1.1}/contrib/hooks/lib.py +0 -0
  110. {toil-9.0.0 → toil-9.1.1}/contrib/hooks/mypy-after-commit.py +0 -0
  111. {toil-9.0.0 → toil-9.1.1}/contrib/hooks/mypy-before-push.py +0 -0
  112. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/configargparse/__init__.pyi +0 -0
  113. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/configargparse/configargparse.pyi +0 -0
  114. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/dill/__init__.pyi +0 -0
  115. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/dill/_dill.pyi +0 -0
  116. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/__init__.pyi +0 -0
  117. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/__init__.pyi +0 -0
  118. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/annotations.pyi +0 -0
  119. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/callables.pyi +0 -0
  120. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/listener.pyi +0 -0
  121. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/notificationmgr.pyi +0 -0
  122. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/publisher.pyi +0 -0
  123. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topicargspec.pyi +0 -0
  124. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topicdefnprovider.pyi +0 -0
  125. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topicexc.pyi +0 -0
  126. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topicmgr.pyi +0 -0
  127. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topicobj.pyi +0 -0
  128. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topictreetraverser.pyi +0 -0
  129. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/topicutils.pyi +0 -0
  130. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/core/weakmethod.pyi +0 -0
  131. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/pub.pyi +0 -0
  132. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/utils/__init__.pyi +0 -0
  133. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/utils/exchandling.pyi +0 -0
  134. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/utils/misc.pyi +0 -0
  135. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/utils/notification.pyi +0 -0
  136. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/utils/topictreeprinter.pyi +0 -0
  137. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/pubsub/utils/xmltopicdefnprovider.pyi +0 -0
  138. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/tes/__init__.py +0 -0
  139. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/tes/client.pyi +0 -0
  140. {toil-9.0.0 → toil-9.1.1}/contrib/mypy-stubs/tes/models.pyi +0 -0
  141. {toil-9.0.0 → toil-9.1.1}/contrib/pod-murder-bot/murder.yaml +0 -0
  142. {toil-9.0.0 → toil-9.1.1}/contrib/pod-murder-bot/podKiller.sh +0 -0
  143. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/check_out.sh +0 -0
  144. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/docker-compose.yml +0 -0
  145. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/expected_out_basic.txt +0 -0
  146. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/expected_out_sort.txt +0 -0
  147. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/fileToSort.txt +0 -0
  148. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/slurm.conf +0 -0
  149. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/slurm_test.sh +0 -0
  150. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/sort.py +0 -0
  151. {toil-9.0.0 → toil-9.1.1}/contrib/slurm-test/toil_workflow.py +0 -0
  152. {toil-9.0.0 → toil-9.1.1}/contrib/toil-ci-prebake/Dockerfile +0 -0
  153. {toil-9.0.0 → toil-9.1.1}/contrib/toil-cwl-runner/README.rst +0 -0
  154. {toil-9.0.0 → toil-9.1.1}/contrib/toil-cwl-runner/pyproject.toml +0 -0
  155. {toil-9.0.0 → toil-9.1.1}/contrib/toil-cwl-runner/setup.cfg +0 -0
  156. {toil-9.0.0 → toil-9.1.1}/dashboard/grafana/Dockerfile +0 -0
  157. {toil-9.0.0 → toil-9.1.1}/dashboard/grafana/toil_dashboard.json +0 -0
  158. {toil-9.0.0 → toil-9.1.1}/dashboard/mtail/Dockerfile +0 -0
  159. {toil-9.0.0 → toil-9.1.1}/dashboard/mtail/toil.mtail +0 -0
  160. {toil-9.0.0 → toil-9.1.1}/dashboard/prometheus/Dockerfile +0 -0
  161. {toil-9.0.0 → toil-9.1.1}/dashboard/prometheus/prometheus.yml +0 -0
  162. {toil-9.0.0 → toil-9.1.1}/dashboard/prometheus/run.sh +0 -0
  163. {toil-9.0.0 → toil-9.1.1}/docker/customDockerInit.sh +0 -0
  164. {toil-9.0.0 → toil-9.1.1}/docker/extra-debs.tsv +0 -0
  165. {toil-9.0.0 → toil-9.1.1}/docker/singularity-wrapper.sh +0 -0
  166. {toil-9.0.0 → toil-9.1.1}/docker/waitForKey.sh +0 -0
  167. {toil-9.0.0 → toil-9.1.1}/docs/Makefile +0 -0
  168. {toil-9.0.0 → toil-9.1.1}/docs/_static/favicon.ico +0 -0
  169. {toil-9.0.0 → toil-9.1.1}/docs/_static/logo.jpeg +0 -0
  170. {toil-9.0.0 → toil-9.1.1}/docs/_static/shortcut.png +0 -0
  171. {toil-9.0.0 → toil-9.1.1}/docs/appendices/architecture.rst +0 -0
  172. {toil-9.0.0 → toil-9.1.1}/docs/appendices/caching_benefits.png +0 -0
  173. {toil-9.0.0 → toil-9.1.1}/docs/appendices/deploy.rst +0 -0
  174. {toil-9.0.0 → toil-9.1.1}/docs/appendices/environment_vars.rst +0 -0
  175. {toil-9.0.0 → toil-9.1.1}/docs/appendices/toil_architecture.png +0 -0
  176. {toil-9.0.0 → toil-9.1.1}/docs/conf.py +0 -0
  177. {toil-9.0.0 → toil-9.1.1}/docs/contributing/checklists.rst +0 -0
  178. {toil-9.0.0 → toil-9.1.1}/docs/contributing/contributing.rst +0 -0
  179. {toil-9.0.0 → toil-9.1.1}/docs/cwl/conformance.rst +0 -0
  180. {toil-9.0.0 → toil-9.1.1}/docs/cwl/introduction.rst +0 -0
  181. {toil-9.0.0 → toil-9.1.1}/docs/cwl/running.rst +0 -0
  182. {toil-9.0.0 → toil-9.1.1}/docs/gettingStarted/googleScreenShot.png +0 -0
  183. {toil-9.0.0 → toil-9.1.1}/docs/gettingStarted/googleScreenShot2.png +0 -0
  184. {toil-9.0.0 → toil-9.1.1}/docs/gettingStarted/install.rst +0 -0
  185. {toil-9.0.0 → toil-9.1.1}/docs/gettingStarted/quickStart.rst +0 -0
  186. {toil-9.0.0 → toil-9.1.1}/docs/index.rst +0 -0
  187. {toil-9.0.0 → toil-9.1.1}/docs/python/developing.rst +0 -0
  188. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPI.rst +0 -0
  189. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIBatchsystem.rst +0 -0
  190. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIExceptions.rst +0 -0
  191. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIFilestore.rst +0 -0
  192. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIJobFunctions.rst +0 -0
  193. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIJobstore.rst +0 -0
  194. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIMethods.rst +0 -0
  195. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIRunner.rst +0 -0
  196. {toil-9.0.0 → toil-9.1.1}/docs/python/toilAPIService.rst +0 -0
  197. {toil-9.0.0 → toil-9.1.1}/docs/running/cliOptions.rst +0 -0
  198. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/amazon.rst +0 -0
  199. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/amazonaddkeypair.png +0 -0
  200. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/cloud.rst +0 -0
  201. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/clusterUtils.rst +0 -0
  202. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/dashboard_screenshot.png +0 -0
  203. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/gce.rst +0 -0
  204. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/googleScreenShot.png +0 -0
  205. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/googleScreenShot2.png +0 -0
  206. {toil-9.0.0 → toil-9.1.1}/docs/running/cloud/kubernetes.rst +0 -0
  207. {toil-9.0.0 → toil-9.1.1}/docs/running/debugging.rst +0 -0
  208. {toil-9.0.0 → toil-9.1.1}/docs/running/hpcEnvironments.rst +0 -0
  209. {toil-9.0.0 → toil-9.1.1}/docs/running/introduction.rst +0 -0
  210. {toil-9.0.0 → toil-9.1.1}/docs/running/server/docker-compose.yml +0 -0
  211. {toil-9.0.0 → toil-9.1.1}/docs/running/server/wes.rst +0 -0
  212. {toil-9.0.0 → toil-9.1.1}/docs/running/utils.rst +0 -0
  213. {toil-9.0.0 → toil-9.1.1}/docs/vendor/sphinxcontrib/__init__.py +0 -0
  214. {toil-9.0.0 → toil-9.1.1}/docs/vendor/sphinxcontrib/fulltoc.py +0 -0
  215. {toil-9.0.0 → toil-9.1.1}/docs/wdl/conformance.rst +0 -0
  216. {toil-9.0.0 → toil-9.1.1}/docs/wdl/developing.rst +0 -0
  217. {toil-9.0.0 → toil-9.1.1}/docs/wdl/introduction.rst +0 -0
  218. {toil-9.0.0 → toil-9.1.1}/docs/wdl/running.rst +0 -0
  219. {toil-9.0.0 → toil-9.1.1}/docs/wdl/tutorial.rst +0 -0
  220. {toil-9.0.0 → toil-9.1.1}/pyproject.toml +0 -0
  221. {toil-9.0.0 → toil-9.1.1}/requirements-aws.txt +0 -0
  222. {toil-9.0.0 → toil-9.1.1}/requirements-encryption.txt +0 -0
  223. {toil-9.0.0 → toil-9.1.1}/requirements-htcondor.txt +0 -0
  224. {toil-9.0.0 → toil-9.1.1}/requirements-mesos.txt +0 -0
  225. {toil-9.0.0 → toil-9.1.1}/requirements-wdl.txt +0 -0
  226. {toil-9.0.0 → toil-9.1.1}/setup.cfg +0 -0
  227. {toil-9.0.0 → toil-9.1.1}/setup.py +0 -0
  228. {toil-9.0.0 → toil-9.1.1}/setup_gitlab_docker.py +0 -0
  229. {toil-9.0.0 → toil-9.1.1}/setup_gitlab_ssh.py +0 -0
  230. {toil-9.0.0 → toil-9.1.1}/src/toil/__init__.py +0 -0
  231. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/__init__.py +0 -0
  232. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/awsBatch.py +0 -0
  233. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/cleanup_support.py +0 -0
  234. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/contained_executor.py +0 -0
  235. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/gridengine.py +0 -0
  236. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/htcondor.py +0 -0
  237. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/local_support.py +0 -0
  238. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/lsf.py +0 -0
  239. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/lsfHelper.py +0 -0
  240. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/mesos/__init__.py +0 -0
  241. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/mesos/conftest.py +0 -0
  242. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/mesos/executor.py +0 -0
  243. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/mesos/test/__init__.py +0 -0
  244. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/options.py +0 -0
  245. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/registry.py +0 -0
  246. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/singleMachine.py +0 -0
  247. {toil-9.0.0 → toil-9.1.1}/src/toil/batchSystems/torque.py +0 -0
  248. {toil-9.0.0 → toil-9.1.1}/src/toil/bus.py +0 -0
  249. {toil-9.0.0 → toil-9.1.1}/src/toil/common.py +0 -0
  250. {toil-9.0.0 → toil-9.1.1}/src/toil/cwl/__init__.py +0 -0
  251. {toil-9.0.0 → toil-9.1.1}/src/toil/cwl/conftest.py +0 -0
  252. {toil-9.0.0 → toil-9.1.1}/src/toil/cwl/utils.py +0 -0
  253. {toil-9.0.0 → toil-9.1.1}/src/toil/deferred.py +0 -0
  254. {toil-9.0.0 → toil-9.1.1}/src/toil/exceptions.py +0 -0
  255. {toil-9.0.0 → toil-9.1.1}/src/toil/fileStores/nonCachingFileStore.py +0 -0
  256. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/__init__.py +0 -0
  257. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/aws/__init__.py +0 -0
  258. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/conftest.py +0 -0
  259. {toil-9.0.0 → toil-9.1.1}/src/toil/jobStores/fileJobStore.py +0 -0
  260. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/__init__.py +0 -0
  261. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/accelerators.py +0 -0
  262. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/aws/__init__.py +0 -0
  263. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/aws/ami.py +0 -0
  264. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/aws/iam.py +0 -0
  265. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/aws/session.py +0 -0
  266. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/aws/utils.py.orig +0 -0
  267. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/bioio.py +0 -0
  268. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/compatibility.py +0 -0
  269. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/docker.py +0 -0
  270. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/dockstore.py +0 -0
  271. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/ec2nodes.py +0 -0
  272. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/encryption/__init__.py +0 -0
  273. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/encryption/_dummy.py +0 -0
  274. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/encryption/_nacl.py +0 -0
  275. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/encryption/conftest.py +0 -0
  276. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/ftp_utils.py +0 -0
  277. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/history.py +0 -0
  278. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/history_submission.py +0 -0
  279. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/humanize.py +0 -0
  280. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/misc.py +0 -0
  281. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/objects.py +0 -0
  282. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/plugins.py +0 -0
  283. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/resources.py +0 -0
  284. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/throttle.py +0 -0
  285. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/trs.py +0 -0
  286. {toil-9.0.0 → toil-9.1.1}/src/toil/lib/url.py +0 -0
  287. {toil-9.0.0 → toil-9.1.1}/src/toil/options/__init__.py +0 -0
  288. {toil-9.0.0 → toil-9.1.1}/src/toil/options/common.py +0 -0
  289. {toil-9.0.0 → toil-9.1.1}/src/toil/options/cwl.py +0 -0
  290. {toil-9.0.0 → toil-9.1.1}/src/toil/options/runner.py +0 -0
  291. {toil-9.0.0 → toil-9.1.1}/src/toil/options/wdl.py +0 -0
  292. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/abstractProvisioner.py +0 -0
  293. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/clusterScaler.py +0 -0
  294. {toil-9.0.0 → toil-9.1.1}/src/toil/provisioners/gceProvisioner.py +0 -0
  295. {toil-9.0.0 → toil-9.1.1}/src/toil/realtimeLogger.py +0 -0
  296. {toil-9.0.0 → toil-9.1.1}/src/toil/server/__init__.py +0 -0
  297. {toil-9.0.0 → toil-9.1.1}/src/toil/server/api_spec/LICENSE +0 -0
  298. {toil-9.0.0 → toil-9.1.1}/src/toil/server/api_spec/README.rst +0 -0
  299. {toil-9.0.0 → toil-9.1.1}/src/toil/server/api_spec/__init__.py +0 -0
  300. {toil-9.0.0 → toil-9.1.1}/src/toil/server/api_spec/workflow_execution_service.swagger.yaml +0 -0
  301. {toil-9.0.0 → toil-9.1.1}/src/toil/server/app.py +0 -0
  302. {toil-9.0.0 → toil-9.1.1}/src/toil/server/celery_app.py +0 -0
  303. {toil-9.0.0 → toil-9.1.1}/src/toil/server/cli/__init__.py +0 -0
  304. {toil-9.0.0 → toil-9.1.1}/src/toil/server/cli/wes_cwl_runner.py +0 -0
  305. {toil-9.0.0 → toil-9.1.1}/src/toil/server/utils.py +0 -0
  306. {toil-9.0.0 → toil-9.1.1}/src/toil/server/wes/__init__.py +0 -0
  307. {toil-9.0.0 → toil-9.1.1}/src/toil/server/wes/abstract_backend.py +0 -0
  308. {toil-9.0.0 → toil-9.1.1}/src/toil/server/wes/amazon_wes_utils.py +0 -0
  309. {toil-9.0.0 → toil-9.1.1}/src/toil/server/wes/tasks.py +0 -0
  310. {toil-9.0.0 → toil-9.1.1}/src/toil/server/wes/toil_backend.py +0 -0
  311. {toil-9.0.0 → toil-9.1.1}/src/toil/server/wsgi_app.py +0 -0
  312. {toil-9.0.0 → toil-9.1.1}/src/toil/serviceManager.py +0 -0
  313. {toil-9.0.0 → toil-9.1.1}/src/toil/statsAndLogging.py +0 -0
  314. {toil-9.0.0 → toil-9.1.1}/src/toil/test/batchSystems/__init__.py +0 -0
  315. {toil-9.0.0 → toil-9.1.1}/src/toil/test/batchSystems/batchSystemTest.py +0 -0
  316. {toil-9.0.0 → toil-9.1.1}/src/toil/test/batchSystems/batch_system_plugin_test.py +0 -0
  317. {toil-9.0.0 → toil-9.1.1}/src/toil/test/batchSystems/test_gridengine.py +0 -0
  318. {toil-9.0.0 → toil-9.1.1}/src/toil/test/batchSystems/test_lsf_helper.py +0 -0
  319. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cactus/__init__.py +0 -0
  320. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cactus/pestis.tar.gz +0 -0
  321. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cactus/test_cactus_integration.py +0 -0
  322. {toil-9.0.0 → toil-9.1.1}/src/toil/test/conftest.py +0 -0
  323. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/2.fasta +0 -0
  324. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/2.fastq +0 -0
  325. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/__init__.py +0 -0
  326. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/alwaysfails.cwl +0 -0
  327. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/colon_test_output.cwl +0 -0
  328. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/colon_test_output_job.yaml +0 -0
  329. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/conditional_wf.cwl +0 -0
  330. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/conditional_wf.yaml +0 -0
  331. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/conftest.py +0 -0
  332. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/cwlTest.py +0 -0
  333. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/directory/directory/file.txt +0 -0
  334. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/directory_from_directory.cwl +0 -0
  335. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download.cwl +0 -0
  336. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_directory.cwl +0 -0
  337. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_directory_file.json +0 -0
  338. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_directory_s3.json +0 -0
  339. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_file.json +0 -0
  340. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_http.json +0 -0
  341. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_https.json +0 -0
  342. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_s3.json +0 -0
  343. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_subdirectory.cwl +0 -0
  344. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_subdirectory_file.json +0 -0
  345. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/download_subdirectory_s3.json +0 -0
  346. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/echo-stderr.cwl +0 -0
  347. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/echo-stdout-log-dir.cwl +0 -0
  348. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/echo.cwl +0 -0
  349. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/echo_string.cwl +0 -0
  350. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/echo_string_scatter_capture_stdout.cwl +0 -0
  351. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/empty.json +0 -0
  352. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/file_from_directory.cwl +0 -0
  353. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/glob_dir.cwl +0 -0
  354. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/load_contents.cwl +0 -0
  355. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/measure_default_memory.cwl +0 -0
  356. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/mock_mpi/fake_mpi.yml +0 -0
  357. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/mock_mpi/fake_mpi_run.py +0 -0
  358. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/mpi_simple.cwl +0 -0
  359. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/not_run_required_input.cwl +0 -0
  360. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/nvidia_smi.cwl +0 -0
  361. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/optional-file-exists.json +0 -0
  362. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/optional-file-missing.json +0 -0
  363. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/optional-file.cwl +0 -0
  364. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/preemptible.cwl +0 -0
  365. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/preemptible_expression.cwl +0 -0
  366. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/preemptible_expression.json +0 -0
  367. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/revsort-job-missing.json +0 -0
  368. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/revsort-job.json +0 -0
  369. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/revsort.cwl +0 -0
  370. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/revsort2.cwl +0 -0
  371. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/revtool.cwl +0 -0
  372. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/revtool2.cwl +0 -0
  373. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/s3_secondary_file.cwl +0 -0
  374. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/s3_secondary_file.json +0 -0
  375. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/scatter_duplicate_outputs.cwl +0 -0
  376. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/seqtk_seq.cwl +0 -0
  377. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/seqtk_seq_job.json +0 -0
  378. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/sorttool.cwl +0 -0
  379. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/stream.cwl +0 -0
  380. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/stream.json +0 -0
  381. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_detection.cwl +0 -0
  382. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_detection_at_root.cwl +0 -0
  383. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.cwl +0 -0
  384. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.dat +0 -0
  385. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f0 +0 -0
  386. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1 +0 -0
  387. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f1i +0 -0
  388. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2 +0 -0
  389. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f2_TSM0 +0 -0
  390. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3 +0 -0
  391. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f3_TSM0 +0 -0
  392. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4 +0 -0
  393. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f4_TSM0 +0 -0
  394. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.f5 +0 -0
  395. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.info +0 -0
  396. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/test_filename_conflict_resolution.ms/table.lock +0 -0
  397. {toil-9.0.0 → toil-9.1.1}/src/toil/test/cwl/whale.txt +0 -0
  398. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/__init__.py +0 -0
  399. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/example_alwaysfail.py +0 -0
  400. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/example_alwaysfail_with_files.wdl +0 -0
  401. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/example_cachingbenchmark.py +0 -0
  402. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/stagingExampleFiles/out.txt +0 -0
  403. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_arguments.py +0 -0
  404. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_debugging.patch +0 -0
  405. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_debugging_hangs.wdl +0 -0
  406. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_debugging_works.wdl +0 -0
  407. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_docker.py +0 -0
  408. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_dynamic.py +0 -0
  409. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_encapsulation.py +0 -0
  410. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_encapsulation2.py +0 -0
  411. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_helloworld.py +0 -0
  412. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_invokeworkflow.py +0 -0
  413. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_invokeworkflow2.py +0 -0
  414. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_jobfunctions.py +0 -0
  415. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_managing.py +0 -0
  416. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_managing2.py +0 -0
  417. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_multiplejobs.py +0 -0
  418. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_multiplejobs2.py +0 -0
  419. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_multiplejobs3.py +0 -0
  420. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_promises.py +0 -0
  421. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_promises2.py +0 -0
  422. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_quickstart.py +0 -0
  423. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_requirements.py +0 -0
  424. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_services.py +0 -0
  425. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scripts/tutorial_stats.py +0 -0
  426. {toil-9.0.0 → toil-9.1.1}/src/toil/test/docs/scriptsTest.py +0 -0
  427. {toil-9.0.0 → toil-9.1.1}/src/toil/test/jobStores/__init__.py +0 -0
  428. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/__init__.py +0 -0
  429. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/aws/__init__.py +0 -0
  430. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/dockerTest.py +0 -0
  431. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/test_conversions.py +0 -0
  432. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/test_ec2.py +0 -0
  433. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/test_history.py +0 -0
  434. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/test_misc.py +0 -0
  435. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/test_trs.py +0 -0
  436. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/test_url.py +0 -0
  437. {toil-9.0.0 → toil-9.1.1}/src/toil/test/lib/url_plugin_test.py +0 -0
  438. {toil-9.0.0 → toil-9.1.1}/src/toil/test/mesos/MesosDataStructuresTest.py +0 -0
  439. {toil-9.0.0 → toil-9.1.1}/src/toil/test/mesos/__init__.py +0 -0
  440. {toil-9.0.0 → toil-9.1.1}/src/toil/test/mesos/helloWorld.py +0 -0
  441. {toil-9.0.0 → toil-9.1.1}/src/toil/test/mesos/stress.py +0 -0
  442. {toil-9.0.0 → toil-9.1.1}/src/toil/test/options/__init__.py +0 -0
  443. {toil-9.0.0 → toil-9.1.1}/src/toil/test/options/options.py +0 -0
  444. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/__init__.py +0 -0
  445. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/aws/__init__.py +0 -0
  446. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/clusterScalerTest.py +0 -0
  447. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/clusterTest.py +0 -0
  448. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/gceProvisionerTest.py +0 -0
  449. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/provisionerTest.py +0 -0
  450. {toil-9.0.0 → toil-9.1.1}/src/toil/test/provisioners/restartScript.py +0 -0
  451. {toil-9.0.0 → toil-9.1.1}/src/toil/test/server/__init__.py +0 -0
  452. {toil-9.0.0 → toil-9.1.1}/src/toil/test/server/serverTest.py +0 -0
  453. {toil-9.0.0 → toil-9.1.1}/src/toil/test/sort/__init__.py +0 -0
  454. {toil-9.0.0 → toil-9.1.1}/src/toil/test/sort/restart_sort.py +0 -0
  455. {toil-9.0.0 → toil-9.1.1}/src/toil/test/sort/sort.py +0 -0
  456. {toil-9.0.0 → toil-9.1.1}/src/toil/test/sort/sortTest.py +0 -0
  457. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/__init__.py +0 -0
  458. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/busTest.py +0 -0
  459. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/checkpointTest.py +0 -0
  460. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/deferredFunctionTest.py +0 -0
  461. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/dockerCheckTest.py +0 -0
  462. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/environmentTest.py +0 -0
  463. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/helloWorldTest.py +0 -0
  464. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/importExportFileTest.py +0 -0
  465. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/jobDescriptionTest.py +0 -0
  466. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/jobEncapsulationTest.py +0 -0
  467. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/jobFileStoreTest.py +0 -0
  468. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/jobServiceTest.py +0 -0
  469. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/jobTest.py +0 -0
  470. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/miscTests.py +0 -0
  471. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/promisedRequirementTest.py +0 -0
  472. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/promisesTest.py +0 -0
  473. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/realtimeLoggerTest.py +0 -0
  474. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/regularLogTest.py +0 -0
  475. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/resourceTest.py +0 -0
  476. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/restartDAGTest.py +0 -0
  477. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/resumabilityTest.py +0 -0
  478. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/retainTempDirTest.py +0 -0
  479. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/systemTest.py +0 -0
  480. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/threadingTest.py +0 -0
  481. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/toilContextManagerTest.py +0 -0
  482. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/userDefinedJobArgTypeTest.py +0 -0
  483. {toil-9.0.0 → toil-9.1.1}/src/toil/test/src/workerTest.py +0 -0
  484. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/ABCWorkflowDebug/B_file.txt +0 -0
  485. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/ABCWorkflowDebug/mkFile.py +0 -0
  486. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/ABCWorkflowDebug/sleep.cwl +0 -0
  487. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/ABCWorkflowDebug/sleep.yaml +0 -0
  488. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/__init__.py +0 -0
  489. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/toilDebugTest.py +0 -0
  490. {toil-9.0.0 → toil-9.1.1}/src/toil/test/utils/utilsTest.py +0 -0
  491. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/__init__.py +0 -0
  492. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/lint_error.wdl +0 -0
  493. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/md5sum/empty_file.json +0 -0
  494. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/md5sum/md5sum-gs.json +0 -0
  495. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/md5sum/md5sum.1.0.wdl +0 -0
  496. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/md5sum/md5sum.input +0 -0
  497. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/md5sum/md5sum.wdl +0 -0
  498. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/miniwdl_self_test/inputs-namespaced.json +0 -0
  499. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/miniwdl_self_test/inputs.json +0 -0
  500. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/miniwdl_self_test/self_test.wdl +0 -0
  501. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/as_map.json +0 -0
  502. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/as_map_as_input.wdl +0 -0
  503. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/as_pairs.json +0 -0
  504. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/as_pairs_as_input.wdl +0 -0
  505. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/ceil.json +0 -0
  506. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/ceil_as_command.wdl +0 -0
  507. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/ceil_as_input.wdl +0 -0
  508. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/collect_by_key.json +0 -0
  509. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/collect_by_key_as_input.wdl +0 -0
  510. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/cross.json +0 -0
  511. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/cross_as_input.wdl +0 -0
  512. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/flatten.json +0 -0
  513. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/flatten_as_input.wdl +0 -0
  514. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/floor.json +0 -0
  515. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/floor_as_command.wdl +0 -0
  516. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/floor_as_input.wdl +0 -0
  517. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/keys.json +0 -0
  518. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/keys_as_input.wdl +0 -0
  519. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/length.json +0 -0
  520. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/length_as_input.wdl +0 -0
  521. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/length_as_input_with_map.json +0 -0
  522. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/length_as_input_with_map.wdl +0 -0
  523. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/length_invalid.json +0 -0
  524. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/range.json +0 -0
  525. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/range_0.json +0 -0
  526. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/range_as_input.wdl +0 -0
  527. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/range_invalid.json +0 -0
  528. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_boolean.json +0 -0
  529. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_boolean_as_command.wdl +0 -0
  530. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_float.json +0 -0
  531. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_float_as_command.wdl +0 -0
  532. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_int.json +0 -0
  533. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_int_as_command.wdl +0 -0
  534. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_json.json +0 -0
  535. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_json_as_output.wdl +0 -0
  536. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_lines.json +0 -0
  537. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_lines_as_output.wdl +0 -0
  538. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_map.json +0 -0
  539. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_map_as_output.wdl +0 -0
  540. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_string.json +0 -0
  541. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_string_as_command.wdl +0 -0
  542. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_tsv.json +0 -0
  543. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/read_tsv_as_output.wdl +0 -0
  544. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/round.json +0 -0
  545. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/round_as_command.wdl +0 -0
  546. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/round_as_input.wdl +0 -0
  547. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/size.json +0 -0
  548. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/size_as_command.wdl +0 -0
  549. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/size_as_output.wdl +0 -0
  550. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/stderr.json +0 -0
  551. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/stderr_as_output.wdl +0 -0
  552. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/stdout.json +0 -0
  553. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/stdout_as_output.wdl +0 -0
  554. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/sub.json +0 -0
  555. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/sub_as_input.wdl +0 -0
  556. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/sub_as_input_with_file.wdl +0 -0
  557. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/transpose.json +0 -0
  558. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/transpose_as_input.wdl +0 -0
  559. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_json.json +0 -0
  560. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_json_as_command.wdl +0 -0
  561. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_lines.json +0 -0
  562. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_lines_as_command.wdl +0 -0
  563. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_map.json +0 -0
  564. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_map_as_command.wdl +0 -0
  565. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_tsv.json +0 -0
  566. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/write_tsv_as_command.wdl +0 -0
  567. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/zip.json +0 -0
  568. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/standard_library/zip_as_input.wdl +0 -0
  569. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/test.csv +0 -0
  570. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/test.tsv +0 -0
  571. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/croo.wdl +0 -0
  572. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/drop_files.wdl +0 -0
  573. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/drop_files_subworkflow.wdl +0 -0
  574. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/empty.txt +0 -0
  575. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/not_enough_outputs.wdl +0 -0
  576. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/random.wdl +0 -0
  577. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/read_file.wdl +0 -0
  578. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/string_file_coercion.json +0 -0
  579. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/string_file_coercion.wdl +0 -0
  580. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test.json +0 -0
  581. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test_boolean.txt +0 -0
  582. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test_float.txt +0 -0
  583. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test_int.txt +0 -0
  584. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test_lines.txt +0 -0
  585. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test_map.txt +0 -0
  586. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/test_string.txt +0 -0
  587. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/url_to_file.wdl +0 -0
  588. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/url_to_optional_file.wdl +0 -0
  589. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/vocab.json +0 -0
  590. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/vocab.wdl +0 -0
  591. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/testfiles/wait.wdl +0 -0
  592. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdl_specification/type_pair.json +0 -0
  593. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdl_specification/type_pair_basic.wdl +0 -0
  594. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdl_specification/type_pair_with_files.wdl +0 -0
  595. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdl_specification/v1_spec.json +0 -0
  596. {toil-9.0.0 → toil-9.1.1}/src/toil/test/wdl/wdl_specification/v1_spec_declaration.wdl +0 -0
  597. {toil-9.0.0 → toil-9.1.1}/src/toil/toilState.py +0 -0
  598. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/__init__.py +0 -0
  599. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilClean.py +0 -0
  600. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilConfig.py +0 -0
  601. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilDebugJob.py +0 -0
  602. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilDestroyCluster.py +0 -0
  603. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilKill.py +0 -0
  604. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilLaunchCluster.py +0 -0
  605. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilMain.py +0 -0
  606. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilRsyncCluster.py +0 -0
  607. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilServer.py +0 -0
  608. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilSshCluster.py +0 -0
  609. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilStatus.py +0 -0
  610. {toil-9.0.0 → toil-9.1.1}/src/toil/utils/toilUpdateEC2Instances.py +0 -0
  611. {toil-9.0.0 → toil-9.1.1}/src/toil/wdl/__init__.py +0 -0
  612. {toil-9.0.0 → toil-9.1.1}/src/toil/wdl/utils.py +0 -0
  613. {toil-9.0.0 → toil-9.1.1}/src/toil.egg-info/dependency_links.txt +0 -0
  614. {toil-9.0.0 → toil-9.1.1}/src/toil.egg-info/entry_points.txt +0 -0
  615. {toil-9.0.0 → toil-9.1.1}/src/toil.egg-info/top_level.txt +0 -0
@@ -39,7 +39,7 @@ jobs:
39
39
 
40
40
  steps:
41
41
  - name: Checkout repository
42
- uses: actions/checkout@v4
42
+ uses: actions/checkout@v5
43
43
 
44
44
  # Initializes the CodeQL tools for scanning.
45
45
  - name: Initialize CodeQL
@@ -164,7 +164,8 @@ quick_test_offline:
164
164
  make develop extras=[aws,google,wdl]
165
165
  echo -e "\e[0Ksection_end:`date +%s`:prepare\r\e[0K"
166
166
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the offline tests"
167
- TOIL_TEST_QUICK=True make test_offline threads="${TEST_THREADS}"
167
+ # Make sure not to run the doctests here because we didn't install all possible extras
168
+ TOIL_TEST_QUICK=True make test_offline tests=src/toil/test threads="${TEST_THREADS}"
168
169
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
169
170
 
170
171
  py39_appliance_build:
@@ -208,6 +209,7 @@ py39_main:
208
209
  python3.9 -m virtualenv venv && . venv/bin/activate && pip install -U pip wheel && make prepare && make develop extras=[all,htcondor]
209
210
  echo -e "\e[0Ksection_end:`date +%s`:prepare\r\e[0K"
210
211
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the tests"
212
+ make doctest threads="${TEST_THREADS}"
211
213
  make test threads="${TEST_THREADS}" tests="src/toil/test/src src/toil/test/utils src/toil/test/server"
212
214
  TOIL_SKIP_DOCKER=true make test threads="${TEST_THREADS}" tests="src/toil/test/lib"
213
215
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
@@ -253,6 +255,7 @@ py310_main:
253
255
  python3.10 -m virtualenv venv && . venv/bin/activate && curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10 && pip install -U pip wheel && make prepare && pip install pycparser && make develop extras=[all,htcondor]
254
256
  echo -e "\e[0Ksection_end:`date +%s`:prepare\r\e[0K"
255
257
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the tests"
258
+ make doctest threads="${TEST_THREADS}"
256
259
  make test threads="${TEST_THREADS}" tests="src/toil/test/src src/toil/test/utils src/toil/test/server"
257
260
  TOIL_SKIP_DOCKER=true make test threads="${TEST_THREADS}" tests="src/toil/test/lib"
258
261
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
@@ -298,6 +301,7 @@ py311_main:
298
301
  python3.11 -m virtualenv venv && . venv/bin/activate && curl -sS https://bootstrap.pypa.io/get-pip.py | python3.11 && pip install -U pip wheel && make prepare && make develop extras=[all,htcondor]
299
302
  echo -e "\e[0Ksection_end:`date +%s`:prepare\r\e[0K"
300
303
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the tests"
304
+ make doctest threads="${TEST_THREADS}"
301
305
  make test threads="${TEST_THREADS}" tests="src/toil/test/src src/toil/test/utils src/toil/test/server"
302
306
  TOIL_SKIP_DOCKER=true make test threads="${TEST_THREADS}" tests="src/toil/test/lib"
303
307
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
@@ -343,6 +347,7 @@ py312_main:
343
347
  python3.12 -m virtualenv venv && . venv/bin/activate && curl -sS https://bootstrap.pypa.io/get-pip.py | python3.12 && pip install -U pip wheel && make prepare && make develop extras=[all,htcondor]
344
348
  echo -e "\e[0Ksection_end:`date +%s`:prepare\r\e[0K"
345
349
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the tests"
350
+ make doctest threads="${TEST_THREADS}"
346
351
  make test threads="${TEST_THREADS}" tests="src/toil/test/src src/toil/test/utils src/toil/test/server"
347
352
  TOIL_SKIP_DOCKER=true make test threads="${TEST_THREADS}" tests="src/toil/test/lib"
348
353
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
@@ -379,11 +384,11 @@ py313_main:
379
384
  python3.13 -m virtualenv venv && . venv/bin/activate && curl -sS https://bootstrap.pypa.io/get-pip.py | python3.13 && pip install -U pip wheel && make prepare && make develop extras=[all]
380
385
  echo -e "\e[0Ksection_end:`date +%s`:prepare\r\e[0K"
381
386
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the tests"
387
+ make doctest threads="${TEST_THREADS}"
382
388
  make test threads="${TEST_THREADS}" tests="src/toil/test/src src/toil/test/utils src/toil/test/server"
383
389
  TOIL_SKIP_DOCKER=true make test threads="${TEST_THREADS}" tests="src/toil/test/lib"
384
390
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
385
391
 
386
-
387
392
  slurm_test:
388
393
  rules:
389
394
  - if: $CI_PIPELINE_SOURCE == "schedule"
@@ -458,7 +463,7 @@ cwl_badge:
458
463
  rm -rf badges1.2
459
464
  echo -e "\e[0Ksection_end:`date +%s`:download_tests\r\e[0K"
460
465
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the CWL v1.2 conformance tests."
461
- make test tests="src/toil/test/cwl/spec_v12/conformance_tests.cwltest.yaml" threads="${TEST_THREADS}" pytest_args="--cwl-runner-verbose --cwl-badgedir=badges1.2 --junit-xml=in-place-update-conformance-1.2.junit.xml --cwl-args='--relax-path-checks --clean=always --logDebug --statusWait=10 --retryCount=2 --eval-timeout=600 --bypass-file-store'"
466
+ make test tests="src/toil/test/cwl/spec_v12/conformance_tests.cwltest.yaml" threads="${TEST_THREADS}" pytest_args="--randomly-dont-reorganize --cwl-runner-verbose --cwl-badgedir=badges1.2 --junit-xml=in-place-update-conformance-1.2.junit.xml --cwl-args='--relax-path-checks --clean=always --logDebug --statusWait=10 --retryCount=2 --eval-timeout=600 --bypass-file-store'"
462
467
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
463
468
  allow_failure: true
464
469
  artifacts:
@@ -491,7 +496,7 @@ cwl_badge_release:
491
496
  rm -rf badges1.2
492
497
  echo -e "\e[0Ksection_end:`date +%s`:download_tests\r\e[0K"
493
498
  echo -e "\e[0Ksection_start:`date +%s`:test\r\e[0KRun the CWL v1.2 conformance tests."
494
- make test tests="src/toil/test/cwl/spec_v12/conformance_tests.cwltest.yaml" threads="${TEST_THREADS}" pytest_args="--cwl-runner-verbose --cwl-badgedir=badges1.2 --junit-xml=in-place-update-conformance-1.2.junit.xml --cwl-args='--relax-path-checks --clean=always --logDebug --statusWait=10 --retryCount=2 --eval-timeout=600 --bypass-file-store'"
499
+ make test tests="src/toil/test/cwl/spec_v12/conformance_tests.cwltest.yaml" threads="${TEST_THREADS}" pytest_args="--randomly-dont-reorganize --cwl-runner-verbose --cwl-badgedir=badges1.2 --junit-xml=in-place-update-conformance-1.2.junit.xml --cwl-args='--relax-path-checks --clean=always --logDebug --statusWait=10 --retryCount=2 --eval-timeout=600 --bypass-file-store'"
495
500
  echo -e "\e[0Ksection_end:`date +%s`:test\r\e[0K"
496
501
  allow_failure: true
497
502
  artifacts:
@@ -685,7 +690,7 @@ provisioner_integration:
685
690
  - export TOIL_TEST_INTEGRATIVE=True; export TOIL_AWS_KEYNAME=id_rsa; export TOIL_AWS_ZONE=us-west-2a
686
691
  # This reads GITLAB_SECRET_FILE_SSH_KEYS
687
692
  - python setup_gitlab_ssh.py
688
- - make test threads="${TEST_THREADS}" tests="src/toil/test/sort/sortTest.py src/toil/test/provisioners/clusterScalerTest.py src/toil/test/utils/utilsTest.py::TestUtils::testAWSProvisionerUtils src/toil/test/provisioners/aws/awsProvisionerTest.py::AWSProvisionerBenchTest src/toil/test/provisioners/aws/awsProvisionerTest.py::AWSManagedAutoscaleTest src/toil/test/wdl/wdltoil_test_kubernetes.py::WDLKubernetesClusterTest"
693
+ - make test threads="${TEST_THREADS}" tests="src/toil/test/sort/sortTest.py src/toil/test/provisioners/clusterScalerTest.py src/toil/test/utils/utilsTest.py::TestUtils::testAWSProvisionerUtils src/toil/test/provisioners/aws/awsProvisionerTest.py::TestAWSProvisionerBenchTest src/toil/test/provisioners/aws/awsProvisionerTest.py::AWSAutoscaleTest src/toil/test/provisioners/aws/awsProvisionerTest.py::AWSManagedAutoscaleTest src/toil/test/provisioners/aws/awsProvisionerTest.py::AWSStaticAutoscaleTest src/toil/test/wdl/wdltoil_test_kubernetes.py::WDLKubernetesClusterTest"
689
694
  # - make test tests=src/toil/test/provisioners/gceProvisionerTest.py # needs env vars set to run
690
695
 
691
696
  google_jobstore:
@@ -85,7 +85,8 @@ help:
85
85
 
86
86
  # This Makefile uses bash features like printf and <()
87
87
  SHELL=bash
88
- tests=src/toil/test
88
+ # We need the default tests to include the doctests, but not htcondor which isn't on mac.
89
+ tests=src/toil --ignore src/toil/batchSystems/htcondor.py
89
90
  arch=linux/amd64,linux/arm64
90
91
  cov=--cov=toil
91
92
  logging=--log-format="%(asctime)s %(levelname)s %(message)s" --log-level DEBUG -o log_cli=true --log-cli-level INFO
@@ -109,7 +110,7 @@ marker=""
109
110
  threads:="auto"
110
111
 
111
112
  dist:="worksteal"
112
- pytest_args:=""
113
+ pytest_args:="--randomly-dont-reorganize"
113
114
 
114
115
  # Only pass the threading options if running parallel tests. Otherwise we lose
115
116
  # live logging. See <https://stackoverflow.com/q/62533239>
@@ -169,10 +170,20 @@ test: check_venv check_build_reqs
169
170
  TOIL_HISTORY=0 \
170
171
  python -m pytest $(verbose) $(durations) $(threadopts) -m "$(marker)" $(logging) $(cov) $(tests) $(pytest_args)
171
172
 
173
+ # When running doctests, we need to not capture output, because on CI we can
174
+ # get failures where doctest saw no output and we report captured output, as in
175
+ # <https://ucsc-ci.com/databiosphere/toil/-/jobs/96131>. doctest and pytest's
176
+ # captures might not work properly together.
177
+ doctest: check_venv check_build_reqs
178
+ TOIL_OWNER_TAG="shared" \
179
+ TOIL_HISTORY=0 \
180
+ python -m pytest --capture=no $(verbose) $(durations) $(threadopts) -m "$(marker)" $(logging) $(cov) $(tests) --ignore src/toil/test $(pytest_args)
181
+
172
182
  test_debug: check_venv check_build_reqs
183
+ # Don't include threadopts to make sure we can see our live logging.
173
184
  TOIL_OWNER_TAG="$(whoami)" \
174
185
  TOIL_HISTORY=0 \
175
- python -m pytest $(verbose) $(durations) $(threadopts) -m "$(marker)" $(logging) $(tests) $(pytest_args) --maxfail=1
186
+ python -m pytest $(verbose) $(durations) -m "$(marker)" $(logging) $(tests) $(pytest_args) --maxfail=1
176
187
 
177
188
 
178
189
  # This target will skip building docker and all docker based tests
@@ -189,7 +200,7 @@ test_offline: check_venv check_build_reqs
189
200
  test_1min: check_venv check_build_reqs
190
201
  TOIL_SKIP_DOCKER=False \
191
202
  TOIL_HISTORY=0 \
192
- python -m pytest $(verbose) $(durations) $(threadopts) -m "$(marker)" $(logging) --timeout=30 --maxfail=1 $(pytest_args) src/toil/test/batchSystems/batchSystemTest.py::SingleMachineBatchSystemTest::test_run_jobs src/toil/test/batchSystems/batchSystemTest.py::KubernetesBatchSystemBenchTest src/toil/test/server/serverTest.py::ToilWESServerBenchTest::test_get_service_info src/toil/test/cwl/cwlTest.py::TestCWLWorkflow::test_run_colon_output src/toil/test/jobStores/jobStoreTest.py::FileJobStoreTest::testUpdateBehavior
203
+ python -m pytest $(verbose) $(durations) $(threadopts) -m "$(marker)" $(logging) --timeout=30 --maxfail=1 $(pytest_args) src/toil/test/batchSystems/batchSystemTest.py::SingleMachineBatchSystemTest::test_run_jobs src/toil/test/batchSystems/batchSystemTest.py::KubernetesBatchSystemBenchTest src/toil/test/server/serverTest.py::ToilWESServerBenchTest::test_get_service_info src/toil/test/cwl/cwlTest.py::TestCWLWorkflow::test_run_colon_output src/toil/test/jobStores/jobStoreTest.py::FileJobStoreTest::testUpdateBehavior
193
204
 
194
205
  ifdef TOIL_DOCKER_REGISTRY
195
206
 
@@ -378,7 +389,7 @@ preflight: mypy touched_pylint
378
389
  develop clean_develop \
379
390
  sdist clean_sdist \
380
391
  download_cwl_spec \
381
- test test_offline test_1min \
392
+ test doctest test_offline test_1min \
382
393
  docs clean_docs \
383
394
  clean \
384
395
  sort_imports remove_unused_imports remove_trailing_whitespace \
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: toil
3
- Version: 9.0.0
3
+ Version: 9.1.1
4
4
  Summary: Pipeline management software for clusters.
5
5
  Home-page: https://github.com/DataBiosphere/toil
6
6
  Author: Benedict Paten and the Toil community
@@ -33,7 +33,7 @@ Requires-Python: >=3.9
33
33
  Description-Content-Type: text/x-rst
34
34
  License-File: LICENSE
35
35
  Requires-Dist: dill<0.4,>=0.3.2
36
- Requires-Dist: requests<=2.31.0
36
+ Requires-Dist: requests<=2.32.5
37
37
  Requires-Dist: docker<8,>=6.1.0
38
38
  Requires-Dist: urllib3<3,>=1.26.0
39
39
  Requires-Dist: python-dateutil
@@ -55,10 +55,10 @@ Requires-Dist: mypy-boto3-s3<2,>=1.28.3.post2; extra == "aws"
55
55
  Requires-Dist: moto<6,>=5.0.3; extra == "aws"
56
56
  Requires-Dist: ec2_metadata<3,>=2.14.0; extra == "aws"
57
57
  Provides-Extra: cwl
58
- Requires-Dist: cwltool==3.1.20250110105449; extra == "cwl"
58
+ Requires-Dist: cwltool==3.1.20250715140722; extra == "cwl"
59
59
  Requires-Dist: schema-salad<9,>=8.4.20230128170514; extra == "cwl"
60
60
  Requires-Dist: galaxy-tool-util<26; extra == "cwl"
61
- Requires-Dist: galaxy-util<25; extra == "cwl"
61
+ Requires-Dist: galaxy-util<26; extra == "cwl"
62
62
  Requires-Dist: ruamel.yaml<=0.19,>=0.15; extra == "cwl"
63
63
  Requires-Dist: ruamel.yaml.clib>=0.2.6; extra == "cwl"
64
64
  Requires-Dist: networkx!=2.8.1,<4; extra == "cwl"
@@ -67,11 +67,11 @@ Requires-Dist: cwl-utils>=0.36; extra == "cwl"
67
67
  Provides-Extra: encryption
68
68
  Requires-Dist: pynacl<2,>=1.4.0; extra == "encryption"
69
69
  Provides-Extra: google
70
- Requires-Dist: apache-libcloud<3,>=2.2.1; extra == "google"
70
+ Requires-Dist: apache-libcloud<4,>=3.6.1; extra == "google"
71
71
  Requires-Dist: google-cloud-storage<=2.8.0,>=2; extra == "google"
72
72
  Requires-Dist: google-auth<3,>=2.18.1; extra == "google"
73
73
  Provides-Extra: kubernetes
74
- Requires-Dist: kubernetes<33,>=12.0.1; extra == "kubernetes"
74
+ Requires-Dist: kubernetes<34,>=12.0.1; extra == "kubernetes"
75
75
  Requires-Dist: kubernetes-stubs==v22.6.0post1; extra == "kubernetes"
76
76
  Requires-Dist: types-urllib3; extra == "kubernetes"
77
77
  Requires-Dist: types-PyYAML; extra == "kubernetes"
@@ -84,7 +84,7 @@ Provides-Extra: server
84
84
  Requires-Dist: connexion[swagger-ui]<4,>=3; extra == "server"
85
85
  Requires-Dist: flask<4,>=3; extra == "server"
86
86
  Requires-Dist: werkzeug<4,>=3; extra == "server"
87
- Requires-Dist: flask-cors<6,>=5.0.1; extra == "server"
87
+ Requires-Dist: flask-cors<7,>=5.0.1; extra == "server"
88
88
  Requires-Dist: gunicorn<24,>=23.0.0; extra == "server"
89
89
  Requires-Dist: celery<6,>=5.4.0; extra == "server"
90
90
  Requires-Dist: wes-service<6,>=5.0.0; extra == "server"
@@ -99,20 +99,20 @@ Requires-Dist: mypy-boto3-iam<2,>=1.28.3.post2; extra == "all"
99
99
  Requires-Dist: mypy-boto3-s3<2,>=1.28.3.post2; extra == "all"
100
100
  Requires-Dist: moto<6,>=5.0.3; extra == "all"
101
101
  Requires-Dist: ec2_metadata<3,>=2.14.0; extra == "all"
102
- Requires-Dist: cwltool==3.1.20250110105449; extra == "all"
102
+ Requires-Dist: cwltool==3.1.20250715140722; extra == "all"
103
103
  Requires-Dist: schema-salad<9,>=8.4.20230128170514; extra == "all"
104
104
  Requires-Dist: galaxy-tool-util<26; extra == "all"
105
- Requires-Dist: galaxy-util<25; extra == "all"
105
+ Requires-Dist: galaxy-util<26; extra == "all"
106
106
  Requires-Dist: ruamel.yaml<=0.19,>=0.15; extra == "all"
107
107
  Requires-Dist: ruamel.yaml.clib>=0.2.6; extra == "all"
108
108
  Requires-Dist: networkx!=2.8.1,<4; extra == "all"
109
109
  Requires-Dist: CacheControl[filecache]; extra == "all"
110
110
  Requires-Dist: cwl-utils>=0.36; extra == "all"
111
111
  Requires-Dist: pynacl<2,>=1.4.0; extra == "all"
112
- Requires-Dist: apache-libcloud<3,>=2.2.1; extra == "all"
112
+ Requires-Dist: apache-libcloud<4,>=3.6.1; extra == "all"
113
113
  Requires-Dist: google-cloud-storage<=2.8.0,>=2; extra == "all"
114
114
  Requires-Dist: google-auth<3,>=2.18.1; extra == "all"
115
- Requires-Dist: kubernetes<33,>=12.0.1; extra == "all"
115
+ Requires-Dist: kubernetes<34,>=12.0.1; extra == "all"
116
116
  Requires-Dist: kubernetes-stubs==v22.6.0post1; extra == "all"
117
117
  Requires-Dist: types-urllib3; extra == "all"
118
118
  Requires-Dist: types-PyYAML; extra == "all"
@@ -123,7 +123,7 @@ Requires-Dist: graphlib-backport==1.0; python_version < "3.9" and extra == "all"
123
123
  Requires-Dist: connexion[swagger-ui]<4,>=3; extra == "all"
124
124
  Requires-Dist: flask<4,>=3; extra == "all"
125
125
  Requires-Dist: werkzeug<4,>=3; extra == "all"
126
- Requires-Dist: flask-cors<6,>=5.0.1; extra == "all"
126
+ Requires-Dist: flask-cors<7,>=5.0.1; extra == "all"
127
127
  Requires-Dist: gunicorn<24,>=23.0.0; extra == "all"
128
128
  Requires-Dist: celery<6,>=5.4.0; extra == "all"
129
129
  Requires-Dist: wes-service<6,>=5.0.0; extra == "all"
@@ -70,8 +70,11 @@ def contains_toil_test_patterns(string):
70
70
 
71
71
 
72
72
  def matches(resource_name):
73
- if (resource_name.endswith('--files') or resource_name.endswith('--jobs') or resource_name.endswith('_toil')
74
- or resource_name.endswith('--internal') or resource_name.startswith('toil-s3test-')):
73
+ if (
74
+ resource_name.endswith('--files') or resource_name.endswith('--jobs')
75
+ or resource_name.endswith('--toil') or resource_name.endswith('_toil')
76
+ or resource_name.endswith('--internal') or resource_name.startswith('toil-s3test-')
77
+ ):
75
78
  if contains_toil_test_patterns(resource_name):
76
79
  return resource_name
77
80
 
@@ -22,7 +22,8 @@ def main():
22
22
 
23
23
  # TODO: Remove these paths as typing is added and mypy conflicts are addressed.
24
24
  # These are handled as path prefixes.
25
- ignore_paths = [os.path.abspath(f) for f in [
25
+
26
+ ignore_paths = [os.path.join(pkg_root, f) for f in [
26
27
  'docs/_build',
27
28
  'docker/Dockerfile.py',
28
29
  'docs/conf.py',
@@ -61,12 +62,8 @@ def main():
61
62
  'src/toil/jobStores/fileJobStore.py',
62
63
  'src/toil/jobStores/__init__.py',
63
64
  'src/toil/jobStores/googleJobStore.py',
64
- 'src/toil/jobStores/aws/utils.py',
65
- 'src/toil/jobStores/aws/jobStore.py',
66
- 'src/toil/jobStores/aws/__init__.py',
67
65
  'src/toil/utils/__init__.py',
68
66
  'src/toil/lib/throttle.py',
69
- 'src/toil/lib/iterables.py',
70
67
  'src/toil/lib/bioio.py',
71
68
  'src/toil/lib/ec2.py',
72
69
  'src/toil/lib/expando.py',
@@ -87,7 +84,6 @@ def main():
87
84
  'src/toil/test/cactus',
88
85
  'src/toil/test/docs',
89
86
  'src/toil/test/jobStores',
90
- 'src/toil/test/lib/aws',
91
87
  'src/toil/test/lib/test_conversions.py',
92
88
  'src/toil/test/lib/test_ec2.py',
93
89
  'src/toil/test/lib/test_misc.py',
@@ -95,11 +95,10 @@ def heredoc(s):
95
95
 
96
96
  motd = heredoc('''
97
97
 
98
- This is the Toil appliance. You can run your Toil script directly on the appliance.
99
- Run toil <workflow>.py --help to see all options for running your workflow.
98
+ This is the Toil appliance. You can run your Toil workflow directly on the appliance.
100
99
  For more information see http://toil.readthedocs.io/en/latest/
101
100
 
102
- Copyright (C) 2015-2022 Regents of the University of California
101
+ Copyright (C) 2015-2025 Regents of the University of California
103
102
 
104
103
  Version: {applianceSelf}
105
104
 
@@ -18,7 +18,6 @@ with the ``--awsEc2ProfileArn`` parameter.
18
18
  "Action": [
19
19
  "ec2:*",
20
20
  "s3:*",
21
- "sdb:*",
22
21
  "iam:PassRole"
23
22
  ],
24
23
  "Resource": "*"
@@ -1,7 +1,7 @@
1
- cwltool==3.1.20250110105449
1
+ cwltool==3.1.20250715140722
2
2
  schema-salad>=8.4.20230128170514,<9
3
3
  galaxy-tool-util<26
4
- galaxy-util<25
4
+ galaxy-util<26
5
5
  ruamel.yaml>=0.15,<=0.19
6
6
  ruamel.yaml.clib>=0.2.6
7
7
  networkx!=2.8.1,<4
@@ -1,8 +1,9 @@
1
1
  pytest>=6.2.1,<9
2
- pytest-cov>=2.12.1,<7
2
+ pytest-cov>=2.12.1,<8
3
3
  pytest-timeout>=1.4.2,<3
4
4
  pytest_httpserver>=1.1.3,<2
5
- pytest-subtests
5
+ pytest-subtests>=0.14.2,<0.15
6
+ pytest-randomly>=3.16.0,<5
6
7
  stubserver>=1.1,<2
7
8
  setuptools>=65.5.1,<81
8
9
  sphinx>=7,<9
@@ -11,7 +12,7 @@ astroid>=3,<4
11
12
  sphinx-autodoc-typehints>=1.24.0,<4
12
13
  sphinxcontrib-autoprogram==0.1.9
13
14
  cwltest>=2.6.20250314152537
14
- mypy==1.16.1
15
+ mypy==1.18.1
15
16
  types-aws-xray-sdk
16
17
  types-boto<2.49.18.20241020
17
18
  types-Flask-Cors
@@ -29,7 +30,7 @@ autoflake
29
30
  isort
30
31
  diff_cover
31
32
  lxml
32
- docutils>=0.16,<0.22
33
+ docutils>=0.16,<0.23
33
34
  pyupgrade
34
35
  pytest-xdist
35
36
  build
@@ -1,3 +1,3 @@
1
- apache-libcloud>=2.2.1,<3
1
+ apache-libcloud>=3.6.1,<4
2
2
  google-cloud-storage>=2,<=2.8.0
3
3
  google-auth>=2.18.1,<3
@@ -1,4 +1,4 @@
1
- kubernetes>=12.0.1, <33
1
+ kubernetes>=12.0.1, <34
2
2
  # Nobody ever published stubs that support Python back to before 3.9, until
3
3
  # version 22.6.0 of the Kubernetes module. So we have to use the mismatched
4
4
  # stubs.
@@ -1,7 +1,7 @@
1
1
  connexion[swagger-ui]>=3,<4
2
2
  flask>=3,<4
3
3
  werkzeug>=3,<4
4
- flask-cors>=5.0.1,<6
4
+ flask-cors>=5.0.1,<7
5
5
  gunicorn>=23.0.0,<24
6
6
  celery>=5.4.0,<6
7
7
  wes-service>=5.0.0,<6
@@ -1,5 +1,5 @@
1
1
  dill>=0.3.2, <0.4
2
- requests<=2.31.0
2
+ requests<=2.32.5
3
3
  docker>=6.1.0, <8
4
4
  urllib3>=1.26.0,<3
5
5
  python-dateutil
@@ -11,6 +11,7 @@
11
11
  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
+ from dataclasses import dataclass
14
15
  import enum
15
16
  import logging
16
17
  import os
@@ -72,10 +73,13 @@ class BatchJobExitReason(enum.IntEnum):
72
73
  except ValueError:
73
74
  return str(value)
74
75
 
75
-
76
- class UpdatedBatchJobInfo(NamedTuple):
76
+ @dataclass
77
+ class UpdatedBatchJobInfo:
77
78
  jobID: int
78
- exitStatus: int
79
+ """
80
+ The Toil batch system ID of the job.
81
+ """
82
+ exitStatus: int = EXIT_STATUS_UNAVAILABLE_VALUE
79
83
  """
80
84
  The exit status (integer value) of the job. 0 implies successful.
81
85
 
@@ -83,8 +87,12 @@ class UpdatedBatchJobInfo(NamedTuple):
83
87
  (e.g. job is lost, or otherwise died but actual exit code was not reported).
84
88
  """
85
89
 
86
- exitReason: Optional[BatchJobExitReason]
87
- wallTime: Union[float, int, None]
90
+ exitReason: Optional[BatchJobExitReason] = None
91
+ wallTime: Union[float, int, None] = None
92
+ backing_id: Optional[str] = None
93
+ """
94
+ The identifier for the job in the backing scheduler, if available.
95
+ """
88
96
 
89
97
 
90
98
  # Information required for worker cleanup on shutdown of the batch system.
@@ -159,14 +159,21 @@ class AbstractGridEngineBatchSystem(BatchSystemCleanupSupport):
159
159
  logger.debug("Running %r", subLine)
160
160
  batchJobID = self.boss.with_retries(self.submitJob, subLine)
161
161
  if self.boss._outbox is not None:
162
- # JobID corresponds to the toil version of the jobID, dif from jobstore idea of the id, batchjobid is what we get from slurm
162
+ # JobID corresponds to the toil version of the jobID,
163
+ # different from the jobstore's idea of the id. batchjobid
164
+ # is what we get from e.g. slurm
163
165
  self.boss._outbox.publish(
164
166
  ExternalBatchIdMessage(
165
167
  jobID, batchJobID, self.boss.__class__.__name__
166
168
  )
167
169
  )
168
170
 
169
- logger.debug("Submitted job %s", str(batchJobID))
171
+ logger.info(
172
+ "Job %s with batch system ID %s queued as job %s",
173
+ jobName,
174
+ jobID,
175
+ str(batchJobID)
176
+ )
170
177
 
171
178
  # Store dict for mapping Toil job ID to batch job ID
172
179
  # TODO: Note that this currently stores a tuple of (batch system
@@ -251,8 +258,8 @@ class AbstractGridEngineBatchSystem(BatchSystemCleanupSupport):
251
258
  self.coalesce_job_exit_codes, batch_job_id_list
252
259
  )
253
260
  # We got the statuses as a batch
254
- for running_job_id, status in zip(running_job_list, statuses):
255
- activity = self._handle_job_status(running_job_id, status, activity)
261
+ for running_job_id, status, backing_id in zip(running_job_list, statuses, batch_job_id_list):
262
+ activity = self._handle_job_status(running_job_id, status, activity, backing_id)
256
263
 
257
264
  self._checkOnJobsCache = activity
258
265
  self._checkOnJobsTimestamp = datetime.now()
@@ -263,6 +270,7 @@ class AbstractGridEngineBatchSystem(BatchSystemCleanupSupport):
263
270
  job_id: int,
264
271
  status: Union[int, tuple[int, Optional[BatchJobExitReason]], None],
265
272
  activity: bool,
273
+ backing_id: str,
266
274
  ) -> bool:
267
275
  """
268
276
  Helper method for checkOnJobs to handle job statuses
@@ -275,7 +283,11 @@ class AbstractGridEngineBatchSystem(BatchSystemCleanupSupport):
275
283
  code, reason = status
276
284
  self.updatedJobsQueue.put(
277
285
  UpdatedBatchJobInfo(
278
- jobID=job_id, exitStatus=code, exitReason=reason, wallTime=None
286
+ jobID=job_id,
287
+ exitStatus=code,
288
+ exitReason=reason,
289
+ wallTime=None,
290
+ backing_id=backing_id,
279
291
  )
280
292
  )
281
293
  self.forgetJob(job_id)
@@ -37,6 +37,7 @@ from threading import Condition, Event, RLock, Thread
37
37
  from typing import Any, Callable, Literal, Optional, TypeVar, Union, cast, overload
38
38
 
39
39
  from toil.lib.conversions import opt_strtobool
40
+ from toil.lib.throttle import LocalThrottle
40
41
 
41
42
  if sys.version_info < (3, 10):
42
43
  from typing_extensions import ParamSpec
@@ -281,6 +282,10 @@ class KubernetesBatchSystem(BatchSystemCleanupSupport):
281
282
  # in the queue or any resource becomes available.
282
283
  self._work_available: Condition = Condition(lock=self._mutex)
283
284
 
285
+ # To make sure we don't spam the log when the metrics server is down,
286
+ # we use a throttle
287
+ self._metrics_throttle: LocalThrottle = LocalThrottle(600)
288
+
284
289
  self.schedulingThread: Thread = Thread(target=self._scheduler, daemon=True)
285
290
  self.schedulingThread.start()
286
291
 
@@ -1363,7 +1368,8 @@ class KubernetesBatchSystem(BatchSystemCleanupSupport):
1363
1368
  # This is the sort of error we would expect from an overloaded
1364
1369
  # Kubernetes or a dead metrics service.
1365
1370
  # We can't tell that the pod is stuck, so say that it isn't.
1366
- logger.warning("Could not query metrics service: %s", e)
1371
+ if self._metrics_throttle.throttle(False):
1372
+ logger.warning("Kubernetes metrics service is not available: %s", e)
1367
1373
  return False
1368
1374
  else:
1369
1375
  raise
@@ -1602,6 +1608,7 @@ class KubernetesBatchSystem(BatchSystemCleanupSupport):
1602
1608
  exitStatus=exitCode,
1603
1609
  wallTime=runtime,
1604
1610
  exitReason=exitReason,
1611
+ backing_id=jobObject.metadata.name,
1605
1612
  )
1606
1613
 
1607
1614
  if (exitReason == BatchJobExitReason.FAILED) or (
@@ -1855,7 +1862,11 @@ class KubernetesBatchSystem(BatchSystemCleanupSupport):
1855
1862
 
1856
1863
  # Return the one finished job we found
1857
1864
  return UpdatedBatchJobInfo(
1858
- jobID=jobID, exitStatus=exitCode, wallTime=runtime, exitReason=None
1865
+ jobID=jobID,
1866
+ exitStatus=exitCode,
1867
+ wallTime=runtime,
1868
+ exitReason=None,
1869
+ backing_id=jobObject.metadata.name,
1859
1870
  )
1860
1871
 
1861
1872
  def _waitForJobDeath(self, jobName: str) -> None:
@@ -103,6 +103,9 @@ class MesosBatchSystem(BatchSystemLocalSupport, AbstractScalableBatchSystem, Sch
103
103
  if config.mesos_framework_id is not None:
104
104
  self.mesos_framework_id = config.mesos_framework_id
105
105
 
106
+ # How long in seconds to wait to register before declaring Mesos unreachable.
107
+ self.mesos_timeout = 60
108
+
106
109
  # Written to when Mesos kills tasks, as directed by Toil.
107
110
  # Jobs must not enter this set until they are removed from runningJobMap.
108
111
  self.killedJobIds = set()
@@ -345,17 +348,38 @@ class MesosBatchSystem(BatchSystemLocalSupport, AbstractScalableBatchSystem, Sch
345
348
  framework.roles = config.mesos_role
346
349
  framework.capabilities = [dict(type="MULTI_ROLE")]
347
350
 
351
+ endpoint = self._resolveAddress(self.mesos_endpoint)
352
+ log.info("Connecting to Mesos at %s...", self.mesos_endpoint)
353
+
348
354
  # Make the driver which implements most of the scheduler logic and calls back to us for the user-defined parts.
349
355
  # Make sure it will call us with nice namespace-y addicts
350
356
  self.driver = MesosSchedulerDriver(
351
357
  self,
352
358
  framework,
353
- self._resolveAddress(self.mesos_endpoint),
359
+ endpoint,
354
360
  use_addict=True,
355
361
  implicit_acknowledgements=True,
356
362
  )
357
363
  self.driver.start()
358
364
 
365
+ wait_count = 0
366
+ while self.frameworkId is None:
367
+ # Wait to register with Mesos, and eventually fail if it just isn't
368
+ # responding.
369
+
370
+ # TODO: Use a condition instead of a spin wait.
371
+
372
+ if wait_count >= self.mesos_timeout:
373
+ error_message = f"Could not connect to Mesos endpoint at {self.mesos_endpoint}"
374
+ log.error(error_message)
375
+ self.shutdown()
376
+ raise RuntimeError(error_message)
377
+ elif wait_count > 1 and wait_count % 10 == 0:
378
+ log.warning("Waiting for Mesos registration (try %s/%s)", wait_count, self.mesos_timeout)
379
+ time.sleep(1)
380
+ wait_count += 1
381
+
382
+
359
383
  @staticmethod
360
384
  def _resolveAddress(address):
361
385
  """
@@ -394,10 +418,17 @@ class MesosBatchSystem(BatchSystemLocalSupport, AbstractScalableBatchSystem, Sch
394
418
  """
395
419
  Invoked when the scheduler successfully registers with a Mesos master
396
420
  """
397
- log.debug("Registered with framework ID %s", frameworkId.value)
421
+ log.info("Registered with Mesos as framework ID %s", frameworkId.value)
398
422
  # Save the framework ID
399
423
  self.frameworkId = frameworkId.value
400
424
 
425
+ def error(self, driver, message):
426
+ """
427
+ Invoked when Mesos reports an unrecoverable error.
428
+ """
429
+ log.error("Mesos error: %s", message)
430
+ super().error(driver, message)
431
+
401
432
  def _declineAllOffers(self, driver, offers):
402
433
  for offer in offers:
403
434
  driver.declineOffer(offer.id)