From dcecc75270cbd8c3e1f53c5465b7c2b110f37ffd Mon Sep 17 00:00:00 2001 From: Adriane Boyd Date: Tue, 8 Dec 2020 07:29:34 +0100 Subject: [PATCH] Improve blis and numpy build dependencies (#6455) * Fix blis build dependencies * Add blis with python_version constraints to pyproject.toml * Add blis to setup_requires * Remove --only-binary from CI * Reduce number of builds to speed up CI * Add hack to install wheel for python 3.5 in linux * Remove os spec from CI * Remove detailed numpy build constraints * Remove detailed numpy build constraints from `pyproject.toml` because it is too difficult to maintain for many architectures * These constraints are more a reflection of what is available on pypi as binary wheels rather than any real build requirements that it is necessary for users to follow when building from source * Users building their own binary packages will need to enforce the constraints that make sense in their environments, e.g., the `conda` compatible numpy pins * Keep the build constraints in `build-constraints.txt` for use with our builds * Our builds with wheelwright are built against the earliest compatible binary versions of numpy on pypi * These constraints are documented within the distribution * Revert "Remove os spec from CI" This reverts commit 74894766888e0b94627b8c60b80de58a09f1e440. --- azure-pipelines.yml | 46 +++++++++++++++++++++++++-------------------- pyproject.toml | 7 +++---- setup.cfg | 1 + 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 95a76abcd..39e0af892 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -38,34 +38,35 @@ jobs: Python35Linux: imageName: 'ubuntu-16.04' python.version: '3.5' + os: linux Python35Windows: imageName: 'vs2017-win2016' python.version: '3.5' +# Test on one OS per python 3.6/3.7/3.8 to speed up CI Python36Linux: imageName: 'ubuntu-16.04' python.version: '3.6' - Python36Windows: - imageName: 'vs2017-win2016' - python.version: '3.6' - Python36Mac: - imageName: 'macos-10.14' - python.version: '3.6' - # Don't test on 3.7 for now to speed up builds - Python37Linux: - imageName: 'ubuntu-16.04' - python.version: '3.7' +# Python36Windows: +# imageName: 'vs2017-win2016' +# python.version: '3.6' +# Python36Mac: +# imageName: 'macos-10.14' +# python.version: '3.6' +# Python37Linux: +# imageName: 'ubuntu-16.04' +# python.version: '3.7' Python37Windows: imageName: 'vs2017-win2016' python.version: '3.7' - Python37Mac: - imageName: 'macos-10.14' - python.version: '3.7' - Python38Linux: - imageName: 'ubuntu-16.04' - python.version: '3.8' - Python38Windows: - imageName: 'vs2017-win2016' - python.version: '3.8' +# Python37Mac: +# imageName: 'macos-10.14' +# python.version: '3.7' +# Python38Linux: +# imageName: 'ubuntu-16.04' +# python.version: '3.8' +# Python38Windows: +# imageName: 'vs2017-win2016' +# python.version: '3.8' Python38Mac: imageName: 'macos-10.14' python.version: '3.8' @@ -108,9 +109,14 @@ jobs: pip uninstall -y -r installed.txt displayName: 'Uninstall all packages' + - script: | + pip install wheel + condition: and(eq(variables['os'], 'linux'), eq(variables['python.version'], '3.5')) + displayName: 'Hack: install wheel for python 3.5' + - bash: | SDIST=$(python -c "import os;print(os.listdir('./dist')[-1])" 2>&1) - pip install dist/$SDIST --only-binary :all: + pip install dist/$SDIST displayName: 'Install from sdist' - script: | diff --git a/pyproject.toml b/pyproject.toml index 48e0e21c4..f991fe404 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,9 +6,8 @@ requires = [ "preshed>=3.0.2,<3.1.0", "murmurhash>=0.28.0,<1.1.0", "thinc>=7.4.1,<7.5.0", - "numpy==1.15.0; python_version<='3.7'", - "numpy==1.17.3; python_version=='3.8'", - "numpy==1.19.3; python_version=='3.9'", - "numpy; python_version>='3.10'", + "blis>=0.4.0,<0.8.0; python_version >= '3.6'", + "blis>=0.4.0,<0.5.0; python_version < '3.6'", + "numpy>=1.15.0", ] build-backend = "setuptools.build_meta" diff --git a/setup.cfg b/setup.cfg index 4e8164d39..7c921f02c 100644 --- a/setup.cfg +++ b/setup.cfg @@ -40,6 +40,7 @@ setup_requires = preshed>=3.0.2,<3.1.0 murmurhash>=0.28.0,<1.1.0 thinc>=7.4.1,<7.5.0 + blis>=0.4.0,<0.8.0 install_requires = # Our libraries murmurhash>=0.28.0,<1.1.0