toil 5.12.0__py3-none-any.whl → 6.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. toil/__init__.py +18 -13
  2. toil/batchSystems/abstractBatchSystem.py +39 -13
  3. toil/batchSystems/abstractGridEngineBatchSystem.py +24 -24
  4. toil/batchSystems/awsBatch.py +14 -14
  5. toil/batchSystems/cleanup_support.py +7 -3
  6. toil/batchSystems/contained_executor.py +3 -3
  7. toil/batchSystems/htcondor.py +0 -1
  8. toil/batchSystems/kubernetes.py +34 -31
  9. toil/batchSystems/local_support.py +3 -1
  10. toil/batchSystems/lsf.py +7 -7
  11. toil/batchSystems/mesos/batchSystem.py +7 -7
  12. toil/batchSystems/options.py +32 -83
  13. toil/batchSystems/registry.py +104 -23
  14. toil/batchSystems/singleMachine.py +16 -13
  15. toil/batchSystems/slurm.py +87 -16
  16. toil/batchSystems/torque.py +0 -1
  17. toil/bus.py +44 -8
  18. toil/common.py +544 -753
  19. toil/cwl/__init__.py +28 -32
  20. toil/cwl/cwltoil.py +595 -574
  21. toil/cwl/utils.py +55 -10
  22. toil/exceptions.py +1 -1
  23. toil/fileStores/__init__.py +2 -2
  24. toil/fileStores/abstractFileStore.py +88 -14
  25. toil/fileStores/cachingFileStore.py +610 -549
  26. toil/fileStores/nonCachingFileStore.py +46 -22
  27. toil/job.py +182 -101
  28. toil/jobStores/abstractJobStore.py +161 -95
  29. toil/jobStores/aws/jobStore.py +23 -9
  30. toil/jobStores/aws/utils.py +6 -6
  31. toil/jobStores/fileJobStore.py +116 -18
  32. toil/jobStores/googleJobStore.py +16 -7
  33. toil/jobStores/utils.py +5 -6
  34. toil/leader.py +87 -56
  35. toil/lib/accelerators.py +10 -5
  36. toil/lib/aws/__init__.py +3 -14
  37. toil/lib/aws/ami.py +22 -9
  38. toil/lib/aws/iam.py +21 -13
  39. toil/lib/aws/session.py +2 -16
  40. toil/lib/aws/utils.py +4 -5
  41. toil/lib/compatibility.py +1 -1
  42. toil/lib/conversions.py +26 -3
  43. toil/lib/docker.py +22 -23
  44. toil/lib/ec2.py +10 -6
  45. toil/lib/ec2nodes.py +106 -100
  46. toil/lib/encryption/_nacl.py +2 -1
  47. toil/lib/generatedEC2Lists.py +325 -18
  48. toil/lib/io.py +49 -2
  49. toil/lib/misc.py +1 -1
  50. toil/lib/resources.py +9 -2
  51. toil/lib/threading.py +101 -38
  52. toil/options/common.py +736 -0
  53. toil/options/cwl.py +336 -0
  54. toil/options/wdl.py +37 -0
  55. toil/provisioners/abstractProvisioner.py +9 -4
  56. toil/provisioners/aws/__init__.py +3 -6
  57. toil/provisioners/aws/awsProvisioner.py +6 -0
  58. toil/provisioners/clusterScaler.py +3 -2
  59. toil/provisioners/gceProvisioner.py +2 -2
  60. toil/realtimeLogger.py +2 -1
  61. toil/resource.py +24 -18
  62. toil/server/app.py +2 -3
  63. toil/server/cli/wes_cwl_runner.py +4 -4
  64. toil/server/utils.py +1 -1
  65. toil/server/wes/abstract_backend.py +3 -2
  66. toil/server/wes/amazon_wes_utils.py +5 -4
  67. toil/server/wes/tasks.py +2 -3
  68. toil/server/wes/toil_backend.py +2 -10
  69. toil/server/wsgi_app.py +2 -0
  70. toil/serviceManager.py +12 -10
  71. toil/statsAndLogging.py +41 -9
  72. toil/test/__init__.py +29 -54
  73. toil/test/batchSystems/batchSystemTest.py +11 -111
  74. toil/test/batchSystems/test_slurm.py +24 -8
  75. toil/test/cactus/__init__.py +0 -0
  76. toil/test/cactus/test_cactus_integration.py +58 -0
  77. toil/test/cwl/cwlTest.py +438 -223
  78. toil/test/cwl/glob_dir.cwl +15 -0
  79. toil/test/cwl/preemptible.cwl +21 -0
  80. toil/test/cwl/preemptible_expression.cwl +28 -0
  81. toil/test/cwl/revsort.cwl +1 -1
  82. toil/test/cwl/revsort2.cwl +1 -1
  83. toil/test/docs/scriptsTest.py +2 -3
  84. toil/test/jobStores/jobStoreTest.py +34 -21
  85. toil/test/lib/aws/test_iam.py +4 -14
  86. toil/test/lib/aws/test_utils.py +0 -3
  87. toil/test/lib/dockerTest.py +4 -4
  88. toil/test/lib/test_ec2.py +12 -17
  89. toil/test/mesos/helloWorld.py +4 -5
  90. toil/test/mesos/stress.py +1 -1
  91. toil/test/{wdl/conftest.py → options/__init__.py} +0 -10
  92. toil/test/options/options.py +37 -0
  93. toil/test/provisioners/aws/awsProvisionerTest.py +9 -5
  94. toil/test/provisioners/clusterScalerTest.py +6 -4
  95. toil/test/provisioners/clusterTest.py +23 -11
  96. toil/test/provisioners/gceProvisionerTest.py +0 -6
  97. toil/test/provisioners/restartScript.py +3 -2
  98. toil/test/server/serverTest.py +1 -1
  99. toil/test/sort/restart_sort.py +2 -1
  100. toil/test/sort/sort.py +2 -1
  101. toil/test/sort/sortTest.py +2 -13
  102. toil/test/src/autoDeploymentTest.py +45 -45
  103. toil/test/src/busTest.py +5 -5
  104. toil/test/src/checkpointTest.py +2 -2
  105. toil/test/src/deferredFunctionTest.py +1 -1
  106. toil/test/src/fileStoreTest.py +32 -16
  107. toil/test/src/helloWorldTest.py +1 -1
  108. toil/test/src/importExportFileTest.py +1 -1
  109. toil/test/src/jobDescriptionTest.py +2 -1
  110. toil/test/src/jobServiceTest.py +1 -1
  111. toil/test/src/jobTest.py +18 -18
  112. toil/test/src/miscTests.py +5 -3
  113. toil/test/src/promisedRequirementTest.py +3 -3
  114. toil/test/src/realtimeLoggerTest.py +1 -1
  115. toil/test/src/resourceTest.py +2 -2
  116. toil/test/src/restartDAGTest.py +1 -1
  117. toil/test/src/resumabilityTest.py +36 -2
  118. toil/test/src/retainTempDirTest.py +1 -1
  119. toil/test/src/systemTest.py +2 -2
  120. toil/test/src/toilContextManagerTest.py +2 -2
  121. toil/test/src/userDefinedJobArgTypeTest.py +1 -1
  122. toil/test/utils/toilDebugTest.py +98 -32
  123. toil/test/utils/toilKillTest.py +2 -2
  124. toil/test/utils/utilsTest.py +23 -3
  125. toil/test/wdl/wdltoil_test.py +223 -45
  126. toil/toilState.py +7 -6
  127. toil/utils/toilClean.py +1 -1
  128. toil/utils/toilConfig.py +36 -0
  129. toil/utils/toilDebugFile.py +60 -33
  130. toil/utils/toilDebugJob.py +39 -12
  131. toil/utils/toilDestroyCluster.py +1 -1
  132. toil/utils/toilKill.py +1 -1
  133. toil/utils/toilLaunchCluster.py +13 -2
  134. toil/utils/toilMain.py +3 -2
  135. toil/utils/toilRsyncCluster.py +1 -1
  136. toil/utils/toilSshCluster.py +1 -1
  137. toil/utils/toilStats.py +445 -305
  138. toil/utils/toilStatus.py +2 -5
  139. toil/version.py +10 -10
  140. toil/wdl/utils.py +2 -122
  141. toil/wdl/wdltoil.py +1257 -492
  142. toil/worker.py +55 -46
  143. toil-6.1.0.dist-info/METADATA +124 -0
  144. toil-6.1.0.dist-info/RECORD +241 -0
  145. {toil-5.12.0.dist-info → toil-6.1.0.dist-info}/WHEEL +1 -1
  146. {toil-5.12.0.dist-info → toil-6.1.0.dist-info}/entry_points.txt +0 -1
  147. toil/batchSystems/parasol.py +0 -379
  148. toil/batchSystems/tes.py +0 -459
  149. toil/test/batchSystems/parasolTestSupport.py +0 -117
  150. toil/test/wdl/builtinTest.py +0 -506
  151. toil/test/wdl/toilwdlTest.py +0 -522
  152. toil/wdl/toilwdl.py +0 -141
  153. toil/wdl/versions/dev.py +0 -107
  154. toil/wdl/versions/draft2.py +0 -980
  155. toil/wdl/versions/v1.py +0 -794
  156. toil/wdl/wdl_analysis.py +0 -116
  157. toil/wdl/wdl_functions.py +0 -997
  158. toil/wdl/wdl_synthesis.py +0 -1011
  159. toil/wdl/wdl_types.py +0 -243
  160. toil-5.12.0.dist-info/METADATA +0 -118
  161. toil-5.12.0.dist-info/RECORD +0 -244
  162. /toil/{wdl/versions → options}/__init__.py +0 -0
  163. {toil-5.12.0.dist-info → toil-6.1.0.dist-info}/LICENSE +0 -0
  164. {toil-5.12.0.dist-info → toil-6.1.0.dist-info}/top_level.txt +0 -0
