From 91410f500a4e08759d5ffbbc2b43ac662fa9ef5e Mon Sep 17 00:00:00 2001 From: shunyi Date: Sat, 16 May 2020 16:04:36 +0800 Subject: [PATCH 1/2] [#418] Make pip upgrade to newest version on CircleCI --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index eb633668..521119ca 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -56,9 +56,9 @@ variables: - run: name: install dependencies command: | - pip install --user -U pip python3 -m venv venv . venv/bin/activate + pip install -U pip pip install -r requirements.txt pip install -r requirements-test.txt pip install coveralls @@ -124,9 +124,9 @@ jobs: - run: name: install dependencies command: | - pip install --user -U pip python3 -m venv venv . venv/bin/activate + pip install -U pip pip install -r requirements-test.txt pip install twine From b2edc125e3992acb5dd27668e3f9f3e396a42834 Mon Sep 17 00:00:00 2001 From: shunyi Date: Fri, 29 May 2020 12:05:08 +0800 Subject: [PATCH 2/2] [#418] Fix parse_requirements() for pip >= 20.1 pip 20.1 moved `parse_requirements()` to `pip._vendor.pkg_resources` ref: https://github.com/pypa/pip/blob/1e67c3cc201c3eaf7ac6927954729a01e4c28e45/src/pip/_internal/req/constructors.py#L18 Too many different dependency path for parse_requirements() in different versions of pip. Just write a simple parse_requirements() function by ourselves. --- setup.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/setup.py b/setup.py index bf5a63b8..38fe7652 100644 --- a/setup.py +++ b/setup.py @@ -4,17 +4,17 @@ from setuptools import find_packages, setup from setuptools.command.test import test as TestCommand -try: - # for pip >= 10 - from pip._internal.req import parse_requirements -except ImportError: - # for pip <= 9.0.3 - from pip.req import parse_requirements - ROOT_DIR = os.path.dirname(os.path.realpath(__file__)) +def parse_requirements(filepath): + """ load requirements from a pip requirements file. """ + with open(filepath) as f: + lines = (line.strip() for line in f) + return [line for line in lines if line and not line.startswith('#')] + + def get_zdict_version(): constants_file_path = os.path.join(ROOT_DIR, 'zdict/constants.py') with open(constants_file_path) as constants: @@ -28,14 +28,13 @@ def get_zdict_version(): def get_test_req(): test_requirements = parse_requirements( - os.path.join(ROOT_DIR, 'requirements-test.txt'), session=False + os.path.join(ROOT_DIR, 'requirements-test.txt') ) - test_requires = [str(tr.req) for tr in test_requirements] if not sys.platform.startswith('freebsd'): - test_requires.append('gnureadline==6.3.3') + test_requirements.append('gnureadline==6.3.3') - return test_requires + return test_requirements version = get_zdict_version() @@ -61,18 +60,17 @@ def run_tests(self): install_requirements = parse_requirements( - os.path.join(ROOT_DIR, 'requirements.txt'), session=False + os.path.join(ROOT_DIR, 'requirements.txt') ) -install_requires = [str(ir.req) for ir in install_requirements] if sys.platform == 'darwin' and sys.version_info <= (3, 5): - install_requires.append('gnureadline==6.3.3') + install_requirements.append('gnureadline==6.3.3') setup( packages=find_packages(exclude=['scripts']), scripts=['scripts/zdict'], - install_requires=install_requires, + install_requires=install_requirements, tests_require=get_test_req(), cmdclass={'test': PyTest},