Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merging with upstream #1

Merged
merged 145 commits into from
May 14, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
145 commits
Select commit Hold shift + click to select a range
7650597
Update docs to hide Mesos (#4413)
w-gao Sep 27, 2023
f1055a3
Avoid concurrent modification in cluster scaler tests (#4600)
adamnovak Sep 29, 2023
9b09d62
Add String to File functionality into toil-wdl-runner (#4589)
stxue1 Sep 29, 2023
ff9302c
Separate out integration tests to run on a schedule (#4612)
adamnovak Oct 4, 2023
f8f9b41
Add config file support (#4569)
stxue1 Oct 5, 2023
ef2b923
take any nvidia-smi exception as not having gpu (#4611)
glennhickey Oct 5, 2023
b73b9ef
Make WDLOutputJob collect all task outputs (#4602)
stxue1 Oct 5, 2023
6c0fe1e
Ensure sibling files in toil-wdl-runner (#4610)
stxue1 Oct 16, 2023
c1361d4
Make sure the `--batchLogsDir` exists if it is set (#4635)
adamnovak Oct 19, 2023
1f4feea
Upgrade cwltool to avoid broken galaxy-tool-util release. (#4639)
mr-c Oct 20, 2023
68e05e1
cwl: use the latest commit from the proposed CWL v1.2.1 branch (#4565)
mr-c Oct 21, 2023
686cd90
Report errors in WDL using MiniWDL's error location printer (#4637)
adamnovak Oct 25, 2023
15763af
Support Python3.11 and drop Python 3.7 (#4646)
stxue1 Oct 26, 2023
ecebc07
Fix configargparse in CWL (#4618)
stxue1 Oct 26, 2023
c4df682
Update ruamel-yaml requirement from <0.17.33,>=0.15 to >=0.15,<0.18.4…
dependabot[bot] Oct 30, 2023
f1d082d
Fix CI Appliance Builds (#4655)
stxue1 Oct 30, 2023
5f40c6a
Fix #3867 and try to explain but not crash when bad things happen to …
adamnovak Oct 30, 2023
44c2eca
Bump mypy from 1.5.1 to 1.6.1 (#4660)
dependabot[bot] Oct 31, 2023
914daca
Move around reqs and move aws dev libraries to aws (#4664)
stxue1 Nov 2, 2023
8386955
Turn batch system tests back on (#4649)
adamnovak Nov 2, 2023
2068c76
Bump miniwdl from 1.10.0 to 1.11.1 (#4669)
dependabot[bot] Nov 6, 2023
2ecbb21
Move TES batch system to a plugin (#4650)
adamnovak Nov 8, 2023
bdb0286
skip unwanted networkx version (#4450)
dependabot[bot] Nov 9, 2023
dbba7ba
CWL Pipefish compatibility (#4636)
adamnovak Nov 9, 2023
be1dae7
Bump cwltool from 3.1.20231020140205 to 3.1.20231114134824 (#4685)
dependabot[bot] Nov 15, 2023
ff5bacc
Bump mypy from 1.6.1 to 1.7.0 (#4684)
dependabot[bot] Nov 15, 2023
d710213
Remove the parasol batch system. (#4678)
DailyDreaming Nov 16, 2023
836944f
Reenable Cactus on Kubernetes CI test (#4604)
stxue1 Nov 16, 2023
341ff1f
Only count output file usage when using the file store (#4692)
adamnovak Nov 21, 2023
272eba7
Bump mypy from 1.7.0 to 1.7.1 (#4697)
dependabot[bot] Nov 24, 2023
9cabfa3
AWS jobStoreTest: re-use delete_s3_bucket from toil.lib.aws (#4700)
mr-c Nov 28, 2023
c4112f6
Make sure cwltool always knows we have an outdir to fix #4698 (#4699)
adamnovak Nov 28, 2023
03b42a6
remove useage of the deprecated pkg_resources (#4701)
mr-c Nov 29, 2023
d906619
more resiliancy (#4395)
mr-c Dec 1, 2023
deddac4
Support CWL 1.2.1 (#4682)
stxue1 Dec 5, 2023
f60382e
Remove the WDL compiler. (#4679)
DailyDreaming Dec 5, 2023
e80db2c
Allow working with remote files in CWL and WDL workflows (#4690)
adamnovak Dec 7, 2023
36deda2
upgrade to cwltool 3.1.20231207110929 (#4707)
dependabot[bot] Dec 7, 2023
070ae22
Update docker requirement from <7,>=3.7.2 to >=3.7.2,<8 (#4713)
dependabot[bot] Dec 11, 2023
9aa2da9
Implement a better config file system for CWL/WDL options (#4666)
stxue1 Dec 12, 2023
2bf0aa3
Strip leading whitespace from WDL commands (#4720)
adamnovak Dec 14, 2023
cb91d3c
Add __init__.py to options folder (#4723)
stxue1 Dec 15, 2023
f4fd061
Make cwl mutually exclusive groups exist only when cwl is not suppres…
stxue1 Dec 15, 2023
c84990c
Point CI at the new public URLs for stuff we host
adamnovak Jan 2, 2024
d384d7d
Bump mypy from 1.7.1 to 1.8.0 (#4731)
dependabot[bot] Jan 2, 2024
6e257e5
Tolerate a failed AMI polling attempt (#4727)
adamnovak Jan 8, 2024
cf303ab
Update flake8 requirement from <7,>=3.8.4 to >=3.8.4,<8 (#4738)
dependabot[bot] Jan 9, 2024
c868060
Fix --printJobInfo (#4709)
adamnovak Jan 9, 2024
803f6d9
remove extraneous dependency on old 'mock' (#4739)
a-detiste Jan 11, 2024
1d6e534
Improve WDL documentation (#4732)
adamnovak Jan 11, 2024
b31e3d5
Fix scheduled CI tests (#4742)
adamnovak Jan 11, 2024
2515bd1
Update EC2 instances and EC2 update script. (#4745)
DailyDreaming Jan 12, 2024
f5f2535
Log more usefully for CWL workflows (#4736)
adamnovak Jan 16, 2024
b2e0516
Don't mark inputs (or outputs) executable for no reason (#4728)
adamnovak Jan 16, 2024
99a35eb
Bump cwltool from 3.1.20231207110929 to 3.1.20240112164112 (#4751)
dependabot[bot] Jan 16, 2024
c0feabd
Update flake8-bugbear requirement from <24,>=20.11.1 to >=20.11.1,<25…
dependabot[bot] Jan 16, 2024
3aecdb3
add pure Python fallback for getDirSizeRecursively() (#4753)
mr-c Jan 16, 2024
7566fdf
Update version_template.py for release
DailyDreaming Jan 16, 2024
2600566
Store chaining information just once (#4737)
adamnovak Jan 17, 2024
67a8b47
Stop marking HTTP registry as insecure (#4757)
adamnovak Jan 17, 2024
db6fb03
CWL: don't clear out user-provided values for the --default-container…
mr-c Jan 22, 2024
4aeb039
remove ruamel.yaml.string dependency for a simpler solution (#4760)
mr-c Jan 22, 2024
30ace20
Try to mitigate filling up the coordination directory (#4749)
adamnovak Jan 22, 2024
1821782
Allow toil-wdl-runner to run on Kubernetes and Mesos (#4754)
stxue1 Jan 23, 2024
73f155e
Ship User Logs to Leader (#4755)
adamnovak Jan 25, 2024
d698750
Update pytest requirement from <8,>=6.2.1 to >=6.2.1,<9 (#4772)
dependabot[bot] Jan 30, 2024
f6f732a
Add workflow to automatically update PRs when other PRs merge (#4774)
adamnovak Jan 31, 2024
ff6bf60
Stop complaining about XDG_RUNTIME_DIR (#4769)
adamnovak Jan 31, 2024
e45b27c
Update setuptools requirement from <69,>=65.5.1 to >=65.5.1,<70 (#4693)
dependabot[bot] Jan 31, 2024
beacc2e
Stop failing auto-update workflow on every merge conflict
adamnovak Jan 31, 2024
6b28a87
read the docs: enable generating graphs like inheritance trees. (#4734)
mr-c Jan 31, 2024
8746bf9
Docs: Always show Python execution using `python3` (#4764)
mr-c Jan 31, 2024
d32a535
Make formatting do all the code (#4777)
adamnovak Jan 31, 2024
6f204b5
avoid unnecessary boto{,3} imports (#4763)
mr-c Jan 31, 2024
b243a50
remove use of distutils by copying in strtobool() (#4765)
mr-c Feb 1, 2024
3f4811e
Revert --disableProgress to old flag-style behavior (#4778)
adamnovak Feb 1, 2024
cb0b291
Change default Singularity cache paths to be global (#4762)
stxue1 Feb 2, 2024
3acc05d
CPU count fallback (#4780)
adamnovak Feb 5, 2024
de0c005
Fix special characters in filenames with the FileJobStore (#4781)
adamnovak Feb 8, 2024
e743deb
Update sphinx-autodoc-typehints requirement (#4784)
dependabot[bot] Feb 8, 2024
2eef8dd
Use a default log limit of 100MiB (#4788)
adamnovak Feb 10, 2024
265929c
Require a new enough Docker to fix #4794 (#4795)
adamnovak Feb 13, 2024
84dfa4d
Log CWL command output inline on failure, and to logging system wheth…
adamnovak Feb 15, 2024
ee72892
Unify devirtualization to fix output name collisions (#4792)
adamnovak Feb 15, 2024
1889db6
Allow setting WDL container engine with --container (#4787)
adamnovak Feb 15, 2024
7166aa2
Request and handle Slurm timeout signal (#4804)
adamnovak Feb 20, 2024
6558c7f
Enforce failure when Slurm jobs time out (#4802)
adamnovak Feb 20, 2024
50ec293
Fix caching being accidentally set to True instead of None (#4805)
stxue1 Feb 23, 2024
c9bfb6c
Better stats for WDL workflows (#4770)
adamnovak Feb 23, 2024
f96cac9
Update EC2 instance list. (#4808)
DailyDreaming Feb 23, 2024
2131d05
Bump version.
DailyDreaming Feb 23, 2024
c37f123
Update README.rst
benedictpaten Mar 3, 2024
2741ebb
Respect job local-ness when chaining (#4809)
adamnovak Mar 4, 2024
eeb55e9
Fix Python 3.8 support (#4823)
adamnovak Mar 8, 2024
017f3e1
Fix missing description on PyPI (#4820)
mr-c Mar 8, 2024
d501617
Install build (#4826)
stxue1 Mar 9, 2024
aaafb14
Use a sentinel location instead of an unmodified location to mark mis…
adamnovak Mar 9, 2024
812f987
Bump mypy from 1.8.0 to 1.9.0 (#4830)
dependabot[bot] Mar 11, 2024
0ebbfe0
Make sure output directory exists before using it (#4832)
adamnovak Mar 11, 2024
0446fe2
Pass through statusCode to prevent infinite loop (#4829)
stxue1 Mar 11, 2024
e3b590c
Add tests for environment pickling (#4837)
adamnovak Mar 14, 2024
6770622
Add colored logging (#4828)
stxue1 Mar 14, 2024
615dacc
Remove unused CI test (#4843)
stxue1 Mar 16, 2024
e95371b
Measure CPU and memory usage in WDL Docker containers (#4819)
adamnovak Mar 19, 2024
f1abdfc
Allow debugging jobs by name (and status improvements) (#4840)
adamnovak Mar 19, 2024
8281a41
Improve exception handling to not output tracebacks (#4839)
stxue1 Mar 21, 2024
6f00e59
Update pytest-cov requirement from <5,>=2.12.1 to >=2.12.1,<6 (#4851)
dependabot[bot] Mar 26, 2024
066c4e1
Update docutils requirement from <0.21,>=0.16 to >=0.16,<0.22 (#4866)
dependabot[bot] Apr 10, 2024
f080164
Update galaxy-util requirement from <23 to <25 (#4862)
dependabot[bot] Apr 10, 2024
3815a2e
Update galaxy-tool-util requirement from <23 to <25 (#4861)
dependabot[bot] Apr 10, 2024
4b5f7b7
Bump cwltool from 3.1.20240112164112 to 3.1.20240404144621 (#4870)
dependabot[bot] Apr 11, 2024
b27be0f
Bump gunicorn from 21.2.0 to 22.0.0 (#4871)
dependabot[bot] Apr 17, 2024
78fe93d
Retry Slurm interactions more (#4869)
adamnovak Apr 17, 2024
bb76807
Replace use of boto with boto3 for `awsProvisioner.py` (#4859)
stxue1 Apr 19, 2024
068717e
Allow fetching job inputs for debugging (#4848)
adamnovak Apr 23, 2024
8438f73
Make leader wait for expected updates to be visible in the job store,…
adamnovak Apr 25, 2024
c566f31
Enable FUSE for privileged Toil clusters (#4824)
stxue1 Apr 26, 2024
c743848
Detect if the GridEngine worker thread has crashed to prevent hanging…
stxue1 Apr 26, 2024
e330654
Bump mypy from 1.9.0 to 1.10.0 (#4878)
dependabot[bot] Apr 26, 2024
0b0814d
remove SLURM caching override to support caching (#4884)
stxue1 Apr 26, 2024
1557b8a
Add more debug logging for when the job is attempted and the worker i…
stxue1 Apr 26, 2024
435d9c1
Update WDL conformance tests on CI (#4876)
stxue1 Apr 29, 2024
d681fe6
Replace all usage of boto2 with boto3 (#4868)
stxue1 Apr 29, 2024
b37f56e
Revert ensurepip to get-pip (#4900)
stxue1 Apr 30, 2024
6bf9781
docs cleanup (#4889)
mr-c Apr 30, 2024
3f9c1c3
Bump to a new major version (#4885)
adamnovak Apr 30, 2024
8b6af29
Warn user. (#4893)
DailyDreaming Apr 30, 2024
016f7a6
Allow symlinks to inputs as WDL outputs (#4883)
adamnovak Apr 30, 2024
144d1f1
bye pytz (#4890)
mr-c May 1, 2024
2b4c044
Stop suggesting infinity when validating half-open intervals (#4887)
adamnovak May 1, 2024
5d436d3
Fix WDL option spelling and tolerate Cromwell-isms (#4906)
adamnovak May 1, 2024
bcfcc59
Remove wrapped CWL doc example. (#4892)
DailyDreaming May 2, 2024
9444abb
Add retries to DockerCheckTest.testBadGoogleRepo (#4909)
stxue1 May 2, 2024
870e177
Fix 3.8 backport.timezone import (#4908)
stxue1 May 2, 2024
460846d
Update to Python 3.12 (#4901)
stxue1 May 6, 2024
eb83bf5
Bump flask-cors from 4.0.0 to 4.0.1 (#4916)
dependabot[bot] May 6, 2024
ed7bb18
Try /tmp before the workdir (#4914)
stxue1 May 6, 2024
a48f8eb
biocontainer tests: use version corresponding to v2 Docker Image Form…
mr-c May 6, 2024
05ade74
Revert "Update to Python 3.12 (#4901)" (#4917)
DailyDreaming May 6, 2024
56b0dc3
Bump miniwdl from 1.11.1 to 1.12.0 (#4920)
dependabot[bot] May 7, 2024
115be67
Support Python 3.12 (#4919)
stxue1 May 9, 2024
e325167
Add documentation for installing batch system plugins (#4926)
stxue1 May 14, 2024
11aa087
Update Werkzeug to appease the Github security police (#4925)
adamnovak May 14, 2024
1f05a0b
Merged with latest changes from the upstream
michael-kotliar May 14, 2024
fb4b801
Remove unused comment
michael-kotliar May 14, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions .github/workflows/autoupdate.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Auto-update PRs when other PRs are merged.
# See https://github.com/marketplace/actions/auto-update

name: autoupdate
on:
push:
branches:
- master
jobs:
autoupdate:
name: autoupdate
runs-on: ubuntu-22.04
steps:
- uses: docker://chinthakagodawita/autoupdate-action:v1
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
# Work on PRs against branches that are protected (so they need to be
# up to date)
PR_FILTER: "protected"
# Don't work on draft PRs
PR_READY_STATE: "ready_for_review"
# Don't fail on the triggering commit if it makes a merge conflict
# with a PR and the PR can't update
MERGE_CONFLICT_ACTION: "ignore"
394 changes: 270 additions & 124 deletions .gitlab-ci.yml

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ build:
os: ubuntu-22.04
tools:
python: "3.9"
apt_packages:
- graphviz

sphinx:
configuration: docs/conf.py
Expand Down
25 changes: 25 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -202,3 +202,28 @@
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

All code in this repository excluding src/toil/statsAndLogging.py::install_log_color is under the Apache License as outlined directly above.
Some code in src/toil/statsAndLogging.py::install_log_color is under the MiniWDL MIT License as outlined directly below.

MIT License

Copyright (c) 2018 Chan Zuckerberg Initiative

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
42 changes: 23 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ include common.mk

define help

Supported targets: prepare, develop, docs, sdist, clean, test, docker, and push_docker.
Supported targets: prepare, develop, docs, dist, clean, test, docker, and push_docker.

Please note that all build targets require a virtualenv to be active.

Expand All @@ -29,10 +29,11 @@ list of supported extras. To install Toil in develop mode with all extras, run

make develop extras=[all]

The 'sdist' target creates a source distribution of Toil. It is used for some unit tests and for
installing the currently checked out version of Toil into the appliance image.
The 'dist' target creates a source distribution and a wheel of Toil. It is used
for some unit tests and for installing the currently checked out version of Toil
into the appliance image.

The 'clean' target cleans up the side effects of 'develop', 'sdist', 'docs', and 'docker'
The 'clean' target cleans up the side effects of 'develop', 'dist', 'docs', and 'docker'
on this machine. It does not undo externally visible effects like removing packages already
uploaded to PyPI.

Expand Down Expand Up @@ -91,7 +92,7 @@ extras=
# You can say make develop packages=xxx to install packages in the same Python
# environment as Toil itself without creating dependency conflicts with Toil
packages=
sdist_name:=toil-$(shell python version_template.py distVersion).tar.gz
sdist_name:=toil-$(shell python3 version_template.py distVersion).tar.gz

green=\033[0;32m
normal=\033[0m
Expand All @@ -114,11 +115,12 @@ clean_develop: check_venv
uninstall:
- pip uninstall -y toil

dist: sdist
sdist: dist/$(sdist_name)

dist/$(sdist_name): check_venv
dist/$(sdist_name):
@test -f dist/$(sdist_name) && mv dist/$(sdist_name) dist/$(sdist_name).old || true
python setup.py sdist
python3 -m build
@test -f dist/$(sdist_name).old \
&& ( cmp -s <(tar -xOzf dist/$(sdist_name)) <(tar -xOzf dist/$(sdist_name).old) \
&& mv dist/$(sdist_name).old dist/$(sdist_name) \
Expand All @@ -133,20 +135,25 @@ clean_sdist:
# Setting SET_OWNER_TAG will tag cloud resources so that UCSC's cloud murder bot won't kill them.
test: check_venv check_build_reqs
TOIL_OWNER_TAG="shared" \
python -m pytest --durations=0 --strict-markers --log-level DEBUG --log-cli-level INFO -r s $(cov) -n $(threads) --dist loadscope $(tests) -m "$(marker)"
python -m pytest --log-format="%(asctime)s %(levelname)s %(message)s" --durations=0 --strict-markers --log-level DEBUG --log-cli-level INFO -r s $(cov) -n $(threads) --dist loadscope $(tests) -m "$(marker)" --color=yes

test_debug: check_venv check_build_reqs
TOIL_OWNER_TAG="$(whoami)" \
python -m pytest --log-format="%(asctime)s %(levelname)s %(message)s" --durations=0 --strict-markers --log-level DEBUG -s -o log_cli=true --log-cli-level DEBUG -r s $(tests) -m "$(marker)" --tb=native --maxfail=1 --color=yes


# This target will skip building docker and all docker based tests
# these are our travis tests; rename?
test_offline: check_venv check_build_reqs
@printf "$(cyan)All docker related tests will be skipped.$(normal)\n"
TOIL_SKIP_DOCKER=True \
python -m pytest -vv --timeout=600 --strict-markers --log-level DEBUG --log-cli-level INFO $(cov) -n $(threads) --dist loadscope $(tests) -m "$(marker)"
TOIL_SKIP_ONLINE=True \
python -m pytest --log-format="%(asctime)s %(levelname)s %(message)s" -vv --timeout=600 --strict-markers --log-level DEBUG --log-cli-level INFO $(cov) -n $(threads) --dist loadscope $(tests) -m "$(marker)" --color=yes

# This target will run about 1 minute of tests, and stop at the first failure
test_1min: check_venv check_build_reqs
TOIL_SKIP_DOCKER=True \
python -m pytest -vv --timeout=10 --strict-markers --log-level DEBUG --log-cli-level INFO --maxfail=1 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::CWLWorkflowTest::test_run_colon_output src/toil/test/jobStores/jobStoreTest.py::FileJobStoreTest::testUpdateBehavior -m "$(marker)"
python -m pytest --log-format="%(asctime)s %(levelname)s %(message)s" -vv --timeout=10 --strict-markers --log-level DEBUG --log-cli-level INFO --maxfail=1 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::CWLWorkflowTest::test_run_colon_output src/toil/test/jobStores/jobStoreTest.py::FileJobStoreTest::testUpdateBehavior -m "$(marker)" --color=yes

ifdef TOIL_DOCKER_REGISTRY

Expand Down Expand Up @@ -232,7 +239,7 @@ push_docker: docker

load_docker: docker
cd docker ; docker buildx build --platform $(arch) --load --tag=$(docker_image):$(TOIL_DOCKER_TAG) --cache-from type=local,src=../.docker-cache/toil -f Dockerfile .
cd dashboard/prometheus ; docker buildx build --platform $(arch) --load --tag=$(prometheus_image):$(TOIL_DOCKER_TAG) --cache-from type=local,src=../../.docker-cache/prometheus -f Dockerfile .
cd dashboard/prometheus ; docker buildx build --platform $(arch) --load --tag=$(prometheus_image):$(TOIL_DOCKER_TAG) --cache-from type=local,src=../../.docker-cache/prometheus -f Dockerfile .
cd dashboard/grafana ; docker buildx build --platform $(arch) --load --tag=$(grafana_image):$(TOIL_DOCKER_TAG) --cache-from type=local,src=../../.docker-cache/grafana -f Dockerfile .
cd dashboard/mtail ; docker buildx build --platform $(arch) --load --tag=$(mtail_image):$(TOIL_DOCKER_TAG) --cache-from type=local,src=../../.docker-cache/mtail -f Dockerfile .

Expand All @@ -245,7 +252,6 @@ endif


docs: check_venv check_build_reqs
# Strange, but seemingly benign Sphinx warning floods stderr if not filtered:
cd docs && ${MAKE} html

clean_docs: check_venv
Expand All @@ -254,7 +260,7 @@ clean_docs: check_venv
clean: clean_develop clean_sdist clean_docs

check_build_reqs:
@(python -c 'import mock; import pytest' && which sphinx-build >/dev/null) \
@(python -c 'import pytest' && which sphinx-build >/dev/null) \
|| ( printf "$(red)Build requirements are missing. Run 'make prepare' to install them.$(normal)\n" ; false )

prepare: check_venv
Expand Down Expand Up @@ -295,13 +301,11 @@ remove_unused_imports: $(PYSOURCES)
remove_trailing_whitespace:
$(CURDIR)/contrib/admin/remove_trailing_whitespace.py

format: $(wildcard src/toil/cwl/*.py)
format: $(PYSOURCES)
black $^ contrib/mypy-stubs

mypy:
mypy --ignore-missing-imports --no-strict-optional \
--warn-redundant-casts --warn-unused-ignores \
$(CURDIR)/src/toil/cwl/cwltoil.py
MYPYPATH=$(CURDIR)/contrib/mypy-stubs mypy --strict $(CURDIR)/src/toil/{cwl/cwltoil.py,test/cwl/cwlTest.py}
$(CURDIR)/contrib/admin/mypy-with-ignore.py

# This target will check any modified files for pylint errors.
Expand All @@ -321,8 +325,8 @@ diff_pydocstyle_report: pydocstyle_report.txt
diff-quality --compare-branch=master --violations=pycodestyle --fail-under=100 $^

diff_mypy:
mypy --cobertura-xml-report . src/toil || true
diff-cover --fail-under=100 cobertura.xml
mypy --cobertura-xml-report . src/toil > /dev/null || true
diff-cover --fail-under=100 --compare-branch origin/master cobertura.xml

pyupgrade: $(PYSOURCES)
pyupgrade --exit-zero-even-if-changed --py37-plus $^
Expand Down
8 changes: 6 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

Toil is a scalable, efficient, cross-platform (Linux & macOS) pipeline management system,
written entirely in Python, and designed around the principles of functional
programming.
programming. It supports running workflows written in either Common Workflow Language (`CWL`_) or
Workflow Description Language (`WDL`_), as well as having its own rich Python API for writing workflows against.
It supports running workflows locally on your system (e.g. a laptop), on an HPC cluster, or in the cloud.

* Check the `website`_ for a description of Toil and its features.
* Full documentation for the latest stable release can be found at
Expand All @@ -20,8 +22,10 @@ programming.
.. _forum: https://groups.google.com/forum/#!forum/toil-community
.. _blog: https://toilpipelines.wordpress.com/
.. _biostars: https://www.biostars.org/t/toil/
.. _CWL: https://www.commonwl.org/
.. _WDL: https://openwdl.org/

Notes:

* Toil moved from https://github.com/BD2KGenomics/toil to https://github.com/DataBiosphere/toil on July 5th, 2018.
* Toil dropped python 2.7 support on February 13, 2020 (last working py2.7 version is 3.24.0).
* Toil dropped Python 2.7 support on February 13, 2020 (the last working py2.7 version is 3.24.0).
15 changes: 6 additions & 9 deletions attic/README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#Toil
Python based pipeline management software for clusters that makes running recursive and dynamically scheduled computations straightforward. So far works with gridEngine, lsf, parasol and on multi-core machines.
Python based pipeline management software for clusters that makes running recursive and dynamically scheduled computations straightforward. So far works with gridEngine, lsf, and on multi-core machines.

##Authors
[Benedict Paten](https://github.com/benedictpaten/), [Dent Earl](https://github.com/dentearl/), [Daniel Zerbino](https://github.com/dzserbino/), [Glenn Hickey](https://github.com/glennhickey/), other UCSC people.
Expand Down Expand Up @@ -28,9 +28,9 @@ The following walks through running a toil script and using the command-line too

Once toil is installed, running a toil script is performed by executing the script from the command-line, e.g. (using the file sorting toy example in **tests/sort/scriptTreeTest_Sort.py**):

<code>[]$ scriptTreeTest_Sort.py --fileToSort foo --toil bar/toil --batchSystem parasol --logLevel INFO --stats</code>
<code>[]$ scriptTreeTest_Sort.py --fileToSort foo --toil bar/toil --batchSystem slurm --logLevel INFO --stats</code>

Which in this case uses the parasol batch system, and INFO level logging and where foo is the file to sort and bar/toil is the location of a directory (which should not already exist) from which the batch will be managed. Details of the toil options are described below; the stats option is used to gather statistics about the jobs in a run.
Which in this case uses the slurm batch system, and INFO level logging and where foo is the file to sort and bar/toil is the location of a directory (which should not already exist) from which the batch will be managed. Details of the toil options are described below; the stats option is used to gather statistics about the jobs in a run.

The script will return a zero exit value if the toil system is successfully able to run to completion, else it will create an exception. If the script fails because a job failed then the log file information of the job will be reported to std error.
The toil directory (here 'bar/toil') is not automatically deleted regardless of success or failure, and contains a record of the jobs run, which can be enquired about using the **toilStatus** command. e.g.
Expand Down Expand Up @@ -150,17 +150,14 @@ The important arguments to **toilStats** are:

--batchSystem=BATCHSYSTEM
The type of batch system to run the job(s) with,
currently can be
'singleMachine'/'parasol'/'acidTest'/'gridEngine'/'lsf'.
currently can be 'singleMachine'/'gridEngine'/'lsf'.
default=singleMachine
--maxThreads=MAXTHREADS
The maximum number of threads (technically processes
at this point) to use when running in single machine
mode. Increasing this will allow more jobs to run
concurrently when running on a single machine.
default=4
--parasolCommand=PARASOLCOMMAND
The command to run the parasol program default=parasol

Options to specify default cpu/memory requirements (if not
specified by the jobs themselves), and to limit the total amount of
Expand Down Expand Up @@ -202,7 +199,7 @@ The important arguments to **toilStats** are:
--bigBatchSystem=BIGBATCHSYSTEM
The batch system to run for jobs with larger
memory/cpus requests, currently can be
'singleMachine'/'parasol'/'acidTest'/'gridEngine'.
'singleMachine'/'gridEngine'.
default=none
--bigMemoryThreshold=BIGMEMORYTHRESHOLD
The memory threshold above which to submit to the big
Expand Down Expand Up @@ -240,7 +237,7 @@ The important arguments to **toilStats** are:

The following sections are for people creating toil scripts and as general information. The presentation **[docs/toilSlides.pdf](https://github.com/benedictpaten/toil/blob/master/doc/toilSlides.pdf)** is also a quite useful, albeit slightly out of date, guide to using toil. -

Most batch systems (such as LSF, Parasol, etc.) do not allow jobs to spawn
Most batch systems (such as LSF) do not allow jobs to spawn
other jobs in a simple way.

The basic pattern provided by toil is as follows:
Expand Down
10 changes: 5 additions & 5 deletions attic/toil-sort-example.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from __future__ import absolute_import
from six.moves import xrange
from argparse import ArgumentParser
from configargparse import ArgumentParser
import os
import logging
import random
Expand All @@ -14,7 +14,7 @@ def setup(job, input_file_id, n, down_checkpoints):
Returns the FileID of the sorted file
"""
# Write the input file to the file store
job.fileStore.logToMaster("Starting the merge sort")
job.fileStore.log_to_leader("Starting the merge sort")
return job.addChildJobFn(down,
input_file_id, n,
down_checkpoints=down_checkpoints,
Expand All @@ -33,7 +33,7 @@ def down(job, input_file_id, n, down_checkpoints):
length = os.path.getsize(input_file)
if length > n:
# We will subdivide the file
job.fileStore.logToMaster("Splitting file: %s of size: %s"
job.fileStore.log_to_leader("Splitting file: %s of size: %s"
% (input_file_id, length), level=logging.CRITICAL)
# Split the file into two copies
mid_point = get_midpoint(input_file, 0, length)
Expand All @@ -52,7 +52,7 @@ def down(job, input_file_id, n, down_checkpoints):
memory='600M').rv()).rv()
else:
# We can sort this bit of the file
job.fileStore.logToMaster("Sorting file: %s of size: %s"
job.fileStore.log_to_leader("Sorting file: %s of size: %s"
% (input_file_id, length), level=logging.CRITICAL)
# Sort the copy and write back to the fileStore
output_file = job.fileStore.getLocalTempFile()
Expand All @@ -66,7 +66,7 @@ def up(job, input_file_id_1, input_file_id_2):
with job.fileStore.writeGlobalFileStream() as (fileHandle, output_id):
with job.fileStore.readGlobalFileStream(input_file_id_1) as inputFileHandle1:
with job.fileStore.readGlobalFileStream(input_file_id_2) as inputFileHandle2:
job.fileStore.logToMaster("Merging %s and %s to %s"
job.fileStore.log_to_leader("Merging %s and %s to %s"
% (input_file_id_1, input_file_id_2, output_id))
merge(inputFileHandle1, inputFileHandle2, fileHandle)

Expand Down
1 change: 1 addition & 0 deletions common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ export TOIL_AWS_NODE_DEBUG?=False # Don't shut down EC2 instances that fail so
export TOIL_TEST_INTEGRATIVE?=False # If ``True``, this allows the integration tests to run.
export TOIL_TEST_QUICK?=False # If ``True``, long running tests are skipped.
export TOIL_SKIP_DOCKER?=False # Skip docker dependent tests
export TOIL_SKIP_ONLINE?=False # Skip Internet-dependent tests

export TOIL_AWS_KEYNAME?=id_rsa # SSH key to use for tests in AWS.
export TOIL_GOOGLE_KEYNAME?=id_rsa # SSH key to use for tests in google.
Expand Down
11 changes: 0 additions & 11 deletions contrib/admin/mypy-with-ignore.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,15 @@ def main():
'src/toil/__init__.py',
'src/toil/deferred.py',
'src/toil/version.py',
'src/toil/wdl/utils.py',
'src/toil/wdl/wdl_synthesis.py',
'src/toil/wdl/wdl_analysis.py',
'src/toil/wdl/wdl_functions.py',
'src/toil/wdl/toilwdl.py',
'src/toil/wdl/versions/draft2.py',
'src/toil/wdl/versions/v1.py',
'src/toil/wdl/versions/dev.py',
'src/toil/provisioners/abstractProvisioner.py',
'src/toil/provisioners/gceProvisioner.py',
'src/toil/provisioners/__init__.py',
'src/toil/provisioners/node.py',
'src/toil/provisioners/aws/boto2Context.py',
'src/toil/provisioners/aws/awsProvisioner.py',
'src/toil/provisioners/aws/__init__.py',
'src/toil/batchSystems/slurm.py',
'src/toil/batchSystems/gridengine.py',
'src/toil/batchSystems/singleMachine.py',
'src/toil/batchSystems/parasol.py',
'src/toil/batchSystems/torque.py',
'src/toil/batchSystems/options.py',
'src/toil/batchSystems/registry.py',
Expand Down Expand Up @@ -104,7 +94,6 @@ def ignore(file_path):
if file_path.startswith(prefix):
return True
return False


filtered_files_to_check = []
for file_path in all_files_to_check:
Expand Down
5 changes: 5 additions & 0 deletions contrib/mypy-stubs/configargparse/__init__.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from .configargparse import ArgParser as ArgParser
from .configargparse import ArgumentParser as ArgumentParser
from .configargparse import Namespace as Namespace
from .configargparse import SUPPRESS as SUPPRESS
from .configargparse import YAMLConfigFileParser as YAMLConfigFileParser
Loading
Loading