spencerahill: Travis failures are both kernel timeouts on our test of the tutorial notebook: https://travis-ci.org/spencerahill/aospy/jobs/356502217#L1082

These seem unrelated to this commit.
diff --git a/.stickler.yml b/.stickler.yml
new file mode 100644
index 0000000..8745306
--- /dev/null
+++ b/.stickler.yml
@@ -0,0 +1,3 @@
+linters:
+  flake8:
+    fixer: true
diff --git a/.travis.yml b/.travis.yml
index bef0ec4..b773e28 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -10,8 +10,6 @@ matrix:
     env: CONDA_ENV=py27
   - python: 2.7
     env: CONDA_ENV=py27-min
-  - python: 3.4
-    env: CONDA_ENV=py34
   - python: 3.5
     env: CONDA_ENV=py35
   - python: 3.6
diff --git a/aospy/automate.py b/aospy/automate.py
index 0f3a0d7..b7a3aae 100644
--- a/aospy/automate.py
+++ b/aospy/automate.py
@@ -24,6 +24,11 @@ _VARIABLES_STR = 'variables'
 _TAG_ATTR_MODIFIERS = dict(all='', default='default_')
 
 
+class AospyException(Exception):
+    """Base exception class for the aospy package."""
+    pass
+
+
 def _get_attr_by_tag(obj, tag, attr_name):
     """Get attribute from an object via a string tag.
 
@@ -84,11 +89,6 @@ def _input_func_py2_py3():
     return input
 
 
-class AospyException(Exception):
-    """Base exception class for the aospy package."""
-    pass
-
-
 def _user_verify(input_func=_input_func_py2_py3(),
                  prompt='Perform these computations? [y/n] '):
     """Prompt the user for verification."""
@@ -487,4 +487,10 @@ def submit_mult_calcs(calc_suite_specs, exec_options=None):
         _user_verify()
     calc_suite = CalcSuite(calc_suite_specs)
     calcs = calc_suite.create_calcs()
+    if not calcs:
+        raise AospyException(
+            "The specified combination of parameters yielded zero "
+            "calculations.  Most likely, one of the parameters is "
+            "inadvertently empty."
+        )
     return _exec_calcs(calcs, **exec_options)
diff --git a/appveyor.yml b/appveyor.yml
index 71ea082..5ee68d9 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -10,11 +10,6 @@ environment:
       PYTHON_ARCH: "32"
       CONDA_ENV: "py27"
 
-    - PYTHON: "C:\\Python34-conda64"
-      PYTHON_VERSION: "3.4"
-      PYTHON_ARCH: "64"
-      CONDA_ENV: "py34"
-
     - PYTHON: "C:\\Python35-conda64"
       PYTHON_VERSION: "3.5"
       PYTHON_ARCH: "64"
diff --git a/ci/environment-py34.yml b/ci/environment-py34.yml
deleted file mode 100644
index 66f76b0..0000000
--- a/ci/environment-py34.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-name: test_env
-channels:
-  - conda-forge
-dependencies:
-  - python=3.4
-  - scipy=0.18
-  - mkl=2017.0.3
-  - netCDF4
-  - xarray
-  - dask
-  - distributed
-  - pytest
-  - future
-  - matplotlib
-  - jupyter
-  - flake8
-  - pip:
-    - coveralls
-    - pytest-cov
-    - pytest-catchlog
diff --git a/ci/install_python.ps1 b/ci/install_python.ps1
index f210245..66bca52 100644
--- a/ci/install_python.ps1
+++ b/ci/install_python.ps1
@@ -8,7 +8,7 @@ $BASE_URL = "https://www.python.org/ftp/python/"
 
 function DownloadMiniconda ($python_version, $platform_suffix) {
     $webclient = New-Object System.Net.WebClient
-    $py3versions = "3.4", "3.5", "3.6"
+    $py3versions = "3.5", "3.6"
     if ($py3versions -contains $python_version) {
         $filename = "Miniconda3-latest-Windows-" + $platform_suffix + ".exe"
     } else {
diff --git a/docs/install.rst b/docs/install.rst
index 87bce46..2f70175 100644
--- a/docs/install.rst
+++ b/docs/install.rst
@@ -7,7 +7,7 @@ Supported platforms
 -------------------
 
 - Operating system: Windows, MacOS/Mac OS X, and Linux
-- Python: 2.7, 3.4, 3.5, and 3.6
+- Python: 2.7, 3.5, and 3.6
 
 .. note::
 
@@ -30,11 +30,6 @@ The recommended installation method is via `conda
 
   conda install -c conda-forge aospy
 
-.. note:: Python 3.4 users: `conda-forge
-          <https://conda-forge.github.io/>`_ no longer supports builds
-          of packages on Python 3.4.  Please use one of the
-          alternative installation methods described below.
-
 Alternative method #1: pip
 --------------------------
 
diff --git a/docs/whats-new.rst b/docs/whats-new.rst
index e2c4882..6ef5b18 100644
--- a/docs/whats-new.rst
+++ b/docs/whats-new.rst
@@ -11,6 +11,9 @@ v0.3 (unreleased)
 Breaking Changes
 ~~~~~~~~~~~~~~~~
 
+- Drop support for Python 3.4, since our core upstream dependency
+  xarray is also dropping it as of their 0.11 release (:pull:`255`).
+  By `Spencer Hill <https://github.com/spencerahill>`_.
 - Deprecate ``Constant`` class and ``constants.py`` module.
   Physical constants used internally by aospy are now stored
   in ``_constants.py`` (fixes :issue:`50` via :pull:`223`).
@@ -32,6 +35,11 @@ Documentation
 Enhancements
 ~~~~~~~~~~~~
 
+- Raise an exception with an informative message if
+  ``submit_mult_calcs`` (and thus the main script) generates zero
+  calculations, which can happen if one of the parameters is
+  accidentally set to an empty list (closes :issue:`253` via
+  :pull:`254`).  By `Spencer Hill <https://github.com/spencerahill>`_.
 - Suppress warnings from xarray when loading data whose dates extend
   outside the range supported by the numpy.datetime64 datatype.  aospy
   has its own logic to deal with these cases (closes :issue:`221` via
diff --git a/setup.py b/setup.py
index 529013b..b237c6e 100644
--- a/setup.py
+++ b/setup.py
@@ -51,7 +51,6 @@ setuptools.setup(
         'Operating System :: OS Independent',
         'Programming Language :: Python :: 2.7',
         'Programming Language :: Python :: 3',
-        'Programming Language :: Python :: 3.4',
         'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
         'Topic :: Scientific/Engineering :: Atmospheric Science'

Warn (or perhaps raise?) when the main script is constructed to submit zero calculations
For instance if one forgets to specify `input_vertical_datatypes` and instead uses an empty list, the main script will run and silently compute nothing.  This is confusing for users who might not be familiar with the internals in `automate.py`, which create `Calc` objects based on the product of the input options (so if one option is an empty list, zero objects will be created).
diff --git a/aospy/test/test_automate.py b/aospy/test/test_automate.py
index a7ce120..52c4c96 100644
--- a/aospy/test/test_automate.py
+++ b/aospy/test/test_automate.py
@@ -268,6 +268,13 @@ def test_submit_mult_calcs(calcsuite_init_specs_single_calc, exec_options):
         calcsuite_init_specs_single_calc['output_time_regional_reductions'])
 
 
+def test_submit_mult_calcs_no_calcs(calcsuite_init_specs):
+    specs = calcsuite_init_specs.copy()
+    specs['input_vertical_datatypes'] = []
+    with pytest.raises(AospyException):
+        submit_mult_calcs(specs)
+
+
 @pytest.mark.parametrize(
     ('exec_options'),
     [dict(parallelize=True, write_to_tar=False),

ci/environment-py36.yml
pip install -e .
parse_log_pytest
environment.yml
pytest pytest-cov pytest-catchlog
3.6
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
-e git+https://github.com/spencerahill/aospy.git@389961acd046396b3b237b5b2749d70b345b1e6b#egg=aospy
argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1633990451307/work
async_generator @ file:///home/conda/feedstock_root/build_artifacts/async_generator_1722652753231/work
attrs @ file:///home/conda/feedstock_root/build_artifacts/attrs_1671632566681/work
backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work
backports.functools-lru-cache @ file:///home/conda/feedstock_root/build_artifacts/backports.functools_lru_cache_1702571698061/work
bleach @ file:///home/conda/feedstock_root/build_artifacts/bleach_1696630167146/work
bokeh @ file:///home/conda/feedstock_root/build_artifacts/bokeh_1625756939897/work
certifi==2021.5.30
cffi @ file:///home/conda/feedstock_root/build_artifacts/cffi_1631636256886/work
cftime @ file:///home/conda/feedstock_root/build_artifacts/cftime_1632539733990/work
charset-normalizer==2.0.12
click==7.1.2
cloudpickle @ file:///home/conda/feedstock_root/build_artifacts/cloudpickle_1674202310934/work
contextvars==2.4
coverage==6.2
coveralls==3.3.1
cycler @ file:///home/conda/feedstock_root/build_artifacts/cycler_1635519461629/work
cytoolz==0.11.0
dask @ file:///home/conda/feedstock_root/build_artifacts/dask-core_1614995065708/work
decorator @ file:///home/conda/feedstock_root/build_artifacts/decorator_1641555617451/work
defusedxml @ file:///home/conda/feedstock_root/build_artifacts/defusedxml_1615232257335/work
distributed @ file:///home/conda/feedstock_root/build_artifacts/distributed_1615002625500/work
docopt==0.6.2
entrypoints @ file:///home/conda/feedstock_root/build_artifacts/entrypoints_1643888246732/work
flake8 @ file:///home/conda/feedstock_root/build_artifacts/flake8_1659645013175/work
fsspec @ file:///home/conda/feedstock_root/build_artifacts/fsspec_1674184942191/work
future @ file:///home/conda/feedstock_root/build_artifacts/future_1610147328086/work
HeapDict==1.0.1
idna==3.10
immutables @ file:///home/conda/feedstock_root/build_artifacts/immutables_1628601257972/work
importlib-metadata @ file:///home/conda/feedstock_root/build_artifacts/importlib-metadata_1630267465156/work
iniconfig @ file:///home/conda/feedstock_root/build_artifacts/iniconfig_1603384189793/work
ipykernel @ file:///home/conda/feedstock_root/build_artifacts/ipykernel_1620912934572/work/dist/ipykernel-5.5.5-py3-none-any.whl
ipython @ file:///home/conda/feedstock_root/build_artifacts/ipython_1609697613279/work
ipython_genutils @ file:///home/conda/feedstock_root/build_artifacts/ipython_genutils_1716278396992/work
ipywidgets @ file:///home/conda/feedstock_root/build_artifacts/ipywidgets_1679421482533/work
jedi @ file:///home/conda/feedstock_root/build_artifacts/jedi_1605054537831/work
Jinja2 @ file:///home/conda/feedstock_root/build_artifacts/jinja2_1636510082894/work
jsonschema @ file:///home/conda/feedstock_root/build_artifacts/jsonschema_1634752161479/work
jupyter @ file:///home/conda/feedstock_root/build_artifacts/jupyter_1696255489086/work
jupyter-client @ file:///home/conda/feedstock_root/build_artifacts/jupyter_client_1642858610849/work
jupyter-console @ file:///home/conda/feedstock_root/build_artifacts/jupyter_console_1676328545892/work
jupyter-core @ file:///home/conda/feedstock_root/build_artifacts/jupyter_core_1631852698933/work
jupyterlab-pygments @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_pygments_1601375948261/work
jupyterlab-widgets @ file:///home/conda/feedstock_root/build_artifacts/jupyterlab_widgets_1655961217661/work
kiwisolver @ file:///home/conda/feedstock_root/build_artifacts/kiwisolver_1610099771815/work
locket @ file:///home/conda/feedstock_root/build_artifacts/locket_1650660393415/work
MarkupSafe @ file:///home/conda/feedstock_root/build_artifacts/markupsafe_1621455668064/work
matplotlib @ file:///home/conda/feedstock_root/build_artifacts/matplotlib-suite_1611858699142/work
mccabe @ file:///home/conda/feedstock_root/build_artifacts/mccabe_1643049622439/work
mistune @ file:///home/conda/feedstock_root/build_artifacts/mistune_1673904152039/work
more-itertools @ file:///home/conda/feedstock_root/build_artifacts/more-itertools_1690211628840/work
msgpack @ file:///home/conda/feedstock_root/build_artifacts/msgpack-python_1610121702224/work
nbclient @ file:///home/conda/feedstock_root/build_artifacts/nbclient_1637327213451/work
nbconvert @ file:///home/conda/feedstock_root/build_artifacts/nbconvert_1605401832871/work
nbformat @ file:///home/conda/feedstock_root/build_artifacts/nbformat_1617383142101/work
nest_asyncio @ file:///home/conda/feedstock_root/build_artifacts/nest-asyncio_1705850609492/work
netCDF4 @ file:///home/conda/feedstock_root/build_artifacts/netcdf4_1633096406418/work
notebook @ file:///home/conda/feedstock_root/build_artifacts/notebook_1616419146127/work
numpy @ file:///home/conda/feedstock_root/build_artifacts/numpy_1626681920064/work
olefile @ file:///home/conda/feedstock_root/build_artifacts/olefile_1602866521163/work
packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1637239678211/work
pandas==1.1.5
pandocfilters @ file:///home/conda/feedstock_root/build_artifacts/pandocfilters_1631603243851/work
parso @ file:///home/conda/feedstock_root/build_artifacts/parso_1595548966091/work
partd @ file:///home/conda/feedstock_root/build_artifacts/partd_1617910651905/work
pexpect @ file:///home/conda/feedstock_root/build_artifacts/pexpect_1667297516076/work
pickleshare @ file:///home/conda/feedstock_root/build_artifacts/pickleshare_1602536217715/work
Pillow @ file:///home/conda/feedstock_root/build_artifacts/pillow_1630696616009/work
pluggy @ file:///home/conda/feedstock_root/build_artifacts/pluggy_1631522669284/work
prometheus-client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1689032443210/work
prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1670414775770/work
psutil @ file:///home/conda/feedstock_root/build_artifacts/psutil_1610127101219/work
ptyprocess @ file:///home/conda/feedstock_root/build_artifacts/ptyprocess_1609419310487/work/dist/ptyprocess-0.7.0-py2.py3-none-any.whl
py @ file:///home/conda/feedstock_root/build_artifacts/py_1636301881863/work
pycodestyle @ file:///home/conda/feedstock_root/build_artifacts/pycodestyle_1659638152915/work
pycparser @ file:///home/conda/feedstock_root/build_artifacts/pycparser_1636257122734/work
pyflakes @ file:///home/conda/feedstock_root/build_artifacts/pyflakes_1659210156976/work
Pygments @ file:///home/conda/feedstock_root/build_artifacts/pygments_1672682006896/work
pyparsing @ file:///home/conda/feedstock_root/build_artifacts/pyparsing_1724616129934/work
PyQt5==5.12.3
PyQt5_sip==4.19.18
PyQtChart==5.12
PyQtWebEngine==5.12.1
pyrsistent @ file:///home/conda/feedstock_root/build_artifacts/pyrsistent_1610146795286/work
pytest==6.2.5
pytest-catchlog==1.2.2
pytest-cov==4.0.0
python-dateutil @ file:///home/conda/feedstock_root/build_artifacts/python-dateutil_1626286286081/work
pytz @ file:///home/conda/feedstock_root/build_artifacts/pytz_1693930252784/work
PyYAML==5.4.1
pyzmq @ file:///home/conda/feedstock_root/build_artifacts/pyzmq_1631793305981/work
qtconsole @ file:///home/conda/feedstock_root/build_artifacts/qtconsole-base_1640876679830/work
QtPy @ file:///home/conda/feedstock_root/build_artifacts/qtpy_1643828301492/work
requests==2.27.1
scipy @ file:///home/conda/feedstock_root/build_artifacts/scipy_1629411471490/work
Send2Trash @ file:///home/conda/feedstock_root/build_artifacts/send2trash_1682601222253/work
six @ file:///home/conda/feedstock_root/build_artifacts/six_1620240208055/work
sortedcontainers @ file:///home/conda/feedstock_root/build_artifacts/sortedcontainers_1621217038088/work
tblib @ file:///home/conda/feedstock_root/build_artifacts/tblib_1616261298899/work
terminado @ file:///home/conda/feedstock_root/build_artifacts/terminado_1631128154882/work
testpath @ file:///home/conda/feedstock_root/build_artifacts/testpath_1645693042223/work
toml @ file:///home/conda/feedstock_root/build_artifacts/toml_1604308577558/work
tomli==1.2.3
toolz @ file:///home/conda/feedstock_root/build_artifacts/toolz_1657485559105/work
tornado @ file:///home/conda/feedstock_root/build_artifacts/tornado_1610094701020/work
traitlets @ file:///home/conda/feedstock_root/build_artifacts/traitlets_1631041982274/work
typing_extensions @ file:///home/conda/feedstock_root/build_artifacts/typing_extensions_1644850595256/work
urllib3==1.26.20
wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1699959196938/work
webencodings @ file:///home/conda/feedstock_root/build_artifacts/webencodings_1694681268211/work
widgetsnbextension @ file:///home/conda/feedstock_root/build_artifacts/widgetsnbextension_1655939017940/work
xarray @ file:///home/conda/feedstock_root/build_artifacts/xarray_1621474818012/work
zict==2.0.0
zipp @ file:///home/conda/feedstock_root/build_artifacts/zipp_1633302054558/work

name: aospy
channels:
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=conda_forge
  - _openmp_mutex=4.5=2_gnu
  - alsa-lib=1.2.7.2=h166bdaf_0
  - argon2-cffi=21.1.0=py36h8f6f2f9_0
  - async_generator=1.10=pyhd8ed1ab_1
  - attrs=22.2.0=pyh71513ae_0
  - backcall=0.2.0=pyh9f0ad1d_0
  - backports=1.0=pyhd8ed1ab_4
  - backports.functools_lru_cache=2.0.0=pyhd8ed1ab_0
  - bleach=6.1.0=pyhd8ed1ab_0
  - bokeh=2.3.3=py36h5fab9bb_0
  - bzip2=1.0.8=h4bc722e_7
  - c-ares=1.34.4=hb9d3cd8_0
  - ca-certificates=2025.1.31=hbcca054_0
  - certifi=2021.5.30=py36h5fab9bb_0
  - cffi=1.14.6=py36hd8eec40_1
  - cftime=1.5.1=py36he33b4a0_0
  - click=7.1.2=pyh9f0ad1d_0
  - cloudpickle=2.2.1=pyhd8ed1ab_0
  - contextvars=2.4=py_0
  - curl=7.87.0=h6312ad2_0
  - cycler=0.11.0=pyhd8ed1ab_0
  - cytoolz=0.11.0=py36h8f6f2f9_3
  - dask=2021.3.0=pyhd8ed1ab_0
  - dask-core=2021.3.0=pyhd8ed1ab_0
  - dbus=1.13.6=h5008d03_3
  - decorator=5.1.1=pyhd8ed1ab_0
  - defusedxml=0.7.1=pyhd8ed1ab_0
  - distributed=2021.3.0=py36h5fab9bb_0
  - entrypoints=0.4=pyhd8ed1ab_0
  - expat=2.6.4=h5888daf_0
  - flake8=5.0.4=pyhd8ed1ab_0
  - font-ttf-dejavu-sans-mono=2.37=hab24e00_0
  - font-ttf-inconsolata=3.000=h77eed37_0
  - font-ttf-source-code-pro=2.038=h77eed37_0
  - font-ttf-ubuntu=0.83=h77eed37_3
  - fontconfig=2.14.2=h14ed4e7_0
  - fonts-conda-ecosystem=1=0
  - fonts-conda-forge=1=0
  - freetype=2.12.1=h267a509_2
  - fsspec=2023.1.0=pyhd8ed1ab_0
  - future=0.18.2=py36h5fab9bb_3
  - gettext=0.23.1=h5888daf_0
  - gettext-tools=0.23.1=h5888daf_0
  - glib=2.80.2=hf974151_0
  - glib-tools=2.80.2=hb6ce0ca_0
  - gst-plugins-base=1.20.3=h57caac4_2
  - gstreamer=1.20.3=hd4edc92_2
  - hdf4=4.2.15=h9772cbc_5
  - hdf5=1.12.1=nompi_h2386368_104
  - heapdict=1.0.1=py_0
  - icu=69.1=h9c3ff4c_0
  - immutables=0.16=py36h8f6f2f9_0
  - importlib-metadata=4.8.1=py36h5fab9bb_0
  - importlib_metadata=4.8.1=hd8ed1ab_1
  - iniconfig=1.1.1=pyh9f0ad1d_0
  - ipykernel=5.5.5=py36hcb3619a_0
  - ipython=7.16.1=py36he448a4c_2
  - ipython_genutils=0.2.0=pyhd8ed1ab_1
  - ipywidgets=7.7.4=pyhd8ed1ab_0
  - jedi=0.17.2=py36h5fab9bb_1
  - jinja2=3.0.3=pyhd8ed1ab_0
  - jpeg=9e=h0b41bf4_3
  - jsonschema=4.1.2=pyhd8ed1ab_0
  - jupyter=1.0.0=pyhd8ed1ab_10
  - jupyter_client=7.1.2=pyhd8ed1ab_0
  - jupyter_console=6.5.1=pyhd8ed1ab_0
  - jupyter_core=4.8.1=py36h5fab9bb_0
  - jupyterlab_pygments=0.1.2=pyh9f0ad1d_0
  - jupyterlab_widgets=1.1.1=pyhd8ed1ab_0
  - keyutils=1.6.1=h166bdaf_0
  - kiwisolver=1.3.1=py36h605e78d_1
  - krb5=1.20.1=hf9c8cef_0
  - lcms2=2.12=hddcbb42_0
  - ld_impl_linux-64=2.43=h712a8e2_4
  - lerc=3.0=h9c3ff4c_0
  - libasprintf=0.23.1=h8e693c7_0
  - libasprintf-devel=0.23.1=h8e693c7_0
  - libblas=3.9.0=20_linux64_openblas
  - libcblas=3.9.0=20_linux64_openblas
  - libclang=13.0.1=default_hb5137d0_10
  - libcurl=7.87.0=h6312ad2_0
  - libdeflate=1.10=h7f98852_0
  - libedit=3.1.20250104=pl5321h7949ede_0
  - libev=4.33=hd590300_2
  - libevent=2.1.10=h9b69904_4
  - libexpat=2.6.4=h5888daf_0
  - libffi=3.4.6=h2dba641_0
  - libgcc=14.2.0=h767d61c_2
  - libgcc-ng=14.2.0=h69a702a_2
  - libgettextpo=0.23.1=h5888daf_0
  - libgettextpo-devel=0.23.1=h5888daf_0
  - libgfortran=14.2.0=h69a702a_2
  - libgfortran-ng=14.2.0=h69a702a_2
  - libgfortran5=14.2.0=hf1ad2bd_2
  - libglib=2.80.2=hf974151_0
  - libgomp=14.2.0=h767d61c_2
  - libiconv=1.18=h4ce23a2_1
  - liblapack=3.9.0=20_linux64_openblas
  - libllvm13=13.0.1=hf817b99_2
  - liblzma=5.6.4=hb9d3cd8_0
  - liblzma-devel=5.6.4=hb9d3cd8_0
  - libnetcdf=4.8.1=nompi_h329d8a1_102
  - libnghttp2=1.51.0=hdcd2b5c_0
  - libnsl=2.0.1=hd590300_0
  - libogg=1.3.5=h4ab18f5_0
  - libopenblas=0.3.25=pthreads_h413a1c8_0
  - libopus=1.3.1=h7f98852_1
  - libpng=1.6.43=h2797004_0
  - libpq=14.5=h2baec63_5
  - libsodium=1.0.18=h36c2ea0_1
  - libsqlite=3.46.0=hde9e2c9_0
  - libssh2=1.10.0=haa6b8db_3
  - libstdcxx=14.2.0=h8f9b012_2
  - libstdcxx-ng=14.2.0=h4852527_2
  - libtiff=4.3.0=h0fcbabc_4
  - libuuid=2.38.1=h0b41bf4_0
  - libvorbis=1.3.7=h9c3ff4c_0
  - libwebp-base=1.5.0=h851e524_0
  - libxcb=1.13=h7f98852_1004
  - libxkbcommon=1.0.3=he3ba5ed_0
  - libxml2=2.9.14=haae042b_4
  - libzip=1.9.2=hc869a4a_1
  - libzlib=1.2.13=h4ab18f5_6
  - locket=1.0.0=pyhd8ed1ab_0
  - markupsafe=2.0.1=py36h8f6f2f9_0
  - matplotlib=3.3.4=py36h5fab9bb_0
  - matplotlib-base=3.3.4=py36hd391965_0
  - mccabe=0.7.0=pyhd8ed1ab_0
  - mistune=0.8.4=pyh1a96a4e_1006
  - more-itertools=10.0.0=pyhd8ed1ab_0
  - msgpack-python=1.0.2=py36h605e78d_1
  - mysql-common=8.0.32=h14678bc_0
  - mysql-libs=8.0.32=h54cf53e_0
  - nbclient=0.5.9=pyhd8ed1ab_0
  - nbconvert=6.0.7=py36h5fab9bb_3
  - nbformat=5.1.3=pyhd8ed1ab_0
  - ncurses=6.5=h2d0b736_3
  - nest-asyncio=1.6.0=pyhd8ed1ab_0
  - netcdf4=1.5.7=nompi_py36h775750b_103
  - notebook=6.3.0=py36h5fab9bb_0
  - nspr=4.36=h5888daf_0
  - nss=3.100=hca3bf56_0
  - numpy=1.19.5=py36hfc0c790_2
  - olefile=0.46=pyh9f0ad1d_1
  - openjpeg=2.5.0=h7d73246_0
  - openssl=1.1.1w=hd590300_0
  - packaging=21.3=pyhd8ed1ab_0
  - pandas=1.1.5=py36h284efc9_0
  - pandoc=2.19.2=h32600fe_2
  - pandocfilters=1.5.0=pyhd8ed1ab_0
  - parso=0.7.1=pyh9f0ad1d_0
  - partd=1.2.0=pyhd8ed1ab_0
  - pcre2=10.43=hcad00b1_0
  - pexpect=4.8.0=pyh1a96a4e_2
  - pickleshare=0.7.5=py_1003
  - pillow=8.3.2=py36h676a545_0
  - pip=21.3.1=pyhd8ed1ab_0
  - pluggy=1.0.0=py36h5fab9bb_1
  - prometheus_client=0.17.1=pyhd8ed1ab_0
  - prompt-toolkit=3.0.36=pyha770c72_0
  - prompt_toolkit=3.0.36=hd8ed1ab_0
  - psutil=5.8.0=py36h8f6f2f9_1
  - pthread-stubs=0.4=hb9d3cd8_1002
  - ptyprocess=0.7.0=pyhd3deb0d_0
  - py=1.11.0=pyh6c4a22f_0
  - pycodestyle=2.9.1=pyhd8ed1ab_0
  - pycparser=2.21=pyhd8ed1ab_0
  - pyflakes=2.5.0=pyhd8ed1ab_0
  - pygments=2.14.0=pyhd8ed1ab_0
  - pyparsing=3.1.4=pyhd8ed1ab_0
  - pyqt=5.12.3=py36h5fab9bb_7
  - pyqt-impl=5.12.3=py36h7ec31b9_7
  - pyqt5-sip=4.19.18=py36hc4f0c31_7
  - pyqtchart=5.12=py36h7ec31b9_7
  - pyqtwebengine=5.12.1=py36h7ec31b9_7
  - pyrsistent=0.17.3=py36h8f6f2f9_2
  - pytest=6.2.5=py36h5fab9bb_0
  - python=3.6.15=hb7a2778_0_cpython
  - python-dateutil=2.8.2=pyhd8ed1ab_0
  - python_abi=3.6=2_cp36m
  - pytz=2023.3.post1=pyhd8ed1ab_0
  - pyyaml=5.4.1=py36h8f6f2f9_1
  - pyzmq=22.3.0=py36h7068817_0
  - qt=5.12.9=h1304e3e_6
  - qtconsole-base=5.2.2=pyhd8ed1ab_1
  - qtpy=2.0.1=pyhd8ed1ab_0
  - readline=8.2=h8c095d6_2
  - scipy=1.5.3=py36h81d768a_1
  - send2trash=1.8.2=pyh41d4057_0
  - setuptools=58.0.4=py36h5fab9bb_2
  - six=1.16.0=pyh6c4a22f_0
  - sortedcontainers=2.4.0=pyhd8ed1ab_0
  - sqlite=3.46.0=h6d4b2fc_0
  - tblib=1.7.0=pyhd8ed1ab_0
  - terminado=0.12.1=py36h5fab9bb_0
  - testpath=0.6.0=pyhd8ed1ab_0
  - tk=8.6.13=noxft_h4845f30_101
  - toml=0.10.2=pyhd8ed1ab_0
  - toolz=0.12.0=pyhd8ed1ab_0
  - tornado=6.1=py36h8f6f2f9_1
  - traitlets=4.3.3=pyhd8ed1ab_2
  - typing-extensions=4.1.1=hd8ed1ab_0
  - typing_extensions=4.1.1=pyha770c72_0
  - wcwidth=0.2.10=pyhd8ed1ab_0
  - webencodings=0.5.1=pyhd8ed1ab_2
  - wheel=0.37.1=pyhd8ed1ab_0
  - widgetsnbextension=3.6.1=pyha770c72_0
  - xarray=0.18.2=pyhd8ed1ab_0
  - xorg-libxau=1.0.12=hb9d3cd8_0
  - xorg-libxdmcp=1.1.5=hb9d3cd8_0
  - xz=5.6.4=hbcc6ac9_0
  - xz-gpl-tools=5.6.4=hbcc6ac9_0
  - xz-tools=5.6.4=hb9d3cd8_0
  - yaml=0.2.5=h7f98852_2
  - zeromq=4.3.5=h59595ed_1
  - zict=2.0.0=py_0
  - zipp=3.6.0=pyhd8ed1ab_0
  - zlib=1.2.13=h4ab18f5_6
  - zstd=1.5.6=ha6fb4c9_0
  - pip:
      - charset-normalizer==2.0.12
      - coverage==6.2
      - coveralls==3.3.1
      - docopt==0.6.2
      - idna==3.10
      - pytest-catchlog==1.2.2
      - pytest-cov==4.0.0
      - requests==2.27.1
      - tomli==1.2.3
      - urllib3==1.26.20
prefix: /opt/conda/envs/aospy

aospy/test/test_automate.py::test_submit_mult_calcs_no_calcs
aospy/test/test_automate.py::test_submit_mult_calcs_external_client[exec_options0] aospy/test/test_automate.py::test_submit_mult_calcs_external_client[exec_options1] aospy/test/test_automate.py::test_submit_mult_calcs[exec_options0] aospy/test/test_automate.py::test_submit_mult_calcs[exec_options1] aospy/test/test_automate.py::test_submit_mult_calcs[exec_options2] aospy/test/test_automate.py::test_submit_mult_calcs[exec_options3] aospy/test/test_automate.py::test_submit_mult_calcs[None] aospy/test/test_automate.py::test_submit_two_calcs_external_client[exec_options0] aospy/test/test_automate.py::test_submit_two_calcs_external_client[exec_options1] aospy/test/test_automate.py::test_submit_two_calcs[exec_options0] aospy/test/test_automate.py::test_submit_two_calcs[exec_options1] aospy/test/test_automate.py::test_submit_two_calcs[exec_options2] aospy/test/test_automate.py::test_submit_two_calcs[exec_options3] aospy/test/test_automate.py::test_submit_two_calcs[None] aospy/test/test_automate.py::test_n_workers_for_local_cluster
aospy/test/test_automate.py::test_get_attr_by_tag[obj0-all-models-expected0] aospy/test/test_automate.py::test_get_attr_by_tag[obj1-default-models-expected1] aospy/test/test_automate.py::test_get_attr_by_tag[obj2-all-runs-expected2] aospy/test/test_automate.py::test_get_attr_by_tag[obj3-default-runs-expected3] aospy/test/test_automate.py::test_get_attr_by_tag_invalid aospy/test/test_automate.py::test_permuted_dict_of_specs aospy/test/test_automate.py::test_merge_dicts aospy/test/test_automate.py::test_input_func_py2_py3 aospy/test/test_automate.py::test_user_verify aospy/test/test_automate.py::test_get_all_objs_of_type[Var-expected0] aospy/test/test_automate.py::test_get_all_objs_of_type[Proj-expected1] aospy/test/test_automate.py::TestCalcSuite::test_init aospy/test/test_automate.py::TestCalcSuite::test_permute_core_specs aospy/test/test_automate.py::TestCalcSuite::test_get_regions aospy/test/test_automate.py::TestCalcSuite::test_get_variables aospy/test/test_automate.py::TestCalcSuite::test_get_aux_specs aospy/test/test_automate.py::TestCalcSuite::test_permute_aux_specs aospy/test/test_automate.py::test_prune_invalid_time_reductions[var0] aospy/test/test_automate.py::test_prune_invalid_time_reductions[var1]
ci/environment-py34.yml ci/install_python.ps1 docs/whats-new.rst setup.py .stickler.yml .travis.yml docs/install.rst aospy/automate.py appveyor.yml
ci/environment-py34.yml ci/install_python.ps1 docs/whats-new.rst setup.py .stickler.yml .travis.yml docs/install.rst aospy/automate.py appveyor.yml