Skip to content

Commit fae062f

Browse files
committed
Update this branch because python 3.9 was released for real a while ago
2 parents 9ab20dd + 1dac981 commit fae062f

File tree

235 files changed

+7044
-4424
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

235 files changed

+7044
-4424
lines changed

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# Description
2+
3+
Please include a summary of the change and (optionally) which issue is fixed. Please also include
4+
relevant motivation and context.
5+
6+
Fixes # (issue)
7+
8+
## Type of change
9+
10+
Choose which options apply, and delete the ones which do not apply.
11+
12+
- Bug fix (non-breaking change that fixes an issue)
13+
- New feature (non-breaking change that adds functionality)
14+
- Breaking change (fix or feature that would cause existing functionality to not work as expected)
15+
- Documentation update
16+
- Code maintentance/cleanup

.travis.yml

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
language: python
22
python:
3-
- "3.9-dev"
3+
- "3.6"
4+
- "3.7"
5+
- "3.8"
6+
- "3.9"
47

58
env:
69
global:
710
- HYDRA_LAUNCHER=fork
811
- OMPI_MCA_rmaps_base_oversubscribe=yes
912
- MPI=mpich
10-
- CCTOOLS_VERSION=7.0.11
1113

1214
before_install:
1315
- sudo apt-get update -q
@@ -28,37 +30,50 @@ os:
2830

2931
# command to run tests
3032
script:
31-
- make flake8
32-
- make lint
33-
34-
# This uses all of the configurations and tests as the base from which to
35-
# run mypy checks - these are likely to capture most of the code used in
36-
# parsl
37-
- make mypy
38-
3933
# do this before any testing, but not in-between tests
4034
- make clean_coverage
4135

4236
# run the make targets for the two supported targets.
4337
- make test
4438

39+
# documentation checks:
40+
41+
- pip install .[docs]
42+
- sudo apt-get install -y pandoc
43+
- cd docs
44+
45+
# check we can build the docs without warnings
46+
- make SPHINXOPTS=-W html
47+
4548
# check that documentation stubs are up to date, as they are compiled from
4649
# python code but stored in version control rather than generated as part
47-
# of doc build. prereqs for this will have been installed because of above
48-
# pip install .[all] step
49-
- cd docs
50+
# of doc build.
5051
- rm -rfv stubs
5152
- sphinx-autogen reference.rst userguide/*rst devguide/*rst
5253
# this will both display any diffs in log output, and fail if there is any diff
5354
- git diff --exit-code
55+
5456
- cd ..
5557

5658
# assert that none of the runs in this test have put an ERROR message into a
57-
# database manager log file or monitoring hub log file. It would be better if
59+
# database manager log file or monitoring router log file. It would be better if
5860
# the tests themselves failed immediately when there was a monitoring error, but
5961
# in the absence of that, this is a dirty way to check.
6062
- bash -c '! grep ERROR runinfo*/*/database_manager.log'
61-
- bash -c '! grep ERROR runinfo*/*/hub.log'
63+
- bash -c '! grep ERROR runinfo*/*/monitoring_router.log'
64+
65+
# Check that parsl-visualize does not give errors.
66+
# 'monitoring.db' needs to exist and have some interesting content in it
67+
# which at time of writing comes from the htex_local_alternative test
68+
# run.
69+
- sudo apt-get install -y graphviz
70+
- pip install .[monitoring]
71+
- parsl-visualize &
72+
# now wait for this to become responsive to connections
73+
- wget http://127.0.0.1:8080/ --retry-connrefused --tries 30 --waitretry=1
74+
# wget will return a failure code if any of the requested URLs don't return an HTTP 200 result
75+
- wget http://127.0.0.1:8080/ --recursive --no-verbose --page-requisites --level=inf -e robots=off
76+
- killall --wait parsl-visualize
6277

6378
# check that 'all' install target works, even though we aren't doing any further
6479
# testing of what is installed
File renamed without changes.

CONTRIBUTING.rst

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,10 @@ Where to start
33

44
We welcome contributions of any type (e.g., bug fixes, new features, reporting issues, documentation, etc). If you're looking for a good place to get started you might like to peruse our current Git issues (those marked with `help wanted <https://github.com/Parsl/parsl/labels/help%20wanted>`_ are a good place to start).
55

6-
Please be aware of `Parsl's Code of Conduct<https://github.com/Parsl/parsl/blob/master/CoC.md>`_.
6+
Please be aware of `Parsl's Code of Conduct <https://github.com/Parsl/parsl/blob/master/CODE_OF_CONDUCT.md>`_.
7+
8+
If you are not familiar with GitHub pull requests, the main mechanism to contribute changes to our code, there is `documentation available <https://opensource.com/article/19/7/create-pull-request-github>`_.
9+
710

