diff --git a/.cirrus.yml b/.cirrus.yml index 0e64f2ae..2da107f4 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -24,7 +24,7 @@ env: NOX_CACHE_BUILD: "98" # Increment the build number to force new pip cache upload. PIP_CACHE_BUILD: "98" - # Pip package to be upgraded/installed. + # Pip packages to be upgraded/installed. PIP_CACHE_PACKAGES: "pip setuptools wheel nox pyyaml" # Base directory for the iris-test-data. IRIS_TEST_DATA_DIR: ${HOME}/iris-test-data @@ -80,10 +80,10 @@ linux_task_template: &LINUX_TASK_TEMPLATE - conda install --quiet --name base nox pip coverage pyyaml nox_cache: folder: ${CIRRUS_WORKING_DIR}/.nox + reupload_on_changes: true 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}" - echo "IRIS ${IRIS_SOURCE}" data_cache: folder: ${IRIS_TEST_DATA_DIR} @@ -96,14 +96,23 @@ linux_task_template: &LINUX_TASK_TEMPLATE tests_task: matrix: - env: - PY_VER: 3.6 env: PY_VER: 3.7 - # env: - # PY_VER: 3.8 + env: + PY_VER: 3.8 name: "${CIRRUS_OS}: py${PY_VER} tests" << : *LINUX_TASK_TEMPLATE tests_script: - export CONDA_OVERRIDE_LINUX="$(uname -r | cut -d'+' -f1)" - nox --session tests -- --test-data-dir ${IRIS_TEST_DATA_DIR}/test_data + +# [2021-06-07] lbdreyer: Doctests are failing, see Github Issue #274 +#doctest_task: +# matrix: +# env: +# PY_VER: 3.7 +# name: "${CIRRUS_OS}: py${PY_VER} tests" +# << : *LINUX_TASK_TEMPLATE +# tests_script: +# - export CONDA_OVERRIDE_LINUX="$(uname -r | cut -d'+' -f1)" +# - nox --session doctest -- --test-data-dir ${IRIS_TEST_DATA_DIR}/test_data \ No newline at end of file diff --git a/docs/ref/release_notes.rst b/docs/ref/release_notes.rst index a031c0ca..bad618ac 100644 --- a/docs/ref/release_notes.rst +++ b/docs/ref/release_notes.rst @@ -2,6 +2,31 @@ Release Notes ============= +What's new in iris-grib v0.17.1 +------------------------------- + +:Release: 0.17.1 +:Date: 3 June 2021 + +Bugs Fixed +^^^^^^^^^^ + +* `@TomDufall `_ removed the empty slice + handling (originally added in v0.15.1) as this used + iris.util._array_slice_ifempty which was removed in Iris v3.0.2 and is no + longer necessary. + `(PR#270) `_ + + +Dependencies +^^^^^^^^^^^^ + +* now requires Iris version >= 3.0.2. + +* now requires Python version >= 3.7. + + + What's new in iris-grib v0.17 ----------------------------- diff --git a/iris_grib/__init__.py b/iris_grib/__init__.py index 91fd0378..3f8e9a55 100644 --- a/iris_grib/__init__.py +++ b/iris_grib/__init__.py @@ -32,7 +32,7 @@ from .message import GribMessage -__version__ = '0.17.0' +__version__ = '0.17.1' __all__ = ['load_cubes', 'save_grib2', 'load_pairs_from_fields', 'save_pairs_from_cube', 'save_messages'] diff --git a/noxfile.py b/noxfile.py index e9a029fe..fb0181a7 100644 --- a/noxfile.py +++ b/noxfile.py @@ -16,6 +16,7 @@ from pathlib import Path import nox +from nox.logger import logger import yaml #: Default to reusing any pre-existing nox environments. @@ -25,99 +26,14 @@ PACKAGE = str("iris_grib") #: Cirrus-CI environment variable hook. -PY_VER = os.environ.get("PY_VER", ["3.6", "3.7"]) +PY_VER = os.environ.get("PY_VER", ["3.7", "3.8"]) IRIS_SOURCE = os.environ.get("IRIS_SOURCE", ['source', 'conda-forge']) #: Default cartopy cache directory. CARTOPY_CACHE_DIR = os.environ.get("HOME") / Path(".local/share/cartopy") -def venv_cached(session, requirements_file=None): - """ - Determine whether the nox session environment has been cached. - - Parameters - ---------- - session: object - A `nox.sessions.Session` object. - - Returns - ------- - bool - Whether the session has been cached. - - """ - result = False - if not requirements_file is None: - yml = Path(requirements_file) - else: - yml = Path(f"requirements/ci/py{session.python.replace('.', '')}.yml") - tmp_dir = Path(session.create_tmp()) - cache = tmp_dir / yml.name - if cache.is_file(): - with open(yml, "rb") as fi: - expected = hashlib.sha256(fi.read()).hexdigest() - with open(cache, "r") as fi: - actual = fi.read() - result = actual == expected - return result - - -def concat_requirements(primary, *others): - """Join together the dependencies of one or more requirements.yaml. - - Parameters - ---------- - primary: str - filename of the primary requirements.yaml - - others: list[str] - list of additional requirements.yamls - - Returns - ------- - yaml - Dictionary of yaml data: primary with the addition - of others[]['dependencies'] - - """ - with open(primary, 'r') as f: - requirements = yaml.load(f, yaml.FullLoader) - - for o in others: - with open(o, 'r') as f: - oreq = yaml.load(f, yaml.FullLoader) - requirements['dependencies'].extend(oreq['dependencies']) - - return requirements - - -def cache_venv(session, requirements_file=None): - """ - Cache the nox session environment. - - This consists of saving a hexdigest (sha256) of the associated - conda requirements YAML file. - - Parameters - ---------- - session: object - A `nox.sessions.Session` object. - - """ - if requirements_file is None: - yml = Path(f"requirements/ci/py{session.python.replace('.', '')}.yml") - else: - yml = Path(requirements_file) - with open(yml, "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) -> None: """ Determine whether to cache the cartopy natural earth shapefiles. @@ -134,8 +50,10 @@ def cache_cartopy(session): "import cartopy; cartopy.io.shapereader.natural_earth()", ) -def write_iris_config(session): - """Add test data dir and libudunits2.so to iris config. + +def _write_iris_config(session: nox.sessions.Session) -> None: + """ + Add test data dir and libudunits2.so to iris config. test data dir is set from session pos args. i.e. can be configured by passing in on the command line: @@ -166,8 +84,75 @@ def write_iris_config(session): with open(iris_config_file, 'w') as f: f.write(iris_config) + +def _session_lockfile(session: nox.sessions.Session) -> Path: + """ + Return the path of the session lockfile for the relevant python string + e.g ``py38``. + + """ + lockfile_name = f"py{session.python.replace('.', '')}-linux-64.lock" + return Path("requirements/nox.lock") / lockfile_name + + +def _file_content(file_path: Path) -> str: + with file_path.open("r") as file: + return file.read() + + +def _session_cachefile(session: nox.sessions.Session) -> Path: + """Return the path of the session lockfile cache.""" + tmp_dir = Path(session.create_tmp()) + cache = tmp_dir / _session_lockfile(session).name + return cache + + +def _venv_populated(session: nox.sessions.Session) -> bool: + """ + Return 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: + """ + Return True if the installed session is different to that specified in the + lockfile. + + """ + result = False + if _venv_populated(session): + expected = _file_content(_session_lockfile(session)) + actual = _file_content(_session_cachefile(session)) + result = actual != expected + return result + + +def _install_and_cache_venv(session: nox.sessions.Session) -> None: + """ + Install and cache the nox session environment. + This consists of saving a hexdigest (sha256) of the associated + Conda lock file. + + Parameters + ---------- + session: object + A `nox.sessions.Session` object. + + """ + lockfile = _session_lockfile(session) + session.conda_install(f"--file={lockfile}") + + with open(lockfile, "rb") as fi: + hexdigest = hashlib.sha256(fi.read()).hexdigest() + with _session_cachefile(session).open("w") as cachefile: + cachefile.write(hexdigest) + + @contextmanager -def prepare_venv(session, requirements_file=None): +def prepare_venv(session: nox.sessions.Session, iris_source: str ='conda_forge') -> None: """ Create and cache the nox session conda environment, and additionally provide conda environment package details and info. @@ -178,10 +163,10 @@ def prepare_venv(session, requirements_file=None): ---------- session: object A `nox.sessions.Session` object. - - requirements_file: str - Path to the environment requirements file. - Default: requirements/ci/py{PY_VER}.yml + + iris_source: str + Determines where Iris was sourced from. Either 'conda_forge' (the + default), or 'master' which refers to the Iris master branch. Notes ----- @@ -190,46 +175,73 @@ def prepare_venv(session, requirements_file=None): - https://github.com/theacodes/nox/issues/260 """ - if requirements_file is None: - # Determine the conda requirements yaml file. - requirements_file = f"requirements/ci/py{session.python.replace('.', '')}.yml" + venv_dir = session.virtualenv.location_name + + if not _venv_populated(session): + # Environment has been created but packages not yet installed. + # Populate the environment from the lockfile. + logger.debug(f"Populating conda env: {venv_dir}") + _install_and_cache_venv(session) + + elif _venv_changed(session): + # Destroy the environment and rebuild it. + logger.debug(f"Lockfile changed. Recreating conda env: {venv_dir}") + _reuse_original = session.virtualenv.reuse_existing + session.virtualenv.reuse_existing = False + session.virtualenv.create() + _install_and_cache_venv(session) + session.virtualenv.reuse_existing = _reuse_original + + logger.debug(f"Environment up to date: {venv_dir}") + + if iris_source == 'master': + # get latest iris + iris_dir = f"{session.create_tmp()}/iris" - if not venv_cached(session, requirements_file): - # Back-door approach to force nox to use "conda env update". - command = ( - "conda", - "env", - "update", - f"--prefix={session.virtualenv.location}", - f"--file={requirements_file}", - "--prune", - ) - session._run(*command, silent=True, external="error") - cache_venv(session) + if os.path.exists(iris_dir): + # cached. update by pulling from origin/master + session.run( + "git", + "-C", + iris_dir, + "pull", + "origin", + "master", + external=True # use git from host environment + ) + else: + session.run( + "git", + "clone", + "https://github.com/scitools/iris.git", + iris_dir, + external=True + ) + session.install(iris_dir, '--no-deps') - cache_cartopy(session) + _cache_cartopy(session) + _write_iris_config(session) + + # Install the iris-grib source in develop mode. + session.install("--no-deps", "--editable", ".") - # Allow the user to do setup things - # like installing iris-grib in development mode - yield session - # Determine whether verbose diagnostics have been requested # from the command line. verbose = "-v" in session.posargs or "--verbose" in session.posargs 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-grib. @@ -248,7 +260,7 @@ def flake8(session): @nox.session -def black(session): +def black(session: nox.sessions.Session): """ Perform black format checking of iris-grib. @@ -267,8 +279,8 @@ def black(session): @nox.session(python=PY_VER, venv_backend="conda") -@nox.parametrize('iris', IRIS_SOURCE) -def tests(session, iris): +@nox.parametrize('iris_source', IRIS_SOURCE) +def tests(session: nox.sessions.Session, iris_source: str): """ Perform iris-grib tests against release and development versions of iris. @@ -277,51 +289,12 @@ def tests(session, iris): session: object A `nox.sessions.Session` object. - """ - - if iris == 'source': - # get latest iris - iris_dir = f"{session.create_tmp()}/iris" + iris_source: str + Either 'conda_forge' if using Iris from conda-forge, or 'master' if + installing Iris from the Iris' master branch. - if os.path.exists(iris_dir): - # cached. update by pulling from origin/master - session.run( - "git", - "-C", - iris_dir, - "pull", - "origin", - "master", - external=True # use git from host environment - ) - else: - session.run( - "git", - "clone", - "https://github.com/scitools/iris.git", - iris_dir, - external=True - ) - - # combine iris and iris-grib requirements into one requirement list - requirements = concat_requirements( - f"requirements/ci/py{session.python.replace('.', '')}.yml", - f"{iris_dir}/requirements/ci/py{session.python.replace('.', '')}.yml" - ) - # remove iris dependencies, we'll install these from source - requirements['dependencies'] = [x for x in requirements['dependencies'] - if not x.startswith('iris')] - req_file = f"{session.create_tmp()}/requirements.yaml" - with open(req_file, 'w') as f: - yaml.dump(requirements, f) - else: - req_file = f"requirements/ci/py{session.python.replace('.', '')}.yml" - - with prepare_venv(session, req_file): - if iris == 'source': - session.install(iris_dir, '--no-deps') - session.install("--no-deps", "--editable", ".") - write_iris_config(session) + """ + prepare_venv(session, iris_source) session.run("python", "-m", "eccodes", "selfcheck") @@ -335,9 +308,8 @@ def tests(session, iris): ) - @nox.session(python=PY_VER, venv_backend="conda") -def doctest(session): +def doctest(session: nox.sessions.Session): """ Perform iris-grib doc-tests. @@ -363,7 +335,7 @@ def doctest(session): @nox.session(python=PY_VER, venv_backend="conda") -def linkcheck(session): +def linkcheck(session: nox.sessions.Session): """ Perform iris-grib doc link check. @@ -385,4 +357,4 @@ def linkcheck(session): "make", "linkcheck", external=True, - ) \ No newline at end of file + ) diff --git a/requirements/ci/py36.yml b/requirements/ci/py36.yml deleted file mode 100644 index e51e7c59..00000000 --- a/requirements/ci/py36.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: iris-grib-dev - -channels: - - conda-forge - -dependencies: - - python=3.6 - -# Setup dependencies. - - setuptools - -# Core dependencies. - - iris>=3 - - python-eccodes - -# Optional dependencies. - - mo_pack - -# Test dependencies. - - mock - - filelock - - pep8 - - requests - - nose diff --git a/requirements/ci/py37.yml b/requirements/ci/py37.yml index fbcc8433..68e0f80e 100644 --- a/requirements/ci/py37.yml +++ b/requirements/ci/py37.yml @@ -10,7 +10,7 @@ dependencies: - setuptools # Core dependencies. - - iris>=3 + - iris>=3.0.2 - python-eccodes # Optional dependencies. diff --git a/requirements/ci/py38.yml b/requirements/ci/py38.yml index cc84dcd9..3836de41 100644 --- a/requirements/ci/py38.yml +++ b/requirements/ci/py38.yml @@ -10,7 +10,7 @@ dependencies: - setuptools # Core dependencies. - - iris>=3 + - iris>=3.0.2 - python-eccodes # Optional dependencies. @@ -21,4 +21,4 @@ dependencies: - filelock - pep8 - requests - - nose \ No newline at end of file + - nose diff --git a/requirements/core.txt b/requirements/core.txt index 21263d7a..f96770b2 100644 --- a/requirements/core.txt +++ b/requirements/core.txt @@ -1,4 +1,4 @@ # Core dependencies. -scitools-iris>=3 +scitools-iris>=3.0.2 eccodes-python diff --git a/requirements/nox.lock/py37-linux-64.lock b/requirements/nox.lock/py37-linux-64.lock new file mode 100644 index 00000000..21a9029d --- /dev/null +++ b/requirements/nox.lock/py37-linux-64.lock @@ -0,0 +1,127 @@ +# platform: linux-64 +# env_hash: 79ed224559178fc9f6977fee4e2d80112f2bb8577c135e85152ef0a1f13ef003 +@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-2021.5.30-ha878542_0.tar.bz2#6a777890e94194dc94a29a76d2a7e721 +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/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/linux-64/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2#9d5cdfc51476ee4dcdd96ed2dca3f943 +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.4.1-h9c3ff4c_0.tar.bz2#16054ef3cb3ec5d8d29d08772662f65d +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/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2#ea02ce6037dbe81803ae6123e5ba1568 +https://conda.anaconda.org/conda-forge/linux-64/lerc-2.2.1-h9c3ff4c_0.tar.bz2#ea833dcaeb9e7ac4fac521f1a7abec82 +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.0.4-h9c3ff4c_1.tar.bz2#90dbd3066828b76fa810578e49cef920 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.7-h7f98852_5.tar.bz2#10e242842cd30c59c12d79371dc0f583 +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/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2#95f32a6a5a666d33886ca5627239f03d +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.15-pthreads_h8fe5266_1.tar.bz2#bb5527a16584426a897f22643d9a36a6 +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/ncurses-6.2-h58526e2_4.tar.bz2#509f2a21c4a09214cd737a480dfd80c9 +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/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/hdf4-4.2.15-h10796ff_3.tar.bz2#21a8d66dc17f065023b33145c42652fe +https://conda.anaconda.org/conda-forge/linux-64/jasper-1.900.1-h07fcdf6_1006.tar.bz2#babe76b3c95cc3e9005a66855ffe4e21 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-9_openblas.tar.bz2#5f08755e98b2a43ca68124e629a5a0cb +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/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/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/zstd-1.5.0-ha95c52a_0.tar.bz2#b56f94865e2de36abf054e7bfa499034 +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.19.1-hcc1bbae_0.tar.bz2#59b0695a515a6c54d45463dbf208ae38 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-9_openblas.tar.bz2#edee85b4f83376ceae81e0975b8bffa2 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-9_openblas.tar.bz2#572d84ab07962986f6dd8e4637a475ca +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-hf544144_1.tar.bz2#a65a4158716bd7d95bfa69bcfd83081c +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/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.77.0-h2574ce0_0.tar.bz2#05cf8dca8408b5f1ffcc5e2d5a7c5da2 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.7.10-hffdb5ce_100_cpython.tar.bz2#7425fffa658971915f595e9110163c3c +https://conda.anaconda.org/conda-forge/noarch/attrs-21.2.0-pyhd8ed1ab_0.tar.bz2#d2e1c7f388ac403df7079b411c37cc50 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e +https://conda.anaconda.org/conda-forge/linux-64/curl-7.77.0-hea6ffbf_0.tar.bz2#7d1168349d6fba67ae1fdf61970b83e1 +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.5.0-pyhd8ed1ab_0.tar.bz2#da823f51ebb876dafbed1c892fd80956 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h6a2412b_1114.tar.bz2#0a2984b78f51148d7ff6219abe73509e +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/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d +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/pep8-1.7.1-py_0.tar.bz2#d0b5bc3aebbffcb175bf8a1d419acb79 +https://conda.anaconda.org/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2#db654ee11298d3463bad67445707654c +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 +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.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 +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.10.0.0-pyha770c72_0.tar.bz2#67c0cba6533b641f28946d7c16f361c8 +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/linux-64/certifi-2021.5.30-py37h89c1867_0.tar.bz2#105f18ae8597a5f4d4e3188bcb06c796 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.5-py37hc58025e_0.tar.bz2#e05f1fad0c52c21b6b92778d31f89cd0 +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/importlib-metadata-4.5.0-py37h89c1867_0.tar.bz2#71a9d20403f28d15f7a94d0817584efa +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-nompi_hcd642e3_103.tar.bz2#a4c691f7630ad2cbcc1f1298b4b15ded +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py37h5e8e339_0.tar.bz2#90ad307f6997784664de956e09ec689e +https://conda.anaconda.org/conda-forge/linux-64/mock-4.0.3-py37h89c1867_1.tar.bz2#b45c06a416e3f3f74fab9b7b5964c17a +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/numpy-1.20.3-py37h038b26d_1.tar.bz2#4644df846d272b6316503418db23b5dd +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-8.2.0-py37h4600e1f_1.tar.bz2#8998270d7ebbb22261ab440176d3a5cf +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/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/tornado-6.1-py37h5e8e339_1.tar.bz2#92449128c4639feae48d731ef2186099 +https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 +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/click-8.0.1-py37h89c1867_0.tar.bz2#bb1ad97b5d8626f662b753f620c3c913 +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.6.0-pyhd8ed1ab_0.tar.bz2#cea7be7ed76c4664498447ef35d2268c +https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.22.0-he2bb022_0.tar.bz2#98a82d5f89708b080c39c4e73558b58e +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.1-pyhd8ed1ab_0.tar.bz2#c647e77921fd3e245cdcc5b2d451a0f8 +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/pandas-1.2.4-py37h219a48f_0.tar.bz2#fb33763b90acf1a4a7cffb7ab994a3cd +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-py37h2d1e849_5.tar.bz2#451beb59aca4c165e68fbe8be3a37149 +https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.3.2-py37h89c1867_0.tar.bz2#2c0224d9598b7c4fef87536ecbfc87af +https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.5-py37h6f94858_0.tar.bz2#5ad0ed053fc1c3bf156cf181cdded003 +https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.6.0-py37h89c1867_0.tar.bz2#c8228e953e50cc4a62087c477f8efb02 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.2-py37hdd32ed1_0.tar.bz2#ee755b80aae171058a46c5d7badd08ff +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/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 +https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2021.03.0-py37h6f94858_1.tar.bz2#45cd92e3c2048aa78cf81f78756632fc +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py37h0c48da3_0.tar.bz2#44add1e9550c8caf69ce64561ce73035 +https://conda.anaconda.org/conda-forge/noarch/dask-2021.6.0-pyhd8ed1ab_0.tar.bz2#554ef426ff0ef06641338b7a514d6354 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.5-pyhd8ed1ab_0.tar.bz2#36f0ca66d6dd09423e5c2551148d45cd +https://conda.anaconda.org/conda-forge/linux-64/iris-3.0.2-py37h89c1867_1.tar.bz2#6f48b8b5c25ba3fde73b84de106d1052 +https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc diff --git a/requirements/nox.lock/py38-linux-64.lock b/requirements/nox.lock/py38-linux-64.lock new file mode 100644 index 00000000..ceebcf28 --- /dev/null +++ b/requirements/nox.lock/py38-linux-64.lock @@ -0,0 +1,125 @@ +# platform: linux-64 +# env_hash: 5b63d4ac76488b1798081b1ae9ca6cae022cc090016e4838a6e53c3ca1bb6e53 +@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-2021.5.30-ha878542_0.tar.bz2#6a777890e94194dc94a29a76d2a7e721 +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/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/linux-64/libgcc-ng-9.3.0-h2828fa1_19.tar.bz2#9d5cdfc51476ee4dcdd96ed2dca3f943 +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.4.1-h9c3ff4c_0.tar.bz2#16054ef3cb3ec5d8d29d08772662f65d +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/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9d-h36c2ea0_0.tar.bz2#ea02ce6037dbe81803ae6123e5ba1568 +https://conda.anaconda.org/conda-forge/linux-64/lerc-2.2.1-h9c3ff4c_0.tar.bz2#ea833dcaeb9e7ac4fac521f1a7abec82 +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.0.4-h9c3ff4c_1.tar.bz2#90dbd3066828b76fa810578e49cef920 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.7-h7f98852_5.tar.bz2#10e242842cd30c59c12d79371dc0f583 +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/libmo_unpack-3.1.2-hf484d3e_1001.tar.bz2#95f32a6a5a666d33886ca5627239f03d +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.15-pthreads_h8fe5266_1.tar.bz2#bb5527a16584426a897f22643d9a36a6 +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/ncurses-6.2-h58526e2_4.tar.bz2#509f2a21c4a09214cd737a480dfd80c9 +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/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/hdf4-4.2.15-h10796ff_3.tar.bz2#21a8d66dc17f065023b33145c42652fe +https://conda.anaconda.org/conda-forge/linux-64/jasper-1.900.1-h07fcdf6_1006.tar.bz2#babe76b3c95cc3e9005a66855ffe4e21 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-9_openblas.tar.bz2#5f08755e98b2a43ca68124e629a5a0cb +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/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/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/zstd-1.5.0-ha95c52a_0.tar.bz2#b56f94865e2de36abf054e7bfa499034 +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.19.1-hcc1bbae_0.tar.bz2#59b0695a515a6c54d45463dbf208ae38 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-9_openblas.tar.bz2#edee85b4f83376ceae81e0975b8bffa2 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-9_openblas.tar.bz2#572d84ab07962986f6dd8e4637a475ca +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-hf544144_1.tar.bz2#a65a4158716bd7d95bfa69bcfd83081c +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/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.77.0-h2574ce0_0.tar.bz2#05cf8dca8408b5f1ffcc5e2d5a7c5da2 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.8.10-h49503c6_1_cpython.tar.bz2#69f7d6ef1f00c3a109b1b06279e6d6a9 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.2.0-pyhd8ed1ab_0.tar.bz2#d2e1c7f388ac403df7079b411c37cc50 +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-1.6.0-py_0.tar.bz2#76d764d8881719e305f6fa368dc2b65e +https://conda.anaconda.org/conda-forge/linux-64/curl-7.77.0-hea6ffbf_0.tar.bz2#7d1168349d6fba67ae1fdf61970b83e1 +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.5.0-pyhd8ed1ab_0.tar.bz2#da823f51ebb876dafbed1c892fd80956 +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.10.6-nompi_h6a2412b_1114.tar.bz2#0a2984b78f51148d7ff6219abe73509e +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/locket-0.2.0-py_2.tar.bz2#709e8671651c7ec3d1ad07800339ff1d +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/pep8-1.7.1-py_0.tar.bz2#d0b5bc3aebbffcb175bf8a1d419acb79 +https://conda.anaconda.org/conda-forge/linux-64/proj-7.2.0-h277dcde_2.tar.bz2#db654ee11298d3463bad67445707654c +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.20-pyh9f0ad1d_2.tar.bz2#aa798d50ffd182a0f6f31478c7f434f6 +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.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d +https://conda.anaconda.org/conda-forge/noarch/tblib-1.7.0-pyhd8ed1ab_0.tar.bz2#3d4afc31302aa7be471feb6be048ed76 +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.10.0.0-pyha770c72_0.tar.bz2#67c0cba6533b641f28946d7c16f361c8 +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/linux-64/certifi-2021.5.30-py38h578d9bd_0.tar.bz2#a2e14464711f8e76010cd7e0c49bc4ae +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.5-py38ha65f79e_0.tar.bz2#386057f231a571b75bfa7307c9acd5f6 +https://conda.anaconda.org/conda-forge/linux-64/chardet-4.0.0-py38h578d9bd_1.tar.bz2#9294a5e2c7545a2f67ac348aadd53344 +https://conda.anaconda.org/conda-forge/linux-64/click-8.0.1-py38h578d9bd_0.tar.bz2#45426acde32f0ddd94dcee3478fd13e3 +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/kiwisolver-1.3.1-py38h1fd1430_1.tar.bz2#01488c80daae318ed5c17e7bb12af64e +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.8.0-nompi_hcd642e3_103.tar.bz2#a4c691f7630ad2cbcc1f1298b4b15ded +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.0.1-py38h497a2fe_0.tar.bz2#d075babffd68330d81b0488a45435698 +https://conda.anaconda.org/conda-forge/linux-64/mock-4.0.3-py38h578d9bd_1.tar.bz2#58f0b38b126cf7cda0a584ebb911d8ce +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/numpy-1.20.3-py38h9894fe3_1.tar.bz2#a65d77d36ddfd5c58cdda67ba2ca06c3 +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-8.2.0-py38ha0e1e83_1.tar.bz2#46a555b3ce021469f7f62d72fe6ebb4b +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/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/tornado-6.1-py38h497a2fe_1.tar.bz2#e772c8383768280af283e814e2126663 +https://conda.anaconda.org/conda-forge/noarch/zict-2.0.0-py_0.tar.bz2#4750152be22f24d695b3004c5e1712d3 +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.6.0-pyhd8ed1ab_0.tar.bz2#cea7be7ed76c4664498447ef35d2268c +https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.22.0-he2bb022_0.tar.bz2#98a82d5f89708b080c39c4e73558b58e +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.1-pyhd8ed1ab_0.tar.bz2#c647e77921fd3e245cdcc5b2d451a0f8 +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/pandas-1.2.4-py38h1abd341_0.tar.bz2#91150ede50b13d34a03e9ef51b7b379f +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-py38haeee4fe_5.tar.bz2#2e633d8e2257f3c0e465c858ce2ddbc6 +https://conda.anaconda.org/conda-forge/linux-64/bokeh-2.3.2-py38h578d9bd_0.tar.bz2#c417008fc6050795805a34dd0d84c190 +https://conda.anaconda.org/conda-forge/linux-64/cf-units-2.1.5-py38hb5d20a5_0.tar.bz2#b45764dbfe02c18f80458bb241e37955 +https://conda.anaconda.org/conda-forge/linux-64/distributed-2021.6.0-py38h578d9bd_0.tar.bz2#ddaa3cc0da3478d3ea96da2e04717813 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.4.2-py38hcc49a3a_0.tar.bz2#4bfb6818a1fce6d4129fdf121f788505 +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/pyopenssl-20.0.1-pyhd8ed1ab_0.tar.bz2#92371c25994d0f5d28a01c1fb75ebf86 +https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2021.03.0-py38hb5d20a5_1.tar.bz2#1586d8fb31f3aa7b2f9f206ed2b9ea7e +https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.19.0.post1-py38hc9c980b_0.tar.bz2#65e97172e139d3465895eb07a1fd52f2 +https://conda.anaconda.org/conda-forge/noarch/dask-2021.6.0-pyhd8ed1ab_0.tar.bz2#554ef426ff0ef06641338b7a514d6354 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.5-pyhd8ed1ab_0.tar.bz2#36f0ca66d6dd09423e5c2551148d45cd +https://conda.anaconda.org/conda-forge/linux-64/iris-3.0.2-py38h578d9bd_1.tar.bz2#be39010c3f01f3da2050b0a5890795f7 +https://conda.anaconda.org/conda-forge/noarch/requests-2.25.1-pyhd3deb0d_0.tar.bz2#ae687aba31a1c400192a86a2e993ffdc diff --git a/setup.py b/setup.py index 2a4afec4..492543e1 100644 --- a/setup.py +++ b/setup.py @@ -84,8 +84,8 @@ def file_walk_relative(top, remove=''): keywords = ['iris', 'GRIB'], classifiers=[ 'Programming Language :: Python', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3 :: Only', ], # NOTE: The Python 3 bindings to eccodes (eccodes-python) is available on