toil/worker.py CHANGED
@@ -11,7 +11,6 @@
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
- import argparse
15
14
  import base64
16
15
  import copy
17
16
  import json
@@ -29,6 +28,8 @@ import traceback
29
28
  from contextlib import contextmanager
30
29
  from typing import Any, Callable, Iterator, List, Optional
31
30
 
31
+ from configargparse import ArgParser
32
+
32
33
  from toil import logProcessContext
33
34
  from toil.common import Config, Toil, safeUnpickleFromStream
34
35
  from toil.cwl.utils import (CWL_UNSUPPORTED_REQUIREMENT_EXCEPTION,
@@ -49,7 +50,7 @@ logger = logging.getLogger(__name__)
49
50
  class StatsDict(MagicExpando):
50
51
  """Subclass of MagicExpando for type-checking purposes."""
51
52
 
52
- jobs: List[str]
53
+ jobs: List[MagicExpando]
53
54
 
54
55
 
55
56
  def nextChainable(predecessor: JobDescription, jobStore: AbstractJobStore, config: Config) -> Optional[JobDescription]:
@@ -222,7 +223,8 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
222
223
  #Setup the temporary directories.
223
224
  ##########################################
224
225
  # Dir to put all this worker's temp files in.
225
- assert config.workflowID is not None
226
+ if config.workflowID is None:
227
+ raise RuntimeError("The worker workflow ID was never set.")
226
228
  toilWorkflowDir = Toil.getLocalWorkflowDir(config.workflowID, config.workDir)
227
229
  # Dir to put lock files in, ideally not on NFS.
228
230
  toil_coordination_dir = Toil.get_local_workflow_coordination_dir(config.workflowID, config.workDir, config.coordination_dir)
@@ -250,8 +252,8 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
250
252
 
251
253
  if redirectOutputToLogFile:
252
254
  # Announce that we are redirecting logging, and where it will now go.
253
- # This is important if we are trying to manually trace a faulty worker invocation.
254
- logger.info("Redirecting logging to %s", tempWorkerLogPath)
255
+ # This is only important if we are trying to manually trace a faulty worker invocation.
256
+ logger.debug("Redirecting logging to %s", tempWorkerLogPath)
255
257
  sys.stdout.flush()
256
258
  sys.stderr.flush()
257
259
 
@@ -285,13 +287,14 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
285
287
 
286
288
  jobAttemptFailed = False
287
289
  failure_exit_code = 1
290
+ first_job_cores = None
288
291
  statsDict = StatsDict() # type: ignore[no-untyped-call]
289
292
  statsDict.jobs = []
290
- statsDict.workers.logsToMaster = []
293
+ statsDict.workers.logs_to_leader = []
294
+ statsDict.workers.logging_user_streams = []
291
295
 
292
296
  def blockFn() -> bool:
293
297
  return True
294
- listOfJobs = [jobName]
295
298
  job = None
296
299
  try:
297
300
 
@@ -311,7 +314,6 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
311
314
  ##########################################
312
315
 
313
316
  jobDesc = jobStore.load_job(jobStoreID)
314
- listOfJobs[0] = str(jobDesc)
315
317
  logger.debug("Parsed job description")
316
318
 
317
319
  ##########################################
@@ -345,7 +347,8 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
345
347
  if next(jobDesc.successorsAndServiceHosts(), None) is not None:
346
348
  logger.debug("Checkpoint has failed; restoring")
347
349
  # Reduce the try count
348
- assert jobDesc.remainingTryCount >= 0
350
+ if jobDesc.remainingTryCount < 0:
351
+ raise RuntimeError("The try count of the job cannot be negative.")
349
352
  jobDesc.remainingTryCount = max(0, jobDesc.remainingTryCount - 1)
350
353
  jobDesc.restartCheckpoint(jobStore)
351
354
  # Otherwise, the job and successors are done, and we can cleanup stuff we couldn't clean
@@ -360,6 +363,8 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
360
363
  ##########################################
361
364
 
362
365
  if config.stats:
366
+ # Remember the cores from the first job, which is how many we have reserved for us.
367
+ statsDict.workers.requested_cores = jobDesc.cores
363
368
  startClock = get_total_cpu_time()
364
369
 
365
370
  startTime = time.time()
@@ -371,7 +376,8 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
371
376
  logger.info("Working on job %s", jobDesc)
372
377
 
373
378
  if jobDesc.command is not None:
374
- assert jobDesc.command.startswith("_toil ")
379
+ if not jobDesc.command.startswith("_toil "):
380
+ raise RuntimeError("Job command must start with '_toil' before being converted to an executable command.")
375
381
  logger.debug("Got a command to run: %s" % jobDesc.command)
376
382
  # Load the job. It will use the same JobDescription we have been using.
377
383
  job = Job.loadJob(jobStore, jobDesc)
@@ -402,8 +408,13 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
402
408
  # versions of Cactus.
403
409
  job._runner(jobGraph=None, jobStore=jobStore, fileStore=fileStore, defer=defer)
404
410
 
411
+ # When the executor for the job finishes it will
412
+ # kick off a commit with the command link to the
413
+ # job body cut.
414
+
405
415
  # Accumulate messages from this job & any subsequent chained jobs
406
- statsDict.workers.logsToMaster += fileStore.loggingMessages
416
+ statsDict.workers.logs_to_leader += fileStore.logging_messages
417
+ statsDict.workers.logging_user_streams += fileStore.logging_user_streams
407
418
 
408
419
  logger.info("Completed body for %s", jobDesc)
409
420
 
@@ -426,7 +437,7 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
426
437
 
427
438
  logger.info("Not chaining from job %s", jobDesc)
428
439
 
429
- # TODO: Somehow the commit happens even if we don't start it here.
440
+ # No need to commit because the _executor context manager did it.
430
441
 
431
442
  break
432
443
 
@@ -434,33 +445,25 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
434
445
 
435
446
  ##########################################
436
447
  # We have a single successor job that is not a checkpoint job. We
437
- # reassign the ID of the current JobDescription to the successor.
438
- # We can then delete the successor JobDescription (under its old
439
- # ID) in the jobStore, as it is wholly incorporated into the
440
- # current one.
448
+ # reassign the ID of the current JobDescription to the successor,
449
+ # and take responsibility for both jobs' associated files in the
450
+ # combined job.
441
451
  ##########################################
442
452
 
443
453
  # Make sure nothing has gone wrong and we can really chain
444
- assert jobDesc.memory >= successor.memory
445
- assert jobDesc.cores >= successor.cores
454
+ if jobDesc.memory < successor.memory:
455
+ raise RuntimeError("Cannot chain jobs. A job's memory cannot be less than it's successor.")
456
+ if jobDesc.cores < successor.cores:
457
+ raise RuntimeError("Cannot chain jobs. A job's cores cannot be less than it's successor.")
446
458
 
447
459
  # Save the successor's original ID, so we can clean it (and its
448
460
  # body) up after we finish executing it.
449
461
  successorID = successor.jobStoreID
450
462
 
451
- # add the successor to the list of jobs run
452
- listOfJobs.append(str(successor))
453
-
454
463
  # Now we need to become that successor, under the original ID.
455
464
  successor.replace(jobDesc)
456
465
  jobDesc = successor
457
466
 
458
- # Problem: successor's job body is a file that will be cleaned up
459
- # when we delete the successor job by ID. We can't just move it. So
460
- # we need to roll up the deletion of the successor job by ID with
461
- # the deletion of the job ID we're currently working on.
462
- jobDesc.jobsToDelete.append(successorID)
463
-
464
467
  # Clone the now-current JobDescription (which used to be the successor).
465
468
  # TODO: Why??? Can we not?
466
469
  jobDesc = copy.deepcopy(jobDesc)
@@ -476,15 +479,6 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
476
479
  # This will update the job once the previous job is done updating
477
480
  fileStore.startCommit(jobState=True)
478
481
 
479
- # Clone the current job description again, so that further updates
480
- # to it (such as new successors being added when it runs) occur
481
- # after the commit process we just kicked off, and aren't committed
482
- # early or partially.
483
- jobDesc = copy.deepcopy(jobDesc)
484
- # Bump its version since saving will do that too and we don't want duplicate versions.
485
- jobDesc.pre_update_hook()
486
-
487
-
488
482
  logger.debug("Starting the next job")
489
483
 
490
484
  ##########################################
@@ -495,6 +489,16 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
495
489
  statsDict.workers.time = str(time.time() - startTime)
496
490
  statsDict.workers.clock = str(totalCPUTime - startClock)
497
491
  statsDict.workers.memory = str(totalMemoryUsage)
492
+ # Say the worker used the max disk we saw from any job
493
+ max_bytes = 0
494
+ for job_stats in statsDict.jobs:
495
+ if "disk" in job_stats:
496
+ max_bytes = max(max_bytes, int(job_stats.disk))
497
+ statsDict.workers.disk = str(max_bytes)
498
+ # Count the jobs executed.
499
+ # TODO: toil stats could compute this but its parser is too general to hook into simply.
500
+ statsDict.workers.jobs_run = len(statsDict.jobs)
501
+
498
502
 
499
503
  # log the worker log path here so that if the file is truncated the path can still be found
500
504
  if redirectOutputToLogFile:
@@ -505,13 +509,16 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
505
509
  ##########################################
506
510
  #Trapping where worker goes wrong
507
511
  ##########################################
508
- except Exception as e: #Case that something goes wrong in worker
512
+ except BaseException as e: #Case that something goes wrong in worker, or we are asked to stop
509
513
  traceback.print_exc()
510
514
  logger.error("Exiting the worker because of a failed job on host %s", socket.gethostname())
511
515
  if isinstance(e, CWL_UNSUPPORTED_REQUIREMENT_EXCEPTION):
512
516
  # We need to inform the leader that this is a CWL workflow problem
513
517
  # and it needs to inform its caller.
514
518
  failure_exit_code = CWL_UNSUPPORTED_REQUIREMENT_EXIT_CODE
519
+ elif isinstance(e, SystemExit) and isinstance(e.code, int) and e.code != 0:
520
+ # We're meant to be exiting with a particular code.
521
+ failure_exit_code = e.code
515
522
  AbstractFileStore._terminateEvent.set()
516
523
  finally:
517
524
  # Get rid of our deferred function manager now so we can't mistake it
@@ -587,7 +594,6 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
587
594
  jobDesc.logJobStoreFileID = logJobStoreFileID = jobStore.getEmptyFileStoreID(
588
595
  jobDesc.jobStoreID, cleanup=True
589
596
  )
590
- jobDesc.chainedJobs = listOfJobs
591
597
  with jobStore.update_file_stream(logJobStoreFileID) as w:
592
598
  with open(tempWorkerLogPath, 'rb') as f:
593
599
  if os.path.getsize(tempWorkerLogPath) > logFileByteReportLimit !=0:
@@ -611,10 +617,13 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
611
617
  # Make sure lines are Unicode so they can be JSON serialized as part of the dict.
612
618
  # We may have damaged the Unicode text by cutting it at an arbitrary byte so we drop bad characters.
613
619
  logMessages = [line.decode('utf-8', 'skip') for line in logFile.read().splitlines()]
614
- statsDict.logs.names = listOfJobs
620
+ statsDict.logs.names = [names.stats_name for names in jobDesc.get_chain()]
615
621
  statsDict.logs.messages = logMessages
616
622
 
617
- if (debugging or config.stats or statsDict.workers.logsToMaster) and not jobAttemptFailed: # We have stats/logging to report back
623
+ if debugging or config.stats or statsDict.workers.logs_to_leader or statsDict.workers.logging_user_streams:
624
+ # We have stats/logging to report back.
625
+ # We report even if the job attempt failed.
626
+ # TODO: Will that upset analysis of the stats?
618
627
  jobStore.write_logs(json.dumps(statsDict, ensure_ascii=True))
619
628
 
620
629
  # Remove the temp dir
@@ -637,17 +646,17 @@ def workerScript(jobStore: AbstractJobStore, config: Config, jobName: str, jobSt
637
646
 
638
647
  # This must happen after the log file is done with, else there is no place to put the log
639
648
  if (not jobAttemptFailed) and jobDesc.is_subtree_done():
640
- # We can now safely get rid of the JobDescription, and all jobs it chained up
641
- for otherID in jobDesc.jobsToDelete:
642
- jobStore.delete_job(otherID)
643
- jobStore.delete_job(str(jobDesc.jobStoreID))
649
+ for merged_in in jobDesc.get_chain():
650
+ # We can now safely get rid of the JobDescription, and all jobs it chained up
651
+ jobStore.delete_job(merged_in.job_store_id)
652
+
644
653
 
645
654
  if jobAttemptFailed:
646
655
  return failure_exit_code
647
656
  else:
648
657
  return 0
649
658
 
650
- def parse_args(args: List[str]) -> argparse.Namespace:
659
+ def parse_args(args: List[str]) -> Any:
651
660
  """
652
661
  Parse command-line arguments to the worker.
653
662
  """
@@ -656,7 +665,7 @@ def parse_args(args: List[str]) -> argparse.Namespace:
656
665
  args = args[1:]
657
666
 
658
667
  # Make the parser
659
- parser = argparse.ArgumentParser()
668
+ parser = ArgParser()
660
669
 
661
670
  # Now add all the options to it
662
671
 
@@ -0,0 +1,124 @@
1
+ Metadata-Version: 2.1
2
+ Name: toil
3
+ Version: 6.1.0
4
+ Summary: Pipeline management software for clusters.
5
+ Home-page: https://github.com/DataBiosphere/toil
6
+ Author: Benedict Paten and the Toil community
7
+ Author-email: toil-community@googlegroups.com
8
+ License: Apache License v2.0
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Environment :: Console
11
+ Classifier: Intended Audience :: Developers
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: Intended Audience :: Healthcare Industry
14
+ Classifier: License :: OSI Approved :: Apache Software License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: MacOS :: MacOS X
17
+ Classifier: Operating System :: POSIX
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Python :: 3.8
20
+ Classifier: Programming Language :: Python :: 3.9
21
+ Classifier: Programming Language :: Python :: 3.10
22
+ Classifier: Programming Language :: Python :: 3.11
23
+ Classifier: Topic :: Scientific/Engineering
24
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
25
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
26
+ Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
27
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
28
+ Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
29
+ Classifier: Topic :: System :: Distributed Computing
30
+ Classifier: Topic :: Utilities
31
+ Requires-Python: >=3.8
32
+ License-File: LICENSE
33
+ Requires-Dist: dill <0.4,>=0.3.2
34
+ Requires-Dist: requests <3,>=2
35
+ Requires-Dist: docker <8,>=6.1.0
36
+ Requires-Dist: urllib3 <3,>=1.26.0
37
+ Requires-Dist: python-dateutil
38
+ Requires-Dist: psutil <6,>=3.0.1
39
+ Requires-Dist: PyPubSub <5,>=4.0.3
40
+ Requires-Dist: addict <2.5,>=2.2.1
41
+ Requires-Dist: pytz >=2012
42
+ Requires-Dist: enlighten <2,>=1.5.2
43
+ Requires-Dist: configargparse <2,>=1.7
44
+ Requires-Dist: ruamel.yaml >=0.15
45
+ Requires-Dist: pyyaml <7,>=6
46
+ Requires-Dist: typing-extensions <5,>=4.6.2
47
+ Provides-Extra: all
48
+ Requires-Dist: boto <3,>=2.48.0 ; extra == 'all'
49
+ Requires-Dist: boto3-stubs[boto3,iam,s3,sdb,sts] <2,>=1.28.3.post2 ; extra == 'all'
50
+ Requires-Dist: mypy-boto3-iam <2,>=1.28.3.post2 ; extra == 'all'
51
+ Requires-Dist: moto <5,>=4.1.11 ; extra == 'all'
52
+ Requires-Dist: cwltool ==3.1.20240112164112 ; extra == 'all'
53
+ Requires-Dist: schema-salad <9,>=8.4.20230128170514 ; extra == 'all'
54
+ Requires-Dist: galaxy-tool-util <23 ; extra == 'all'
55
+ Requires-Dist: galaxy-util <23 ; extra == 'all'
56
+ Requires-Dist: ruamel.yaml <=0.19,>=0.15 ; extra == 'all'
57
+ Requires-Dist: ruamel.yaml.clib >=0.2.6 ; extra == 'all'
58
+ Requires-Dist: networkx !=2.8.1,<4 ; extra == 'all'
59
+ Requires-Dist: CacheControl[filecache] ; extra == 'all'
60
+ Requires-Dist: pynacl <2,>=1.4.0 ; extra == 'all'
61
+ Requires-Dist: apache-libcloud <3,>=2.2.1 ; extra == 'all'
62
+ Requires-Dist: google-cloud-storage <=2.8.0,>=2 ; extra == 'all'
63
+ Requires-Dist: google-auth <3,>=2.18.1 ; extra == 'all'
64
+ Requires-Dist: kubernetes <22,>=12.0.1 ; extra == 'all'
65
+ Requires-Dist: kubernetes-stubs ==v22.6.0post1 ; extra == 'all'
66
+ Requires-Dist: types-urllib3 ; extra == 'all'
67
+ Requires-Dist: types-PyYAML ; extra == 'all'
68
+ Requires-Dist: idna >=2 ; extra == 'all'
69
+ Requires-Dist: miniwdl ==1.11.1 ; extra == 'all'
70
+ Requires-Dist: wdlparse ==0.1.0 ; extra == 'all'
71
+ Requires-Dist: connexion[swagger-ui] <3,>=2.10.0 ; extra == 'all'
72
+ Requires-Dist: flask <3,>=2.0 ; extra == 'all'
73
+ Requires-Dist: werkzeug <3,>=2.0 ; extra == 'all'
74
+ Requires-Dist: flask-cors ==4.0.0 ; extra == 'all'
75
+ Requires-Dist: gunicorn ==21.2.0 ; extra == 'all'
76
+ Requires-Dist: celery <6,>=5.1.0 ; extra == 'all'
77
+ Requires-Dist: wes-service <5,>=4.0.0 ; extra == 'all'
78
+ Requires-Dist: ruamel.yaml <0.19,>=0.15 ; extra == 'all'
79
+ Requires-Dist: pymesos <0.4,>=0.3.15 ; (python_version < "3.11") and extra == 'all'
80
+ Requires-Dist: graphlib-backport ==1.0 ; (python_version < "3.9") and extra == 'all'
81
+ Provides-Extra: aws
82
+ Requires-Dist: boto <3,>=2.48.0 ; extra == 'aws'
83
+ Requires-Dist: boto3-stubs[boto3,iam,s3,sdb,sts] <2,>=1.28.3.post2 ; extra == 'aws'
84
+ Requires-Dist: mypy-boto3-iam <2,>=1.28.3.post2 ; extra == 'aws'
85
+ Requires-Dist: moto <5,>=4.1.11 ; extra == 'aws'
86
+ Provides-Extra: cwl
87
+ Requires-Dist: cwltool ==3.1.20240112164112 ; extra == 'cwl'
88
+ Requires-Dist: schema-salad <9,>=8.4.20230128170514 ; extra == 'cwl'
89
+ Requires-Dist: galaxy-tool-util <23 ; extra == 'cwl'
90
+ Requires-Dist: galaxy-util <23 ; extra == 'cwl'
91
+ Requires-Dist: ruamel.yaml <=0.19,>=0.15 ; extra == 'cwl'
92
+ Requires-Dist: ruamel.yaml.clib >=0.2.6 ; extra == 'cwl'
93
+ Requires-Dist: networkx !=2.8.1,<4 ; extra == 'cwl'
94
+ Requires-Dist: CacheControl[filecache] ; extra == 'cwl'
95
+ Provides-Extra: encryption
96
+ Requires-Dist: pynacl <2,>=1.4.0 ; extra == 'encryption'
97
+ Provides-Extra: google
98
+ Requires-Dist: apache-libcloud <3,>=2.2.1 ; extra == 'google'
99
+ Requires-Dist: google-cloud-storage <=2.8.0,>=2 ; extra == 'google'
100
+ Requires-Dist: google-auth <3,>=2.18.1 ; extra == 'google'
101
+ Provides-Extra: htcondor
102
+ Requires-Dist: htcondor <11,>=10.2.0.post1 ; (sys_platform!="darwin") and extra == 'htcondor'
103
+ Provides-Extra: kubernetes
104
+ Requires-Dist: kubernetes <22,>=12.0.1 ; extra == 'kubernetes'
105
+ Requires-Dist: kubernetes-stubs ==v22.6.0post1 ; extra == 'kubernetes'
106
+ Requires-Dist: types-urllib3 ; extra == 'kubernetes'
107
+ Requires-Dist: types-PyYAML ; extra == 'kubernetes'
108
+ Requires-Dist: idna >=2 ; extra == 'kubernetes'
109
+ Provides-Extra: mesos
110
+ Requires-Dist: pymesos <0.4,>=0.3.15 ; (python_version < "3.11") and extra == 'mesos'
111
+ Provides-Extra: server
112
+ Requires-Dist: connexion[swagger-ui] <3,>=2.10.0 ; extra == 'server'
113
+ Requires-Dist: flask <3,>=2.0 ; extra == 'server'
114
+ Requires-Dist: werkzeug <3,>=2.0 ; extra == 'server'
115
+ Requires-Dist: flask-cors ==4.0.0 ; extra == 'server'
116
+ Requires-Dist: gunicorn ==21.2.0 ; extra == 'server'
117
+ Requires-Dist: celery <6,>=5.1.0 ; extra == 'server'
118
+ Requires-Dist: wes-service <5,>=4.0.0 ; extra == 'server'
119
+ Requires-Dist: ruamel.yaml <0.19,>=0.15 ; extra == 'server'
120
+ Provides-Extra: wdl
121
+ Requires-Dist: miniwdl ==1.11.1 ; extra == 'wdl'
122
+ Requires-Dist: wdlparse ==0.1.0 ; extra == 'wdl'
123
+ Requires-Dist: graphlib-backport ==1.0 ; (python_version < "3.9") and extra == 'wdl'
124
+
@@ -0,0 +1,241 @@
1
+ toil/__init__.py,sha256=7Rj4nfBg1bZoiUGi5qbCQKPBydtj-ulj735-AWx8EHY,31427
2
+ toil/bus.py,sha256=I3H7nYzbBjCm7L3QkNmI-S_JAXUyy60DXXFURgVfMIg,29159
3
+ toil/common.py,sha256=rMc9_ECeecbma18uwN1PS_HEKAAdi_fdtgjf4Ax_23M,70917
4
+ toil/deferred.py,sha256=vGr0IrCvpTiCDR05d5wwmqs6WrifgqDRjDjS24ozJPA,13953
5
+ toil/exceptions.py,sha256=3c87Jo1NKBz8CcQA3GEm-r57DnJAfWiGFMKQFYAlJOo,1835
6
+ toil/job.py,sha256=GDMObf7tCyND99cLb4XR07lXGJ_REWlzKKOVK8s0QgE,149335
7
+ toil/leader.py,sha256=Xkwy9g3BiU0Cx9vJeBSrvWqM4XFpZTU8vRbZpYDNaCM,77216
8
+ toil/realtimeLogger.py,sha256=eB_6E9lJYMrsjAswsdI6EiFBJeYO1iMk6S3OHBYVPsk,9733
9
+ toil/resource.py,sha256=l_Kdf63fHkWl8eUFFTQc7Br4k56LUd4bgB1LnvhbveM,24869
10
+ toil/serviceManager.py,sha256=86GYynCH7wh7nDswvQc4F1OdGl2OQmC6wiW_si3uatA,19084
11
+ toil/statsAndLogging.py,sha256=1HNcE35CFeBX-1Ikpj7oqHsSDd7UlBJDKeSAhrdlfTc,14455
12
+ toil/toilState.py,sha256=EIfKb8DSfm33DNBXZIXAa_TZJdkMcygGI3CmdWp0sEY,14907
13
+ toil/version.py,sha256=Yzmq-I9oCvrZhIDnlptJ_iJ4ucMUrnMip0ug8ngzVkw,491
14
+ toil/worker.py,sha256=qzSfEgvpU7_G3-r7BNrN7hRQDuTtvZV59QLB8wOnlp0,32574
15
+ toil/batchSystems/__init__.py,sha256=UqxHmoYxHGYSnlEpmZCw1GnnpGFASzZlVG365E8_muY,1035
16
+ toil/batchSystems/abstractBatchSystem.py,sha256=zk13Pw8f86wTtbRX_tWHv_B-uqOlwZVs20PaWfNEn4Y,32794
17
+ toil/batchSystems/abstractGridEngineBatchSystem.py,sha256=TPhtWOu0t2W7ntFSA3XUfPBrJD12AsAL_-kxPafVC8g,20963
18
+ toil/batchSystems/awsBatch.py,sha256=aPxHzBsf_9PCQuEkkRz5wrNOwh4Yf2Wr0jaP1M6SYmQ,25296
19
+ toil/batchSystems/cleanup_support.py,sha256=SKx9804ZvcdgnuY1a7kU47G8Yj-1G13MVVx8dxTnj8o,4069
20
+ toil/batchSystems/contained_executor.py,sha256=582lofKCez9RWfQ3H5k1vpNVYgZ2YavooiWnH-nrBBk,5193
21
+ toil/batchSystems/gridengine.py,sha256=Njkh4FJDvz3nqnLTaPgExSBGbOadhM7ua-ofQyFhhyc,7752
22
+ toil/batchSystems/htcondor.py,sha256=a1KyCJmtGGPPaVxcCdDFvTcaX19CTjTlgKxDtgTCEqo,17293
23
+ toil/batchSystems/kubernetes.py,sha256=AnNB5LxkB-9FmofWlXpF8eySaW1qVq2a1BXKrOMzkHc,84697
24
+ toil/batchSystems/local_support.py,sha256=EI3R6pkGRQXQodAqDHOVAqKa9Zytlh1hHjjnciydGu0,3903
25
+ toil/batchSystems/lsf.py,sha256=HNJdmUG6_uOe6UsnD0ecUiilnKRM2-2jydHnx_gGX7c,17376
26
+ toil/batchSystems/lsfHelper.py,sha256=JJE3OHoye-V55TGMN03s-t56Lf2ijrhAjZqInLccF7Q,7205
27
+ toil/batchSystems/options.py,sha256=bsqrv8qBvPdaGcyDCESzArLmqB-b1GdE98n058niPMY,7654
28
+ toil/batchSystems/registry.py,sha256=7Mp_KJWIgU0YEXVELITifPX0yZugkP0sV36W8fa1RZk,6659
29
+ toil/batchSystems/singleMachine.py,sha256=A9zsbYj6TqASVMboQKDaYeTijjE1rqVwxQNSO5Lc9rs,38113
30
+ toil/batchSystems/slurm.py,sha256=FyTrugG9maY-wfsW10q8MIqMgKAaxSAnBpXKr4-shug,22635
31
+ toil/batchSystems/torque.py,sha256=rEvrvKnw2FUAMPpwO-9h2qpifLd1pFv2zzDxiBKD0yQ,11625
32
+ toil/batchSystems/mesos/__init__.py,sha256=_klpvdKQWxDTeL1fbPdItd-Lx3KJnNMAzHJtUqsbykU,3354
33
+ toil/batchSystems/mesos/batchSystem.py,sha256=Iosg58Uy3BnFk8VoM7vMM-MStKC-Kgoe0CAb7YKXOpY,38900
34
+ toil/batchSystems/mesos/conftest.py,sha256=n1ZIXzZP0msJlZL_ZIG84trKifxFLRLr2uIr-EjDucQ,836
35
+ toil/batchSystems/mesos/executor.py,sha256=KfreVYrjMaRRzpQGhxbi2zbBQj6fUQ0EniiS6sbKPOE,12376
36
+ toil/batchSystems/mesos/test/__init__.py,sha256=IZoexyiZcAPdv_L39v7mMO7xVHcMuEn7f_M4gyeh-Fk,4670
37
+ toil/cwl/__init__.py,sha256=bIVIPfacZlHZVPrzjXDD5cV4a1VCGpwErJpO5_ta9Bk,2131
38
+ toil/cwl/conftest.py,sha256=R6Jw5-PeTCK0rapfHmV_VJwVcqlVbO5w3cFUbaIWUnk,848
39
+ toil/cwl/cwltoil.py,sha256=PhORC-4EzKEIwqoDu7nIIVqlvfOAJ_Hr6iObBuLdqGA,159478
40
+ toil/cwl/utils.py,sha256=l-B9zy9cTiOEi0kybE3CzUzkX1VtnIPTkBvGwXtxUB4,8014
41
+ toil/fileStores/__init__.py,sha256=kW1QFBZLJoagBdmxoaABN6peG46f5owJurISVXkbEIg,2390
42
+ toil/fileStores/abstractFileStore.py,sha256=EgksAy4Y2kUFYV-63I-6sD5FGwsFe3el8dcCvyyweJs,30374
43
+ toil/fileStores/cachingFileStore.py,sha256=N4hXE1j89w8lXy1hR4O1cvlma4pXRnniiw6e7Zy3iXA,91851
44
+ toil/fileStores/nonCachingFileStore.py,sha256=WyIJO0r90aukWBX1Gho8OQ8vuinrrilxN2fA3aQrGhs,15355
45
+ toil/jobStores/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
+ toil/jobStores/abstractJobStore.py,sha256=VSYCgIovwj6McZehRAAvApUoQfhxH_el2NReDCmKwpw,77125
47
+ toil/jobStores/conftest.py,sha256=n4dffd8QPoA_kenbHE_XzA2bf1ZTNlXux8ffukB1qCk,834
48
+ toil/jobStores/fileJobStore.py,sha256=F4FAJun6oV6GgV7Uj6JcYMdbXT2OcvcFikXt0Hdhm9I,48316
49
+ toil/jobStores/googleJobStore.py,sha256=psqJPvhX_H5WVu9UQr7KlqNdh4hjdcaxHFYaGkSCHFs,24101
50
+ toil/jobStores/utils.py,sha256=tg_MG-3GFVKZxILr7FykBq-NfVugD3j7apkKJLXZtOs,15235
51
+ toil/jobStores/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ toil/jobStores/aws/jobStore.py,sha256=KNaESQm_vs2fMRT9NQLEoc1dxCRnzV8Txj_MTwj_Mnk,78343
53
+ toil/jobStores/aws/utils.py,sha256=XNrXsyZhnoZUf-jE3hdP3cejO5wnW2A1in2TmtO7xy8,19340
54
+ toil/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
+ toil/lib/accelerators.py,sha256=8zkcZREND57xKWsONfV81o0_zyiTbMYL7VI7RElH94M,5551
56
+ toil/lib/bioio.py,sha256=c6B22vMF9w4VjOdZDug07ksJJ0SrqmV8NVJGDdNbLnc,2328
57
+ toil/lib/compatibility.py,sha256=RKk9hpI_KfBZR_SFqLcIf_3vC-oE4cgyi0T8vP-S0xg,1515
58
+ toil/lib/conversions.py,sha256=ykZ_md_CtJojKwkPJM1UEDkNC5-xwwdcBNio0Rs_c5Q,4832
59
+ toil/lib/docker.py,sha256=RnEI8sZZmZ_zMYHOMDqEYu_BItJ-s-6319SR9Xcr7v8,21104
60
+ toil/lib/ec2.py,sha256=3057UA-ECEgp1gNUbvq2jrf61iB5FQ7BCSYQNGySIcM,22527
61
+ toil/lib/ec2nodes.py,sha256=RZsIARyrRrWQIOHseG3691ExMEDatNmMtv3mov6u7aw,14167
62
+ toil/lib/exceptions.py,sha256=vxILY_EJUU_Tvg0uDKvtaFjOYE8cJiCtgrGLEOm3qRg,2271
63
+ toil/lib/expando.py,sha256=a_q6CeB7HNZRSbg0teMZN1Qz_vrwGo1lBN7onOyoLvQ,2925
64
+ toil/lib/generatedEC2Lists.py,sha256=gcid9noAlzctnH-OKYYuVTgtWgswI7C2MxqM1JALaWU,244245
65
+ toil/lib/humanize.py,sha256=gozIsspDv0LP_lZ8FN5EA9t1_SYoudeciQ0O0FRGzxM,1239
66
+ toil/lib/io.py,sha256=QLKoZWBV4Ddf61_A5fD5LuQGfgP4tcTW0_hgCZ_CVvk,9645
67
+ toil/lib/iterables.py,sha256=IEb68dyazYOSRVjnK0AFNCymA8M17Ux37sPQAbkdrcw,3429
68
+ toil/lib/memoize.py,sha256=gS58oA-XzrpGeucRA6s8mtwN9BK63w6JTIDnNovMJQI,3223
69
+ toil/lib/misc.py,sha256=Qm8SUEYkLKZeH5ZuGzsUxlEvWDC-H_4yBI96LS_SPxo,5729
70
+ toil/lib/objects.py,sha256=yrprtKobB5n1_d5oMu6SBzTAp4PX7uzw9lTkBkR1ldw,5384
71
+ toil/lib/resources.py,sha256=SK1ghdZkT3FsvKzFqh5QxfRRqBnhCfA2FMvLPg1An10,2501
72
+ toil/lib/retry.py,sha256=iIASaiOh26ipVL1QtapNAdoGaA7iB6bVLqvNotaRIWo,22366
73
+ toil/lib/threading.py,sha256=NQtvJZofxThZxAC-z6OX3Ai6QvO-E38iSzC7GfkHap8,24222
74
+ toil/lib/throttle.py,sha256=2tofeq1rFkXyBZiew3ECUhcicOF01DupIF9HtXuFqD0,4977
75
+ toil/lib/aws/__init__.py,sha256=Sfp0FIMI_EeUwYcUK9DwivajWY6fYUZsGiAn9eNiY_w,7157
76
+ toil/lib/aws/ami.py,sha256=hhfH8mkE8RCPo9V_hWCFg4G8_V--Lu_iKG1fbwGDB6U,9259
77
+ toil/lib/aws/iam.py,sha256=iyeJkxQguRogRF2Y12_5LI_ym81J2pAXWGVUh1Y0l7E,14589
78
+ toil/lib/aws/session.py,sha256=zNysuHyscb8FTj4J-i9YvzJxMKMibIkEeYMopERRaac,10773
79
+ toil/lib/aws/utils.py,sha256=W2iwrvGHXJNOqsyqDXkSgYpYb3yUEjFslhMrePNwfWo,19947
80
+ toil/lib/encryption/__init__.py,sha256=HP19EUYJeIMdjZq11fLn_dXIGU98sIkpTxvMxvPaUSs,705
81
+ toil/lib/encryption/_dummy.py,sha256=TBmPDmt1FLUtwUtb8e1EKZ-8tYRC3lyrxAp4Rkaw1A8,1112
82
+ toil/lib/encryption/_nacl.py,sha256=FMiBDQ5WlmbbBGWWMQMl2kKd5m7aKvUVODHUhV09dEA,3831
83
+ toil/lib/encryption/conftest.py,sha256=PF4PbhiUftyUcNx2uU0RtX8-LcR0YAFFI5z4fBlzF5M,226
84
+ toil/options/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
+ toil/options/common.py,sha256=5Z7R6kgQ5czsnei2NUNdojFUEWLRHOdnmh8FRzJZdtM,47719
86
+ toil/options/cwl.py,sha256=kbevYHXwmv0iQJnmKwusl235PY_ZlHFWG1nTbdlA8Xo,12939
87
+ toil/options/wdl.py,sha256=IcngBeScBRoGiqqkpApIUPDwvqp76tY6TLIoTOGJb00,2663
88
+ toil/provisioners/__init__.py,sha256=5_mxQo62vAcjCAk-ulYH0d9EcLAjmb3IP_MTYRL_D3k,9067
89
+ toil/provisioners/abstractProvisioner.py,sha256=475PQvSKr1hchKPsnzKWHv0W2rKAdVANV6ZLD_D4oxA,55930
90
+ toil/provisioners/clusterScaler.py,sha256=jiSTAXaR6IhQahYsQuADKxk5kzSLRGaK6KIrGR9mkNE,62095
91
+ toil/provisioners/gceProvisioner.py,sha256=sHvdCK390OYaOTGAdd2a1bCaZgzP612rHf6qfrhpQsQ,23554
92
+ toil/provisioners/node.py,sha256=De_-7GOGrZiFVmHfGH-vWDOK9JT4W9IySQESy3R0D5I,13777
93
+ toil/provisioners/aws/__init__.py,sha256=7ipnyxtedG3HeiyL5PRBy1GmGRTKOKkLO5NTB-en8xQ,8528
94
+ toil/provisioners/aws/awsProvisioner.py,sha256=_h3IFMotGnrkDE9TvEkCqIcg4ziJJ6nkPV5H3mRvbf8,80993
95
+ toil/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
96
+ toil/server/app.py,sha256=SR8w8RCa8te3B9sknLBAHIO0xy_D3_ZXILZtijPiMSY,7145
97
+ toil/server/celery_app.py,sha256=1KjNaQ3QqLZoE6WkfLOgkVww6ouIGQKPqHtlWBe363U,649
98
+ toil/server/utils.py,sha256=injwT7VXOlmkFAEj5cPLkawegITBepM9yVq9ovv2HBI,21836
99
+ toil/server/wsgi_app.py,sha256=wpZwj2F2yVx5SFNpFucXx9Pdvef4-r4eGRIBzqXFce8,1964
100
+ toil/server/api_spec/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
101
+ toil/server/api_spec/workflow_execution_service.swagger.yaml,sha256=zZ2QepvbpvLROIcVIHWrcQLUwXEqGfm68fmkdrx8rw8,25377
102
+ toil/server/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
+ toil/server/cli/wes_cwl_runner.py,sha256=zdJuIETINMkE9bqqcbsh4iPOPFh-10JYkowXPjv7sCk,18399
104
+ toil/server/wes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
105
+ toil/server/wes/abstract_backend.py,sha256=hn7lGq0xznSs7b3x_Ocu6a83EPWgymO8Q1BLNrQV_6E,9725
106
+ toil/server/wes/amazon_wes_utils.py,sha256=6lsX-A1Wi51PurIO1bVrvWmMaWYWPZhwDqMSI58Oj0c,10390
107
+ toil/server/wes/tasks.py,sha256=whUcJau7s5dOhIefXTtUK6xz8RrygJOmx_lBlmP_0l0,24415
108
+ toil/server/wes/toil_backend.py,sha256=4zpHD73YqSBlbcJvff6PRa8pYT3jOFXJUvzpNd_mAQQ,27502
109
+ toil/test/__init__.py,sha256=Fhqh_Diu_x5bPLmKUiEbFTfKEZqqClnZgJ4WTFEaToI,44366
110
+ toil/test/batchSystems/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
111
+ toil/test/batchSystems/batchSystemTest.py,sha256=IwpxaYCYO-VJ0RkEnYXUNFAzwwiosob2EzEOmWOKaA0,53561
112
+ toil/test/batchSystems/test_lsf_helper.py,sha256=vgWORofYN63TIUOUeMv0Zbjm8EbJiRM_-aHppERLwr4,4936
113
+ toil/test/batchSystems/test_slurm.py,sha256=7C9xj0SnA-Pq7ltZYRXJ7Lvgw4ffsASa40bWolfqtRo,19162
114
+ toil/test/cactus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
+ toil/test/cactus/test_cactus_integration.py,sha256=jzntInJFDcags78cKrrUnO6noFq0ZfJ9MgBdLcE3iGE,2417
116
+ toil/test/cwl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
+ toil/test/cwl/alwaysfails.cwl,sha256=EWDfzxMG4WqH2YQErhIHYPVc7-1eyucEUboj8r7yVbA,210
118
+ toil/test/cwl/colon_test_output.cwl,sha256=8evFOnHvpJEPn1lBI2zuEKueMUbh2p8oSNOKl-M4Ojw,401
119
+ toil/test/cwl/colon_test_output_job.yaml,sha256=BbXFRuWsRJV6JpJAutnHywJl_AbwEcwNRszArfRecxs,72
120
+ toil/test/cwl/conditional_wf.cwl,sha256=SAtUSmD5ta-DVG0SRHpT8EtOp8ztm-6v9Vskcl09c3s,357
121
+ toil/test/cwl/conditional_wf.yaml,sha256=WsS9dlpbRUll9M56KspQdOJ8h6SASTW7eRELefa274E,24
122
+ toil/test/cwl/conftest.py,sha256=okwzv8y-qDSIz--eauonzQXxj6DxyT-u8sXIUMmjxlE,698
123
+ toil/test/cwl/cwlTest.py,sha256=Afjxd1vSv8VEXq9w26uoICXZ-bjwf4Sq7Vn0LffMMUg,59717
124
+ toil/test/cwl/directory_from_directory.cwl,sha256=-hjZuUs5fMpKMnbj-FZAgcns4iWsCFJV6Qh7-fsRn1I,556
125
+ toil/test/cwl/download.cwl,sha256=XQvz8or_-k6pwyhgeUeJOew0_b3BeHcF08EaalbySz4,296
126
+ toil/test/cwl/download_directory.cwl,sha256=RdPmElFeHJqXGWVqEqR5VFMmXDiJubhTcM9hIrAhKY4,535
127
+ toil/test/cwl/download_subdirectory.cwl,sha256=9xhggsaDvdA0fOUGOXWt853h1ir0KCKB4NhhAnYLKZ4,784
128
+ toil/test/cwl/echo-stderr.cwl,sha256=M-j3robw02M6PWkhbDI3Yn1GDGRDteLGMMFvfhL56mQ,342
129
+ toil/test/cwl/echo-stdout-log-dir.cwl,sha256=emXc_pJKCUI7zpN4c6WMeIRvAsvmibRA1vyHhQB3y4Y,228
130
+ toil/test/cwl/echo.cwl,sha256=1_Pvhg7RmQq3wpYUhQT6iS0IR7MN_CY8UEdBWjWcQf4,183
131
+ toil/test/cwl/echo_string.cwl,sha256=uBmj7qdRV3GFHQxbXvVeRqiOnqc2L-oHYELGGiJJC9M,845
132
+ toil/test/cwl/echo_string_scatter_capture_stdout.cwl,sha256=5FGemb98l2SP0e3ajeHfeE9-FKrmKfDzQmFixxu_kJM,1090
133
+ toil/test/cwl/file_from_directory.cwl,sha256=0SQUY6rJgqW9zhgX5RN-vjn1smDQweThAwKC5vy5fNk,536
134
+ toil/test/cwl/glob_dir.cwl,sha256=3a1VRsCTMgY0he8lxa-7OJJIeDHBry83DIEHguuIBwk,236
135
+ toil/test/cwl/load_contents.cwl,sha256=YASiGkUQPEa9dz6btNccARLI7sPppXmm5XaePIOpek8,464
136
+ toil/test/cwl/mpi_simple.cwl,sha256=xgsOk2yGbAHL3pwtCtxZd6_c9Lopl1xh32dO0D6-Qbc,470
137
+ toil/test/cwl/nvidia_smi.cwl,sha256=peKLDFC9_0zEt7CoRLCQDtAE5bjfotok8Ljmn1nBVtA,474
138
+ toil/test/cwl/preemptible.cwl,sha256=BLmrYR3nZX89p1I0-8vGuE-hqKEUbfsuY-CWDcf32BY,304
139
+ toil/test/cwl/preemptible_expression.cwl,sha256=T_90Y6dBe9nDCjp8Hg4dv9xFsaWVsKSHv5nZ2mafBZ8,639
140
+ toil/test/cwl/revsort.cwl,sha256=BDAyPb1Tpkp55I_XIiZ3_7dXzQJxxkXo_2CHSk5lcEw,2023
141
+ toil/test/cwl/revsort2.cwl,sha256=LNXgxDVC2aIhPTTgOdDcKteDLmi3y3vPAFF_GdURCcQ,2024
142
+ toil/test/cwl/revtool.cwl,sha256=qzl3FHpaF41KPpxP9yhrOxUCsSm1bjsr2XXFpBZ_LkM,1301
143
+ toil/test/cwl/revtool2.cwl,sha256=CwJT3A6mmjBtneDzVDEfcYqoIerKm7A7A6UcyrVWrqo,767
144
+ toil/test/cwl/s3_secondary_file.cwl,sha256=aHxO8EwWDxJb4CzuAt3VJfbQaHPQARLs7XVJ5DtMITs,378
145
+ toil/test/cwl/seqtk_seq.cwl,sha256=j8jkN9IkfKe1LGb2J_UT9-mpIWWLOc4ROEnyezxhzWw,404
146
+ toil/test/cwl/sorttool.cwl,sha256=c1fhFZ_ekTMuEAM0nikUPd2j-etPQL8MqyuSJLNadtc,1060
147
+ toil/test/cwl/stream.cwl,sha256=jtyYdmSyCeI6uoOeX5Nb_LMIXhR5Sqmu8dGSr_Y2Z8g,732
148
+ toil/test/cwl/test_filename_conflict_detection.cwl,sha256=wVrc9EXmO74tgaEe4oE-EMpmQiHIuUFbLh0-qVisVZo,699
149
+ toil/test/cwl/test_filename_conflict_detection_at_root.cwl,sha256=G3clUTFeeGZt5xPi2SNs05W7I-RT0OEN2C8xKHzQ300,695
150
+ toil/test/cwl/test_filename_conflict_resolution.cwl,sha256=sIoXi61RzCkzD1MTCoglRYAXo8xaE1JiC6irvSANK0I,717
151
+ toil/test/docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
+ toil/test/docs/scriptsTest.py,sha256=LsFnNH_nrDF_xiDhhXmgi__8eZnspQSW3edgVWnI_h8,6100
153
+ toil/test/jobStores/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
154
+ toil/test/jobStores/jobStoreTest.py,sha256=iqYW-PBaOMim7dCibvzEK_OxLaVsiu4wHLiZmTd0vu8,67693
155
+ toil/test/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
+ toil/test/lib/dockerTest.py,sha256=qUqNhaHj_rG7NA0EmKtcm58IH3mEuqlxitvsoiMsuDk,17108
157
+ toil/test/lib/test_conversions.py,sha256=uXd9_sqqUAeXRcqfTEnQKyKofIMBJAPjWf43VK4vyVw,7317
158
+ toil/test/lib/test_ec2.py,sha256=I9jmLY7_5oJtFR7vObBS0pnzf-GCCm9CfTLrHp9q2Xs,4252
159
+ toil/test/lib/test_misc.py,sha256=OD4VBFgNOHt6krjyjxvvS9TqPmKorMz6MsGDlG4nAY8,2759
160
+ toil/test/lib/aws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
+ toil/test/lib/aws/test_iam.py,sha256=6YQDMxj73HZ86q_gu0ues76dYHbuxHhBgWpJ8Gt3yvM,5026
162
+ toil/test/lib/aws/test_s3.py,sha256=SsOPIK96fN9I3xYePjlIZbP6xXudMAvZJ1xqkpqDWpU,2952
163
+ toil/test/lib/aws/test_utils.py,sha256=lOp8QdFX4hXa6ZcgIbCWF-gf2-T0S-GRpkLhPKWmVok,2258
164
+ toil/test/mesos/MesosDataStructuresTest.py,sha256=EJ0kFy5rRHvNOJ_1bn-4nqldXNtlZCQA6niY28nyG_c,3124
165
+ toil/test/mesos/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
166
+ toil/test/mesos/helloWorld.py,sha256=4_KgsdftwdAYHi79KbyWWIUm2JK0AaT5qZ1vdON8LDY,2203
167
+ toil/test/mesos/stress.py,sha256=x6hAyfO2cSJ6BkGu1g97k4rOxOZigAw4g_DXTgpB7Ic,2129
168
+ toil/test/options/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
169
+ toil/test/options/options.py,sha256=oJJTBkAUs3lgClhujHiG0jGTiZ38ZgKdVoZ7D_Yh534,1426
170
+ toil/test/provisioners/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
171
+ toil/test/provisioners/clusterScalerTest.py,sha256=ObsCEM9lkvN59iR4Cgztqpw58swv_6ChdNOq4qUm_y8,44279
172
+ toil/test/provisioners/clusterTest.py,sha256=_yXE8zNcj7iH0NgAZyhOmixJ25XkdZcJ0j6qP98Idic,6434
173
+ toil/test/provisioners/gceProvisionerTest.py,sha256=yNieaSx5g5H5NtAw5b-lw6IL-8OeC10LMgDMIcwhTkw,12996
174
+ toil/test/provisioners/provisionerTest.py,sha256=M6JXn57yYsMuU33QkZ92Q9wMS-OZB4KygyMum9zvyqk,2040
175
+ toil/test/provisioners/restartScript.py,sha256=IHOXV0dez52utDJlIDO-O6yzGocK8wHyRpeFWYtjJUE,415
176
+ toil/test/provisioners/aws/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
177
+ toil/test/provisioners/aws/awsProvisionerTest.py,sha256=SgWW_P6ckliW-tiJQDpTcWsXOaK-Z6kJXe_tgV4AeJQ,20735
178
+ toil/test/server/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
179
+ toil/test/server/serverTest.py,sha256=fBv0uLGOSLxVbm3yVtv7TX35fTzJyyy7W13NAVTeiwI,27174
180
+ toil/test/sort/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
181
+ toil/test/sort/restart_sort.py,sha256=JrUAB0PEsYc5zprPUsCppE8oSK5Po4SidRTivs4Jcxw,11105
182
+ toil/test/sort/sort.py,sha256=rl3olKAKQ1mLdxvSNXOWyMhMEJlcj3WIlWp4bX2CBaE,10936
183
+ toil/test/sort/sortTest.py,sha256=FYMejYlF-gv_zs9VFQnXjVNFaEj0OK4lX8wY68g4y7Q,12167
184
+ toil/test/src/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
185
+ toil/test/src/autoDeploymentTest.py,sha256=RKNhkJLKjnYmC0VjeBhrHm-QnuYpQ-jz2UKM6vVtlJk,24151
186
+ toil/test/src/busTest.py,sha256=15Z2l90veadCD6HvbXtIU_TPkIdcbnSfm7T1OeJaJZ8,5448
187
+ toil/test/src/checkpointTest.py,sha256=w1_p3Ocrq6h7hTI6LHwUGrXemnWx6dShrThp6XW1Bng,4458
188
+ toil/test/src/deferredFunctionTest.py,sha256=FAVe3UfPH_H7R7XhRSxAf7dSMozCirQhIz4a700aOZI,13327
189
+ toil/test/src/dockerCheckTest.py,sha256=vw-Rgid51Wyw_3g9bwNYnE0hoZzldKZRBYVr_vZ1MGU,4334
190
+ toil/test/src/fileStoreTest.py,sha256=k_vwGwTicoSqYU40QwGzvrU8esSZKc8lD_ouN3f5uMY,68291
191
+ toil/test/src/helloWorldTest.py,sha256=OV0c_HBge7UsBCqyvMCj_9APiSoRotLy80Ah4EMR5I4,1721
192
+ toil/test/src/importExportFileTest.py,sha256=MN7ucc5AdniJK3W5QAuIJ4mljpAMC9FqLJ3-2nesqB8,7087
193
+ toil/test/src/jobDescriptionTest.py,sha256=PQDa5bZq_-8zQC-HOad2NKp6Qb9LvImmgLsnPhCS3Ug,3748
194
+ toil/test/src/jobEncapsulationTest.py,sha256=yb6dZiKiodEQDua7nL4SKHKWVMCoGpIxbquabuxlexM,2461
195
+ toil/test/src/jobFileStoreTest.py,sha256=E7YCrxdZhv2Jxy1rCT8RXL0sKqY-QIgRBYNqgiyRtKs,8740
196
+ toil/test/src/jobServiceTest.py,sha256=--kgtZCmnrtjMQNLOnoMSuuTxgEWhK8WksKFJaavJCY,15279
197
+ toil/test/src/jobTest.py,sha256=VTjtNGnlsRkHx434PlwbhhbZ55mY76HNGn3V_hxeeXk,27640
198
+ toil/test/src/miscTests.py,sha256=9mmM3wexZqkFHVRzQHOWtq3zOqnctIN7_32SZEufzGA,7879
199
+ toil/test/src/promisedRequirementTest.py,sha256=xAZE0ho7pni8nWw3s5JqWISONCLbXk5R65DN-J37TKM,9001
200
+ toil/test/src/promisesTest.py,sha256=UY-9crkMTirWerbp8OtzbIAZPOpB5_3JoXHrYucfFhw,2317
201
+ toil/test/src/realtimeLoggerTest.py,sha256=IS84LY3ExJeWQgBGpbRYw4A5cAm41cYhA_p3UenC6Vw,2153
202
+ toil/test/src/regularLogTest.py,sha256=BohWsMQnPgH51DvYkGHx6PuBWmCojn2fRFACtMuSvZs,4372
203
+ toil/test/src/resourceTest.py,sha256=BHK9sIVgWWvraUYxVeGWGqmykxEQ2TALCzy4Ir7h2WI,11150
204
+ toil/test/src/restartDAGTest.py,sha256=BeLzl9BVHECZt8WLXbSW9vWL-NrzroMT_q12Ngpm_UY,6070
205
+ toil/test/src/resumabilityTest.py,sha256=H2Dd1yk4-d0PYeXeloC68-QjzxNAZ38LE__ySJOf_A8,4161
206
+ toil/test/src/retainTempDirTest.py,sha256=zIUn471NXiLflbbLDO2bBaODjAdnkKE1QEfVnR5hhSI,4479
207
+ toil/test/src/systemTest.py,sha256=2eC8BZfNYzjs0CA_7OSSIU7Wez3REP7DIhQniLp7pn0,2206
208
+ toil/test/src/threadingTest.py,sha256=dMyDDJCXJ_d7fIxW8_gZ5x4wr57hmH0OTPwG1F65VTc,4942
209
+ toil/test/src/toilContextManagerTest.py,sha256=JjyPzIb6JOXmbcJnGrJKkKfKL3U_OFr13gfWmdqrfMY,3075
210
+ toil/test/src/userDefinedJobArgTypeTest.py,sha256=SXb3WmFWNtsIKKP-78eHL6tfabu4T8C0Spo9OK1v6xM,2848
211
+ toil/test/src/workerTest.py,sha256=LDHYZ-Vsw1iW-HDC57h0FDdZy2KBD9ooBazxsGSITJc,4609
212
+ toil/test/utils/__init__.py,sha256=9h1rcqYjjnn97DpDEJf8tlNOIDx0XiXyQwh0F_81y0k,612
213
+ toil/test/utils/toilDebugTest.py,sha256=s9xGdt1qFPWR-48U17JpNFIBTaLSkwyIp3xFMSarhxw,6435
214
+ toil/test/utils/toilKillTest.py,sha256=Wu0hANeRspLpqzdZUnWt-yt8wBhbxjEijOkjCWfNrkg,3541
215
+ toil/test/utils/utilsTest.py,sha256=TH_Z9-0EeqDCpLoETCyVbEW__Y5ZaF_u6VAUjabuJAM,16518
216
+ toil/test/wdl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
217
+ toil/test/wdl/wdltoil_test.py,sha256=s6bxlQIGDBOzlE0cfQSs5ls8lp-J2_oeVdfqXmgJSt4,16886
218
+ toil/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
+ toil/utils/toilClean.py,sha256=X6Fws6LVqa-ScUITMTomV5iohXa3yz_rAIFnUfXlqZU,1850
220
+ toil/utils/toilConfig.py,sha256=aOCGkke9ayqGgN26lzjs5rthruHS68v3R9gytkP0mvo,1487
221
+ toil/utils/toilDebugFile.py,sha256=4EHKyMbYvlhjj-8Qwlhrf3SEsj-eytZMX393yXk8BLw,6412
222
+ toil/utils/toilDebugJob.py,sha256=NvVsOd4NzItx3oSYCKnkqNNmiMfztqd_cjmkFKy_uDo,2991
223
+ toil/utils/toilDestroyCluster.py,sha256=Z9PQxqycsYeU0rjTTzZKWhKYuqP19wD988aGmfC3Vxc,1430
224
+ toil/utils/toilKill.py,sha256=0XK8K1Tk4Lla7eBPHI8PFmcOBZu_g0GWLjK1IkDYoXw,2714
225
+ toil/utils/toilLaunchCluster.py,sha256=i5mX4-huPzWwdGNFtV7zG62FK9De9jIdszKNEvm7RXM,12909
226
+ toil/utils/toilMain.py,sha256=an4LFEIzCXY8IjoAcjgF5OgO0KdTt1Nay9LEs8UOWu4,2456
227
+ toil/utils/toilRsyncCluster.py,sha256=MkRGcM2wG4BaZnAMDgI1lLoEUA4Adx0jxoOeGWkQWAY,2059
228
+ toil/utils/toilServer.py,sha256=4XbyOHQHgMWWrCWj9Uz1M-jLQheV2Ju-DQ_fNdnBg1o,1178
229
+ toil/utils/toilSshCluster.py,sha256=T9lNGBTiC_1TMo-QZNMbw5teoYZLdL6mN7C_e2FwSDU,2678
230
+ toil/utils/toilStats.py,sha256=kDC-b1xGSX1C_hPGGL3nh7uYxiyKRhZOzX1QwA9LCW4,25163
231
+ toil/utils/toilStatus.py,sha256=6-bTaYFstxbMhIlCkzjhkGtwTfs20XZ2c-NWGyzSa2I,16384
232
+ toil/utils/toilUpdateEC2Instances.py,sha256=e1EE60o8lu0Gqd8n1H-rTC94fraDsZnqPy4HdStnK6o,1273
233
+ toil/wdl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
+ toil/wdl/utils.py,sha256=z617Jhhbx4pCnBTrX7a5v-3q1Fxqff8LpwjM8Ohiibw,1307
235
+ toil/wdl/wdltoil.py,sha256=mNKYsykqRSyPFiAoIYXmciyloIPsQ5YARGM49SZ6coc,140229
236
+ toil-6.1.0.dist-info/LICENSE,sha256=FPaTNB9xyeCT60XXXq2Bn4FGN9392OxN5jixnV_XXyo,11516
237
+ toil-6.1.0.dist-info/METADATA,sha256=2dZlmgBCNmzUtKDUm4UI53In42U0tad_wjwmUAznKAk,6070
238
+ toil-6.1.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
239
+ toil-6.1.0.dist-info/entry_points.txt,sha256=EF2yFhV2UYuJGr-OjMkUOd3RyOCgRWQbS6XJtBJ25eM,436
240
+ toil-6.1.0.dist-info/top_level.txt,sha256=1ydj7IXvHS9tMT5OVTSSpub6ZOaQeIn3KGCgJqaikF0,5
241
+ toil-6.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.0)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5