toil 5.9.2__tar.gz → 5.12.0__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.
- {toil-5.9.2/src/toil.egg-info → toil-5.12.0}/PKG-INFO +1 -1
- toil-5.12.0/requirements-aws.txt +4 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-cwl.txt +1 -1
- {toil-5.9.2 → toil-5.12.0}/requirements-dev.txt +6 -3
- toil-5.12.0/requirements-google.txt +3 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-wdl.txt +1 -0
- {toil-5.9.2 → toil-5.12.0}/requirements.txt +2 -0
- {toil-5.9.2 → toil-5.12.0}/setup.cfg +3 -1
- {toil-5.9.2 → toil-5.12.0}/setup.py +16 -17
- {toil-5.9.2 → toil-5.12.0}/src/toil/__init__.py +71 -78
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/abstractBatchSystem.py +227 -35
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/abstractGridEngineBatchSystem.py +73 -40
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/cleanup_support.py +5 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/contained_executor.py +1 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/gridengine.py +5 -4
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/htcondor.py +176 -91
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/kubernetes.py +270 -74
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/local_support.py +4 -5
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/lsf.py +6 -5
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/mesos/batchSystem.py +22 -4
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/mesos/test/__init__.py +4 -7
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/options.py +37 -18
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/parasol.py +21 -24
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/singleMachine.py +37 -194
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/slurm.py +47 -27
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/torque.py +3 -3
- {toil-5.9.2 → toil-5.12.0}/src/toil/common.py +93 -26
- {toil-5.9.2 → toil-5.12.0}/src/toil/cwl/__init__.py +8 -4
- {toil-5.9.2 → toil-5.12.0}/src/toil/cwl/cwltoil.py +137 -72
- {toil-5.9.2 → toil-5.12.0}/src/toil/cwl/utils.py +0 -10
- {toil-5.9.2 → toil-5.12.0}/src/toil/deferred.py +4 -0
- toil-5.12.0/src/toil/exceptions.py +52 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/fileStores/abstractFileStore.py +9 -1
- {toil-5.9.2 → toil-5.12.0}/src/toil/fileStores/nonCachingFileStore.py +59 -5
- {toil-5.9.2 → toil-5.12.0}/src/toil/job.py +398 -332
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/abstractJobStore.py +75 -43
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/aws/jobStore.py +8 -1
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/fileJobStore.py +9 -3
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/googleJobStore.py +51 -17
- {toil-5.9.2 → toil-5.12.0}/src/toil/leader.py +93 -148
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/accelerators.py +42 -5
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/aws/__init__.py +2 -1
- toil-5.12.0/src/toil/lib/aws/ami.py +178 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/aws/iam.py +54 -13
- toil-5.12.0/src/toil/lib/aws/session.py +240 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/aws/utils.py +38 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/docker.py +32 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/encryption/_dummy.py +2 -2
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/io.py +15 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/misc.py +26 -10
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/retry.py +6 -6
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/threading.py +27 -19
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/abstractProvisioner.py +2 -1
- {toil-5.9.2 → toil-5.12.0}/src/toil/realtimeLogger.py +12 -14
- {toil-5.9.2 → toil-5.12.0}/src/toil/resource.py +62 -47
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/wsgi_app.py +1 -1
- {toil-5.9.2 → toil-5.12.0}/src/toil/serviceManager.py +15 -4
- {toil-5.9.2 → toil-5.12.0}/src/toil/test/__init__.py +38 -5
- toil-5.12.0/src/toil/test/batchSystems/__init__.py +13 -0
- toil-5.12.0/src/toil/test/batchSystems/batchSystemTest.py +1349 -0
- toil-5.12.0/src/toil/test/batchSystems/parasolTestSupport.py +117 -0
- toil-5.12.0/src/toil/test/batchSystems/test_lsf_helper.py +74 -0
- toil-5.12.0/src/toil/test/batchSystems/test_slurm.py +389 -0
- toil-5.12.0/src/toil/test/cwl/alwaysfails.cwl +11 -0
- toil-5.12.0/src/toil/test/cwl/colon_test_output.cwl +20 -0
- toil-5.12.0/src/toil/test/cwl/colon_test_output_job.yaml +4 -0
- toil-5.12.0/src/toil/test/cwl/conditional_wf.cwl +25 -0
- toil-5.12.0/src/toil/test/cwl/conditional_wf.yaml +2 -0
- toil-5.12.0/src/toil/test/cwl/conftest.py +17 -0
- toil-5.12.0/src/toil/test/cwl/cwlTest.py +1484 -0
- toil-5.12.0/src/toil/test/cwl/directory_from_directory.cwl +25 -0
- toil-5.12.0/src/toil/test/cwl/download.cwl +19 -0
- toil-5.12.0/src/toil/test/cwl/download_directory.cwl +31 -0
- toil-5.12.0/src/toil/test/cwl/download_subdirectory.cwl +40 -0
- toil-5.12.0/src/toil/test/cwl/echo-stderr.cwl +19 -0
- toil-5.12.0/src/toil/test/cwl/echo-stdout-log-dir.cwl +14 -0
- toil-5.12.0/src/toil/test/cwl/echo.cwl +12 -0
- toil-5.12.0/src/toil/test/cwl/echo_string.cwl +51 -0
- toil-5.12.0/src/toil/test/cwl/echo_string_scatter_capture_stdout.cwl +63 -0
- toil-5.12.0/src/toil/test/cwl/file_from_directory.cwl +25 -0
- toil-5.12.0/src/toil/test/cwl/load_contents.cwl +26 -0
- toil-5.12.0/src/toil/test/cwl/mpi_simple.cwl +21 -0
- toil-5.12.0/src/toil/test/cwl/nvidia_smi.cwl +16 -0
- toil-5.12.0/src/toil/test/cwl/revsort.cwl +65 -0
- toil-5.12.0/src/toil/test/cwl/revsort2.cwl +65 -0
- toil-5.12.0/src/toil/test/cwl/revtool.cwl +37 -0
- toil-5.12.0/src/toil/test/cwl/revtool2.cwl +33 -0
- toil-5.12.0/src/toil/test/cwl/s3_secondary_file.cwl +22 -0
- toil-5.12.0/src/toil/test/cwl/seqtk_seq.cwl +24 -0
- toil-5.12.0/src/toil/test/cwl/sorttool.cwl +35 -0
- toil-5.12.0/src/toil/test/cwl/stream.cwl +43 -0
- toil-5.12.0/src/toil/test/cwl/test_filename_conflict_detection.cwl +36 -0
- toil-5.12.0/src/toil/test/cwl/test_filename_conflict_detection_at_root.cwl +35 -0
- toil-5.12.0/src/toil/test/cwl/test_filename_conflict_resolution.cwl +31 -0
- toil-5.12.0/src/toil/test/docs/scriptsTest.py +151 -0
- toil-5.12.0/src/toil/test/jobStores/__init__.py +13 -0
- toil-5.12.0/src/toil/test/jobStores/jobStoreTest.py +1531 -0
- toil-5.12.0/src/toil/test/lib/aws/__init__.py +0 -0
- toil-5.12.0/src/toil/test/lib/aws/test_iam.py +139 -0
- toil-5.12.0/src/toil/test/lib/aws/test_s3.py +77 -0
- toil-5.12.0/src/toil/test/lib/aws/test_utils.py +67 -0
- toil-5.12.0/src/toil/test/lib/dockerTest.py +454 -0
- toil-5.12.0/src/toil/test/lib/test_conversions.py +213 -0
- toil-5.12.0/src/toil/test/lib/test_ec2.py +101 -0
- toil-5.12.0/src/toil/test/lib/test_misc.py +82 -0
- toil-5.12.0/src/toil/test/mesos/MesosDataStructuresTest.py +78 -0
- toil-5.12.0/src/toil/test/mesos/__init__.py +13 -0
- toil-5.12.0/src/toil/test/mesos/helloWorld.py +72 -0
- toil-5.12.0/src/toil/test/mesos/stress.py +74 -0
- toil-5.12.0/src/toil/test/provisioners/__init__.py +13 -0
- toil-5.12.0/src/toil/test/provisioners/aws/__init__.py +13 -0
- toil-5.12.0/src/toil/test/provisioners/aws/awsProvisionerTest.py +510 -0
- toil-5.12.0/src/toil/test/provisioners/clusterScalerTest.py +979 -0
- toil-5.12.0/src/toil/test/provisioners/clusterTest.py +160 -0
- toil-5.12.0/src/toil/test/provisioners/gceProvisionerTest.py +351 -0
- toil-5.12.0/src/toil/test/provisioners/provisionerTest.py +45 -0
- toil-5.12.0/src/toil/test/provisioners/restartScript.py +16 -0
- toil-5.12.0/src/toil/test/server/__init__.py +13 -0
- toil-5.12.0/src/toil/test/server/serverTest.py +714 -0
- toil-5.12.0/src/toil/test/sort/__init__.py +13 -0
- toil-5.12.0/src/toil/test/sort/restart_sort.py +263 -0
- toil-5.12.0/src/toil/test/sort/sort.py +259 -0
- toil-5.12.0/src/toil/test/sort/sortTest.py +319 -0
- toil-5.12.0/src/toil/test/src/__init__.py +13 -0
- toil-5.12.0/src/toil/test/src/autoDeploymentTest.py +487 -0
- toil-5.12.0/src/toil/test/src/busTest.py +163 -0
- toil-5.12.0/src/toil/test/src/checkpointTest.py +104 -0
- toil-5.12.0/src/toil/test/src/deferredFunctionTest.py +343 -0
- toil-5.12.0/src/toil/test/src/dockerCheckTest.py +101 -0
- toil-5.12.0/src/toil/test/src/fileStoreTest.py +1382 -0
- toil-5.12.0/src/toil/test/src/helloWorldTest.py +48 -0
- toil-5.12.0/src/toil/test/src/importExportFileTest.py +148 -0
- toil-5.12.0/src/toil/test/src/jobDescriptionTest.py +95 -0
- toil-5.12.0/src/toil/test/src/jobEncapsulationTest.py +67 -0
- toil-5.12.0/src/toil/test/src/jobFileStoreTest.py +199 -0
- toil-5.12.0/src/toil/test/src/jobServiceTest.py +381 -0
- toil-5.12.0/src/toil/test/src/jobTest.py +711 -0
- toil-5.12.0/src/toil/test/src/miscTests.py +211 -0
- toil-5.12.0/src/toil/test/src/promisedRequirementTest.py +230 -0
- toil-5.12.0/src/toil/test/src/promisesTest.py +78 -0
- toil-5.12.0/src/toil/test/src/realtimeLoggerTest.py +64 -0
- toil-5.12.0/src/toil/test/src/regularLogTest.py +100 -0
- toil-5.12.0/src/toil/test/src/resourceTest.py +238 -0
- toil-5.12.0/src/toil/test/src/restartDAGTest.py +155 -0
- toil-5.12.0/src/toil/test/src/resumabilityTest.py +81 -0
- toil-5.12.0/src/toil/test/src/retainTempDirTest.py +99 -0
- toil-5.12.0/src/toil/test/src/systemTest.py +55 -0
- toil-5.12.0/src/toil/test/src/threadingTest.py +134 -0
- toil-5.12.0/src/toil/test/src/toilContextManagerTest.py +88 -0
- toil-5.12.0/src/toil/test/src/userDefinedJobArgTypeTest.py +93 -0
- toil-5.12.0/src/toil/test/src/workerTest.py +94 -0
- toil-5.12.0/src/toil/test/utils/__init__.py +13 -0
- toil-5.12.0/src/toil/test/utils/toilDebugTest.py +135 -0
- toil-5.12.0/src/toil/test/utils/toilKillTest.py +100 -0
- toil-5.12.0/src/toil/test/utils/utilsTest.py +397 -0
- toil-5.12.0/src/toil/test/wdl/__init__.py +0 -0
- toil-5.12.0/src/toil/test/wdl/builtinTest.py +506 -0
- toil-5.12.0/src/toil/test/wdl/conftest.py +23 -0
- toil-5.12.0/src/toil/test/wdl/toilwdlTest.py +522 -0
- toil-5.12.0/src/toil/test/wdl/wdltoil_test.py +240 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/toilState.py +10 -11
- toil-5.12.0/src/toil/utils/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilClean.py +10 -4
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilStatus.py +24 -24
- toil-5.12.0/src/toil/version.py +14 -0
- toil-5.12.0/src/toil/wdl/__init__.py +0 -0
- toil-5.12.0/src/toil/wdl/versions/__init__.py +0 -0
- toil-5.12.0/src/toil/wdl/wdltoil.py +2172 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/worker.py +24 -18
- {toil-5.9.2 → toil-5.12.0/src/toil.egg-info}/PKG-INFO +1 -1
- {toil-5.9.2 → toil-5.12.0}/src/toil.egg-info/SOURCES.txt +107 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil.egg-info/entry_points.txt +2 -1
- {toil-5.9.2 → toil-5.12.0}/src/toil.egg-info/requires.txt +15 -16
- toil-5.9.2/requirements-aws.txt +0 -7
- toil-5.9.2/requirements-google.txt +0 -2
- toil-5.9.2/src/toil/lib/aws/ami.py +0 -104
- toil-5.9.2/src/toil/lib/aws/session.py +0 -176
- toil-5.9.2/src/toil/version.py +0 -12
- {toil-5.9.2 → toil-5.12.0}/LICENSE +0 -0
- {toil-5.9.2 → toil-5.12.0}/MANIFEST.in +0 -0
- {toil-5.9.2 → toil-5.12.0}/README.rst +0 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-encryption.txt +0 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-htcondor.txt +0 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-kubernetes.txt +0 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-mesos.txt +0 -0
- {toil-5.9.2 → toil-5.12.0}/requirements-server.txt +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/awsBatch.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/lsfHelper.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/mesos/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/mesos/conftest.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/mesos/executor.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/registry.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/batchSystems/tes.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/bus.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/cwl/conftest.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/fileStores/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/fileStores/cachingFileStore.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/aws/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/aws/utils.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/conftest.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/jobStores/utils.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/bioio.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/compatibility.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/conversions.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/ec2.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/ec2nodes.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/encryption/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/encryption/_nacl.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/encryption/conftest.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/exceptions.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/expando.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/generatedEC2Lists.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/humanize.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/iterables.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/memoize.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/objects.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/resources.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/lib/throttle.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/aws/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/aws/awsProvisioner.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/clusterScaler.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/gceProvisioner.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/provisioners/node.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/api_spec/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/api_spec/workflow_execution_service.swagger.yaml +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/app.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/celery_app.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/cli/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/cli/wes_cwl_runner.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/utils.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/wes/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/wes/abstract_backend.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/wes/amazon_wes_utils.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/wes/tasks.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/server/wes/toil_backend.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/statsAndLogging.py +0 -0
- {toil-5.9.2/src/toil/utils → toil-5.12.0/src/toil/test/cwl}/__init__.py +0 -0
- {toil-5.9.2/src/toil/wdl → toil-5.12.0/src/toil/test/docs}/__init__.py +0 -0
- {toil-5.9.2/src/toil/wdl/versions → toil-5.12.0/src/toil/test/lib}/__init__.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilDebugFile.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilDebugJob.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilDestroyCluster.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilKill.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilLaunchCluster.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilMain.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilRsyncCluster.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilServer.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilSshCluster.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilStats.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/utils/toilUpdateEC2Instances.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/toilwdl.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/utils.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/versions/dev.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/versions/draft2.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/versions/v1.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/wdl_analysis.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/wdl_functions.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/wdl_synthesis.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil/wdl/wdl_types.py +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil.egg-info/dependency_links.txt +0 -0
- {toil-5.9.2 → toil-5.12.0}/src/toil.egg-info/top_level.txt +0 -0
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
mock>=4.0.3,<
|
|
1
|
+
mock>=4.0.3,<6
|
|
2
2
|
pytest>=6.2.1,<8
|
|
3
3
|
pytest-cov>=2.12.1,<5
|
|
4
4
|
pytest-timeout>=1.4.2,<3
|
|
5
5
|
stubserver>=1.1,<2
|
|
6
|
-
setuptools>=
|
|
6
|
+
setuptools>=65.5.1,<68
|
|
7
7
|
sphinx>=4,<6
|
|
8
|
+
sphinx-autoapi
|
|
9
|
+
sphinx-autodoc-typehints
|
|
10
|
+
sphinxcontrib-autoprogram
|
|
8
11
|
cwltest>=2.2.20211116163652
|
|
9
|
-
mypy==0
|
|
12
|
+
mypy==1.2.0
|
|
10
13
|
types-requests
|
|
11
14
|
types-setuptools
|
|
12
15
|
types-boto
|
|
@@ -13,7 +13,8 @@ markers =
|
|
|
13
13
|
docker_cuda
|
|
14
14
|
encryption
|
|
15
15
|
fetchable_appliance
|
|
16
|
-
google
|
|
16
|
+
google-project
|
|
17
|
+
google-storage
|
|
17
18
|
gridengine
|
|
18
19
|
htcondor
|
|
19
20
|
integrative
|
|
@@ -27,6 +28,7 @@ markers =
|
|
|
27
28
|
server_mode
|
|
28
29
|
slow
|
|
29
30
|
slurm
|
|
31
|
+
singularity
|
|
30
32
|
tes
|
|
31
33
|
torque
|
|
32
34
|
wes_server
|
|
@@ -20,24 +20,25 @@ from setuptools import find_packages, setup
|
|
|
20
20
|
|
|
21
21
|
def get_requirements(extra=None):
|
|
22
22
|
"""
|
|
23
|
-
Load the requirements for the given extra
|
|
24
|
-
requirements-extra.txt, or the main requirements.txt if no extra is
|
|
25
|
-
specified.
|
|
26
|
-
"""
|
|
23
|
+
Load the requirements for the given extra.
|
|
27
24
|
|
|
25
|
+
Uses the appropriate requirements-extra.txt, or the main requirements.txt
|
|
26
|
+
if no extra is specified.
|
|
27
|
+
"""
|
|
28
28
|
filename = f"requirements-{extra}.txt" if extra else "requirements.txt"
|
|
29
29
|
|
|
30
30
|
with open(filename) as fp:
|
|
31
|
-
# Parse out as one per line
|
|
32
|
-
return [l.strip() for l in fp.readlines() if l.strip()]
|
|
31
|
+
# Parse out as one per line, dropping comments
|
|
32
|
+
return [l.split('#')[0].strip() for l in fp.readlines() if l.split('#')[0].strip()]
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
def run_setup():
|
|
36
36
|
"""
|
|
37
|
-
|
|
38
|
-
functionality. The `version` module is imported dynamically by import_version() below.
|
|
39
|
-
"""
|
|
37
|
+
Call setup().
|
|
40
38
|
|
|
39
|
+
This function exists so the setup() invocation preceded more internal functionality.
|
|
40
|
+
The `version` module is imported dynamically by import_version() below.
|
|
41
|
+
"""
|
|
41
42
|
install_requires = get_requirements()
|
|
42
43
|
|
|
43
44
|
extras_require = {}
|
|
@@ -45,7 +46,7 @@ def run_setup():
|
|
|
45
46
|
# this is tricky to conditionally support in 'all' due
|
|
46
47
|
# to how wheels work, so it is not included in all and
|
|
47
48
|
# must be explicitly installed as an extra
|
|
48
|
-
all_reqs =
|
|
49
|
+
all_reqs = []
|
|
49
50
|
non_htcondor_extras = [
|
|
50
51
|
"aws",
|
|
51
52
|
"cwl",
|
|
@@ -58,7 +59,7 @@ def run_setup():
|
|
|
58
59
|
]
|
|
59
60
|
for extra in non_htcondor_extras:
|
|
60
61
|
extras_require[extra] = get_requirements(extra)
|
|
61
|
-
all_reqs +=
|
|
62
|
+
all_reqs += extras_require[extra]
|
|
62
63
|
# We exclude htcondor from "all" because it can't be on Mac
|
|
63
64
|
extras_require['htcondor:sys_platform!="darwin"'] = get_requirements("htcondor")
|
|
64
65
|
extras_require["all"] = all_reqs
|
|
@@ -98,12 +99,9 @@ def run_setup():
|
|
|
98
99
|
install_requires=install_requires,
|
|
99
100
|
extras_require=extras_require,
|
|
100
101
|
package_dir={'': 'src'},
|
|
101
|
-
packages=find_packages(where='src',
|
|
102
|
-
# Note that we intentionally include the top-level `test` package for
|
|
103
|
-
# functionality like the @experimental and @integrative decorators:
|
|
104
|
-
exclude=['*.test.*']),
|
|
102
|
+
packages=find_packages(where='src'),
|
|
105
103
|
package_data={
|
|
106
|
-
'': ['*.yml', '*.yaml', 'cloud-config'],
|
|
104
|
+
'': ['*.yml', '*.yaml', 'cloud-config', '*.cwl'],
|
|
107
105
|
},
|
|
108
106
|
# Unfortunately, the names of the entry points are hard-coded elsewhere in the code base so
|
|
109
107
|
# you can't just change them here. Luckily, most of them are pretty unique strings, and thus
|
|
@@ -114,7 +112,8 @@ def run_setup():
|
|
|
114
112
|
'_toil_worker = toil.worker:main',
|
|
115
113
|
'cwltoil = toil.cwl.cwltoil:cwltoil_was_removed [cwl]',
|
|
116
114
|
'toil-cwl-runner = toil.cwl.cwltoil:main [cwl]',
|
|
117
|
-
'toil-wdl-runner = toil.wdl.
|
|
115
|
+
'toil-wdl-runner = toil.wdl.wdltoil:main [wdl]',
|
|
116
|
+
'toil-wdl-runner-old = toil.wdl.toilwdl:main [wdl]',
|
|
118
117
|
'toil-wes-cwl-runner = toil.server.cli.wes_cwl_runner:main [server]',
|
|
119
118
|
'_toil_mesos_executor = toil.batchSystems.mesos.executor:main [mesos]',
|
|
120
119
|
'_toil_contained_executor = toil.batchSystems.contained_executor:executor']})
|
|
@@ -16,12 +16,10 @@ import logging
|
|
|
16
16
|
import os
|
|
17
17
|
import re
|
|
18
18
|
import socket
|
|
19
|
-
import subprocess
|
|
20
19
|
import sys
|
|
21
20
|
import time
|
|
22
21
|
from datetime import datetime
|
|
23
|
-
from typing import TYPE_CHECKING
|
|
24
|
-
|
|
22
|
+
from typing import TYPE_CHECKING, Optional, Tuple
|
|
25
23
|
import requests
|
|
26
24
|
from pytz import timezone
|
|
27
25
|
|
|
@@ -36,20 +34,18 @@ if TYPE_CHECKING:
|
|
|
36
34
|
log = logging.getLogger(__name__)
|
|
37
35
|
|
|
38
36
|
|
|
39
|
-
def which(cmd, mode=os.F_OK | os.X_OK, path=None):
|
|
37
|
+
def which(cmd, mode=os.F_OK | os.X_OK, path=None) -> Optional[str]:
|
|
40
38
|
"""
|
|
41
|
-
|
|
39
|
+
Return the path with conforms to the given mode on the Path.
|
|
42
40
|
|
|
43
|
-
|
|
44
|
-
conforms to the given mode on the PATH, or None if there is no such
|
|
45
|
-
file.
|
|
41
|
+
[Copy-pasted in from python3.6's shutil.which().]
|
|
46
42
|
|
|
47
43
|
`mode` defaults to os.F_OK | os.X_OK. `path` defaults to the result
|
|
48
44
|
of os.environ.get("PATH"), or can be overridden with a custom search
|
|
49
45
|
path.
|
|
50
|
-
|
|
46
|
+
|
|
47
|
+
:returns: The path found, or None.
|
|
51
48
|
"""
|
|
52
|
-
|
|
53
49
|
# Check that a given file can be accessed with the correct mode.
|
|
54
50
|
# Additionally check that `file` is not a directory, as on Windows
|
|
55
51
|
# directories pass the os.access check.
|
|
@@ -114,22 +110,20 @@ def toilPackageDirPath() -> str:
|
|
|
114
110
|
return result
|
|
115
111
|
|
|
116
112
|
|
|
117
|
-
def inVirtualEnv():
|
|
118
|
-
"""
|
|
119
|
-
Returns whether we are inside a virtualenv or Conda virtual environment.
|
|
120
|
-
"""
|
|
113
|
+
def inVirtualEnv() -> bool:
|
|
114
|
+
"""Test if we are inside a virtualenv or Conda virtual environment."""
|
|
121
115
|
return ('VIRTUAL_ENV' in os.environ or
|
|
122
116
|
'CONDA_DEFAULT_ENV' in os.environ or
|
|
123
117
|
hasattr(sys, 'real_prefix') or
|
|
124
118
|
(hasattr(sys, 'base_prefix') and sys.base_prefix != sys.prefix))
|
|
125
119
|
|
|
126
120
|
|
|
127
|
-
def resolveEntryPoint(entryPoint):
|
|
128
|
-
"""
|
|
129
|
-
Returns the path to the given entry point (see setup.py) that *should* work on a worker. The
|
|
130
|
-
return value may be an absolute or a relative path.
|
|
121
|
+
def resolveEntryPoint(entryPoint: str) -> str:
|
|
131
122
|
"""
|
|
123
|
+
Find the path to the given entry point that *should* work on a worker.
|
|
132
124
|
|
|
125
|
+
:returns: The path found, which may be an absolute or a relative path.
|
|
126
|
+
"""
|
|
133
127
|
if os.environ.get("TOIL_CHECK_ENV", None) == 'True' and inVirtualEnv():
|
|
134
128
|
path = os.path.join(os.path.dirname(sys.executable), entryPoint)
|
|
135
129
|
# Inside a virtualenv we try to use absolute paths to the entrypoints.
|
|
@@ -149,6 +143,8 @@ def resolveEntryPoint(entryPoint):
|
|
|
149
143
|
@memoize
|
|
150
144
|
def physicalMemory() -> int:
|
|
151
145
|
"""
|
|
146
|
+
Calculate the total amount of physical memory, in bytes.
|
|
147
|
+
|
|
152
148
|
>>> n = physicalMemory()
|
|
153
149
|
>>> n > 0
|
|
154
150
|
True
|
|
@@ -158,6 +154,7 @@ def physicalMemory() -> int:
|
|
|
158
154
|
try:
|
|
159
155
|
return os.sysconf('SC_PAGE_SIZE') * os.sysconf('SC_PHYS_PAGES')
|
|
160
156
|
except ValueError:
|
|
157
|
+
import subprocess
|
|
161
158
|
return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']).decode('utf-8').strip())
|
|
162
159
|
|
|
163
160
|
|
|
@@ -168,7 +165,8 @@ def physicalDisk(directory: str) -> int:
|
|
|
168
165
|
|
|
169
166
|
def applianceSelf(forceDockerAppliance: bool = False) -> str:
|
|
170
167
|
"""
|
|
171
|
-
|
|
168
|
+
Return the fully qualified name of the Docker image to start Toil appliance containers from.
|
|
169
|
+
|
|
172
170
|
The result is determined by the current version of Toil and three environment variables:
|
|
173
171
|
``TOIL_DOCKER_REGISTRY``, ``TOIL_DOCKER_NAME`` and ``TOIL_APPLIANCE_SELF``.
|
|
174
172
|
|
|
@@ -179,8 +177,6 @@ def applianceSelf(forceDockerAppliance: bool = False) -> str:
|
|
|
179
177
|
appliance image, complete with registry, image name and version tag, overriding both
|
|
180
178
|
``TOIL_DOCKER_NAME`` and `TOIL_DOCKER_REGISTRY`` as well as the version tag of the image.
|
|
181
179
|
Setting TOIL_APPLIANCE_SELF will not be necessary in most cases.
|
|
182
|
-
|
|
183
|
-
:rtype: str
|
|
184
180
|
"""
|
|
185
181
|
import toil.version
|
|
186
182
|
registry = lookupEnvVar(name='docker registry',
|
|
@@ -201,16 +197,17 @@ def applianceSelf(forceDockerAppliance: bool = False) -> str:
|
|
|
201
197
|
return checkDockerImageExists(appliance=appliance)
|
|
202
198
|
|
|
203
199
|
|
|
204
|
-
def customDockerInitCmd():
|
|
200
|
+
def customDockerInitCmd() -> str:
|
|
205
201
|
"""
|
|
206
|
-
|
|
207
|
-
|
|
202
|
+
Return the custom command set by the ``TOIL_CUSTOM_DOCKER_INIT_COMMAND`` environment variable.
|
|
203
|
+
|
|
204
|
+
The custom docker command is run prior to running the workers and/or the primary node's services.
|
|
205
|
+
|
|
208
206
|
This can be useful for doing any custom initialization on instances (e.g. authenticating to
|
|
209
207
|
private docker registries). Any single quotes are escaped and the command cannot contain a
|
|
210
|
-
set of blacklisted chars (newline or tab).
|
|
211
|
-
variable is not set.
|
|
208
|
+
set of blacklisted chars (newline or tab).
|
|
212
209
|
|
|
213
|
-
:
|
|
210
|
+
:returns: The custom commmand, or an empty string is returned if the environment variable is not set.
|
|
214
211
|
"""
|
|
215
212
|
command = lookupEnvVar(name='user-defined custom docker init command',
|
|
216
213
|
envName='TOIL_CUSTOM_DOCKER_INIT_COMMAND',
|
|
@@ -219,17 +216,18 @@ def customDockerInitCmd():
|
|
|
219
216
|
return command.replace("'", "'\\''") # Ensure any single quotes are escaped.
|
|
220
217
|
|
|
221
218
|
|
|
222
|
-
def customInitCmd():
|
|
219
|
+
def customInitCmd() -> str:
|
|
223
220
|
"""
|
|
224
|
-
|
|
225
|
-
|
|
221
|
+
Return the custom command set by the ``TOIL_CUSTOM_INIT_COMMAND`` environment variable.
|
|
222
|
+
|
|
223
|
+
The custom init command is run prior to running Toil appliance itself in workers and/or the
|
|
226
224
|
primary node (i.e. this is run one stage before ``TOIL_CUSTOM_DOCKER_INIT_COMMAND``).
|
|
225
|
+
|
|
227
226
|
This can be useful for doing any custom initialization on instances (e.g. authenticating to
|
|
228
227
|
private docker registries). Any single quotes are escaped and the command cannot contain a
|
|
229
|
-
set of blacklisted chars (newline or tab).
|
|
230
|
-
variable is not set.
|
|
228
|
+
set of blacklisted chars (newline or tab).
|
|
231
229
|
|
|
232
|
-
:
|
|
230
|
+
returns: the custom command or n empty string is returned if the environment variable is not set.
|
|
233
231
|
"""
|
|
234
232
|
command = lookupEnvVar(name='user-defined custom init command',
|
|
235
233
|
envName='TOIL_CUSTOM_INIT_COMMAND',
|
|
@@ -239,7 +237,7 @@ def customInitCmd():
|
|
|
239
237
|
|
|
240
238
|
|
|
241
239
|
def _check_custom_bash_cmd(cmd_str):
|
|
242
|
-
"""
|
|
240
|
+
"""Ensure that the Bash command doesn't contain invalid characters."""
|
|
243
241
|
assert not re.search(r'[\n\r\t]', cmd_str), f'"{cmd_str}" contains invalid characters (newline and/or tab).'
|
|
244
242
|
|
|
245
243
|
|
|
@@ -284,10 +282,9 @@ def checkDockerImageExists(appliance: str) -> str:
|
|
|
284
282
|
tag=tag)
|
|
285
283
|
|
|
286
284
|
|
|
287
|
-
def parseDockerAppliance(appliance):
|
|
285
|
+
def parseDockerAppliance(appliance: str) -> Tuple[str, str, str]:
|
|
288
286
|
"""
|
|
289
|
-
|
|
290
|
-
registry, image reference, and tag for that image.
|
|
287
|
+
Derive parsed registry, image reference, and tag from a docker image string.
|
|
291
288
|
|
|
292
289
|
Example: "quay.io/ucsc_cgl/toil:latest"
|
|
293
290
|
Should return: "quay.io", "ucsc_cgl/toil", "latest"
|
|
@@ -298,7 +295,7 @@ def parseDockerAppliance(appliance):
|
|
|
298
295
|
:param appliance: The full url of the docker image originally
|
|
299
296
|
specified by the user (or the default).
|
|
300
297
|
e.g. "quay.io/ucsc_cgl/toil:latest"
|
|
301
|
-
:
|
|
298
|
+
:returns: registryName, imageName, tag
|
|
302
299
|
"""
|
|
303
300
|
appliance = appliance.lower()
|
|
304
301
|
|
|
@@ -335,10 +332,7 @@ def checkDockerSchema(appliance):
|
|
|
335
332
|
|
|
336
333
|
class ApplianceImageNotFound(ImageNotFound):
|
|
337
334
|
"""
|
|
338
|
-
|
|
339
|
-
tag for TOIL_APPLIANCE_SELF specify an image manifest which could not be
|
|
340
|
-
retrieved from the given URL, because it produced the given HTTP error
|
|
341
|
-
code.
|
|
335
|
+
Error raised when using TOIL_APPLIANCE_SELF results in an HTTP error.
|
|
342
336
|
|
|
343
337
|
:param str origAppliance: The full url of the docker image originally
|
|
344
338
|
specified by the user (or the default).
|
|
@@ -363,28 +357,27 @@ class ApplianceImageNotFound(ImageNotFound):
|
|
|
363
357
|
# all the time.
|
|
364
358
|
KNOWN_EXTANT_IMAGES = set()
|
|
365
359
|
|
|
366
|
-
def requestCheckRegularDocker(origAppliance, registryName, imageName, tag):
|
|
360
|
+
def requestCheckRegularDocker(origAppliance: str, registryName: str, imageName: str, tag: str) -> bool:
|
|
367
361
|
"""
|
|
368
|
-
|
|
362
|
+
Check if an image exists using the requests library.
|
|
369
363
|
|
|
370
|
-
URL is based on the
|
|
371
|
-
https://docs.docker.com/registry/spec/manifest-v2-2
|
|
364
|
+
URL is based on the
|
|
365
|
+
`docker v2 schema <https://docs.docker.com/registry/spec/manifest-v2-2/>`_.
|
|
372
366
|
|
|
373
|
-
This has the following format:
|
|
374
|
-
https://{websitehostname}.io/v2/{repo}/manifests/{tag}
|
|
367
|
+
This has the following format: ``https://{websitehostname}.io/v2/{repo}/manifests/{tag}``
|
|
375
368
|
|
|
376
369
|
Does not work with the official (docker.io) site, because they require an OAuth token, so a
|
|
377
370
|
separate check is done for docker.io images.
|
|
378
371
|
|
|
379
|
-
:param
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
:param
|
|
383
|
-
:param
|
|
384
|
-
:param
|
|
385
|
-
:
|
|
372
|
+
:param origAppliance: The full url of the docker image originally
|
|
373
|
+
specified by the user (or the default).
|
|
374
|
+
e.g. ``quay.io/ucsc_cgl/toil:latest``
|
|
375
|
+
:param registryName: The url of a docker image's registry. e.g. ``quay.io``
|
|
376
|
+
:param imageName: The image, including path and excluding the tag. e.g. ``ucsc_cgl/toil``
|
|
377
|
+
:param tag: The tag used at that docker image's registry. e.g. ``latest``
|
|
378
|
+
:raises: ApplianceImageNotFound if no match is found.
|
|
379
|
+
:return: Return True if match found.
|
|
386
380
|
"""
|
|
387
|
-
|
|
388
381
|
if origAppliance in KNOWN_EXTANT_IMAGES:
|
|
389
382
|
# Check the cache first
|
|
390
383
|
return origAppliance
|
|
@@ -399,19 +392,19 @@ def requestCheckRegularDocker(origAppliance, registryName, imageName, tag):
|
|
|
399
392
|
return origAppliance
|
|
400
393
|
|
|
401
394
|
|
|
402
|
-
def requestCheckDockerIo(origAppliance, imageName, tag):
|
|
395
|
+
def requestCheckDockerIo(origAppliance: str, imageName: str, tag: str) -> bool:
|
|
403
396
|
"""
|
|
404
|
-
|
|
397
|
+
Check docker.io to see if an image exists using the requests library.
|
|
405
398
|
|
|
406
399
|
URL is based on the docker v2 schema. Requires that an access token be fetched first.
|
|
407
400
|
|
|
408
|
-
:param
|
|
409
|
-
|
|
410
|
-
:param
|
|
411
|
-
:param
|
|
412
|
-
:
|
|
401
|
+
:param origAppliance: The full url of the docker image originally
|
|
402
|
+
specified by the user (or the default). e.g. "ubuntu:latest"
|
|
403
|
+
:param imageName: The image, including path and excluding the tag. e.g. "ubuntu"
|
|
404
|
+
:param tag: The tag used at that docker image's registry. e.g. "latest"
|
|
405
|
+
:raises: ApplianceImageNotFound if no match is found.
|
|
406
|
+
:return: Return True if match found.
|
|
413
407
|
"""
|
|
414
|
-
|
|
415
408
|
if origAppliance in KNOWN_EXTANT_IMAGES:
|
|
416
409
|
# Check the cache first
|
|
417
410
|
return origAppliance
|
|
@@ -484,8 +477,9 @@ try:
|
|
|
484
477
|
|
|
485
478
|
class BotoCredentialAdapter(provider.Provider):
|
|
486
479
|
"""
|
|
487
|
-
|
|
488
|
-
|
|
480
|
+
Boto 2 Adapter to use AWS credentials obtained via Boto 3's credential finding logic.
|
|
481
|
+
|
|
482
|
+
This allows for automatic role assumption
|
|
489
483
|
respecting the Boto 3 config files, even when parts of the app still use
|
|
490
484
|
Boto 2.
|
|
491
485
|
|
|
@@ -493,18 +487,12 @@ try:
|
|
|
493
487
|
to avoid loads of processes swamping the EC2 metadata service.
|
|
494
488
|
"""
|
|
495
489
|
|
|
496
|
-
"""
|
|
497
|
-
Create a new BotoCredentialAdapter.
|
|
498
|
-
"""
|
|
499
|
-
|
|
500
490
|
# TODO: We take kwargs because new boto2 versions have an 'anon'
|
|
501
491
|
# argument and we want to be future proof
|
|
502
492
|
|
|
503
493
|
def __init__(self, name, access_key=None, secret_key=None,
|
|
504
494
|
security_token=None, profile_name=None, **kwargs):
|
|
505
|
-
"""
|
|
506
|
-
Create a new BotoCredentialAdapter.
|
|
507
|
-
"""
|
|
495
|
+
"""Create a new BotoCredentialAdapter."""
|
|
508
496
|
# TODO: We take kwargs because new boto2 versions have an 'anon'
|
|
509
497
|
# argument and we want to be future proof
|
|
510
498
|
|
|
@@ -526,10 +514,10 @@ try:
|
|
|
526
514
|
|
|
527
515
|
def get_credentials(self, access_key=None, secret_key=None, security_token=None, profile_name=None):
|
|
528
516
|
"""
|
|
529
|
-
Make sure our credential fields are populated.
|
|
530
|
-
constructor.
|
|
531
|
-
"""
|
|
517
|
+
Make sure our credential fields are populated.
|
|
532
518
|
|
|
519
|
+
Called by the base class constructor.
|
|
520
|
+
"""
|
|
533
521
|
if self._boto3_resolver is not None:
|
|
534
522
|
# Go get the credentials from the cache, or from boto3 if not cached.
|
|
535
523
|
# We need to be eager here; having the default None
|
|
@@ -544,6 +532,8 @@ try:
|
|
|
544
532
|
|
|
545
533
|
def _populate_keys_from_metadata_server(self):
|
|
546
534
|
"""
|
|
535
|
+
Hack to catch _credential_expiry_time being too soon and refresh the credentials.
|
|
536
|
+
|
|
547
537
|
This override is misnamed; it's actually the only hook we have to catch
|
|
548
538
|
_credential_expiry_time being too soon and refresh the credentials. We
|
|
549
539
|
actually just go back and poke the cache to see if it feels like
|
|
@@ -557,7 +547,6 @@ try:
|
|
|
557
547
|
|
|
558
548
|
So if we ever want to refresh, Boto 3 wants to refresh too.
|
|
559
549
|
"""
|
|
560
|
-
|
|
561
550
|
# This should only happen if we have expiring credentials, which we should only get from boto3
|
|
562
551
|
assert (self._boto3_resolver is not None)
|
|
563
552
|
|
|
@@ -566,6 +555,8 @@ try:
|
|
|
566
555
|
@retry()
|
|
567
556
|
def _obtain_credentials_from_boto3(self):
|
|
568
557
|
"""
|
|
558
|
+
Fill our credential fields from Boto 3.
|
|
559
|
+
|
|
569
560
|
We know the current cached credentials are not good, and that we
|
|
570
561
|
need to get them from Boto 3. Fill in our credential fields
|
|
571
562
|
(_access_key, _secret_key, _security_token,
|
|
@@ -605,7 +596,9 @@ try:
|
|
|
605
596
|
|
|
606
597
|
def _obtain_credentials_from_cache_or_boto3(self):
|
|
607
598
|
"""
|
|
608
|
-
Get the cached credentials
|
|
599
|
+
Get the cached credentials.
|
|
600
|
+
|
|
601
|
+
Or retrieve them from Boto 3 and cache them
|
|
609
602
|
(or wait for another cooperating process to do so) if they are missing
|
|
610
603
|
or not fresh enough.
|
|
611
604
|
"""
|