diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index 141133e2..7176ff48 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -8,20 +8,20 @@ jobs: vmImage: ubuntu-16.04 strategy: matrix: - linux_64_python3.6.____cpython: - CONFIG: linux_64_python3.6.____cpython + linux_64_numpy1.17python3.6.____cpython: + CONFIG: linux_64_numpy1.17python3.6.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_python3.7.____cpython: - CONFIG: linux_64_python3.7.____cpython + linux_64_numpy1.17python3.7.____cpython: + CONFIG: linux_64_numpy1.17python3.7.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_python3.8.____cpython: - CONFIG: linux_64_python3.8.____cpython + linux_64_numpy1.17python3.8.____cpython: + CONFIG: linux_64_numpy1.17python3.8.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 - linux_64_python3.9.____cpython: - CONFIG: linux_64_python3.9.____cpython + linux_64_numpy1.19python3.9.____cpython: + CONFIG: linux_64_numpy1.19python3.9.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-comp7 timeoutInMinutes: 360 diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 8aadc553..40951f4f 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -8,17 +8,23 @@ jobs: vmImage: macOS-10.15 strategy: matrix: - osx_64_python3.6.____cpython: - CONFIG: osx_64_python3.6.____cpython + osx_64_numpy1.17python3.6.____cpython: + CONFIG: osx_64_numpy1.17python3.6.____cpython UPLOAD_PACKAGES: 'True' - osx_64_python3.7.____cpython: - CONFIG: osx_64_python3.7.____cpython + osx_64_numpy1.17python3.7.____cpython: + CONFIG: osx_64_numpy1.17python3.7.____cpython UPLOAD_PACKAGES: 'True' - osx_64_python3.8.____cpython: - CONFIG: osx_64_python3.8.____cpython + osx_64_numpy1.17python3.8.____cpython: + CONFIG: osx_64_numpy1.17python3.8.____cpython UPLOAD_PACKAGES: 'True' - osx_64_python3.9.____cpython: - CONFIG: osx_64_python3.9.____cpython + osx_64_numpy1.19python3.9.____cpython: + CONFIG: osx_64_numpy1.19python3.9.____cpython + UPLOAD_PACKAGES: 'True' + osx_arm64_python3.8.____cpython: + CONFIG: osx_arm64_python3.8.____cpython + UPLOAD_PACKAGES: 'True' + osx_arm64_python3.9.____cpython: + CONFIG: osx_arm64_python3.9.____cpython UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 diff --git a/.ci_support/linux_64_python3.6.____cpython.yaml b/.ci_support/linux_64_numpy1.17python3.6.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_python3.6.____cpython.yaml rename to .ci_support/linux_64_numpy1.17python3.6.____cpython.yaml index 0057db54..66314f0d 100644 --- a/.ci_support/linux_64_python3.6.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.17python3.6.____cpython.yaml @@ -1,11 +1,21 @@ +c_compiler: +- gcc +c_compiler_version: +- '9' cdt_name: - cos6 channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '9' docker_image: - quay.io/condaforge/linux-anvil-comp7 +numpy: +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -15,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: +- - c_compiler_version + - cxx_compiler_version - - cdt_name - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_python3.7.____cpython.yaml b/.ci_support/linux_64_numpy1.17python3.7.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_python3.7.____cpython.yaml rename to .ci_support/linux_64_numpy1.17python3.7.____cpython.yaml index ae99d55b..c0263f77 100644 --- a/.ci_support/linux_64_python3.7.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.17python3.7.____cpython.yaml @@ -1,11 +1,21 @@ +c_compiler: +- gcc +c_compiler_version: +- '9' cdt_name: - cos6 channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '9' docker_image: - quay.io/condaforge/linux-anvil-comp7 +numpy: +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -15,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: +- - c_compiler_version + - cxx_compiler_version - - cdt_name - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_python3.8.____cpython.yaml b/.ci_support/linux_64_numpy1.17python3.8.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_python3.8.____cpython.yaml rename to .ci_support/linux_64_numpy1.17python3.8.____cpython.yaml index f0c7b1c5..798fb873 100644 --- a/.ci_support/linux_64_python3.8.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.17python3.8.____cpython.yaml @@ -1,11 +1,21 @@ +c_compiler: +- gcc +c_compiler_version: +- '9' cdt_name: - cos6 channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '9' docker_image: - quay.io/condaforge/linux-anvil-comp7 +numpy: +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -15,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: +- - c_compiler_version + - cxx_compiler_version - - cdt_name - docker_image +- - python + - numpy diff --git a/.ci_support/linux_64_python3.9.____cpython.yaml b/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml similarity index 63% rename from .ci_support/linux_64_python3.9.____cpython.yaml rename to .ci_support/linux_64_numpy1.19python3.9.____cpython.yaml index 53735358..0c640328 100644 --- a/.ci_support/linux_64_python3.9.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.19python3.9.____cpython.yaml @@ -1,11 +1,21 @@ +c_compiler: +- gcc +c_compiler_version: +- '9' cdt_name: - cos6 channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '9' docker_image: - quay.io/condaforge/linux-anvil-comp7 +numpy: +- '1.19' pin_run_as_build: python: min_pin: x.x @@ -15,5 +25,9 @@ python: target_platform: - linux-64 zip_keys: +- - c_compiler_version + - cxx_compiler_version - - cdt_name - docker_image +- - python + - numpy diff --git a/.ci_support/osx_64_python3.6.____cpython.yaml b/.ci_support/osx_64_numpy1.17python3.6.____cpython.yaml similarity index 57% rename from .ci_support/osx_64_python3.6.____cpython.yaml rename to .ci_support/osx_64_numpy1.17python3.6.____cpython.yaml index e5f17c2b..dd6aa454 100644 --- a/.ci_support/osx_64_python3.6.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.17python3.6.____cpython.yaml @@ -1,11 +1,21 @@ MACOSX_DEPLOYMENT_TARGET: - '10.9' +c_compiler: +- clang +c_compiler_version: +- '11' channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' macos_machine: - x86_64-apple-darwin13.4.0 +numpy: +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -14,3 +24,8 @@ python: - 3.6.* *_cpython target_platform: - osx-64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_python3.7.____cpython.yaml b/.ci_support/osx_64_numpy1.17python3.7.____cpython.yaml similarity index 57% rename from .ci_support/osx_64_python3.7.____cpython.yaml rename to .ci_support/osx_64_numpy1.17python3.7.____cpython.yaml index 163d3ce6..ec5c6071 100644 --- a/.ci_support/osx_64_python3.7.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.17python3.7.____cpython.yaml @@ -1,11 +1,21 @@ MACOSX_DEPLOYMENT_TARGET: - '10.9' +c_compiler: +- clang +c_compiler_version: +- '11' channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' macos_machine: - x86_64-apple-darwin13.4.0 +numpy: +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -14,3 +24,8 @@ python: - 3.7.* *_cpython target_platform: - osx-64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_python3.8.____cpython.yaml b/.ci_support/osx_64_numpy1.17python3.8.____cpython.yaml similarity index 57% rename from .ci_support/osx_64_python3.8.____cpython.yaml rename to .ci_support/osx_64_numpy1.17python3.8.____cpython.yaml index 63cee21d..610cb2e2 100644 --- a/.ci_support/osx_64_python3.8.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.17python3.8.____cpython.yaml @@ -1,11 +1,21 @@ MACOSX_DEPLOYMENT_TARGET: - '10.9' +c_compiler: +- clang +c_compiler_version: +- '11' channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' macos_machine: - x86_64-apple-darwin13.4.0 +numpy: +- '1.17' pin_run_as_build: python: min_pin: x.x @@ -14,3 +24,8 @@ python: - 3.8.* *_cpython target_platform: - osx-64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_64_python3.9.____cpython.yaml b/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml similarity index 57% rename from .ci_support/osx_64_python3.9.____cpython.yaml rename to .ci_support/osx_64_numpy1.19python3.9.____cpython.yaml index 51915a80..f6ba5598 100644 --- a/.ci_support/osx_64_python3.9.____cpython.yaml +++ b/.ci_support/osx_64_numpy1.19python3.9.____cpython.yaml @@ -1,11 +1,21 @@ MACOSX_DEPLOYMENT_TARGET: - '10.9' +c_compiler: +- clang +c_compiler_version: +- '11' channel_sources: - conda-forge,defaults channel_targets: - conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' macos_machine: - x86_64-apple-darwin13.4.0 +numpy: +- '1.19' pin_run_as_build: python: min_pin: x.x @@ -14,3 +24,8 @@ python: - 3.9.* *_cpython target_platform: - osx-64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_arm64_python3.8.____cpython.yaml b/.ci_support/osx_arm64_python3.8.____cpython.yaml new file mode 100644 index 00000000..1ad6e21e --- /dev/null +++ b/.ci_support/osx_arm64_python3.8.____cpython.yaml @@ -0,0 +1,31 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '11' +channel_sources: +- conda-forge/label/rust_dev,conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '1.19' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.8.* *_cpython +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.ci_support/osx_arm64_python3.9.____cpython.yaml b/.ci_support/osx_arm64_python3.9.____cpython.yaml new file mode 100644 index 00000000..0534e4af --- /dev/null +++ b/.ci_support/osx_arm64_python3.9.____cpython.yaml @@ -0,0 +1,31 @@ +MACOSX_DEPLOYMENT_TARGET: +- '11.0' +c_compiler: +- clang +c_compiler_version: +- '11' +channel_sources: +- conda-forge/label/rust_dev,conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- clangxx +cxx_compiler_version: +- '11' +macos_machine: +- arm64-apple-darwin20.0.0 +numpy: +- '1.19' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.9.* *_cpython +target_platform: +- osx-arm64 +zip_keys: +- - c_compiler_version + - cxx_compiler_version +- - python + - numpy diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3c5dcaee..4f033996 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @ericmjl \ No newline at end of file +* @ericmjl @xhochy \ No newline at end of file diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 522eabcf..7fbce051 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -36,6 +36,10 @@ source run_conda_forge_build_setup # make the build number clobber make_build_number "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" +if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]] && [[ "${BUILD_WITH_CONDA_DEBUG:-0}" != 1 ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" +fi + endgroup "Configuring conda" if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 614ca844..7688497f 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -42,6 +42,10 @@ startgroup "Running conda $BUILD_CMD" echo -e "\n\nMaking the build clobber file" make_build_number ./ ./recipe ./.ci_support/${CONFIG}.yaml +if [[ "${HOST_PLATFORM}" != "${BUILD_PLATFORM}" ]]; then + EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --no-test" +fi + conda $BUILD_CMD ./recipe -m ./.ci_support/${CONFIG}.yaml --suppress-variables --clobber-file ./.ci_support/clobber_${CONFIG}.yaml ${EXTRA_CB_OPTIONS:-} endgroup "Running conda build" startgroup "Validating outputs" diff --git a/README.md b/README.md index 3a107570..cf577e09 100644 --- a/README.md +++ b/README.md @@ -29,59 +29,73 @@ Current build status - + - + - + - + - + - + - + - + + + + + + + @@ -185,4 +199,5 @@ Feedstock Maintainers ===================== * [@ericmjl](https://github.com/ericmjl/) +* [@xhochy](https://github.com/xhochy/) diff --git a/conda-forge.yml b/conda-forge.yml index dab78baf..d74b6e52 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,3 +1,4 @@ -bot: - automerge: true +bot: {automerge: true} +build_platform: {osx_arm64: osx_64} conda_forge_output_validation: true +test_on_native_only: true diff --git a/recipe/build.sh b/recipe/build.sh new file mode 100644 index 00000000..a7f0c8e2 --- /dev/null +++ b/recipe/build.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +set -euxo pipefail + +# TODO(features): +# * --enable_cuda +# * --enable_rocm +# * --target_cpu_features (different settings depending on archspec) +# TODO: Use bazel from conda-forge +# TODO: This currently bundles: +# * LLVM +# * MLIR +# * protobuf +# * mkl_dnn_v1 (nowadays called oneDNN) +${PYTHON} build/build.py --target_cpu_features default --enable_mkl_dnn +${PYTHON} -m pip install dist/jaxlib-*.whl diff --git a/recipe/meta.yaml b/recipe/meta.yaml index b5c9ac65..c4d49bf0 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -1,56 +1,35 @@ {% set version = "0.1.64" %} {% set name = "jaxlib" %} -# compute right wheel filename for later -{% set pyver = "cp{}{}".format(PY_VER[0], PY_VER[2]) %} -{% set platform = "manylinux2010_x86_64" %} # [linux] -{% set platform = "macosx_10_9_x86_64" %} # [osx] -# {distribution}-{version}(-{build tag})?-{python tag}-{abi tag}-{platform tag}.whl. -{% set fn = "{}-{}-{}-none-{}.whl".format(name, version, pyver, platform) %} - -# only use these for the URLS to help the bot -# the urls below have to be explicit for the bot to work -{% set linux_whl = "manylinux2010_x86_64" %} -{% set osx_whl = "macosx_10_9_x86_64" %} - package: name: jaxlib version: {{ version }} source: - fn: wheel.whl - - url: https://pypi.io/packages/cp36/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp36-none-{{ linux_whl }}.whl # [linux and py==36] - sha256: 4f60212d926d721b44898599dba88290f21a2bfb5512d14df4a7a81bf0ec06c9 # [linux and py==36] - url: https://pypi.io/packages/cp36/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp36-none-{{ osx_whl }}.whl # [osx and py==36] - sha256: b2a7cd42032c3eefd6b03bbfb026f7f76ac290c520bc6d7e040ae83f0f84e4f6 # [osx and py==36] - - url: https://pypi.io/packages/cp37/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp37-none-{{ linux_whl }}.whl # [linux and py==37] - sha256: 362f05b82934669f817eb2dff0b5a807ab513dc0b2387cb58280664839118b81 # [linux and py==37] - url: https://pypi.io/packages/cp37/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp37-none-{{ osx_whl }}.whl # [osx and py==37] - sha256: 72099ac6940728b9e9f76cc81bb547454d8bcbeba1a082a2abb6f0dc201ead70 # [osx and py==37] - - url: https://pypi.io/packages/cp38/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp38-none-{{ linux_whl }}.whl # [linux and py==38] - sha256: 6993ac9b0a985f473b75e142651dafad7186a98dd39e5ad3663addb74c6b9317 # [linux and py==38] - url: https://pypi.io/packages/cp38/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp38-none-{{ osx_whl }}.whl # [osx and py==38] - sha256: 824a784a770e0a2d1f71322f52a560b4da8dad8009950df1438e3b6f070eb343 # [osx and py==38] - - url: https://pypi.io/packages/cp39/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp39-none-{{ linux_whl }}.whl # [linux and py==39] - sha256: d7674c89980230299caafbccaf8b29c122a4d2f9240eee39d2f4a3e3fadc1e83 # [linux and py==39] - url: https://pypi.io/packages/cp39/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}-cp39-none-{{ osx_whl }}.whl # [osx and py==39] - sha256: d960b06d1865073228a1e9c11968be4bcd5e383b6d25c02aea014507b2426a73 # [osx and py==39] + url: https://github.com/google/jax/archive/{{ name }}-v{{ version }}.tar.gz + sha256: 13768483195f878d1966e39b737fd3db5ad0d960f45ade24ba8a64bfd28725b0 + patches: + - osx-arm64.patch build: - number: 0 - skip: true # [win or py2k] - script: - - mv wheel.whl {{ fn }} - - {{ PYTHON }} -m pip install --no-deps -vv {{ fn }} + number: 1 + skip: true # [win] requirements: + build: + - {{ compiler('c') }} + - {{ compiler('cxx') }} + - bazel + - python # [build_platform != target_platform] + - cross-python_{{ target_platform }} # [build_platform != target_platform] + - numpy # [build_platform != target_platform] + - scipy # [build_platform != target_platform] host: - python - pip + - numpy + - scipy + - wheel run: - python - absl-py @@ -64,10 +43,8 @@ test: - pip commands: - pip check - # imports: - # cannot run the test b/c this is not really manylinux1 GLIBC_2.14 - # Google :-/ - # - jaxlib + imports: + - jaxlib about: home: http://github.com/google/jax @@ -80,3 +57,4 @@ about: extra: recipe-maintainers: - ericmjl + - xhochy diff --git a/recipe/osx-arm64.patch b/recipe/osx-arm64.patch new file mode 100644 index 00000000..ff8f6471 --- /dev/null +++ b/recipe/osx-arm64.patch @@ -0,0 +1,40 @@ +--- build/build.py.orig 2021-03-23 13:57:54.000000000 +0100 ++++ build/build.py 2021-03-23 13:59:39.000000000 +0100 +@@ -271,6 +271,13 @@ + # Workaround for gcc 10+ warnings related to upb. + # See https://github.com/tensorflow/tensorflow/issues/39467 + build:linux --copt=-Wno-stringop-truncation ++ ++# Apple silicon config ++build:macos_arm64 --config=posix ++build:macos_arm64 --config=macos ++build:macos_arm64 --apple_platform_type=macos ++build:macos_arm64 --cpu=darwin_arm64 ++build --copt=-Wno-implicit-function-declaration + """ + + +--- build/build_wheel.py.orig 2021-03-23 13:58:02.000000000 +0100 ++++ build/build_wheel.py 2021-03-23 14:00:17.000000000 +0100 +@@ -169,12 +169,18 @@ + + def build_wheel(sources_path, output_path): + """Builds a wheel in `output_path` using the source tree in `sources_path`.""" ++ system = platform.system() + platform_name = { + "Linux": "manylinux2010", +- "Darwin": "macosx_10_9", ++ "Darwin": "macosx_11_0" if int(platform.mac_ver()[0].split(".")[0]) > 10 else "macosx_10_9", + "Windows": "win", +- }[platform.system()] +- cpu_name = "amd64" if platform.system() == "Windows" else "x86_64" ++ }[system] ++ if system == "Darwin": ++ cpu_name = platform.mac_ver()[2] ++ elif system == "Windows": ++ cpu_name = "amd64" ++ else: ++ cpu_name = "x86_64" + python_tag_arg = (f"--python-tag=cp{sys.version_info.major}" + f"{sys.version_info.minor}") + platform_tag_arg = f"--plat-name={platform_name}_{cpu_name}"
VariantStatus
linux_64_python3.6.____cpythonlinux_64_numpy1.17python3.6.____cpython - variant + variant
linux_64_python3.7.____cpythonlinux_64_numpy1.17python3.7.____cpython - variant + variant
linux_64_python3.8.____cpythonlinux_64_numpy1.17python3.8.____cpython - variant + variant
linux_64_python3.9.____cpythonlinux_64_numpy1.19python3.9.____cpython - variant + variant
osx_64_python3.6.____cpythonosx_64_numpy1.17python3.6.____cpython - variant + variant
osx_64_python3.7.____cpythonosx_64_numpy1.17python3.7.____cpython - variant + variant
osx_64_python3.8.____cpythonosx_64_numpy1.17python3.8.____cpython - variant + variant
osx_64_python3.9.____cpythonosx_64_numpy1.19python3.9.____cpython - variant + variant + +
osx_arm64_python3.8.____cpython + + variant + +
osx_arm64_python3.9.____cpython + + variant