811
Coding conventions
912
------------------

Makefile

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ MPICH=mpich
88
OPENMPI=openmpi
99
EXECUTORS_PATH := $(shell ls -d parsl/executors/*/ | tr '\n' ':')
1010
export PATH := $(EXECUTORS_PATH):$(WORKQUEUE_INSTALL)/bin/:$(PATH)
11-
export CCTOOLS_VERSION=7.0.11
11+
export CCTOOLS_VERSION=7.1.11
1212
export HYDRA_LAUNCHER=fork
1313
export OMPI_MCA_rmaps_base_oversubscribe=yes
1414
MPI=$(MPICH)
@@ -24,9 +24,9 @@ virtualenv: ## create an activate a virtual env
2424
echo "Run 'source $(VENV)/bin/activate' to activate the virtual environment"
2525

2626

27-
$(DEPS): virtualenv test-requirements.txt
27+
$(DEPS): test-requirements.txt requirements.txt
2828
pip3 install --upgrade pip
29-
pip3 install -r test-requirements.txt
29+
pip3 install -r test-requirements.txt -r requirements.txt
3030
touch $(DEPS)
3131

3232
.PHONY: deps
@@ -52,42 +52,39 @@ mypy: ## run mypy checks
5252
MYPYPATH=$(CWD)/mypy-stubs mypy parsl/app/ parsl/channels/ parsl/dataflow/ parsl/data_provider/ parsl/launchers parsl/providers/
5353

5454
.PHONY: local_thread_test
55-
local_thread_test: $(DEPS) ## run all tests with local_thread config
56-
pytest parsl -k "not cleannet" --config parsl/tests/configs/local_threads.py --cov=parsl --cov-append --cov-report= --random-order
55+
local_thread_test: ## run all tests with local_thread config
56+
pytest parsl/tests/ -k "not cleannet" --config parsl/tests/configs/local_threads.py --cov=parsl --cov-append --cov-report= --random-order
5757

5858
.PHONY: htex_local_test
59-
htex_local_test: $(DEPS) ## run all tests with htex_local config
60-
PYTHONPATH=. pytest parsl -k "not cleannet" --config parsl/tests/configs/htex_local.py --cov=parsl --cov-append --cov-report= --random-order
59+
htex_local_test: ## run all tests with htex_local config
60+
PYTHONPATH=. pytest parsl/tests/ -k "not cleannet" --config parsl/tests/configs/htex_local.py --cov=parsl --cov-append --cov-report= --random-order
6161

6262
.PHONY: htex_local_alternate_test
63-
htex_local_alternate_test: $(DEPS) ## run all tests with htex_local config
64-
echo "$(MPI)}"
65-
parsl/executors/extreme_scale/install-mpi.sh $(MPI)
66-
pip3 install ".[extreme_scale,monitoring]"
67-
PYTHONPATH=. pytest parsl -k "not cleannet" --config parsl/tests/configs/htex_local_alternate.py --cov=parsl --cov-append --cov-report= --random-order
63+
htex_local_alternate_test: ## run all tests with htex_local config
64+
pip3 install ".[monitoring]"
65+
PYTHONPATH=. pytest parsl/tests/ -k "not cleannet" --config parsl/tests/configs/htex_local_alternate.py --cov=parsl --cov-append --cov-report= --random-order
6866

6967
$(WORKQUEUE_INSTALL):
7068
parsl/executors/workqueue/install-workqueue.sh
7169

72-
73-
work_queue_procs := $(shell ps aux | grep -E -e "[0-9]+:[0-9]+ work_queue_worker" | tr -s ' ' | cut -f 2 -d " ")
74-
work_queue_killcmd := $(if $(work_queue_procs), "kill" "-3" $(procs), "echo" "no work_queue_workers to running")
75-
7670
.PHONY: workqueue_ex_test
77-
workqueue_ex_test: $(DEPS) $(WORKQUEUE_INSTALL) ## run all tests with workqueue_ex config
78-
pip3 install ".[extreme_scale]"
79-
@$(work_queue_killcmd)
80-
work_queue_worker localhost 9000 &> /dev/null &
81-
PYTHONPATH=.:/tmp/cctools/lib/python3.5/site-packages pytest parsl -k "not cleannet" --config parsl/tests/configs/workqueue_ex.py --cov=parsl --cov-append --cov-report= --random-order --bodge-dfk-per-test
82-
@$(work_queue_killcmd)
71+
workqueue_ex_test: $(WORKQUEUE_INSTALL) ## run all tests with workqueue_ex config
72+
PYTHONPATH=.:/tmp/cctools/lib/python3.5/site-packages pytest parsl/tests/ -k "not cleannet and not issue363" --config parsl/tests/configs/workqueue_ex.py --cov=parsl --cov-append --cov-report= --random-order
8373

8474
.PHONY: config_local_test
85-
config_local_test: $(DEPS) ## run all tests with workqueue_ex config
75+
config_local_test: ## run all tests with workqueue_ex config
76+
echo "$(MPI)"
77+
parsl/executors/extreme_scale/install-mpi.sh $(MPI)
8678
pip3 install ".[extreme_scale]"
87-
PYTHONPATH=. pytest parsl -k "not cleannet" --config local --cov=parsl --cov-append --cov-report= --random-order
79+
PYTHONPATH=. pytest parsl/tests/ -k "not cleannet" --config local --cov=parsl --cov-append --cov-report= --random-order
80+
81+
.PHONY: site_test
82+
site_test:
83+
pytest parsl/tests/ -k "not cleannet" ${SHARED_FS_OPTIONS} --config parsl/tests/site_tests/site_config_selector.py --cov=parsl --cov-append --cov-report= --random-order
84+
pytest parsl/tests/site_tests/ ${SHARED_FS_OPTIONS} --config local
8885

8986
.PHONY: test ## run all tests with all config types
90-
test: $(DEPS) clean_coverage lint flake8 local_thread_test htex_local_test htex_local_alternate_test workqueue_ex_test config_local_test ## run all tests
87+
test: clean_coverage lint flake8 mypy local_thread_test htex_local_test htex_local_alternate_test workqueue_ex_test config_local_test ## run all tests
9188

9289
.PHONY: tag
9390
tag: ## create a tag in git. to run, do a 'make VERSION="version string" tag

README.rst

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Parsl - Parallel Scripting Library
22
==================================
3-
|licence| |build-status| |docs|
3+
|licence| |build-status| |docs| |NSF-1550588| |NSF-1550476| |NSF-1550562| |NSF-1550528|
44

55
Parsl is a parallel programming library for Python. Parsl augments Python with simple, scalable, and flexible constructs for encoding parallelism. Developers annotate Python functions to specify opportunities for concurrent execution. These annotated functions, called apps, may represent pure Python functions or calls to external applications, whether sequential, multicore (e.g., CPU, GPU, accelerator), or multi-node MPI. Parsl further allows these calls to these apps, called tasks, to be connected by shared input/output data (e.g., Python objects or files) via which Parsl can construct a dynamic dependency graph of tasks.
66

@@ -15,7 +15,7 @@ Parsl can be used to implement various parallel computing paradigms:
1515
* Dynamic workflows in which the workflow is determined during execution
1616
* Interactive parallel programming through notebooks or another interactive mechanism
1717

18-
The latest Parsl version available on PyPi is v0.9.0.
18+
The latest Parsl version available on PyPi is v1.0.0.
1919

2020
.. |licence| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
2121
:target: https://github.com/Parsl/parsl/blob/master/LICENSE
@@ -26,11 +26,23 @@ The latest Parsl version available on PyPi is v0.9.0.
2626
.. |docs| image:: https://readthedocs.org/projects/parsl/badge/?version=stable
2727
:target: http://parsl.readthedocs.io/en/stable/?badge=stable
2828
:alt: Documentation Status
29-
29+
.. |NSF-1550588| image:: https://img.shields.io/badge/NSF-1550588-blue.svg
30+
:target: https://nsf.gov/awardsearch/showAward?AWD_ID=1550588
31+
:alt: NSF award info
32+
.. |NSF-1550476| image:: https://img.shields.io/badge/NSF-1550476-blue.svg
33+
:target: https://nsf.gov/awardsearch/showAward?AWD_ID=1550476
34+
:alt: NSF award info
35+
.. |NSF-1550562| image:: https://img.shields.io/badge/NSF-1550562-blue.svg
36+
:target: https://nsf.gov/awardsearch/showAward?AWD_ID=1550562
37+
:alt: NSF award info
38+
.. |NSF-1550528| image:: https://img.shields.io/badge/NSF-1550528-blue.svg
39+
:target: https://nsf.gov/awardsearch/showAward?AWD_ID=1550528
40+
:alt: NSF award info
41+
3042
QuickStart
3143
==========
3244

33-
Parsl is now available on PyPI, but first make sure you have Python3.5+ ::
45+
Parsl is now available on PyPI, but first make sure you have Python3.6+ ::
3446

3547
$ python3 --version
3648

@@ -42,7 +54,7 @@ To run the Parsl tutorial notebooks you will need to install Jupyter::
4254

4355
$ pip3 install jupyter
4456

45-
Detailed information about setting up Jupyter with Python3.5 is available `here <https://jupyter.readthedocs.io/en/latest/install.html>`_
57+
Detailed information about setting up Jupyter with Python is available `here <https://jupyter.readthedocs.io/en/latest/install.html>`_
4658

4759
Note: Parsl uses an opt-in model to collect anonymous usage statistics for reporting and improvement purposes. To understand what stats are collected and enable collection please refer to the `usage tracking guide <http://parsl.readthedocs.io/en/stable/userguide/usage_tracking.html>`__
4860

@@ -81,7 +93,7 @@ For Developers
8193
Requirements
8294
============
8395

84-
Parsl is supported in Python 3.5+. Requirements can be found `here <requirements.txt>`_. Requirements for running tests can be found `here <test-requirements.txt>`_.
96+
Parsl is supported in Python 3.6+. Requirements can be found `here <requirements.txt>`_. Requirements for running tests can be found `here <test-requirements.txt>`_.
8597

8698
Code of Conduct
8799
============

codemeta.json

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,13 @@
6565
"givenName": "Ben",
6666
"familyName": "Glick",
6767
"email": "[email protected]"
68-
}
68+
},
69+
{
70+
"@id":"https://orcid.org/0000-0001-5147-0051",
71+
"@type": "Person",
72+
"givenName": "Kelly L.",
73+
"familyName": "Rowland",
74+
"email": "[email protected]"
6975
],
7076
"softwareRequirements": [
7177
{
@@ -80,18 +86,6 @@
8086
},
8187
"runtimePlatform": "Python 3.6.4"
8288
},
83-
{
84-
"@type": "SoftwareApplication",
85-
"identifier": "ipyparallel",
86-
"name": "ipyparallel",
87-
"provider": {
88-
"@id": "https://pypi.org",
89-
"@type": "Organization",
90-
"name": "The Python Package Index",
91-
"url": "https://pypi.org"
92-
},
93-
"runtimePlatform": "Python 3.6.4"
94-
},
9589
{
9690
"@type": "SoftwareApplication",
9791
"identifier": "ipykernel",

docs/README.rst

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Documentation location
66

77
Documentation is maintained in Python docstrings throughout the code. These are imported via the
88
`autodoc <http://www.sphinx-doc.org/en/stable/ext/autodoc.html>`_ Sphinx extension in
9-
``docs/devguide/dev_docs.rst``. Individual stubs for user-facing classes (located in ``stubs``) are
9+
``docs/reference.rst``. Individual stubs for user-facing classes (located in ``stubs``) are
1010
generated automatically via sphinx-autogen. Parsl modules, classes, and methods can be
1111
cross-referenced from a docstring by enclosing it in backticks (\`).
1212

@@ -19,14 +19,14 @@ upon git commits.
1919
Local builds
2020
------------
2121

22-
To build the documentation locally, use
23-
::
22+
To build the documentation locally, use::
23+
2424
$ make html
2525

2626
Regenerate module stubs
2727
--------------------------
2828

29-
If necessary, docstring stubs can be regenerated using
30-
::
29+
If necessary, docstring stubs can be regenerated using::
30+
3131
$ sphinx-autogen reference.rst
3232

docs/conf.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040
'sphinx.ext.napoleon'
4141
]
4242

43-
url = 'https://raw.githubusercontent.com/Parsl/parsl-tutorial/master/parsl-introduction.ipynb'
43+
url = 'https://raw.githubusercontent.com/Parsl/parsl-tutorial/master/1-parsl-introduction.ipynb'
4444
r = requests.get(url)
45-
with open(os.path.join(os.path.dirname(__file__), 'parsl-introduction.ipynb'), 'wb') as f:
45+
with open(os.path.join(os.path.dirname(__file__), '1-parsl-introduction.ipynb'), 'wb') as f:
4646
f.write(r.content)
4747

4848
nbsphinx_execute = 'never'
@@ -76,8 +76,8 @@ def linkcode_resolve(domain, info):
7676

7777
# General information about the project.
7878
project = 'Parsl'
79-
copyright = '2018, University of Chicago'
80-
author = 'The Parsl Project'
79+
copyright = '2018--2020, Parsl Project'
80+
author = 'Parsl Project'
8181

8282
# The version info for the project you're documenting, acts as replacement for
8383
# |version| and |release|, also used in various other places throughout the
@@ -181,7 +181,7 @@ def linkcode_resolve(domain, info):
181181
# Add any paths that contain custom static files (such as style sheets) here,
182182
# relative to this directory. They are copied after the builtin static files,
183183
# so a file named "default.css" will overwrite the builtin "default.css".
184-
html_static_path = ['_static']
184+
html_static_path = []
185185

186186
# Add any extra paths that contain custom files (such as robots.txt or
187187
# .htaccess) here, relative to this directory. These files are copied

0 commit comments

Comments
 (0)