From a9a475758dfb2ca36c6dd60e1d78519d8b4137aa Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 17:59:38 +0100 Subject: [PATCH 01/28] introducing lock files for testing --- noxfile.py | 109 +++++---- requirements/ci/nox.lock/py36-linux-64.lock | 241 ++++++++++++++++++++ requirements/ci/nox.lock/py37-linux-64.lock | 238 +++++++++++++++++++ requirements/ci/nox.lock/py38-linux-64.lock | 237 +++++++++++++++++++ 4 files changed, 780 insertions(+), 45 deletions(-) mode change 100644 => 100755 noxfile.py create mode 100644 requirements/ci/nox.lock/py36-linux-64.lock create mode 100644 requirements/ci/nox.lock/py37-linux-64.lock create mode 100644 requirements/ci/nox.lock/py38-linux-64.lock diff --git a/noxfile.py b/noxfile.py old mode 100644 new mode 100755 index 028da099dc..c0aaa47eef --- a/noxfile.py +++ b/noxfile.py @@ -10,6 +10,7 @@ from pathlib import Path import nox +from nox.logger import logger #: Default to reusing any pre-existing nox environments. @@ -25,40 +26,48 @@ CARTOPY_CACHE_DIR = os.environ.get("HOME") / Path(".local/share/cartopy") -def venv_cached(session): - """ - Determine whether the nox session environment has been cached. - - Parameters - ---------- - session: object - A `nox.sessions.Session` object. +def session_lockfile(session: nox.sessions.Session) -> Path: + """Return the path of the session lockfile.""" + return Path( + f"requirements/ci/nox.lock/py{session.python.replace('.', '')}-linux-64.lock" + ) - Returns - ------- - bool - Whether the session has been cached. - """ - result = False - yml = Path(f"requirements/ci/py{session.python.replace('.', '')}.yml") +def session_cachefile(session: nox.sessions.Session) -> Path: + """Returns the path of the session lockfile cache.""" + lockfile = session_lockfile(session) tmp_dir = Path(session.create_tmp()) - cache = tmp_dir / yml.name + cache = tmp_dir / lockfile.name + return cache + + +def venv_populated(session: nox.sessions.Session) -> bool: + """Returns True if the conda venv has been created + and the list of packages in the lockfile installed.""" + return session_cachefile(session).is_file() + + +def venv_changed(session: nox.sessions.Session) -> bool: + """Returns True if the installed session is different to that specified + in the lockfile.""" + cache = session_cachefile(session) + lockfile = session_lockfile(session) if cache.is_file(): - with open(yml, "rb") as fi: + with open(lockfile, "rb") as fi: expected = hashlib.sha256(fi.read()).hexdigest() with open(cache, "r") as fi: actual = fi.read() - result = actual == expected - return result + return actual != expected + else: + return False -def cache_venv(session): +def cache_venv(session: nox.sessions.Session): """ Cache the nox session environment. This consists of saving a hexdigest (sha256) of the associated - conda requirements YAML file. + conda lock file. Parameters ---------- @@ -66,16 +75,15 @@ def cache_venv(session): A `nox.sessions.Session` object. """ - yml = Path(f"requirements/ci/py{session.python.replace('.', '')}.yml") - with open(yml, "rb") as fi: + lockfile = session_lockfile(session) + cache = session_cachefile(session) + with open(lockfile, "rb") as fi: hexdigest = hashlib.sha256(fi.read()).hexdigest() - tmp_dir = Path(session.create_tmp()) - cache = tmp_dir / yml.name with open(cache, "w") as fo: fo.write(hexdigest) -def cache_cartopy(session): +def cache_cartopy(session: nox.sessions.Session): """ Determine whether to cache the cartopy natural earth shapefiles. @@ -112,23 +120,29 @@ def prepare_venv(session): - https://github.com/theacodes/nox/issues/260 """ - if not venv_cached(session): - # Determine the conda requirements yaml file. - fname = f"requirements/ci/py{session.python.replace('.', '')}.yml" - # Back-door approach to force nox to use "conda env update". - command = ( - "conda", - "env", - "update", - f"--prefix={session.virtualenv.location}", - f"--file={fname}", - "--prune", - ) - session._run(*command, silent=True, external="error") + lockfile = session_lockfile(session) + venv_dir = session.virtualenv.location_name + + if not venv_populated(session): + # environment has been created but pacakages not yet installed + # populate the environment from the lockfile + logger.debug(f"Populating conda env at {venv_dir}") + session.conda_install("--file", str(lockfile)) cache_venv(session) + elif venv_changed(session): + # destroy the environment and rebuild it + logger.debug(f"Lockfile changed. Re-creating conda env at {venv_dir}") + _re_orig = session.virtualenv.reuse_existing + session.virtualenv.reuse_existing = False + session.virtualenv.create() + session.conda_install("--file", str(lockfile)) + session.virtualenv.reuse_existing = _re_orig + cache_venv(session) + + logger.debug(f"Environment {venv_dir} up to date") + cache_cartopy(session) - session.install("--no-deps", "--editable", ".") # Determine whether verbose diagnostics have been requested # from the command line. @@ -136,17 +150,17 @@ def prepare_venv(session): if verbose: session.run("conda", "info") - session.run("conda", "list", f"--prefix={session.virtualenv.location}") + session.run("conda", "list", f"--prefix={venv_dir}") session.run( "conda", "list", - f"--prefix={session.virtualenv.location}", + f"--prefix={venv_dir}", "--explicit", ) @nox.session -def flake8(session): +def flake8(session: nox.sessions.Session): """ Perform flake8 linting of iris. @@ -165,7 +179,7 @@ def flake8(session): @nox.session -def black(session): +def black(session: nox.sessions.Session): """ Perform black format checking of iris. @@ -184,7 +198,7 @@ def black(session): @nox.session(python=PY_VER, venv_backend="conda") -def tests(session): +def tests(session: nox.sessions.Session): """ Perform iris system, integration and unit tests. @@ -195,6 +209,8 @@ def tests(session): """ prepare_venv(session) + session.install("--no-deps", "--editable", ".") + session.run( "python", "-m", @@ -216,6 +232,7 @@ def gallery(session): """ prepare_venv(session) + session.install("--no-deps", "--editable", ".") session.run( "python", "-m", @@ -236,6 +253,7 @@ def doctest(session): """ prepare_venv(session) + session.install("--no-deps", "--editable", ".") session.cd("docs") session.run( "make", @@ -262,6 +280,7 @@ def linkcheck(session): """ prepare_venv(session) + session.install("--no-deps", "--editable", ".") session.cd("docs") session.run( "make", diff --git a/requirements/ci/nox.lock/py36-linux-64.lock b/requirements/ci/nox.lock/py36-linux-64.lock new file mode 100644 index 0000000000..c132f32b30 --- /dev/null +++ b/requirements/ci/nox.lock/py36-linux-64.lock @@ -0,0 +1,241 @@ +# platform: linux-64 +# env_hash: 1a0a1f86b81c9babc7172b8741f714137a8e45bd758c8bd5a328f2051fbc4b62 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-2.001-hab24e00_0.tar.bz2#1fcc67d5eed875734d8b3eec00b29ce4 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.030-hab24e00_0.tar.bz2#dfc1ee25079fd9314698d73ef38b557f +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.35.1-hea4e1c9_2.tar.bz2#83610dba766a186bdc7a116053b782a4 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-9.3.0-hff62375_19.tar.bz2#c2d8da3cb171e4aa642d20c6e4e42a04 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-9.3.0-h6de172a_19.tar.bz2#cd9a24a8dde03ec0cf0e603b0bea85a1 +https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-mpich.tar.bz2#c1fcff3417b5a22bbc4cf6e8c23648cf +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.23-ha770c72_1.tar.bz2#288ac4404aff60a4ba6812a5ab66d505 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-9.3.0-hff62375_19.tar.bz2#aea379bd68fdcdf9499fa1453f852ac1 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-9.3.0-h2828fa1_19.tar.bz2#ab0a307912033126da02507b59e79ec9 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#561e277319a41d4f24f5c05a9ef63c04 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2#9d5cdfc51476ee4dcdd96ed2dca3f943 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3-h516909a_0.tar.bz2#1378b88874f42ac31b2f8e4f6975cb7b +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.17.1-h7f98852_1.tar.bz2#ed1dc233ed5e3eaa9bfbaac64d130c5e +https://conda.anaconda.org/conda-forge/linux-64/expat-2.3.0-h9c3ff4c_0.tar.bz2#1fb8f0254eb78a2a0c120155e1b1a207 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/geos-3.9.1-h9c3ff4c_2.tar.bz2#b9a6d9422aed3ad84ec6ccee9bfcaa0f +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/icu-68.1-h58526e2_0.tar.bz2#fc7a4271dc2a7f4fd78cd63695baf7c3 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2#ea02ce6037dbe81803ae6123e5ba1568 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2#665369991d8dd290ac5ee92fce3e6bf5 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2#95f32a6a5a666d33886ca5627239f03d +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.12-pthreads_h4812303_1.tar.bz2#2c7126a584f05e7bc8885d64dad3d21a +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h58526e2_1007.tar.bz2#7f6569a0c2f27acb8fc90600b382e544 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.0-h7f98852_2.tar.bz2#fb63a035a3b552c88a30d84b89ebf4c4 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_0.tar.bz2#4eb64ee0d5cd43096ffcf843c76b05d4 +https://conda.anaconda.org/conda-forge/linux-64/mpich-3.4.1-h846660c_104.tar.bz2#94f01e56905a7af1479c9f72b00e9864 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.2-h58526e2_4.tar.bz2#509f2a21c4a09214cd737a480dfd80c9 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.30-h9c3ff4c_0.tar.bz2#e6dc1f8f6e0bcebe8e3d8a5bca258dbe +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1k-h7f98852_0.tar.bz2#07fae2cb088379c8441e0f3ffa1f4025 +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.44-he1b5a44_0.tar.bz2#e647d89cd5cdf62760cf283a001841ff +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2#660e72c82f2e75a6b3fe6a6e75c79f19 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2#d6b0b50b49eccfe0be0373be628be0f3 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2#1e15f6ad85a7d743a2ac68dae6c82b98 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.0-h7f98852_3.tar.bz2#52402c791f35e414e704b7a113f99605 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h516909a_0.tar.bz2#03a530e925414902547cf48da7756db8 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h516909a_1010.tar.bz2#339cc5584e6d26bc73a875ba900028c3 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h0b5b191_1005.tar.bz2#ff6f69b593a9e74c0e6b61908ac513fa +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.13-h10796ff_1005.tar.bz2#941d62d7d94ab46cf824512a57cac991 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-8_openblas.tar.bz2#95cee6371a5b901797075040941171f3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-hcdb4288_3.tar.bz2#d8f51405997093ff1799ded7650439c4 +https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2#646fa2f7c60b69ee8f918668e9c2fd31 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.43.0-h812cca2_0.tar.bz2#1867d1e9658596b3fac8847a7702eef4 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.9.0-ha56f1ee_6.tar.bz2#f0dfb86444df325e599dbc3f4c0a3f5b +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1003.tar.bz2#a9371e9e40aded194dcba1447606c9a1 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-h72842e0_4.tar.bz2#48577b6e1605c935d7178f6694506ee9 +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.7.3-h4de3113_0.tar.bz2#2568763f88009f95e9262cba837dbb82 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.10-h21135ba_1.tar.bz2#c647f70aa7e3d4cc4e029cc1c9a99953 +https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.27.27-h975c496_1.tar.bz2#e663bd5dbc8cc4c1647d9f51cf25872c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2#9e856f78d5c80d5a78f61e72d1d473a3 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.4.9-ha95c52a_0.tar.bz2#b481dc9fda3af2a681d08a4d5cd1ea0b +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.17.2-h926e7f8_0.tar.bz2#926325c11478d6e781e76072c117763b +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-8_openblas.tar.bz2#d8e2151683bc12acffedea26eba27e0f +https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_0.tar.bz2#b7bc364d3ecf51443d48e14f87d784de +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.68.1-h3e27bee_0.tar.bz2#486fecf2277a154e5f73f62328764310 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-8_openblas.tar.bz2#9a860887c77e923c2807c715a7731fb8 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.2.0-hdc55705_1.tar.bz2#59b84553b303e0f4923289dd204dcd6b +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.23-h935591d_1.tar.bz2#fd60f20b38b7194aa91262fdbd3ef134 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.35.5-h74cdb3f_0.tar.bz2#e876c82c21e7074d299e13762d02466c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.7.0-h7f98852_0.tar.bz2#0cd07abd75b2fad023161c657524ddbd +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.36.0-h3371d22_4.tar.bz2#661e1ed5d92552785d9f8c781ce68685 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2#fd3611672eb91bc9d24fd6fb970037eb +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.6-h04a7f16_0.tar.bz2#b24a1e18325a6e8f8b6b4a2ec5860ce2 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.68.1-h9c3ff4c_0.tar.bz2#b1ecd0fa079de56a1ba8d03063ee39bb +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.4-h76c114f_2.tar.bz2#5db765d4974fa89f64c1544eb2a552cb +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h64030ff_2.tar.bz2#112eb9b5b93f0c02e59aea4fd1967363 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.76.1-hc4aaa36_1.tar.bz2#349a288d04af695b639e5f947df3c2d0 +https://conda.anaconda.org/conda-forge/linux-64/libpq-13.2-hfd2b0eb_2.tar.bz2#66cc9cbd324d484c01ea08d98761aeb1 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.0-h3452ae3_0.tar.bz2#8f4e19a8988c38feec7db41bcd0bf0d0 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.64-hb5efdd6_0.tar.bz2#cb598141b73b9f7ebbffbd41220dcb9a +https://conda.anaconda.org/conda-forge/linux-64/python-3.6.13-hffdb5ce_0_cpython.tar.bz2#575e65ac9386755d3b9fd70f20dc1e37 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2#f59c1242cc1dd93e72c2ee2b360979eb +https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f +https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/linux-64/curl-7.76.1-h979ede3_1.tar.bz2#28e9133d2ad9ba3081e52548ea20c870 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyh787bdff_0.tar.bz2#99ccd57a7c9761e97e17777f0cde21eb +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.1-pyh9f0ad1d_0.tar.bz2#db990401a267e2b15854af5f3f84f763 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.0.12-pyh9f0ad1d_0.tar.bz2#7544ed05bbbe9bb687bc9bcbe4d6cb46 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.4.0-pyhd8ed1ab_0.tar.bz2#7019316dafd6ef2e0a2fc178486993cd +https://conda.anaconda.org/conda-forge/linux-64/glib-2.68.1-h9c3ff4c_0.tar.bz2#9fb05e9b0df734f92df7810c7c8975e3 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.4-hf529b03_2.tar.bz2#526fadaa13ec264cb919436953bc2766 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d +https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95 +https://conda.anaconda.org/conda-forge/noarch/idna-2.10-pyh9f0ad1d_0.tar.bz2#f95a12b4f435aae6680fe55ae2eb1b06 +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.2.0-py_0.tar.bz2#5879bd2c4b399a5072468e5fe587bf1b +https://conda.anaconda.org/conda-forge/noarch/iris-sample-data-2.3.0-pyh9f0ad1d_0.tar.bz2#e4a33192da1a6dc4967ba18c6c765945 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.2-h78a0170_0.tar.bz2#ac0c23e6f3bbb61569781f00b5666f97 +https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.6.1-py_1.tar.bz2#a326cb400c1ccd91789f3e7d02124d61 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2#0b2e68acc8c78c8cc392b90983481f58 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.8.1-pyhd3deb0d_0.tar.bz2#fcd2fbb062b55d14a77e664c89ee17a6 +https://conda.anaconda.org/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2#db654ee11298d3463bad67445707654c +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.7.0-pyhd8ed1ab_0.tar.bz2#0234673eb2ecfbdf4e54574ab4d95f81 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-2.3.1-pyhd8ed1ab_0.tar.bz2#01e9ada82bd261ee2b6366aa832018cc +https://conda.anaconda.org/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2#5f0236abfbb6d53826d1afed1e64f82e +https://conda.anaconda.org/conda-forge/noarch/pyparsing-2.4.7-pyh9f0ad1d_0.tar.bz2#626c4f20d5bf06dcec9cf2eaa31725c7 +https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.6-1_cp36m.tar.bz2#7f3681b01bd688b48bfbdae483b2918f +https://conda.anaconda.org/conda-forge/noarch/pytz-2021.1-pyhd8ed1ab_0.tar.bz2#3af2e9424d5eb0063824a3f9b850d411 +https://conda.anaconda.org/conda-forge/noarch/six-1.15.0-pyh9f0ad1d_0.tar.bz2#1eec421f0f1f39e579e44e4a5ce646a2 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.1.0-pyhd8ed1ab_0.tar.bz2#f1d64c0cf0eedf655a96ccdc1573c05a +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.3.0-pyhd8ed1ab_0.tar.bz2#2f5b87cd0bdf1822b62e40909f471db4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2#20b2eaeaeea4ef9a9a0d99770620fd09 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2#68e01cac9d38d0e717cd5c87bc3d2cc9 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-1.0.3-py_0.tar.bz2#4508a40465ebf0105e52f7194f299411 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.4-py_0.tar.bz2#8ea6a8036e28dba8827d35c764709358 +https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.1-py_0.tar.bz2#d1e66b58cb00b3817ad9f05eec098c00 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.7.4.3-py_0.tar.bz2#12b96e382730541a4b332420227055ae +https://conda.anaconda.org/conda-forge/noarch/wheel-0.36.2-pyhd3deb0d_0.tar.bz2#768bfbe026426d0e76b377997d1f2b98 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.4.1-pyhd8ed1ab_0.tar.bz2#a4fa30eb74a326092b3d8078b1f1aae1 +https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py36h5fab9bb_1002.tar.bz2#37df435690656fc56f8b031cd759ef77 +https://conda.anaconda.org/conda-forge/noarch/babel-2.9.0-pyhd3deb0d_0.tar.bz2#1cb532c9a6fd4e56a9f0906b87c17b76 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2020.12.5-py36h5fab9bb_1.tar.bz2#da529031bd8882eff7d72484661c1b83 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.5-py36hc120d54_0.tar.bz2#f49c72aeb497efcd918217d142ddfc9c +https://conda.anaconda.org/conda-forge/noarch/cfgv-3.2.0-py_0.tar.bz2#4972efcb3e2cbd3954b24a17266be25c +https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py36h5fab9bb_1.tar.bz2#b63c63a44b8d37acaff014df8a512d92 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.10.0-py_2.tar.bz2#f6d7c7e6d8f42cbbec7e07a8d879f91c +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.0-py36h8f6f2f9_3.tar.bz2#cfdf59a409935a32e9f51b37d25b66f7 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2#eba672c69baf366fdedd1c6f702dbb81 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.16-py36h5fab9bb_3.tar.bz2#5d0a90c22c5c8a1f573df6b6f2afc5ee +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-2.8.0-h83ec7ef_1.tar.bz2#0b20d7ac5b7beec9615f35ab88c161f8 +https://conda.anaconda.org/conda-forge/linux-64/immutables-0.15-py36h8f6f2f9_0.tar.bz2#9f5767abe2f02d4bf73a7896a8f26790 +https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.0.1-py36h5fab9bb_0.tar.bz2#3c9bfd1ccfdf3002b174e4e1e7385341 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py36h605e78d_1.tar.bz2#a92afbf92c5416585457e5de5c3d98c7 +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-mpi_mpich_hf07302c_1.tar.bz2#2df6da2c9d66945c9399ce6e94d1748e +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py36h8f6f2f9_3.tar.bz2#4471d6eaa07fcc4dd1f2e0e6cc8e54bf +https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py36h7b8b12a_5.tar.bz2#5624b369630b6ecb3757de00245155b3 +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py36h605e78d_1.tar.bz2#9460d0c8c77d3d5c410eb6743a48eca8 +https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py36h5fab9bb_3.tar.bz2#abc16a8fe5dc31bde74702e28ed59164 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.19.5-py36h2aa4a07_1.tar.bz2#825e240765327dcdb8b0add973714e9e +https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 +https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 +https://conda.anaconda.org/conda-forge/linux-64/pillow-6.2.2-py36h8328e55_0.tar.bz2#71ce4115a7035932d0abdaec69e1d432 +https://conda.anaconda.org/conda-forge/noarch/pockets-0.9.1-py_0.tar.bz2#1b52f0c42e8077e5a33e00fe72269364 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.8.0-py36h8f6f2f9_1.tar.bz2#ccecd9206d61f029549a81a980174ed8 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py36hc4f0c31_7.tar.bz2#6bb1cad16acc8b2ac34fb4a75ef8cc09 +https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py36h5fab9bb_3.tar.bz2#4dfb9be0b2975bc7933f32c6db7af205 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.1-py_0.tar.bz2#0d0150ed9c2d25817f5324108d3f7571 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-2.0.2-py36h8f6f2f9_0.tar.bz2#7fd3e41e00f0ebcac23b775ad5a8ca90 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-5.4.1-py36h8f6f2f9_0.tar.bz2#c4be96c884afed3ce48ab143570a439f +https://conda.anaconda.org/conda-forge/linux-64/regex-2021.4.4-py36h8f6f2f9_0.tar.bz2#df048f01fdcae6f0f75a05a4160b69d6 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py36h8f6f2f9_1.tar.bz2#3d19680e14cb7cf6f383ba1fd3a72f2c +https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.4.3-py36h8f6f2f9_0.tar.bz2#738cc2808eaff7e220a6f46bbddd4e5a +https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 +https://conda.anaconda.org/conda-forge/noarch/black-20.8b1-py_1.tar.bz2#e555d6b71ec916c3dc4e6e3793cc9796 +https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py36h8f6f2f9_1001.tar.bz2#0f244e9624403e17430e9d959530b01c +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.2.1-py36h68bb277_1.tar.bz2#86ea5650a50b9d59336edb2ec57959de +https://conda.anaconda.org/conda-forge/noarch/contextvars-2.4-py_0.tar.bz2#295fe9300971a6bd1dc4b18ad6509be2 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-3.4.7-py36hb60f036_0.tar.bz2#e3f8fbf0f4037279847c8ab1551fe6f8 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.3.0-pyhd8ed1ab_0.tar.bz2#e7a647c6320649dd7c80a1938f1a211c +https://conda.anaconda.org/conda-forge/linux-64/editdistance-s-1.0.0-py36h605e78d_1.tar.bz2#89c5489b410421aabe2888e73154b9d3 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.0.1-hd8ed1ab_0.tar.bz2#50c48f1394fba9705a76163409924628 +https://conda.anaconda.org/conda-forge/linux-64/mo_pack-0.2.0-py36h92226af_1005.tar.bz2#b67300a68479aae643fa443c8073ad22 +https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.3-mpi_mpich_h196b126_4.tar.bz2#e058f42a78ea8c965cf7335e28143c59 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.1.5-py36h284efc9_0.tar.bz2#e5e3d1a5401c1c932ada9d4f0b6c8448 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2#9e325ab71e743c57955e73172d1db615 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.1.1-py36h92226af_1003.tar.bz2#6898a2bff137799b902891edd448d183 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py36h92226af_3.tar.bz2#ea7f1093a7ac3c449d7ea8984e6fd873 +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.5.3-py36h9e8f40b_0.tar.bz2#39502ad94bcb186c0cf4eb7532316d6a +https://conda.anaconda.org/conda-forge/linux-64/setuptools-49.6.0-py36h5fab9bb_3.tar.bz2#0e5930ee136de4ecef3640f50b3037a2 +https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py36h93b233e_4.tar.bz2#bf7457dee29298d9f958382cc2409489 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-napoleon-0.7-py_0.tar.bz2#0bc25ff6f2e34af63ded59692df5f749 +https://conda.anaconda.org/conda-forge/linux-64/asv-0.4.2-py36hc4f0c31_2.tar.bz2#aba2d553655f81aa4ec683f0039104e1 +https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.4-py36h68bb277_2.tar.bz2#54d5db1b6b6b6acded8d5634fb2d220e +https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.3.0-py36h5fab9bb_0.tar.bz2#d484e4c9daade19800341eedff55f1d2 +https://conda.anaconda.org/conda-forge/linux-64/esmf-8.1.1-mpi_mpich_h3dcaa78_100.tar.bz2#5b4bab1017226f2c03ba0fe02b783316 +https://conda.anaconda.org/conda-forge/noarch/flake8-3.9.1-pyhd8ed1ab_0.tar.bz2#9ce1de40e3510b60d15d512251a3d3f7 +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-hab0c2f8_0.tar.bz2#8acbef87761a4b90f090168737822611 +https://conda.anaconda.org/conda-forge/noarch/identify-2.2.4-pyhd8ed1ab_0.tar.bz2#86a6446475a53451a71e1515150cb532 +https://conda.anaconda.org/conda-forge/noarch/imagehash-4.2.0-pyhd8ed1ab_0.tar.bz2#e5a77472ae964f2835fce16355bbfe64 +https://conda.anaconda.org/conda-forge/linux-64/importlib_resources-5.1.2-py36h5fab9bb_0.tar.bz2#5c6d0535d991e38151de2ecbb0fa1662 +https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyh44b312d_0.tar.bz2#1d4c3605d85a3655b1595e0694138eb6 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.50.3-hfa39831_1.tar.bz2#7578526979e852a1f8650080214c6cd6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.3.4-py36hd391965_0.tar.bz2#ed3c55ad68aa87ba9c2b2d5f6ede7f14 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.5.6-nompi_py36h3d597d4_103.tar.bz2#0d09a7bdf15e8efc761d54e0060ee189 +https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.6.0-pyhd8ed1ab_0.tar.bz2#0941325bf48969e2b3b19d0951740950 +https://conda.anaconda.org/conda-forge/noarch/pip-21.1-pyhd8ed1ab_0.tar.bz2#5acc8aa0e57f31553f7bf9c22ca4d064 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz2#196e0cff141677f430fc06eb0d0ad94d +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py36h7ec31b9_7.tar.bz2#379005311c6e733b228723e67fc52fb2 +https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.1.1-py36h9f0ad1d_0.tar.bz2#f2b02dad779533dc04af6698949f02d3 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0-py36hbcbf2fa_0.tar.bz2#391a0c8e43dc0f4e7ed5fe248f0b1ff1 +https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.1-mpi_mpich_py36hcd78dbd_100.tar.bz2#cce5b688501b00de155299a82365852c +https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.1-hebd9034_0.tar.bz2#9840ac6c4756d7f4b6035a62aae4d6fb +https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e +https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py36h7ec31b9_7.tar.bz2#69735aad86e57eb4de60cf7f208b8604 +https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py36h7ec31b9_7.tar.bz2#4d15c862d7989dcc1fa4f321d27a2d66 +https://conda.anaconda.org/conda-forge/noarch/pyugrid-0.3.1-py_2.tar.bz2#7d7361886fbcf2be663fd185bf6d244d +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.4-pyhd8ed1ab_0.tar.bz2#d7b20b328e23d993994ea02077c009c0 +https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.4.4-py36h5fab9bb_0.tar.bz2#1f0a2ce48529bb542a7eb693eccf866d +https://conda.anaconda.org/conda-forge/noarch/dask-2021.3.0-pyhd8ed1ab_0.tar.bz2#ad8913a398eedda25f6243d02c973f28 +https://conda.anaconda.org/conda-forge/linux-64/pre-commit-2.12.1-py36h5fab9bb_0.tar.bz2#27613fa5d0a4871f4317f2b6e9786104 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py36h5fab9bb_7.tar.bz2#02315b51b199ef6700a53debf1bada5b +https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.3.4-py36h5fab9bb_0.tar.bz2#a3731e3e7e412e7b2f88593f92b74864 +https://conda.anaconda.org/conda-forge/noarch/sphinx-3.5.4-pyh44b312d_0.tar.bz2#0ebc444f001f73c4f6de01057b0be392 +https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.3.1-pyhd8ed1ab_0.tar.bz2#decad13214a2a545944560eccf4a9815 +https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.9.0-pyhd8ed1ab_0.tar.bz2#5ef222a3e1b5904742e376e05046692b +https://conda.anaconda.org/conda-forge/noarch/sphinx-panels-0.5.2-pyhd3deb0d_0.tar.bz2#1a871a63c4be1bd47a7aa48b7417a426 +https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_1.tar.bz2#7434e891fc767cb0d39d90751720c8ec diff --git a/requirements/ci/nox.lock/py37-linux-64.lock b/requirements/ci/nox.lock/py37-linux-64.lock new file mode 100644 index 0000000000..f087d92c3b --- /dev/null +++ b/requirements/ci/nox.lock/py37-linux-64.lock @@ -0,0 +1,238 @@ +# platform: linux-64 +# env_hash: 9f683f7bd19228d6857db32d4372da95f0a29742d9ca4fa18f342162bbd8a667 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-2.001-hab24e00_0.tar.bz2#1fcc67d5eed875734d8b3eec00b29ce4 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.030-hab24e00_0.tar.bz2#dfc1ee25079fd9314698d73ef38b557f +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.35.1-hea4e1c9_2.tar.bz2#83610dba766a186bdc7a116053b782a4 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-9.3.0-hff62375_19.tar.bz2#c2d8da3cb171e4aa642d20c6e4e42a04 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-9.3.0-h6de172a_19.tar.bz2#cd9a24a8dde03ec0cf0e603b0bea85a1 +https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-mpich.tar.bz2#c1fcff3417b5a22bbc4cf6e8c23648cf +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.23-ha770c72_1.tar.bz2#288ac4404aff60a4ba6812a5ab66d505 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-9.3.0-hff62375_19.tar.bz2#aea379bd68fdcdf9499fa1453f852ac1 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-9.3.0-h2828fa1_19.tar.bz2#ab0a307912033126da02507b59e79ec9 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#561e277319a41d4f24f5c05a9ef63c04 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2#9d5cdfc51476ee4dcdd96ed2dca3f943 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3-h516909a_0.tar.bz2#1378b88874f42ac31b2f8e4f6975cb7b +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.17.1-h7f98852_1.tar.bz2#ed1dc233ed5e3eaa9bfbaac64d130c5e +https://conda.anaconda.org/conda-forge/linux-64/expat-2.3.0-h9c3ff4c_0.tar.bz2#1fb8f0254eb78a2a0c120155e1b1a207 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/geos-3.9.1-h9c3ff4c_2.tar.bz2#b9a6d9422aed3ad84ec6ccee9bfcaa0f +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/icu-68.1-h58526e2_0.tar.bz2#fc7a4271dc2a7f4fd78cd63695baf7c3 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2#ea02ce6037dbe81803ae6123e5ba1568 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2#665369991d8dd290ac5ee92fce3e6bf5 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2#95f32a6a5a666d33886ca5627239f03d +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.12-pthreads_h4812303_1.tar.bz2#2c7126a584f05e7bc8885d64dad3d21a +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h58526e2_1007.tar.bz2#7f6569a0c2f27acb8fc90600b382e544 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.0-h7f98852_2.tar.bz2#fb63a035a3b552c88a30d84b89ebf4c4 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_0.tar.bz2#4eb64ee0d5cd43096ffcf843c76b05d4 +https://conda.anaconda.org/conda-forge/linux-64/mpich-3.4.1-h846660c_104.tar.bz2#94f01e56905a7af1479c9f72b00e9864 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.2-h58526e2_4.tar.bz2#509f2a21c4a09214cd737a480dfd80c9 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.30-h9c3ff4c_0.tar.bz2#e6dc1f8f6e0bcebe8e3d8a5bca258dbe +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1k-h7f98852_0.tar.bz2#07fae2cb088379c8441e0f3ffa1f4025 +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.44-he1b5a44_0.tar.bz2#e647d89cd5cdf62760cf283a001841ff +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2#660e72c82f2e75a6b3fe6a6e75c79f19 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2#d6b0b50b49eccfe0be0373be628be0f3 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2#1e15f6ad85a7d743a2ac68dae6c82b98 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.0-h7f98852_3.tar.bz2#52402c791f35e414e704b7a113f99605 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h516909a_0.tar.bz2#03a530e925414902547cf48da7756db8 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h516909a_1010.tar.bz2#339cc5584e6d26bc73a875ba900028c3 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h0b5b191_1005.tar.bz2#ff6f69b593a9e74c0e6b61908ac513fa +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.13-h10796ff_1005.tar.bz2#941d62d7d94ab46cf824512a57cac991 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-8_openblas.tar.bz2#95cee6371a5b901797075040941171f3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-hcdb4288_3.tar.bz2#d8f51405997093ff1799ded7650439c4 +https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2#646fa2f7c60b69ee8f918668e9c2fd31 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.43.0-h812cca2_0.tar.bz2#1867d1e9658596b3fac8847a7702eef4 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.9.0-ha56f1ee_6.tar.bz2#f0dfb86444df325e599dbc3f4c0a3f5b +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1003.tar.bz2#a9371e9e40aded194dcba1447606c9a1 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-h72842e0_4.tar.bz2#48577b6e1605c935d7178f6694506ee9 +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.7.3-h4de3113_0.tar.bz2#2568763f88009f95e9262cba837dbb82 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.10-h21135ba_1.tar.bz2#c647f70aa7e3d4cc4e029cc1c9a99953 +https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.27.27-h975c496_1.tar.bz2#e663bd5dbc8cc4c1647d9f51cf25872c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2#9e856f78d5c80d5a78f61e72d1d473a3 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.4.9-ha95c52a_0.tar.bz2#b481dc9fda3af2a681d08a4d5cd1ea0b +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.17.2-h926e7f8_0.tar.bz2#926325c11478d6e781e76072c117763b +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-8_openblas.tar.bz2#d8e2151683bc12acffedea26eba27e0f +https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_0.tar.bz2#b7bc364d3ecf51443d48e14f87d784de +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.68.1-h3e27bee_0.tar.bz2#486fecf2277a154e5f73f62328764310 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-8_openblas.tar.bz2#9a860887c77e923c2807c715a7731fb8 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.2.0-hdc55705_1.tar.bz2#59b84553b303e0f4923289dd204dcd6b +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.23-h935591d_1.tar.bz2#fd60f20b38b7194aa91262fdbd3ef134 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.35.5-h74cdb3f_0.tar.bz2#e876c82c21e7074d299e13762d02466c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.7.0-h7f98852_0.tar.bz2#0cd07abd75b2fad023161c657524ddbd +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.36.0-h3371d22_4.tar.bz2#661e1ed5d92552785d9f8c781ce68685 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2#fd3611672eb91bc9d24fd6fb970037eb +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.6-h04a7f16_0.tar.bz2#b24a1e18325a6e8f8b6b4a2ec5860ce2 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.68.1-h9c3ff4c_0.tar.bz2#b1ecd0fa079de56a1ba8d03063ee39bb +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.4-h76c114f_2.tar.bz2#5db765d4974fa89f64c1544eb2a552cb +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h64030ff_2.tar.bz2#112eb9b5b93f0c02e59aea4fd1967363 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.76.1-hc4aaa36_1.tar.bz2#349a288d04af695b639e5f947df3c2d0 +https://conda.anaconda.org/conda-forge/linux-64/libpq-13.2-hfd2b0eb_2.tar.bz2#66cc9cbd324d484c01ea08d98761aeb1 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.0-h3452ae3_0.tar.bz2#8f4e19a8988c38feec7db41bcd0bf0d0 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.64-hb5efdd6_0.tar.bz2#cb598141b73b9f7ebbffbd41220dcb9a +https://conda.anaconda.org/conda-forge/linux-64/python-3.7.10-hffdb5ce_100_cpython.tar.bz2#7425fffa658971915f595e9110163c3c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2#f59c1242cc1dd93e72c2ee2b360979eb +https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f +https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/linux-64/curl-7.76.1-h979ede3_1.tar.bz2#28e9133d2ad9ba3081e52548ea20c870 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_1.tar.bz2#28e0de0ecba81334619a777fdc00febc +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.1-pyh9f0ad1d_0.tar.bz2#db990401a267e2b15854af5f3f84f763 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.0.12-pyh9f0ad1d_0.tar.bz2#7544ed05bbbe9bb687bc9bcbe4d6cb46 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.4.0-pyhd8ed1ab_0.tar.bz2#7019316dafd6ef2e0a2fc178486993cd +https://conda.anaconda.org/conda-forge/linux-64/glib-2.68.1-h9c3ff4c_0.tar.bz2#9fb05e9b0df734f92df7810c7c8975e3 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.4-hf529b03_2.tar.bz2#526fadaa13ec264cb919436953bc2766 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d +https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95 +https://conda.anaconda.org/conda-forge/noarch/idna-2.10-pyh9f0ad1d_0.tar.bz2#f95a12b4f435aae6680fe55ae2eb1b06 +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.2.0-py_0.tar.bz2#5879bd2c4b399a5072468e5fe587bf1b +https://conda.anaconda.org/conda-forge/noarch/iris-sample-data-2.3.0-pyh9f0ad1d_0.tar.bz2#e4a33192da1a6dc4967ba18c6c765945 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.2-h78a0170_0.tar.bz2#ac0c23e6f3bbb61569781f00b5666f97 +https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.6.1-py_1.tar.bz2#a326cb400c1ccd91789f3e7d02124d61 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2#0b2e68acc8c78c8cc392b90983481f58 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.8.1-pyhd3deb0d_0.tar.bz2#fcd2fbb062b55d14a77e664c89ee17a6 +https://conda.anaconda.org/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2#db654ee11298d3463bad67445707654c +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.7.0-pyhd8ed1ab_0.tar.bz2#0234673eb2ecfbdf4e54574ab4d95f81 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-2.3.1-pyhd8ed1ab_0.tar.bz2#01e9ada82bd261ee2b6366aa832018cc +https://conda.anaconda.org/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2#5f0236abfbb6d53826d1afed1e64f82e +https://conda.anaconda.org/conda-forge/noarch/pyparsing-2.4.7-pyh9f0ad1d_0.tar.bz2#626c4f20d5bf06dcec9cf2eaa31725c7 +https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.7-1_cp37m.tar.bz2#658a5c3d766bfc6574480204b10a6f20 +https://conda.anaconda.org/conda-forge/noarch/pytz-2021.1-pyhd8ed1ab_0.tar.bz2#3af2e9424d5eb0063824a3f9b850d411 +https://conda.anaconda.org/conda-forge/noarch/six-1.15.0-pyh9f0ad1d_0.tar.bz2#1eec421f0f1f39e579e44e4a5ce646a2 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.1.0-pyhd8ed1ab_0.tar.bz2#f1d64c0cf0eedf655a96ccdc1573c05a +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.3.0-pyhd8ed1ab_0.tar.bz2#2f5b87cd0bdf1822b62e40909f471db4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2#20b2eaeaeea4ef9a9a0d99770620fd09 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2#68e01cac9d38d0e717cd5c87bc3d2cc9 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-1.0.3-py_0.tar.bz2#4508a40465ebf0105e52f7194f299411 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.4-py_0.tar.bz2#8ea6a8036e28dba8827d35c764709358 +https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.1-py_0.tar.bz2#d1e66b58cb00b3817ad9f05eec098c00 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.7.4.3-py_0.tar.bz2#12b96e382730541a4b332420227055ae +https://conda.anaconda.org/conda-forge/noarch/wheel-0.36.2-pyhd3deb0d_0.tar.bz2#768bfbe026426d0e76b377997d1f2b98 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.4.1-pyhd8ed1ab_0.tar.bz2#a4fa30eb74a326092b3d8078b1f1aae1 +https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py37h89c1867_1002.tar.bz2#cf3aeeb80dbd517761019a8edcd5b108 +https://conda.anaconda.org/conda-forge/noarch/babel-2.9.0-pyhd3deb0d_0.tar.bz2#1cb532c9a6fd4e56a9f0906b87c17b76 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2020.12.5-py37h89c1867_1.tar.bz2#fb121f213009359498ada17a9e6d775f +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.5-py37hc58025e_0.tar.bz2#e05f1fad0c52c21b6b92778d31f89cd0 +https://conda.anaconda.org/conda-forge/noarch/cfgv-3.2.0-py_0.tar.bz2#4972efcb3e2cbd3954b24a17266be25c +https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py37h89c1867_1.tar.bz2#f4fbd4721b80f0d6b53b3a3374914068 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.10.0-py_2.tar.bz2#f6d7c7e6d8f42cbbec7e07a8d879f91c +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.0-py37h5e8e339_3.tar.bz2#2e89a6f3baf5eeb13763f61ea3d0601f +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2#eba672c69baf366fdedd1c6f702dbb81 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.16-py37h89c1867_3.tar.bz2#3da23bcf1d502670cec18fd3a04f409b +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-2.8.0-h83ec7ef_1.tar.bz2#0b20d7ac5b7beec9615f35ab88c161f8 +https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.0.1-py37h89c1867_0.tar.bz2#fdb45d5b60c896c95d25213e9e257d09 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py37h2527ec5_1.tar.bz2#61149814e0ea71cb5b44881c65d25f7b +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-mpi_mpich_hf07302c_1.tar.bz2#2df6da2c9d66945c9399ce6e94d1748e +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py37h5e8e339_3.tar.bz2#b874d44750373553008083116442c972 +https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py37h1e5cb63_5.tar.bz2#88fda322e288a0608ec71fb85685d96b +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py37h2527ec5_1.tar.bz2#07952b04eee02d873daa311a35b27454 +https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py37h89c1867_3.tar.bz2#b604f0897a7a207bddd7d05bf3284752 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.20.2-py37h038b26d_0.tar.bz2#795bd784e989b08ceb1ce8be539dc0b2 +https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 +https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 +https://conda.anaconda.org/conda-forge/linux-64/pillow-6.2.2-py37h718be6c_0.tar.bz2#ecac4e308b87ff93d44ea5e56ab39084 +https://conda.anaconda.org/conda-forge/noarch/pockets-0.9.1-py_0.tar.bz2#1b52f0c42e8077e5a33e00fe72269364 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.8.0-py37h5e8e339_1.tar.bz2#2923250371b05e798f3732531cdb5300 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py37hcd2ae1e_7.tar.bz2#f94e01aa4abd458b556d68fdb5f19b99 +https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py37h89c1867_3.tar.bz2#bd069d59ee91a2e26552cd7bb4c64032 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.1-py_0.tar.bz2#0d0150ed9c2d25817f5324108d3f7571 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-2.0.2-py37h5e8e339_0.tar.bz2#3f1e633378cd3c8b1ce13b3f2f5eadd7 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-5.4.1-py37h5e8e339_0.tar.bz2#090550b9425fe9a87dc1ec7fde201633 +https://conda.anaconda.org/conda-forge/linux-64/regex-2021.4.4-py37h5e8e339_0.tar.bz2#58fcc3d7115356472761ca6d50bd9a34 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py37h5e8e339_1.tar.bz2#92449128c4639feae48d731ef2186099 +https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.4.3-py37h5e8e339_0.tar.bz2#0e8dc105f8cf0a2a6456f7a18f34a712 +https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 +https://conda.anaconda.org/conda-forge/noarch/black-20.8b1-py_1.tar.bz2#e555d6b71ec916c3dc4e6e3793cc9796 +https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py37h5e8e339_1001.tar.bz2#871eed4ba322e7b3f200956a096b34e7 +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.2.1-py37h161383b_1.tar.bz2#314ca8b00ed742f8c46a6cc68d84d90f +https://conda.anaconda.org/conda-forge/linux-64/cryptography-3.4.7-py37h5d9358c_0.tar.bz2#d811fb6a96ae0cf8c0a17457a8e67ff4 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.4.1-pyhd8ed1ab_0.tar.bz2#7b4563cc5528acd2a1b2675a2b69dd19 +https://conda.anaconda.org/conda-forge/linux-64/editdistance-s-1.0.0-py37h2527ec5_1.tar.bz2#100918f43247cedad74f2cf8dcbda5bc +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.0.1-hd8ed1ab_0.tar.bz2#50c48f1394fba9705a76163409924628 +https://conda.anaconda.org/conda-forge/linux-64/mo_pack-0.2.0-py37h902c9e0_1005.tar.bz2#40db532422636dd1e980154114486a00 +https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.3-mpi_mpich_h196b126_4.tar.bz2#e058f42a78ea8c965cf7335e28143c59 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.2.4-py37h219a48f_0.tar.bz2#fb33763b90acf1a4a7cffb7ab994a3cd +https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2#9e325ab71e743c57955e73172d1db615 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.1.1-py37h902c9e0_1003.tar.bz2#2bf38b6c7984839b174273cadbf90ea6 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py37h902c9e0_3.tar.bz2#104648a5a091a493046a62704eef5c49 +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.2-py37h29e03ee_0.tar.bz2#9fc4d659c8a978967bb4f25c0ca23aa0 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-49.6.0-py37h89c1867_3.tar.bz2#928c178bf6805b8ab71fabaa620e0234 +https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py37hf7ed6d2_4.tar.bz2#0209359199915534c567ffc7fafdb6c4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-napoleon-0.7-py_0.tar.bz2#0bc25ff6f2e34af63ded59692df5f749 +https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.4.4-py37h89c1867_0.tar.bz2#4e882c4134a031b3fa8151ad705aea96 +https://conda.anaconda.org/conda-forge/linux-64/asv-0.4.2-py37hcd2ae1e_2.tar.bz2#a539a23d322e3976dda4af86e59b31ce +https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.4-py37h161383b_2.tar.bz2#82111543d88ad46dcc3a6d52758c86d0 +https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.4.1-py37h89c1867_0.tar.bz2#f3b6914e75ebce0346e80e6e6d8cd32e +https://conda.anaconda.org/conda-forge/linux-64/esmf-8.1.1-mpi_mpich_h3dcaa78_100.tar.bz2#5b4bab1017226f2c03ba0fe02b783316 +https://conda.anaconda.org/conda-forge/noarch/flake8-3.9.1-pyhd8ed1ab_0.tar.bz2#9ce1de40e3510b60d15d512251a3d3f7 +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-hab0c2f8_0.tar.bz2#8acbef87761a4b90f090168737822611 +https://conda.anaconda.org/conda-forge/noarch/identify-2.2.4-pyhd8ed1ab_0.tar.bz2#86a6446475a53451a71e1515150cb532 +https://conda.anaconda.org/conda-forge/noarch/imagehash-4.2.0-pyhd8ed1ab_0.tar.bz2#e5a77472ae964f2835fce16355bbfe64 +https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyh44b312d_0.tar.bz2#1d4c3605d85a3655b1595e0694138eb6 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.50.3-hfa39831_1.tar.bz2#7578526979e852a1f8650080214c6cd6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.1-py37hdd32ed1_0.tar.bz2#be3d06cde526691de555ad6b37e2799c +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.5.6-nompi_py37h946d57d_103.tar.bz2#600a3ba1f0b13ca31d4f593f1fa490b4 +https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.6.0-pyhd8ed1ab_0.tar.bz2#0941325bf48969e2b3b19d0951740950 +https://conda.anaconda.org/conda-forge/noarch/pip-21.1-pyhd8ed1ab_0.tar.bz2#5acc8aa0e57f31553f7bf9c22ca4d064 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz2#196e0cff141677f430fc06eb0d0ad94d +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py37he336c9b_7.tar.bz2#303251d6f2b9e60a0cd79480cf8507d2 +https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.1.1-py37hc8dfbb8_0.tar.bz2#0927f1a093279ba797f014c5e484a58f +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0-py37h0c48da3_0.tar.bz2#14a86bdbd9733175383fc469b968b1dc +https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.1-mpi_mpich_py37hf719a8e_100.tar.bz2#d608536dd44b60da923950c60619583d +https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.1-hebd9034_0.tar.bz2#9840ac6c4756d7f4b6035a62aae4d6fb +https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e +https://conda.anaconda.org/conda-forge/linux-64/pre-commit-2.12.1-py37h89c1867_0.tar.bz2#6655c6fc0713a2ec76aa925a8aaf1549 +https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py37he336c9b_7.tar.bz2#2b1959f3a87b5ad66690340ef921323c +https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py37he336c9b_7.tar.bz2#15f5cbcafb4889bb41da2a0a0e338f2a +https://conda.anaconda.org/conda-forge/noarch/pyugrid-0.3.1-py_2.tar.bz2#7d7361886fbcf2be663fd185bf6d244d +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.4-pyhd8ed1ab_0.tar.bz2#d7b20b328e23d993994ea02077c009c0 +https://conda.anaconda.org/conda-forge/noarch/dask-2021.4.1-pyhd8ed1ab_0.tar.bz2#d954ba6326e7f5279444ea0f1c3dfd46 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py37h89c1867_7.tar.bz2#1754ec587a9ac26e9507fea7eb6bebc2 +https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.4.1-py37h89c1867_0.tar.bz2#8e9cd6c7c6bc1f490c72a5064e010f10 +https://conda.anaconda.org/conda-forge/noarch/sphinx-3.5.4-pyh44b312d_0.tar.bz2#0ebc444f001f73c4f6de01057b0be392 +https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.3.1-pyhd8ed1ab_0.tar.bz2#decad13214a2a545944560eccf4a9815 +https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.9.0-pyhd8ed1ab_0.tar.bz2#5ef222a3e1b5904742e376e05046692b +https://conda.anaconda.org/conda-forge/noarch/sphinx-panels-0.5.2-pyhd3deb0d_0.tar.bz2#1a871a63c4be1bd47a7aa48b7417a426 +https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_1.tar.bz2#7434e891fc767cb0d39d90751720c8ec diff --git a/requirements/ci/nox.lock/py38-linux-64.lock b/requirements/ci/nox.lock/py38-linux-64.lock new file mode 100644 index 0000000000..256a843392 --- /dev/null +++ b/requirements/ci/nox.lock/py38-linux-64.lock @@ -0,0 +1,237 @@ +# platform: linux-64 +# env_hash: 25d37d9c9841bf7d79d238578d4063a437222f0b5c8e90ee78623b3e38cf0b0b +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-2.001-hab24e00_0.tar.bz2#1fcc67d5eed875734d8b3eec00b29ce4 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.030-hab24e00_0.tar.bz2#dfc1ee25079fd9314698d73ef38b557f +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.35.1-hea4e1c9_2.tar.bz2#83610dba766a186bdc7a116053b782a4 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-9.3.0-hff62375_19.tar.bz2#c2d8da3cb171e4aa642d20c6e4e42a04 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-9.3.0-h6de172a_19.tar.bz2#cd9a24a8dde03ec0cf0e603b0bea85a1 +https://conda.anaconda.org/conda-forge/linux-64/mpi-1.0-mpich.tar.bz2#c1fcff3417b5a22bbc4cf6e8c23648cf +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.23-ha770c72_1.tar.bz2#288ac4404aff60a4ba6812a5ab66d505 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-9.3.0-hff62375_19.tar.bz2#aea379bd68fdcdf9499fa1453f852ac1 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-9.3.0-h2828fa1_19.tar.bz2#ab0a307912033126da02507b59e79ec9 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#561e277319a41d4f24f5c05a9ef63c04 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2#9d5cdfc51476ee4dcdd96ed2dca3f943 +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3-h516909a_0.tar.bz2#1378b88874f42ac31b2f8e4f6975cb7b +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.17.1-h7f98852_1.tar.bz2#ed1dc233ed5e3eaa9bfbaac64d130c5e +https://conda.anaconda.org/conda-forge/linux-64/expat-2.3.0-h9c3ff4c_0.tar.bz2#1fb8f0254eb78a2a0c120155e1b1a207 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/geos-3.9.1-h9c3ff4c_2.tar.bz2#b9a6d9422aed3ad84ec6ccee9bfcaa0f +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h58526e2_1001.tar.bz2#8c54672728e8ec6aa6db90cf2806d220 +https://conda.anaconda.org/conda-forge/linux-64/icu-68.1-h58526e2_0.tar.bz2#fc7a4271dc2a7f4fd78cd63695baf7c3 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2#ea02ce6037dbe81803ae6123e5ba1568 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.3-h58526e2_2.tar.bz2#665369991d8dd290ac5ee92fce3e6bf5 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2#95f32a6a5a666d33886ca5627239f03d +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.12-pthreads_h4812303_1.tar.bz2#2c7126a584f05e7bc8885d64dad3d21a +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h58526e2_1007.tar.bz2#7f6569a0c2f27acb8fc90600b382e544 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.0-h7f98852_2.tar.bz2#fb63a035a3b552c88a30d84b89ebf4c4 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_0.tar.bz2#4eb64ee0d5cd43096ffcf843c76b05d4 +https://conda.anaconda.org/conda-forge/linux-64/mpich-3.4.1-h846660c_104.tar.bz2#94f01e56905a7af1479c9f72b00e9864 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.2-h58526e2_4.tar.bz2#509f2a21c4a09214cd737a480dfd80c9 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.30-h9c3ff4c_0.tar.bz2#e6dc1f8f6e0bcebe8e3d8a5bca258dbe +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1k-h7f98852_0.tar.bz2#07fae2cb088379c8441e0f3ffa1f4025 +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.44-he1b5a44_0.tar.bz2#e647d89cd5cdf62760cf283a001841ff +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.40.0-h36c2ea0_0.tar.bz2#660e72c82f2e75a6b3fe6a6e75c79f19 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.0.10-h7f98852_0.tar.bz2#d6b0b50b49eccfe0be0373be628be0f3 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h7f98852_1002.tar.bz2#1e15f6ad85a7d743a2ac68dae6c82b98 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.0-h7f98852_3.tar.bz2#52402c791f35e414e704b7a113f99605 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h516909a_0.tar.bz2#03a530e925414902547cf48da7756db8 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h516909a_1010.tar.bz2#339cc5584e6d26bc73a875ba900028c3 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h0b5b191_1005.tar.bz2#ff6f69b593a9e74c0e6b61908ac513fa +https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.13-h10796ff_1005.tar.bz2#941d62d7d94ab46cf824512a57cac991 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-8_openblas.tar.bz2#95cee6371a5b901797075040941171f3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-hcdb4288_3.tar.bz2#d8f51405997093ff1799ded7650439c4 +https://conda.anaconda.org/conda-forge/linux-64/libllvm11-11.1.0-hf817b99_2.tar.bz2#646fa2f7c60b69ee8f918668e9c2fd31 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.43.0-h812cca2_0.tar.bz2#1867d1e9658596b3fac8847a7702eef4 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.9.0-ha56f1ee_6.tar.bz2#f0dfb86444df325e599dbc3f4c0a3f5b +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1003.tar.bz2#a9371e9e40aded194dcba1447606c9a1 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-h72842e0_4.tar.bz2#48577b6e1605c935d7178f6694506ee9 +https://conda.anaconda.org/conda-forge/linux-64/libzip-1.7.3-h4de3113_0.tar.bz2#2568763f88009f95e9262cba837dbb82 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.10-h21135ba_1.tar.bz2#c647f70aa7e3d4cc4e029cc1c9a99953 +https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.27.27-h975c496_1.tar.bz2#e663bd5dbc8cc4c1647d9f51cf25872c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.3-hd9c2040_1000.tar.bz2#9e856f78d5c80d5a78f61e72d1d473a3 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.4.9-ha95c52a_0.tar.bz2#b481dc9fda3af2a681d08a4d5cd1ea0b +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.17.2-h926e7f8_0.tar.bz2#926325c11478d6e781e76072c117763b +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-8_openblas.tar.bz2#d8e2151683bc12acffedea26eba27e0f +https://conda.anaconda.org/conda-forge/linux-64/libclang-11.1.0-default_ha53f305_0.tar.bz2#b7bc364d3ecf51443d48e14f87d784de +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.68.1-h3e27bee_0.tar.bz2#486fecf2277a154e5f73f62328764310 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-8_openblas.tar.bz2#9a860887c77e923c2807c715a7731fb8 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.2.0-hdc55705_1.tar.bz2#59b84553b303e0f4923289dd204dcd6b +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.23-h935591d_1.tar.bz2#fd60f20b38b7194aa91262fdbd3ef134 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.35.5-h74cdb3f_0.tar.bz2#e876c82c21e7074d299e13762d02466c +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.7.0-h7f98852_0.tar.bz2#0cd07abd75b2fad023161c657524ddbd +https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.36.0-h3371d22_4.tar.bz2#661e1ed5d92552785d9f8c781ce68685 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.13.1-hba837de_1005.tar.bz2#fd3611672eb91bc9d24fd6fb970037eb +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.6-h04a7f16_0.tar.bz2#b24a1e18325a6e8f8b6b4a2ec5860ce2 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.68.1-h9c3ff4c_0.tar.bz2#b1ecd0fa079de56a1ba8d03063ee39bb +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.18.4-h76c114f_2.tar.bz2#5db765d4974fa89f64c1544eb2a552cb +https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h64030ff_2.tar.bz2#112eb9b5b93f0c02e59aea4fd1967363 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.76.1-hc4aaa36_1.tar.bz2#349a288d04af695b639e5f947df3c2d0 +https://conda.anaconda.org/conda-forge/linux-64/libpq-13.2-hfd2b0eb_2.tar.bz2#66cc9cbd324d484c01ea08d98761aeb1 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.0-h3452ae3_0.tar.bz2#8f4e19a8988c38feec7db41bcd0bf0d0 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.64-hb5efdd6_0.tar.bz2#cb598141b73b9f7ebbffbd41220dcb9a +https://conda.anaconda.org/conda-forge/linux-64/python-3.8.8-hffdb5ce_0_cpython.tar.bz2#da5f00968a732f5da324fff565909a05 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h7f98852_1.tar.bz2#536cc5db4d0a3ba0630541aec064b5e4 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.10-h7f98852_1003.tar.bz2#f59c1242cc1dd93e72c2ee2b360979eb +https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 +https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyh9f0ad1d_0.tar.bz2#5f095bc6454094e96f146491fd03633b +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.16.0-h6cf1ce9_1008.tar.bz2#a43fb47d15e116f8be4be7e6b17ab59f +https://conda.anaconda.org/conda-forge/noarch/click-7.1.2-pyh9f0ad1d_0.tar.bz2#bd50a970ce07e660c319fdc4d730d3f1 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/linux-64/curl-7.76.1-h979ede3_1.tar.bz2#28e9133d2ad9ba3081e52548ea20c870 +https://conda.anaconda.org/conda-forge/noarch/dataclasses-0.8-pyhc8e2a94_1.tar.bz2#28e0de0ecba81334619a777fdc00febc +https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.1-pyh9f0ad1d_0.tar.bz2#db990401a267e2b15854af5f3f84f763 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.0.12-pyh9f0ad1d_0.tar.bz2#7544ed05bbbe9bb687bc9bcbe4d6cb46 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2021.4.0-pyhd8ed1ab_0.tar.bz2#7019316dafd6ef2e0a2fc178486993cd +https://conda.anaconda.org/conda-forge/linux-64/glib-2.68.1-h9c3ff4c_0.tar.bz2#9fb05e9b0df734f92df7810c7c8975e3 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.18.4-hf529b03_2.tar.bz2#526fadaa13ec264cb919436953bc2766 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-mpi_mpich_h996c276_1014.tar.bz2#6af2e2e4dfb0ef36c35042cd69a1599d +https://conda.anaconda.org/conda-forge/noarch/heapdict-1.0.1-py_0.tar.bz2#77242bfb1e74a627fb06319b5a2d3b95 +https://conda.anaconda.org/conda-forge/noarch/idna-2.10-pyh9f0ad1d_0.tar.bz2#f95a12b4f435aae6680fe55ae2eb1b06 +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.2.0-py_0.tar.bz2#5879bd2c4b399a5072468e5fe587bf1b +https://conda.anaconda.org/conda-forge/noarch/iris-sample-data-2.3.0-pyh9f0ad1d_0.tar.bz2#e4a33192da1a6dc4967ba18c6c765945 +https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.2-h78a0170_0.tar.bz2#ac0c23e6f3bbb61569781f00b5666f97 +https://conda.anaconda.org/conda-forge/noarch/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d +https://conda.anaconda.org/conda-forge/noarch/mccabe-0.6.1-py_1.tar.bz2#a326cb400c1ccd91789f3e7d02124d61 +https://conda.anaconda.org/conda-forge/noarch/nose-1.3.7-py_1006.tar.bz2#382019d5f8e9362ef6f60a8d4e7bce8f +https://conda.anaconda.org/conda-forge/noarch/olefile-0.46-pyh9f0ad1d_1.tar.bz2#0b2e68acc8c78c8cc392b90983481f58 +https://conda.anaconda.org/conda-forge/noarch/pathspec-0.8.1-pyhd3deb0d_0.tar.bz2#fcd2fbb062b55d14a77e664c89ee17a6 +https://conda.anaconda.org/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2#db654ee11298d3463bad67445707654c +https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.7.0-pyhd8ed1ab_0.tar.bz2#0234673eb2ecfbdf4e54574ab4d95f81 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 +https://conda.anaconda.org/conda-forge/noarch/pyflakes-2.3.1-pyhd8ed1ab_0.tar.bz2#01e9ada82bd261ee2b6366aa832018cc +https://conda.anaconda.org/conda-forge/noarch/pyke-1.1.1-pyhd8ed1ab_1004.tar.bz2#5f0236abfbb6d53826d1afed1e64f82e +https://conda.anaconda.org/conda-forge/noarch/pyparsing-2.4.7-pyh9f0ad1d_0.tar.bz2#626c4f20d5bf06dcec9cf2eaa31725c7 +https://conda.anaconda.org/conda-forge/noarch/pyshp-2.1.3-pyh44b312d_0.tar.bz2#2d1867b980785eb44b8122184d8b42a6 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-1_cp38.tar.bz2#8d05152d6fb3012b27a0e6fbcc14bea1 +https://conda.anaconda.org/conda-forge/noarch/pytz-2021.1-pyhd8ed1ab_0.tar.bz2#3af2e9424d5eb0063824a3f9b850d411 +https://conda.anaconda.org/conda-forge/noarch/six-1.15.0-pyh9f0ad1d_0.tar.bz2#1eec421f0f1f39e579e44e4a5ce646a2 +https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.1.0-pyhd8ed1ab_0.tar.bz2#f1d64c0cf0eedf655a96ccdc1573c05a +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.3.0-pyhd8ed1ab_0.tar.bz2#2f5b87cd0bdf1822b62e40909f471db4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2#20b2eaeaeea4ef9a9a0d99770620fd09 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2#68e01cac9d38d0e717cd5c87bc3d2cc9 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-1.0.3-py_0.tar.bz2#4508a40465ebf0105e52f7194f299411 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.4-py_0.tar.bz2#8ea6a8036e28dba8827d35c764709358 +https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.1-py_0.tar.bz2#d1e66b58cb00b3817ad9f05eec098c00 +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-3.7.4.3-py_0.tar.bz2#12b96e382730541a4b332420227055ae +https://conda.anaconda.org/conda-forge/noarch/wheel-0.36.2-pyhd3deb0d_0.tar.bz2#768bfbe026426d0e76b377997d1f2b98 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.4.1-pyhd8ed1ab_0.tar.bz2#a4fa30eb74a326092b3d8078b1f1aae1 +https://conda.anaconda.org/conda-forge/linux-64/antlr-python-runtime-4.7.2-py38h578d9bd_1002.tar.bz2#2b2207e2c8a05fc0bc5b62fc32c355e6 +https://conda.anaconda.org/conda-forge/noarch/babel-2.9.0-pyhd3deb0d_0.tar.bz2#1cb532c9a6fd4e56a9f0906b87c17b76 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2020.12.5-py38h578d9bd_1.tar.bz2#be470d89b0678991fd4ba67d4a35bc80 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.5-py38ha65f79e_0.tar.bz2#386057f231a571b75bfa7307c9acd5f6 +https://conda.anaconda.org/conda-forge/noarch/cfgv-3.2.0-py_0.tar.bz2#4972efcb3e2cbd3954b24a17266be25c +https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py38h578d9bd_1.tar.bz2#9294a5e2c7545a2f67ac348aadd53344 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.10.0-py_2.tar.bz2#f6d7c7e6d8f42cbbec7e07a8d879f91c +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.0-py38h497a2fe_3.tar.bz2#45568bae22c3825f22b631101ecbad35 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h48d8840_2.tar.bz2#eba672c69baf366fdedd1c6f702dbb81 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.16-py38h578d9bd_3.tar.bz2#a7866449fb9e5e4008a02df276549d34 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-2.8.0-h83ec7ef_1.tar.bz2#0b20d7ac5b7beec9615f35ab88c161f8 +https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.0.1-py38h578d9bd_0.tar.bz2#df6fae32b464e9fb5010c4784ce2efb0 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py38h1fd1430_1.tar.bz2#01488c80daae318ed5c17e7bb12af64e +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-mpi_mpich_hf07302c_1.tar.bz2#2df6da2c9d66945c9399ce6e94d1748e +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h497a2fe_3.tar.bz2#d51cdb48d2792a63174c0ee66a602e7e +https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py38he865349_5.tar.bz2#102cb42cdcf626ff68a225dbbe4e53df +https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py38h1fd1430_1.tar.bz2#5854c568e0d341313fb0a6487f1c687e +https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py38h578d9bd_3.tar.bz2#2821575c3884edf40e02cf1966e1c504 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.20.2-py38h9894fe3_0.tar.bz2#d159afa37685037c73461e8f2fa22e50 +https://conda.anaconda.org/conda-forge/noarch/packaging-20.9-pyh44b312d_0.tar.bz2#be69a38e912054a62dc82cc3c7711a64 +https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 +https://conda.anaconda.org/conda-forge/linux-64/pillow-6.2.2-py38h9776b28_0.tar.bz2#bd527d652ba06fb2aae61640bcf7c435 +https://conda.anaconda.org/conda-forge/noarch/pockets-0.9.1-py_0.tar.bz2#1b52f0c42e8077e5a33e00fe72269364 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.8.0-py38h497a2fe_1.tar.bz2#3c465545aa3cec37f8f1341546677956 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py38h709712a_7.tar.bz2#e012838bbbe92f6a458c2584634830f1 +https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_3.tar.bz2#8284bab4783fd6fdd11b695958945614 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.1-py_0.tar.bz2#0d0150ed9c2d25817f5324108d3f7571 +https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-2.0.2-py38h497a2fe_0.tar.bz2#27b37e3f79205080b573442445ed727b +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-5.4.1-py38h497a2fe_0.tar.bz2#36d6e06148013694eb943576cd305f67 +https://conda.anaconda.org/conda-forge/linux-64/regex-2021.4.4-py38h497a2fe_0.tar.bz2#fd8c69b8da2edc1dbdf6ff619257ee00 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h497a2fe_1.tar.bz2#e772c8383768280af283e814e2126663 +https://conda.anaconda.org/conda-forge/linux-64/typed-ast-1.4.3-py38h497a2fe_0.tar.bz2#f4a5eeaccf5c5bab10491071ea2e32b1 +https://conda.anaconda.org/conda-forge/linux-64/virtualenv-20.4.4-py38h578d9bd_0.tar.bz2#9fdd4265016de70b78554ff3a6dd1e3d +https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 +https://conda.anaconda.org/conda-forge/noarch/black-20.8b1-py_1.tar.bz2#e555d6b71ec916c3dc4e6e3793cc9796 +https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h497a2fe_1001.tar.bz2#56753dd777a6517b34966ddcb39af734 +https://conda.anaconda.org/conda-forge/linux-64/cftime-1.2.1-py38hab2c0dc_1.tar.bz2#777186ded2d850f3eab4ce7131c6c17c +https://conda.anaconda.org/conda-forge/linux-64/cryptography-3.4.7-py38ha5dfef3_0.tar.bz2#a8b014aba670157256dabdc885f71af4 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2021.4.1-pyhd8ed1ab_0.tar.bz2#7b4563cc5528acd2a1b2675a2b69dd19 +https://conda.anaconda.org/conda-forge/linux-64/editdistance-s-1.0.0-py38h1fd1430_1.tar.bz2#03bbd69539712a691b0a43bd4a49976e +https://conda.anaconda.org/conda-forge/linux-64/mo_pack-0.2.0-py38h5c078b8_1005.tar.bz2#d318a411c4cb595d5adb60ec7b4a46f0 +https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.5.3-mpi_mpich_h196b126_4.tar.bz2#e058f42a78ea8c965cf7335e28143c59 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.2.4-py38h1abd341_0.tar.bz2#91150ede50b13d34a03e9ef51b7b379f +https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2#9e325ab71e743c57955e73172d1db615 +https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.1.1-py38h5c078b8_1003.tar.bz2#a15164882b8bb63442970d99d8a94324 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.2-py38h7b17777_0.tar.bz2#e0be90ecf33b94ac3f407f1bf3c76de2 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-49.6.0-py38h578d9bd_3.tar.bz2#59c561cd1be0db9cf1c83f7d7cc74f4d +https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38h4fc1155_4.tar.bz2#4f81f5126a2ff5bff8ee84574d82ecac +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-napoleon-0.7-py_0.tar.bz2#0bc25ff6f2e34af63ded59692df5f749 +https://conda.anaconda.org/conda-forge/linux-64/asv-0.4.2-py38h709712a_2.tar.bz2#4659f315fc42e671606fbcd1b9234f75 +https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.4-py38hab2c0dc_2.tar.bz2#416d0f09951c5faf71d5de180b1d8903 +https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.4.1-py38h578d9bd_0.tar.bz2#8aa81a9e95fbd6adf9b0054e7d1acbce +https://conda.anaconda.org/conda-forge/linux-64/esmf-8.1.1-mpi_mpich_h3dcaa78_100.tar.bz2#5b4bab1017226f2c03ba0fe02b783316 +https://conda.anaconda.org/conda-forge/noarch/flake8-3.9.1-pyhd8ed1ab_0.tar.bz2#9ce1de40e3510b60d15d512251a3d3f7 +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-hab0c2f8_0.tar.bz2#8acbef87761a4b90f090168737822611 +https://conda.anaconda.org/conda-forge/noarch/identify-2.2.4-pyhd8ed1ab_0.tar.bz2#86a6446475a53451a71e1515150cb532 +https://conda.anaconda.org/conda-forge/noarch/imagehash-4.2.0-pyhd8ed1ab_0.tar.bz2#e5a77472ae964f2835fce16355bbfe64 +https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyh44b312d_0.tar.bz2#1d4c3605d85a3655b1595e0694138eb6 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.50.3-hfa39831_1.tar.bz2#7578526979e852a1f8650080214c6cd6 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.1-py38hcc49a3a_0.tar.bz2#a39ef001290edc846f61d184ea734767 +https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.5.6-nompi_py38h5e9db54_103.tar.bz2#72a5656daeee23c80e22b936bef0ceb3 +https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.6.0-pyhd8ed1ab_0.tar.bz2#0941325bf48969e2b3b19d0951740950 +https://conda.anaconda.org/conda-forge/noarch/pip-21.1-pyhd8ed1ab_0.tar.bz2#5acc8aa0e57f31553f7bf9c22ca4d064 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz2#196e0cff141677f430fc06eb0d0ad94d +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h7400c14_7.tar.bz2#8fe28c949b01e3d69c2b357b5abf3916 +https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.1.1-py38h32f6830_0.tar.bz2#896f192315a5a04c878febacd67e64cd +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0-py38hc9c980b_0.tar.bz2#8024c0f96cc8337f5148a07d4e1a8e13 +https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.1-mpi_mpich_py38h7f78e9f_100.tar.bz2#ce0ac0d6f5e6c5e7e0c613b08b3a0960 +https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.1-hebd9034_0.tar.bz2#9840ac6c4756d7f4b6035a62aae4d6fb +https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e +https://conda.anaconda.org/conda-forge/linux-64/pre-commit-2.12.1-py38h578d9bd_0.tar.bz2#c26dbf85b3b8699f6a551e1f63bf9580 +https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py38h7400c14_7.tar.bz2#3003444b4f41742a33b7afdeb3260cbc +https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py38h7400c14_7.tar.bz2#1c17944e118b314ff4d0bfc05f03a5e1 +https://conda.anaconda.org/conda-forge/noarch/pyugrid-0.3.1-py_2.tar.bz2#7d7361886fbcf2be663fd185bf6d244d +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.4-pyhd8ed1ab_0.tar.bz2#d7b20b328e23d993994ea02077c009c0 +https://conda.anaconda.org/conda-forge/noarch/dask-2021.4.1-pyhd8ed1ab_0.tar.bz2#d954ba6326e7f5279444ea0f1c3dfd46 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38h578d9bd_7.tar.bz2#7166890c160d0441f59973a40b74f6e5 +https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.4.1-py38h578d9bd_0.tar.bz2#850026fe180249b53fd3df025ea434f6 +https://conda.anaconda.org/conda-forge/noarch/sphinx-3.5.4-pyh44b312d_0.tar.bz2#0ebc444f001f73c4f6de01057b0be392 +https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.3.1-pyhd8ed1ab_0.tar.bz2#decad13214a2a545944560eccf4a9815 +https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.9.0-pyhd8ed1ab_0.tar.bz2#5ef222a3e1b5904742e376e05046692b +https://conda.anaconda.org/conda-forge/noarch/sphinx-panels-0.5.2-pyhd3deb0d_0.tar.bz2#1a871a63c4be1bd47a7aa48b7417a426 +https://conda.anaconda.org/conda-forge/noarch/sphinx_rtd_theme-0.5.2-pyhd8ed1ab_1.tar.bz2#7434e891fc767cb0d39d90751720c8ec From 642a03e723261c22d2022953781d322af696ae88 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:22:39 +0100 Subject: [PATCH 02/28] Testing github refresh workflow --- .github/workflows/refresh-lockfiles.yml | 77 +++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100755 .github/workflows/refresh-lockfiles.yml diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml new file mode 100755 index 0000000000..77ed1881c1 --- /dev/null +++ b/.github/workflows/refresh-lockfiles.yml @@ -0,0 +1,77 @@ +# This is a basic workflow to help you get started with Actions + +name: Refresh Lockfiles + +# Controls when the action will run. +on: +# schedule: +# - cron: 1 0 * * 6 + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + + + +# # jobs: +# # job1: +# # runs-on: ubuntu-latest +# # outputs: +# # matrix: ${{ steps.set-matrix.outputs.matrix }} +# # steps: +# # - id: set-matrix +# # run: echo "::set-output name=matrix::{\"include\":[{\"project\":\"foo\",\"config\":\"Debug\"},{\"project\":\"bar\",\"config\":\"Release\"}]}" +# # job2: +# # needs: job1 +# # runs-on: ubuntu-latest +# # strategy: +# # matrix: ${{fromJson(needs.job1.outputs.matrix)}} +# # steps: +# # - run: build + +# # A workflow run is made up of one or more jobs that can run sequentially or in parallel +# jobs: +# # find the list of python yaml files to lock +# gen_matrix: +# runs-on: ubuntu-latest +# outputs: +# matrix: ${{ steps.set-matrix.outputs.matrix }} +# steps: +# - uses: actions/checkout@v2 +# - id: set-matrix +# - run: echo "::set-output name=matrix::$(python -c \"import glob; print(glob.glob('requirements/ci/py*.yml'))\")" + +# gen_lockfiles: +# needs: [gen_matrix] +# runs-on: ubuntu-latest +# strategy: +# matrix: ${{fromJson(needs.gen_matrix.outputs.matrix)}} +# steps: +# - run: echo +jobs: + build: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + strategy: + matrix: + python: ['36', '37', '38'] + + steps: + - uses: actions/checkout@v2 + - name: install conda-lock + run: | + source $CONDA/bin/activate + conda install -y -c conda-forge conda-lock + - run: echo ${{ matrix.python }} + + + +# # Runs a single command using the runners shell +# - name: Run a one-line script +# run: echo Hello, world! + +# # Runs a set of commands using the runners shell +# - name: Run a multi-line script +# run: | +# echo Add other actions to build, +# echo test, and deploy your project. From bb444a8f17f4d58a7dabffa3421f54a6a94f9ae9 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:24:39 +0100 Subject: [PATCH 03/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 77ed1881c1..66e7507659 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -60,9 +60,17 @@ jobs: - uses: actions/checkout@v2 - name: install conda-lock run: | - source $CONDA/bin/activate - conda install -y -c conda-forge conda-lock + source $CONDA/bin/activate + conda install -y -c conda-forge conda-lock - run: echo ${{ matrix.python }} + + pr: + runs-on: ubuntu-latest + + needs: build + + steps: + - run: echo "done" From bd58e70abe80e6975c23e7fbb070f3f42bb5f00e Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:26:54 +0100 Subject: [PATCH 04/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 66e7507659..6201094f1e 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -9,8 +9,9 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: - - + + push: + branches: [ ci-lock ] # # jobs: # # job1: From f6c2ca58a62cf94e4317156981e44e598adf320e Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:38:06 +0100 Subject: [PATCH 05/28] Action making lockfiles and setting as artifacts --- .github/workflows/refresh-lockfiles.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 6201094f1e..7fb3b7e5dd 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -63,7 +63,14 @@ jobs: run: | source $CONDA/bin/activate conda install -y -c conda-forge conda-lock - - run: echo ${{ matrix.python }} + - name: generate lockfile + run: | + conda-lock lock -p linux-64 -f ci/requirements/py${{matrix.python}}.yml + mv conda-linux-64.lock ci/requirements/nox.lock/py${{matrix.python}}-linux-64.lock + - name: output lockfile + uses: actions/upload-artifact@v2 + with: + path: ci/requirements/nox.lock/py${{matrix.python}}-linux-64.lock pr: runs-on: ubuntu-latest @@ -71,7 +78,13 @@ jobs: needs: build steps: - - run: echo "done" + - uses: actions/checkout@v2 + - name: get artifacts + uses: actions/download-artifact@v2 + with: + path: ci/requirements/nox.lock + - name: create pr + run: git status From 596d2a035c5740bdced336166975af8b403f26b2 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:40:21 +0100 Subject: [PATCH 06/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 7fb3b7e5dd..e2489690de 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -61,11 +61,11 @@ jobs: - uses: actions/checkout@v2 - name: install conda-lock run: | - source $CONDA/bin/activate + source $CONDA/bin/activate base conda install -y -c conda-forge conda-lock - name: generate lockfile run: | - conda-lock lock -p linux-64 -f ci/requirements/py${{matrix.python}}.yml + $CONDA/bin/conda-lock lock -p linux-64 -f ci/requirements/py${{matrix.python}}.yml mv conda-linux-64.lock ci/requirements/nox.lock/py${{matrix.python}}-linux-64.lock - name: output lockfile uses: actions/upload-artifact@v2 From 9dea68d0e1de5ecd2a5ee5c7480103166668b301 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:42:53 +0100 Subject: [PATCH 07/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index e2489690de..3b1c47b0b9 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -65,12 +65,12 @@ jobs: conda install -y -c conda-forge conda-lock - name: generate lockfile run: | - $CONDA/bin/conda-lock lock -p linux-64 -f ci/requirements/py${{matrix.python}}.yml - mv conda-linux-64.lock ci/requirements/nox.lock/py${{matrix.python}}-linux-64.lock + $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml + mv conda-linux-64.lock requirements/ci/nox.lock/py${{matrix.python}}-linux-64.lock - name: output lockfile uses: actions/upload-artifact@v2 with: - path: ci/requirements/nox.lock/py${{matrix.python}}-linux-64.lock + path: requirements/ci/nox.lock/py${{matrix.python}}-linux-64.lock pr: runs-on: ubuntu-latest @@ -82,7 +82,7 @@ jobs: - name: get artifacts uses: actions/download-artifact@v2 with: - path: ci/requirements/nox.lock + path: requirements/ci/nox.lock - name: create pr run: git status From 81ba3aa3bf4c524dbf9bc17721d4fd6c98ca118c Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:50:55 +0100 Subject: [PATCH 08/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 3b1c47b0b9..a9eae8ffab 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -66,11 +66,11 @@ jobs: - name: generate lockfile run: | $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml - mv conda-linux-64.lock requirements/ci/nox.lock/py${{matrix.python}}-linux-64.lock + mv conda-linux-64.lock nox.lock/py${{matrix.python}}-linux-64.lock - name: output lockfile uses: actions/upload-artifact@v2 with: - path: requirements/ci/nox.lock/py${{matrix.python}}-linux-64.lock + path: nox.lock/py${{matrix.python}}-linux-64.lock pr: runs-on: ubuntu-latest @@ -82,9 +82,9 @@ jobs: - name: get artifacts uses: actions/download-artifact@v2 with: - path: requirements/ci/nox.lock + path: artifacts - name: create pr - run: git status + run: ls artifacts/*/* From 26b3e35aa51ddcd90bb41d0fe8e3d25f540f5c50 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:53:28 +0100 Subject: [PATCH 09/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index a9eae8ffab..75d19235e5 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -66,7 +66,7 @@ jobs: - name: generate lockfile run: | $CONDA/bin/conda-lock lock -p linux-64 -f requirements/ci/py${{matrix.python}}.yml - mv conda-linux-64.lock nox.lock/py${{matrix.python}}-linux-64.lock + mv conda-linux-64.lock py${{matrix.python}}-linux-64.lock - name: output lockfile uses: actions/upload-artifact@v2 with: From 555201670bfd7269262c1e79d554b3459b23437c Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 18:55:42 +0100 Subject: [PATCH 10/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 75d19235e5..51300591d1 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -70,7 +70,7 @@ jobs: - name: output lockfile uses: actions/upload-artifact@v2 with: - path: nox.lock/py${{matrix.python}}-linux-64.lock + path: py${{matrix.python}}-linux-64.lock pr: runs-on: ubuntu-latest From ddb3a8ec7d2a0092b5af8d5fe270f1822c12d448 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 19:13:26 +0100 Subject: [PATCH 11/28] Added PR creation --- .github/workflows/refresh-lockfiles.yml | 70 +++++++------------------ 1 file changed, 18 insertions(+), 52 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 51300591d1..52805dfb43 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -13,43 +13,8 @@ on: push: branches: [ ci-lock ] -# # jobs: -# # job1: -# # runs-on: ubuntu-latest -# # outputs: -# # matrix: ${{ steps.set-matrix.outputs.matrix }} -# # steps: -# # - id: set-matrix -# # run: echo "::set-output name=matrix::{\"include\":[{\"project\":\"foo\",\"config\":\"Debug\"},{\"project\":\"bar\",\"config\":\"Release\"}]}" -# # job2: -# # needs: job1 -# # runs-on: ubuntu-latest -# # strategy: -# # matrix: ${{fromJson(needs.job1.outputs.matrix)}} -# # steps: -# # - run: build - -# # A workflow run is made up of one or more jobs that can run sequentially or in parallel -# jobs: -# # find the list of python yaml files to lock -# gen_matrix: -# runs-on: ubuntu-latest -# outputs: -# matrix: ${{ steps.set-matrix.outputs.matrix }} -# steps: -# - uses: actions/checkout@v2 -# - id: set-matrix -# - run: echo "::set-output name=matrix::$(python -c \"import glob; print(glob.glob('requirements/ci/py*.yml'))\")" - -# gen_lockfiles: -# needs: [gen_matrix] -# runs-on: ubuntu-latest -# strategy: -# matrix: ${{fromJson(needs.gen_matrix.outputs.matrix)}} -# steps: -# - run: echo jobs: - build: + gen_lockfiles: # The type of runner that the job will run on runs-on: ubuntu-latest @@ -72,10 +37,9 @@ jobs: with: path: py${{matrix.python}}-linux-64.lock - pr: + create_pr: runs-on: ubuntu-latest - - needs: build + needs: gen_lockfiles steps: - uses: actions/checkout@v2 @@ -83,17 +47,19 @@ jobs: uses: actions/download-artifact@v2 with: path: artifacts - - name: create pr - run: ls artifacts/*/* - + + - name: Update lock files in repo + run: | + cp artifacts/artifact/*.lock requirements/ci/nox.lock + rm -r artifacts - -# # Runs a single command using the runners shell -# - name: Run a one-line script -# run: echo Hello, world! - -# # Runs a set of commands using the runners shell -# - name: Run a multi-line script -# run: | -# echo Add other actions to build, -# echo test, and deploy your project. + - name: Create Pull Request + uses: peter-evans/create-pull-request@052fc72b4198ba9fbc81b818c6e1859f747d49a8 + with: + commit-message: Updated environment lockfiles + delete-branch: true + branch: lockfiles- + branch-suffix: timestamp + title: Update CI environment lockfiles + body: | + Lockfiles updated to the latest resolvable environment. From b20615c3db58fa6f17776132548561cd867b93f3 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 19:24:16 +0100 Subject: [PATCH 12/28] Cleanup refresh-lockfiles.yml Comments and cron scheduling for refresh-lockfiles workflow --- .github/workflows/refresh-lockfiles.yml | 26 ++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 52805dfb43..fa8cfcea40 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -1,21 +1,27 @@ -# This is a basic workflow to help you get started with Actions +# This workflow periodically creates new environment lock files based on the newest +# available dependency pacakges on conda-forge. +# +# For environments that have changed, a pull request will be made and submitted +# to the master branch name: Refresh Lockfiles -# Controls when the action will run. +# Run once a week on a Saturday night on: -# schedule: -# - cron: 1 0 * * 6 + schedule: + - cron: 1 0 * * 6 # Allows you to run this workflow manually from the Actions tab workflow_dispatch: - - push: - branches: [ ci-lock ] jobs: + gen_lockfiles: - # The type of runner that the job will run on + # this is a matrix job: it splits to create new lockfiles for each + # of the CI test python versions. + # this list below should be changed when covering more python versions + # TODO: generate this matrix automatically from the list of available py**.yml files + # ref: https://tomasvotruba.com/blog/2020/11/16/how-to-make-dynamic-matrix-in-github-actions/ runs-on: ubuntu-latest strategy: @@ -38,6 +44,8 @@ jobs: path: py${{matrix.python}}-linux-64.lock create_pr: + # once the matrix job has completed all the lock files will have been uploaded as artifacts. + # Download the artifacts, add them to the repo, and create a PR. runs-on: ubuntu-latest needs: gen_lockfiles @@ -58,7 +66,7 @@ jobs: with: commit-message: Updated environment lockfiles delete-branch: true - branch: lockfiles- + branch: lockfiles branch-suffix: timestamp title: Update CI environment lockfiles body: | From 8f71bc185f265722620abe2f4aae6c0d85e70089 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 19:30:04 +0100 Subject: [PATCH 13/28] Update .cirrus.yml noxfile now handles out of date environments, so no need to invalidate the cache in the cirrus configuration --- .cirrus.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 250e9c37c9..82c3a0d537 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -81,8 +81,7 @@ linux_task_template: &LINUX_TASK_TEMPLATE folder: ${CIRRUS_WORKING_DIR}/.nox fingerprint_script: - echo "${CIRRUS_TASK_NAME}" - - echo "$(date +%Y).$(expr $(date +%U) / ${CACHE_PERIOD}):${NOX_CACHE_BUILD}" - - sha256sum ${CIRRUS_WORKING_DIR}/requirements/ci/py$(echo ${PY_VER} | tr -d ".").yml + - echo "${NOX_CACHE_BUILD}" # From fc07f17fe0836ee16f68c0c57a3fd574d30c55ea Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 27 Apr 2021 19:33:59 +0100 Subject: [PATCH 14/28] Update refresh-lockfiles.yml --- .github/workflows/refresh-lockfiles.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index fa8cfcea40..90073a85d1 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -6,13 +6,13 @@ name: Refresh Lockfiles -# Run once a week on a Saturday night + on: + workflow_dispatch: schedule: + # Run once a week on a Saturday night - cron: 1 0 * * 6 - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: jobs: From 22e325d71d6de18ad87acfea4437f1a9156daec4 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 28 Apr 2021 17:46:38 +0100 Subject: [PATCH 15/28] Back to cartopy 0.18 --- requirements/ci/nox.lock/py36-linux-64.lock | 6 +++--- requirements/ci/nox.lock/py37-linux-64.lock | 8 ++++---- requirements/ci/nox.lock/py38-linux-64.lock | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/requirements/ci/nox.lock/py36-linux-64.lock b/requirements/ci/nox.lock/py36-linux-64.lock index c132f32b30..571c0210b9 100644 --- a/requirements/ci/nox.lock/py36-linux-64.lock +++ b/requirements/ci/nox.lock/py36-linux-64.lock @@ -1,5 +1,5 @@ # platform: linux-64 -# env_hash: 1a0a1f86b81c9babc7172b8741f714137a8e45bd758c8bd5a328f2051fbc4b62 +# env_hash: 75ce0109084319ce5e50da49c3454894c6260351df0e52f7a83926d8dcf4c3f9 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b @@ -164,7 +164,7 @@ https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.0.1-py36h5f https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py36h605e78d_1.tar.bz2#a92afbf92c5416585457e5de5c3d98c7 https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-mpi_mpich_hf07302c_1.tar.bz2#2df6da2c9d66945c9399ce6e94d1748e https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py36h8f6f2f9_3.tar.bz2#4471d6eaa07fcc4dd1f2e0e6cc8e54bf -https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py36h7b8b12a_5.tar.bz2#5624b369630b6ecb3757de00245155b3 +https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py36h7b8b12a_6.tar.bz2#e08b6da974e97a715b7677b453434f75 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py36h605e78d_1.tar.bz2#9460d0c8c77d3d5c410eb6743a48eca8 https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py36h5fab9bb_3.tar.bz2#abc16a8fe5dc31bde74702e28ed59164 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.19.5-py36h2aa4a07_1.tar.bz2#825e240765327dcdb8b0add973714e9e @@ -220,7 +220,7 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py36h7ec31b9_7.tar.bz2#379005311c6e733b228723e67fc52fb2 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.1.1-py36h9f0ad1d_0.tar.bz2#f2b02dad779533dc04af6698949f02d3 -https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0-py36hbcbf2fa_0.tar.bz2#391a0c8e43dc0f4e7ed5fe248f0b1ff1 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.18.0-py36h104b3a8_13.tar.bz2#dc30a50c34546b966086062151b167ac https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.1-mpi_mpich_py36hcd78dbd_100.tar.bz2#cce5b688501b00de155299a82365852c https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.1-hebd9034_0.tar.bz2#9840ac6c4756d7f4b6035a62aae4d6fb https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e diff --git a/requirements/ci/nox.lock/py37-linux-64.lock b/requirements/ci/nox.lock/py37-linux-64.lock index f087d92c3b..b19703012b 100644 --- a/requirements/ci/nox.lock/py37-linux-64.lock +++ b/requirements/ci/nox.lock/py37-linux-64.lock @@ -1,5 +1,5 @@ # platform: linux-64 -# env_hash: 9f683f7bd19228d6857db32d4372da95f0a29742d9ca4fa18f342162bbd8a667 +# env_hash: c981e21ad8faeb1587964cd4eb9f0d217dfb5769d453dd18d75bd1b0211ed27d @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b @@ -163,7 +163,7 @@ https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.0.1-py37h89 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py37h2527ec5_1.tar.bz2#61149814e0ea71cb5b44881c65d25f7b https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-mpi_mpich_hf07302c_1.tar.bz2#2df6da2c9d66945c9399ce6e94d1748e https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py37h5e8e339_3.tar.bz2#b874d44750373553008083116442c972 -https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py37h1e5cb63_5.tar.bz2#88fda322e288a0608ec71fb85685d96b +https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py37h1e5cb63_6.tar.bz2#3a4dec949116867361cde9b8a31724c5 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py37h2527ec5_1.tar.bz2#07952b04eee02d873daa311a35b27454 https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py37h89c1867_3.tar.bz2#b604f0897a7a207bddd7d05bf3284752 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.20.2-py37h038b26d_0.tar.bz2#795bd784e989b08ceb1ce8be539dc0b2 @@ -195,7 +195,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.1.1-py37h902c9e0_1003.tar.bz2#2bf38b6c7984839b174273cadbf90ea6 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py37h902c9e0_3.tar.bz2#104648a5a091a493046a62704eef5c49 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.2-py37h29e03ee_0.tar.bz2#9fc4d659c8a978967bb4f25c0ca23aa0 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.3-py37h29e03ee_0.tar.bz2#a469d02f72b9cef07f4408d419b17dcc https://conda.anaconda.org/conda-forge/linux-64/setuptools-49.6.0-py37h89c1867_3.tar.bz2#928c178bf6805b8ab71fabaa620e0234 https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py37hf7ed6d2_4.tar.bz2#0209359199915534c567ffc7fafdb6c4 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-napoleon-0.7-py_0.tar.bz2#0bc25ff6f2e34af63ded59692df5f749 @@ -218,7 +218,7 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py37he336c9b_7.tar.bz2#303251d6f2b9e60a0cd79480cf8507d2 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.1.1-py37hc8dfbb8_0.tar.bz2#0927f1a093279ba797f014c5e484a58f -https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0-py37h0c48da3_0.tar.bz2#14a86bdbd9733175383fc469b968b1dc +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.18.0-py37h26456f9_13.tar.bz2#40402d7cd34852b8da829f45c5dc5d80 https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.1-mpi_mpich_py37hf719a8e_100.tar.bz2#d608536dd44b60da923950c60619583d https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.1-hebd9034_0.tar.bz2#9840ac6c4756d7f4b6035a62aae4d6fb https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e diff --git a/requirements/ci/nox.lock/py38-linux-64.lock b/requirements/ci/nox.lock/py38-linux-64.lock index 256a843392..8680d37e95 100644 --- a/requirements/ci/nox.lock/py38-linux-64.lock +++ b/requirements/ci/nox.lock/py38-linux-64.lock @@ -1,5 +1,5 @@ # platform: linux-64 -# env_hash: 25d37d9c9841bf7d79d238578d4063a437222f0b5c8e90ee78623b3e38cf0b0b +# env_hash: 224a96531ed05f3e0e6c892b0b23906915eb70745ae01149c72d50f0864279fd @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2020.12.5-ha878542_0.tar.bz2#7eb5d4ffeee663caa1635cd67071bc1b @@ -163,7 +163,7 @@ https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.0.1-py38h57 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.3.1-py38h1fd1430_1.tar.bz2#01488c80daae318ed5c17e7bb12af64e https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-mpi_mpich_hf07302c_1.tar.bz2#2df6da2c9d66945c9399ce6e94d1748e https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h497a2fe_3.tar.bz2#d51cdb48d2792a63174c0ee66a602e7e -https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py38he865349_5.tar.bz2#102cb42cdcf626ff68a225dbbe4e53df +https://conda.anaconda.org/conda-forge/linux-64/mpi4py-3.0.3-py38he865349_6.tar.bz2#5de076f835bf7eaeced98104e6f6c5e9 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.0.2-py38h1fd1430_1.tar.bz2#5854c568e0d341313fb0a6487f1c687e https://conda.anaconda.org/conda-forge/linux-64/mypy_extensions-0.4.3-py38h578d9bd_3.tar.bz2#2821575c3884edf40e02cf1966e1c504 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.20.2-py38h9894fe3_0.tar.bz2#d159afa37685037c73461e8f2fa22e50 @@ -195,7 +195,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pango-1.42.4-h69149e4_5.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.1.1-py38h5c078b8_1003.tar.bz2#a15164882b8bb63442970d99d8a94324 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-hda022c4_4.tar.bz2#afebab1f5049d66baaaec67d9ce893f0 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.2-py38h7b17777_0.tar.bz2#e0be90ecf33b94ac3f407f1bf3c76de2 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.6.3-py38h7b17777_0.tar.bz2#8055079ed82e1ada1cc4714c26d04802 https://conda.anaconda.org/conda-forge/linux-64/setuptools-49.6.0-py38h578d9bd_3.tar.bz2#59c561cd1be0db9cf1c83f7d7cc74f4d https://conda.anaconda.org/conda-forge/linux-64/shapely-1.7.1-py38h4fc1155_4.tar.bz2#4f81f5126a2ff5bff8ee84574d82ecac https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-napoleon-0.7-py_0.tar.bz2#0bc25ff6f2e34af63ded59692df5f749 @@ -217,7 +217,7 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.8.1-pyhd8ed1ab_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h7400c14_7.tar.bz2#8fe28c949b01e3d69c2b357b5abf3916 https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.1.1-py38h32f6830_0.tar.bz2#896f192315a5a04c878febacd67e64cd -https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0-py38hc9c980b_0.tar.bz2#8024c0f96cc8337f5148a07d4e1a8e13 +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.18.0-py38hab71064_13.tar.bz2#85df4e1eaab01229f99b2cc4755f6dac https://conda.anaconda.org/conda-forge/linux-64/esmpy-8.1.1-mpi_mpich_py38h7f78e9f_100.tar.bz2#ce0ac0d6f5e6c5e7e0c613b08b3a0960 https://conda.anaconda.org/conda-forge/linux-64/graphviz-2.47.1-hebd9034_0.tar.bz2#9840ac6c4756d7f4b6035a62aae4d6fb https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.2.0-py_1.tar.bz2#f3158a5d335f0f44f09cf05d3fb4107e From 153254d3c5cf91765844666fe02d98a83f17ed86 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 28 Apr 2021 18:07:53 +0100 Subject: [PATCH 16/28] Script for updating lockfiles --- tools/update_lockfiles.py | 40 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 tools/update_lockfiles.py diff --git a/tools/update_lockfiles.py b/tools/update_lockfiles.py new file mode 100755 index 0000000000..8d97a8616c --- /dev/null +++ b/tools/update_lockfiles.py @@ -0,0 +1,40 @@ +import argparse +import os +import subprocess +import sys + + +try: + import conda_lock +except: + print("conda-lock must be installed.") + exit(1) + +parser = argparse.ArgumentParser( + "Iris Lockfile Generator", +) + +parser.add_argument('files', nargs='+', + help="List of environment.yml files to lock") +parser.add_argument('--output-dir', '-o', default='.', + help="Directory to save output lock files") + +args = parser.parse_args() + +for infile in args.files: + print(f"generating lockfile for {infile}", file=sys.stderr) + fname = os.path.basename(infile) + ftype = fname.split('.')[-1] + if ftype.lower() in ('yaml', 'yml'): + fname = '.'.join(fname.split('.')[:-1]) + + ofile_template = os.path.join(args.output_dir, fname+'-{platform}.lock') + subprocess.call([ + 'conda-lock', + 'lock', + '--filename-template', ofile_template, + '--file', infile, + '--platform', 'linux-64' + ]) + print(f"lockfile saved to {ofile_template}".format(platform='linux-64'), + file=sys.stderr) \ No newline at end of file From 59c93b1dd2aa7a3e4b6a2b898cefddeb721a2390 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 28 Apr 2021 18:27:55 +0100 Subject: [PATCH 17/28] License header on update_lockfiles script --- tools/update_lockfiles.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/update_lockfiles.py b/tools/update_lockfiles.py index 8d97a8616c..f40bc2e13c 100755 --- a/tools/update_lockfiles.py +++ b/tools/update_lockfiles.py @@ -1,3 +1,18 @@ +# Copyright Iris contributors +# +# This file is part of Iris and is released under the LGPL license. +# See COPYING and COPYING.LESSER in the root of the repository for full +# licensing details. +""" +A command line utility for generating conda-lock files for the environments +that nox uses for testing each different supported version of python. +Typical usage: + + python tools/update_lockfiles.py -o requirements/ci/nox.lock requirements/ci/py*.yml + + +""" + import argparse import os import subprocess From 45311ee1aceab37fb873ce6436a6b0c5a38adb06 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 28 Apr 2021 18:37:00 +0100 Subject: [PATCH 18/28] testing reupload_on_changes key in nox cache --- .cirrus.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.cirrus.yml b/.cirrus.yml index 82c3a0d537..80b83903b7 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -79,9 +79,7 @@ linux_task_template: &LINUX_TASK_TEMPLATE - echo "$(date +%Y).$(expr $(date +%U) / ${CACHE_PERIOD}):${CARTOPY_CACHE_BUILD}" nox_cache: folder: ${CIRRUS_WORKING_DIR}/.nox - fingerprint_script: - - echo "${CIRRUS_TASK_NAME}" - - echo "${NOX_CACHE_BUILD}" + reupload_on_changes: true # From 35570d03b6a08f7545411763080af21d729dad86 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 28 Apr 2021 18:48:40 +0100 Subject: [PATCH 19/28] Documentation update --- Makefile | 2 ++ .../contributing_ci_tests.rst | 30 +++++++++++++++++++ .../contributing_pull_request_checklist.rst | 4 +++ 3 files changed, 36 insertions(+) create mode 100755 Makefile diff --git a/Makefile b/Makefile new file mode 100755 index 0000000000..74a87db427 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +lockfiles: + python tools/update_lockfiles.py -o requirements/ci/nox.lock requirements/ci/py*.yml \ No newline at end of file diff --git a/docs/src/developers_guide/contributing_ci_tests.rst b/docs/src/developers_guide/contributing_ci_tests.rst index 14bc6a2612..bd679350b2 100644 --- a/docs/src/developers_guide/contributing_ci_tests.rst +++ b/docs/src/developers_guide/contributing_ci_tests.rst @@ -38,6 +38,36 @@ The above `cirrus-ci`_ tasks are run automatically against all `Iris`_ branches on GitHub whenever a pull-request is submitted, updated or merged. See the `Cirrus-CI Dashboard`_ for details of recent past and active Iris jobs. + +.. _cirrus_test_env: + +Cirrus CI Test environment +-------------------------- + +The test environment on the Cirrus-CI service is determined from the requirement files +in `requirements/ci/py**.yml`. These are conda envinroment files that list the entire +set of build, test and run requirements for iris. + +For reproducible test results, these environments are resolved for all their dependencies +and stored as lock files in `requirements/ci/nox.lock`. The test environments will not +resolve the dependencies each time, instead they will use the lock file to reproduce the +same exact environment each time. + +**If you have updated the requirement yaml files with new dependencies, you will need to +generate new lock files.** To do this, run the command:: + + python tools/update_lockfiles.py -o requirements/ci/nox.lock requirements/ci/py*.yml + +or simply:: + + make lockfiles + +and add the changed lockfiles to your pull request. + +New lockfiles are generated automatically each week to ensure that iris continues to be +tested against the latest available version of its dependencies. + + .. _skipping Cirrus-CI tasks: Skipping Cirrus-CI Tasks diff --git a/docs/src/developers_guide/contributing_pull_request_checklist.rst b/docs/src/developers_guide/contributing_pull_request_checklist.rst index 3e7a9f1ae3..5b8236853a 100644 --- a/docs/src/developers_guide/contributing_pull_request_checklist.rst +++ b/docs/src/developers_guide/contributing_pull_request_checklist.rst @@ -29,6 +29,10 @@ is merged. Before submitting a pull request please consider this list. #. **Check all modified and new source files conform to the required** :ref:`code_formatting`. +#. **Check all new dependencies added to the requirements/ci/*.yml files.** If + dependencies have been added new nox testing lockfieles should be generated too, + see :ref:`cirrus_test_env`. + #. **Check the source documentation been updated to explain all new or changed features**. See :ref:`docstrings`. From 0305416f2a87335e8963a880483c534c4206e3e8 Mon Sep 17 00:00:00 2001 From: James Penn Date: Wed, 28 Apr 2021 18:57:22 +0100 Subject: [PATCH 20/28] Added whats new entry --- .cirrus.yml | 4 +++- docs/src/whatsnew/latest.rst | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.cirrus.yml b/.cirrus.yml index 80b83903b7..50c17765d0 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -80,7 +80,9 @@ linux_task_template: &LINUX_TASK_TEMPLATE nox_cache: folder: ${CIRRUS_WORKING_DIR}/.nox reupload_on_changes: true - + fingerprint_script: + - echo "${CIRRUS_TASK_NAME}" + - echo "${NOX_CACHE_BUILD}" # # YAML alias for compute credits. diff --git a/docs/src/whatsnew/latest.rst b/docs/src/whatsnew/latest.rst index 0b8c517421..808f1de421 100644 --- a/docs/src/whatsnew/latest.rst +++ b/docs/src/whatsnew/latest.rst @@ -150,6 +150,8 @@ This document explains the changes made to Iris for this release #. `@bjlittle`_ updated the perceptual imagehash graphical test support for `matplotlib`_ 3.4.1. (:pull:`4087`) +#. `@jamesp`_ switched `cirrus-ci`_ testing and `nox`_ + testing to use `conda-lock`_ files for static test environments. (:pull:`4108`) .. comment Whatsnew author names (@github name) in alphabetical order. Note that, @@ -175,3 +177,4 @@ This document explains the changes made to Iris for this release .. _Python 3.8: https://www.python.org/downloads/release/python-380/ .. _README.md: https://github.com/SciTools/iris#----- .. _xxhash: http://cyan4973.github.io/xxHash/ +.. _conda-lock: https://github.com/conda-incubator/conda-lock \ No newline at end of file From 39c3b6b4c3486c5ee5c42a4f1fb04cf7f6578fe8 Mon Sep 17 00:00:00 2001 From: James Penn Date: Thu, 29 Apr 2021 09:10:10 +0100 Subject: [PATCH 21/28] Fixed a horrendous number of typos --- .github/workflows/refresh-lockfiles.yml | 2 +- docs/src/developers_guide/contributing_ci_tests.rst | 2 +- .../developers_guide/contributing_pull_request_checklist.rst | 2 +- noxfile.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 90073a85d1..900f9e183d 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -1,5 +1,5 @@ # This workflow periodically creates new environment lock files based on the newest -# available dependency pacakges on conda-forge. +# available dependency packages on conda-forge. # # For environments that have changed, a pull request will be made and submitted # to the master branch diff --git a/docs/src/developers_guide/contributing_ci_tests.rst b/docs/src/developers_guide/contributing_ci_tests.rst index bd679350b2..337af8df0b 100644 --- a/docs/src/developers_guide/contributing_ci_tests.rst +++ b/docs/src/developers_guide/contributing_ci_tests.rst @@ -45,7 +45,7 @@ Cirrus CI Test environment -------------------------- The test environment on the Cirrus-CI service is determined from the requirement files -in `requirements/ci/py**.yml`. These are conda envinroment files that list the entire +in `requirements/ci/py**.yml`. These are conda environment files that list the entire set of build, test and run requirements for iris. For reproducible test results, these environments are resolved for all their dependencies diff --git a/docs/src/developers_guide/contributing_pull_request_checklist.rst b/docs/src/developers_guide/contributing_pull_request_checklist.rst index 5b8236853a..8a06a17124 100644 --- a/docs/src/developers_guide/contributing_pull_request_checklist.rst +++ b/docs/src/developers_guide/contributing_pull_request_checklist.rst @@ -30,7 +30,7 @@ is merged. Before submitting a pull request please consider this list. :ref:`code_formatting`. #. **Check all new dependencies added to the requirements/ci/*.yml files.** If - dependencies have been added new nox testing lockfieles should be generated too, + dependencies have been added then new nox testing lockfiles should be generated too, see :ref:`cirrus_test_env`. #. **Check the source documentation been updated to explain all new or changed diff --git a/noxfile.py b/noxfile.py index c0aaa47eef..f6c540d9b2 100755 --- a/noxfile.py +++ b/noxfile.py @@ -124,7 +124,7 @@ def prepare_venv(session): venv_dir = session.virtualenv.location_name if not venv_populated(session): - # environment has been created but pacakages not yet installed + # environment has been created but packages not yet installed # populate the environment from the lockfile logger.debug(f"Populating conda env at {venv_dir}") session.conda_install("--file", str(lockfile)) From 90a05991bbf3897409352f362d09df32fccb6125 Mon Sep 17 00:00:00 2001 From: James Penn Date: Thu, 29 Apr 2021 10:33:02 +0100 Subject: [PATCH 22/28] Type annotations in the noxfile completed --- noxfile.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/noxfile.py b/noxfile.py index f6c540d9b2..a29b74899a 100755 --- a/noxfile.py +++ b/noxfile.py @@ -62,7 +62,7 @@ def venv_changed(session: nox.sessions.Session) -> bool: return False -def cache_venv(session: nox.sessions.Session): +def cache_venv(session: nox.sessions.Session) -> None: """ Cache the nox session environment. @@ -83,7 +83,7 @@ def cache_venv(session: nox.sessions.Session): fo.write(hexdigest) -def cache_cartopy(session: nox.sessions.Session): +def cache_cartopy(session: nox.sessions.Session) -> None: """ Determine whether to cache the cartopy natural earth shapefiles. @@ -101,7 +101,7 @@ def cache_cartopy(session: nox.sessions.Session): ) -def prepare_venv(session): +def prepare_venv(session: nox.sessions.Session) -> None: """ Create and cache the nox session conda environment, and additionally provide conda environment package details and info. @@ -221,7 +221,7 @@ def tests(session: nox.sessions.Session): @nox.session(python=PY_VER, venv_backend="conda") -def gallery(session): +def gallery(session: nox.sessions.Session): """ Perform iris gallery doc-tests. @@ -242,7 +242,7 @@ def gallery(session): @nox.session(python=PY_VER, venv_backend="conda") -def doctest(session): +def doctest(session: nox.sessions.Session): """ Perform iris doc-tests. @@ -269,7 +269,7 @@ def doctest(session): @nox.session(python=PY_VER, venv_backend="conda") -def linkcheck(session): +def linkcheck(session: nox.sessions.Session): """ Perform iris doc link check. From 8480c215bfeb8de7145cd9a349c4cdc18d898a65 Mon Sep 17 00:00:00 2001 From: James Penn Date: Thu, 29 Apr 2021 10:44:09 +0100 Subject: [PATCH 23/28] switched os.path -> pathlib in tools/update_lockfiles.py --- tools/update_lockfiles.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/update_lockfiles.py b/tools/update_lockfiles.py index f40bc2e13c..9d5705c7a7 100755 --- a/tools/update_lockfiles.py +++ b/tools/update_lockfiles.py @@ -14,7 +14,7 @@ """ import argparse -import os +from pathlib import Path import subprocess import sys @@ -38,12 +38,16 @@ for infile in args.files: print(f"generating lockfile for {infile}", file=sys.stderr) - fname = os.path.basename(infile) + + fname = Path(infile).name ftype = fname.split('.')[-1] if ftype.lower() in ('yaml', 'yml'): fname = '.'.join(fname.split('.')[:-1]) - ofile_template = os.path.join(args.output_dir, fname+'-{platform}.lock') + # conda-lock --filename-template expects a string with a "...{platform}..." + # placeholder in it, so we have to build the .lock filname without + # using .format + ofile_template = Path(args.output_dir) / (fname+'-{platform}.lock') subprocess.call([ 'conda-lock', 'lock', From 48e39b575b1e85be8dd4c061c581afc9adf36d0a Mon Sep 17 00:00:00 2001 From: James Penn Date: Thu, 29 Apr 2021 12:02:14 +0100 Subject: [PATCH 24/28] Apply suggestions from @trexfeathers code review Co-authored-by: Martin Yeo <40734014+trexfeathers@users.noreply.github.com> --- docs/src/developers_guide/contributing_ci_tests.rst | 9 ++++----- .../contributing_pull_request_checklist.rst | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/src/developers_guide/contributing_ci_tests.rst b/docs/src/developers_guide/contributing_ci_tests.rst index 337af8df0b..b059bf88e6 100644 --- a/docs/src/developers_guide/contributing_ci_tests.rst +++ b/docs/src/developers_guide/contributing_ci_tests.rst @@ -45,11 +45,11 @@ Cirrus CI Test environment -------------------------- The test environment on the Cirrus-CI service is determined from the requirement files -in `requirements/ci/py**.yml`. These are conda environment files that list the entire -set of build, test and run requirements for iris. +in ``requirements/ci/py**.yml``. These are conda environment files that list the entire +set of build, test and run requirements for Iris. For reproducible test results, these environments are resolved for all their dependencies -and stored as lock files in `requirements/ci/nox.lock`. The test environments will not +and stored as lock files in ``requirements/ci/nox.lock``. The test environments will not resolve the dependencies each time, instead they will use the lock file to reproduce the same exact environment each time. @@ -64,7 +64,7 @@ or simply:: and add the changed lockfiles to your pull request. -New lockfiles are generated automatically each week to ensure that iris continues to be +New lockfiles are generated automatically each week to ensure that Iris continues to be tested against the latest available version of its dependencies. @@ -137,4 +137,3 @@ See the `pre-commit.ci dashboard`_ for details of recent past and active Iris jo .. _Cirrus-CI Documentation: https://cirrus-ci.org/guide/writing-tasks/ .. _.pre-commit-config.yaml: https://github.com/SciTools/iris/blob/master/.pre-commit-config.yaml .. _pre-commit.ci dashboard: https://results.pre-commit.ci/repo/github/5312648 - diff --git a/docs/src/developers_guide/contributing_pull_request_checklist.rst b/docs/src/developers_guide/contributing_pull_request_checklist.rst index 8a06a17124..e4fe3c725c 100644 --- a/docs/src/developers_guide/contributing_pull_request_checklist.rst +++ b/docs/src/developers_guide/contributing_pull_request_checklist.rst @@ -29,7 +29,7 @@ is merged. Before submitting a pull request please consider this list. #. **Check all modified and new source files conform to the required** :ref:`code_formatting`. -#. **Check all new dependencies added to the requirements/ci/*.yml files.** If +#. **Check all new dependencies added to the ``requirements/ci/*.yml`` files.** If dependencies have been added then new nox testing lockfiles should be generated too, see :ref:`cirrus_test_env`. From a539b25dda82f909c4779da627f49b667924853d Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 4 May 2021 10:33:49 +0100 Subject: [PATCH 25/28] Updated imagehashes Picked from https://github.com/SciTools/iris/commit/566f187fcfd40495f200020b3c7d8f1905fce67f --- lib/iris/tests/results/imagerepo.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/iris/tests/results/imagerepo.json b/lib/iris/tests/results/imagerepo.json index d73c8492e5..8458acf23e 100644 --- a/lib/iris/tests/results/imagerepo.json +++ b/lib/iris/tests/results/imagerepo.json @@ -146,11 +146,11 @@ ], "gallery_tests.test_plot_wind_speed.TestWindSpeed.test_plot_wind_speed.0": [ "https://scitools.github.io/test-iris-imagehash/images/v4/bcf924fb9306930ce12ccf97c73236b28ecec4cd3e29847b18e639e6c14f1a09.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1ee9e96c29e36739e13c07d3d61c07f39a139a1c07f3f01.png" + "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1fe9e96c29e36739e13c06c3d61c07f39a139e1c07f3f01.png" ], "gallery_tests.test_plot_wind_speed.TestWindSpeed.test_plot_wind_speed.1": [ "https://scitools.github.io/test-iris-imagehash/images/v4/bcf924fb9306930ce12ccf97c73236b28ecec4cc3e29847b38e639e6c14f1a09.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1ee9e86c29e36739e13c07d3d61c07f39a139a1c17f3f01.png" + "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1ee9e96c29e36739653c06c3d61c07f3da139e1c07f3f01.png" ], "iris.tests.experimental.test_animate.IntegrationTest.test_cube_animation.0": [ "https://scitools.github.io/test-iris-imagehash/images/v4/fe81957ac17e6a85817e6a85857e942a3e81957a7e81917a7a81d95ec17e2ca1.png", From 5b3e87665dc8532ff58eba765713094ebed4614f Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 4 May 2021 10:40:03 +0100 Subject: [PATCH 26/28] Updated documentation of the github workflow --- .github/workflows/refresh-lockfiles.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/refresh-lockfiles.yml b/.github/workflows/refresh-lockfiles.yml index 900f9e183d..c740ad97e7 100755 --- a/.github/workflows/refresh-lockfiles.yml +++ b/.github/workflows/refresh-lockfiles.yml @@ -1,5 +1,10 @@ # This workflow periodically creates new environment lock files based on the newest -# available dependency packages on conda-forge. +# available packages and dependencies. +# +# Environment specifications are given as conda environment.yml files found in +# `requirements/ci/py**.yml`. These state the pacakges required, the conda channels +# that the packages will be pulled from, and any versions of packages that need to be +# pinned at specific versions. # # For environments that have changed, a pull request will be made and submitted # to the master branch From 3301584d979868cf3e6298f17f7fc3c1e8dc5122 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 4 May 2021 12:25:36 +0100 Subject: [PATCH 27/28] Updated image hash for anomaly log plot --- lib/iris/tests/results/imagerepo.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/iris/tests/results/imagerepo.json b/lib/iris/tests/results/imagerepo.json index 8458acf23e..ea29d5735c 100644 --- a/lib/iris/tests/results/imagerepo.json +++ b/lib/iris/tests/results/imagerepo.json @@ -24,7 +24,8 @@ "https://scitools.github.io/test-iris-imagehash/images/v4/ec4464e185a39f93931e9b1e91696d2949dde6e63e26a47a5ad391938d9a5a0c.png", "https://scitools.github.io/test-iris-imagehash/images/v4/ecc164e78e979b19b3789b0885a564a56cc2c65e3ec69469db1bdb9a853c1e24.png", "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e68e979b19b3781b0885a564a56ccac65e3ec69469db1bdb9a853c1e24.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e796979a1b39781b2881a564a56ccac6da3e87947bcb1bdb9a843c1e24.png" + "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e796979a1b39781b2881a564a56ccac6da3e87947bcb1bdb9a843c1e24.png", + "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e796979e1a39781b6881a564a56cdac6da3e83847bcb1bdb9a843c1e24.png" ], "gallery_tests.test_plot_atlantic_profiles.TestAtlanticProfiles.test_plot_atlantic_profiles.0": [ "https://scitools.github.io/test-iris-imagehash/images/v4/9f8260536bd28e1320739437b5f437b0a51d66f4cc5d08fcd00fdb1c93fcb21c.png", From 52416379cead0dc014aacdc52a8f9e2d9fa2d0c0 Mon Sep 17 00:00:00 2001 From: James Penn Date: Tue, 4 May 2021 14:54:17 +0100 Subject: [PATCH 28/28] Reverting imagerepo.json to state at 48e39b57 --- lib/iris/tests/results/imagerepo.json | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/iris/tests/results/imagerepo.json b/lib/iris/tests/results/imagerepo.json index ea29d5735c..d73c8492e5 100644 --- a/lib/iris/tests/results/imagerepo.json +++ b/lib/iris/tests/results/imagerepo.json @@ -24,8 +24,7 @@ "https://scitools.github.io/test-iris-imagehash/images/v4/ec4464e185a39f93931e9b1e91696d2949dde6e63e26a47a5ad391938d9a5a0c.png", "https://scitools.github.io/test-iris-imagehash/images/v4/ecc164e78e979b19b3789b0885a564a56cc2c65e3ec69469db1bdb9a853c1e24.png", "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e68e979b19b3781b0885a564a56ccac65e3ec69469db1bdb9a853c1e24.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e796979a1b39781b2881a564a56ccac6da3e87947bcb1bdb9a843c1e24.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e796979e1a39781b6881a564a56cdac6da3e83847bcb1bdb9a843c1e24.png" + "https://scitools.github.io/test-iris-imagehash/images/v4/ece164e796979a1b39781b2881a564a56ccac6da3e87947bcb1bdb9a843c1e24.png" ], "gallery_tests.test_plot_atlantic_profiles.TestAtlanticProfiles.test_plot_atlantic_profiles.0": [ "https://scitools.github.io/test-iris-imagehash/images/v4/9f8260536bd28e1320739437b5f437b0a51d66f4cc5d08fcd00fdb1c93fcb21c.png", @@ -147,11 +146,11 @@ ], "gallery_tests.test_plot_wind_speed.TestWindSpeed.test_plot_wind_speed.0": [ "https://scitools.github.io/test-iris-imagehash/images/v4/bcf924fb9306930ce12ccf97c73236b28ecec4cd3e29847b18e639e6c14f1a09.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1fe9e96c29e36739e13c06c3d61c07f39a139e1c07f3f01.png" + "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1ee9e96c29e36739e13c07d3d61c07f39a139a1c07f3f01.png" ], "gallery_tests.test_plot_wind_speed.TestWindSpeed.test_plot_wind_speed.1": [ "https://scitools.github.io/test-iris-imagehash/images/v4/bcf924fb9306930ce12ccf97c73236b28ecec4cc3e29847b38e639e6c14f1a09.png", - "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1ee9e96c29e36739653c06c3d61c07f3da139e1c07f3f01.png" + "https://scitools.github.io/test-iris-imagehash/images/v4/e9e960e996169306c1ee9e86c29e36739e13c07d3d61c07f39a139a1c17f3f01.png" ], "iris.tests.experimental.test_animate.IntegrationTest.test_cube_animation.0": [ "https://scitools.github.io/test-iris-imagehash/images/v4/fe81957ac17e6a85817e6a85857e942a3e81957a7e81917a7a81d95ec17e2ca1.png",