From 4845552560ed59079f4814602ef0b003ed6d0319 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 09:42:19 -0400 Subject: [PATCH 01/10] new dockerfile for ubuntu 18.04 Signed-off-by: Kenneth Reitz --- Dockerfile | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4bab57e2..ccf35a6c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,7 @@ -FROM ubuntu:17.10 +FROM ubuntu:18.04 # -- Install Pipenv: -RUN apt-get update \ - && apt-get install software-properties-common python-software-properties -y \ - && add-apt-repository ppa:pypa/ppa -y \ - && apt-get update \ - && apt-get install git pipenv -y +RUN apt update && apt install python3-pip -y && pip3 install pipenv ENV LC_ALL C.UTF-8 ENV LANG C.UTF-8 From 1f495db5095822d3b2793685eddcde0af5f9e7ed Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 09:54:27 -0400 Subject: [PATCH 02/10] docker-compose based tests Signed-off-by: Kenneth Reitz --- .buildkite/pipeline.yml | 2 +- Dockerfile.tests | 23 +++++++++++++++++++++++ Makefile | 3 +++ docker-compose.yml | 9 +++++++++ 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 Dockerfile.tests create mode 100644 Makefile create mode 100644 docker-compose.yml diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 48175a72..9274f481 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,4 +1,4 @@ steps: - label: ":python:" commands: - - ./run-tests.sh \ No newline at end of file + - make \ No newline at end of file diff --git a/Dockerfile.tests b/Dockerfile.tests new file mode 100644 index 00000000..5ffc78d8 --- /dev/null +++ b/Dockerfile.tests @@ -0,0 +1,23 @@ +FROM ubuntu:18.04 + +# -- Install Pipenv: +RUN apt update && apt install python-pip python3-pip -y && pip3 install pipenv + +ENV LC_ALL C.UTF-8 +ENV LANG C.UTF-8 + +# -- Install Application into container: +RUN set -ex && mkdir /app + +WORKDIR /pipenv + +# -------------------- +# - Using This File: - +# -------------------- + +# FROM kennethreitz/pipenv + +# COPY . /app + +# -- Replace with the correct path to your app's main executable +# CMD python3 main.py diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..25b48eb8 --- /dev/null +++ b/Makefile @@ -0,0 +1,3 @@ +test: + docker-compose build + docker-compose up \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..663c4fc0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,9 @@ +version: '3' +services: + pipenv-tests: + build: + context: . + dockerfile: Dockerfile.tests + command: bash /pipenv/run-tests.sh + volumes: + - .:/pipenv From 86aee384e1a82162013a4f61baf631749bea4667 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 09:57:10 -0400 Subject: [PATCH 03/10] also build time Signed-off-by: Kenneth Reitz --- Dockerfile.tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.tests b/Dockerfile.tests index 5ffc78d8..1b235af4 100644 --- a/Dockerfile.tests +++ b/Dockerfile.tests @@ -1,7 +1,7 @@ FROM ubuntu:18.04 # -- Install Pipenv: -RUN apt update && apt install python-pip python3-pip -y && pip3 install pipenv +RUN apt update && apt install python-pip python3-pip time -y && pip3 install pipenv ENV LC_ALL C.UTF-8 ENV LANG C.UTF-8 From 439c0089cbd68f4221f2d50e8d1bd7cbbe0b1faa Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 10:02:54 -0400 Subject: [PATCH 04/10] also install git Signed-off-by: Kenneth Reitz --- Dockerfile.tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile.tests b/Dockerfile.tests index 1b235af4..01f6f207 100644 --- a/Dockerfile.tests +++ b/Dockerfile.tests @@ -1,7 +1,7 @@ FROM ubuntu:18.04 # -- Install Pipenv: -RUN apt update && apt install python-pip python3-pip time -y && pip3 install pipenv +RUN apt update && apt install python-pip python3-pip time git -y && pip3 install pipenv ENV LC_ALL C.UTF-8 ENV LANG C.UTF-8 From 0343454988bdcee45a198480cb525528a6d63a66 Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 10:12:00 -0400 Subject: [PATCH 05/10] pipenv-tests Signed-off-by: Kenneth Reitz --- Dockerfile.tests | 23 ----------------------- docker-compose.yml | 4 +--- 2 files changed, 1 insertion(+), 26 deletions(-) delete mode 100644 Dockerfile.tests diff --git a/Dockerfile.tests b/Dockerfile.tests deleted file mode 100644 index 01f6f207..00000000 --- a/Dockerfile.tests +++ /dev/null @@ -1,23 +0,0 @@ -FROM ubuntu:18.04 - -# -- Install Pipenv: -RUN apt update && apt install python-pip python3-pip time git -y && pip3 install pipenv - -ENV LC_ALL C.UTF-8 -ENV LANG C.UTF-8 - -# -- Install Application into container: -RUN set -ex && mkdir /app - -WORKDIR /pipenv - -# -------------------- -# - Using This File: - -# -------------------- - -# FROM kennethreitz/pipenv - -# COPY . /app - -# -- Replace with the correct path to your app's main executable -# CMD python3 main.py diff --git a/docker-compose.yml b/docker-compose.yml index 663c4fc0..1fede25a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,9 +1,7 @@ version: '3' services: pipenv-tests: - build: - context: . - dockerfile: Dockerfile.tests + image: kennethreitz/pipenv-tests command: bash /pipenv/run-tests.sh volumes: - .:/pipenv From 4361cf7f3a4aba42555ffc965494ee95776b298b Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 10:25:30 -0400 Subject: [PATCH 06/10] empty commit From c2495dcd995d8bbe833c634de7e5aa91483de7bf Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 10:33:54 -0400 Subject: [PATCH 07/10] update makefile Signed-off-by: Kenneth Reitz --- Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/Makefile b/Makefile index 25b48eb8..51b267c5 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,2 @@ test: - docker-compose build docker-compose up \ No newline at end of file From 92290cb2f6486400bc2e47867bbe26bab3f9ceef Mon Sep 17 00:00:00 2001 From: Kenneth Reitz Date: Sun, 20 May 2018 10:35:13 -0400 Subject: [PATCH 08/10] stick to traditional tests for now Signed-off-by: Kenneth Reitz --- .buildkite/pipeline.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 9274f481..46b2e799 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -1,4 +1,5 @@ steps: - label: ":python:" commands: - - make \ No newline at end of file + # - make + - ./run-tests.sh \ No newline at end of file From 0567c10d685b0ee25d629d9abe0692a23880811f Mon Sep 17 00:00:00 2001 From: Jeremy Fleischman Date: Wed, 2 May 2018 10:03:05 -0700 Subject: [PATCH 09/10] When formatting a requirement, only lowercase its name. This fixes https://github.com/pypa/pipenv/issues/2113. This bug was introduced in as a band-aid fix to . Pipenv then copied that code in , and inherited this latent bug. Maybe the right fix is for pypa/packaging to lowercase the name? There's a comment here about normalizing the requirement's name, which might be what this is referring to. To test this, I invented a new, very simple python package called `depends-on-marked-package`. The setup.py for this package is just: ```python import setuptools setuptools.setup( name="depends-on-marked-package", version="0.0.1", packages=setuptools.find_packages(), install_requires=['pytz; platform_python_implementation=="CPython"'], ) ``` This is a simplified version of gevent's setup.py's install_requires upon greenlet. --- pipenv/patched/piptools/utils.py | 32 +++++++++++++++++- tests/integration/test_install_markers.py | 20 +++++++++++ ..._marked_package-0.0.1-py2.py3-none-any.whl | Bin 0 -> 1215 bytes 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 tests/pypi/depends-on-marked-package/depends_on_marked_package-0.0.1-py2.py3-none-any.whl diff --git a/pipenv/patched/piptools/utils.py b/pipenv/patched/piptools/utils.py index db8bb9b3..f3de3dd3 100644 --- a/pipenv/patched/piptools/utils.py +++ b/pipenv/patched/piptools/utils.py @@ -58,6 +58,36 @@ def make_install_requirement(name, version, extras, markers, constraint=False): constraint=constraint) +def _requirement_to_str_lowercase_name(requirement): + """ + Formats a packaging.requirements.Requirement with a lowercase name. + + This is simply a copy of + https://github.com/pypa/packaging/blob/16.8/packaging/requirements.py#L109-L124 + modified to lowercase the dependency name. + + Previously, we were invoking the original Requirement.__str__ method and + lowercasing the entire result, which would lowercase the name, *and* other, + important stuff that should not be lowercased (such as the marker). See + this issue for more information: https://github.com/pypa/pipenv/issues/2113. + """ + parts = [requirement.name.lower()] + + if requirement.extras: + parts.append("[{0}]".format(",".join(sorted(requirement.extras)))) + + if requirement.specifier: + parts.append(str(requirement.specifier)) + + if requirement.url: + parts.append("@ {0}".format(requirement.url)) + + if requirement.marker: + parts.append("; {0}".format(requirement.marker)) + + return "".join(parts) + + def format_requirement(ireq, marker=None): """ Generic formatter for pretty printing InstallRequirements to the terminal @@ -66,7 +96,7 @@ def format_requirement(ireq, marker=None): if ireq.editable: line = '-e {}'.format(ireq.link) else: - line = str(ireq.req).lower() + line = _requirement_to_str_lowercase_name(ireq.req) if marker: line = '{}; {}'.format(line, marker) diff --git a/tests/integration/test_install_markers.py b/tests/integration/test_install_markers.py index 87235d4a..9e3fa1d2 100644 --- a/tests/integration/test_install_markers.py +++ b/tests/integration/test_install_markers.py @@ -33,6 +33,26 @@ tablib = {version = "*", markers="os_name=='splashwear'"} c = p.pipenv('run python -c "import tablib;"') assert c.return_code == 1 +@pytest.mark.markers +@flaky +def test_platform_python_implementation_marker(PipenvInstance, pypi): + """Markers should be converted during locking to help users who input this incorrectly + """ + with PipenvInstance(pypi=pypi) as p: + with open(p.pipfile_path, 'w') as f: + contents = """ +[packages] +depends-on-marked-package = "*" + """.strip() + f.write(contents) + + c = p.pipenv('install') + assert c.return_code == 0 + + # depends-on-marked-package has an install_requires of 'pytz; platform_python_implementation=="CPython"' + # Verify that that marker shows up in our lockfile unaltered. + assert p.lockfile['default']['pytz']['markers'] == "platform_python_implementation == 'CPython'" + @pytest.mark.run @pytest.mark.alt diff --git a/tests/pypi/depends-on-marked-package/depends_on_marked_package-0.0.1-py2.py3-none-any.whl b/tests/pypi/depends-on-marked-package/depends_on_marked_package-0.0.1-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..d320deb3a4d39d987501a55af6abdc192c263cb4 GIT binary patch literal 1215 zcmWIWW@Zs#U|`^2SZJ`_XENJ$BW56v5s1x!I3=|pH7}(&K0hx$H?b%?H6^|vF*!Ri zJyq90&p^*mFD0|ML^m@pEnmMRzaTy*wJbG9ucV^nF%v@oin+o9f7;`L=H&sgK1t?= zd$_v#aG&?^J$sSYTUYDcne&^246YbIDDpq+t?Q+8Qh!sBhu29Ry-t1hm4O!wE*P6# zF~0JI>(qJui(hrF@oMOLojvKZDM&+8%l9dlr_c5vjTI)B&YnK+ebx8O>XuFkWtSaj zZrzZ`F0}&a#(zL;M3P&5T|*pQ977yq`)s)n8Hl)k|I>BBcBz${RR>>_RQIC3rx)#R zUwC#{MfTNt^Ny&(JwBkBj11|e+Rib`vj-ph-PpT_bxroP`U{VSjApmQ4&gIwmm zB#z6!qrH!RO#Zms;G}(V^3u~XR(B%A1*bfj>a(`?)8lFV9j1tr~mXAAW%R_r_y&$08-xgDp1%QF6)x|u!Ie|`S(42EZA#moWTj7%cTxU&i{ z#K2%lBZwk1j3CJpa4teO96g~U3}*o*0pfiCOZMpIqbDeY`F}_< YACkNRyjj^mCa?fu15m#vsGMQ|0Hc4WyZ`_I literal 0 HcmV?d00001 From df126c1be34ed4c4476269a6dc9c8342f3fa9c96 Mon Sep 17 00:00:00 2001 From: Jeremy Fleischman Date: Tue, 22 May 2018 23:19:27 -0700 Subject: [PATCH 10/10] Fix broken links. This fixes #2246. --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index af7ab55b..d7fa45c6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,8 +3,8 @@ Before opening any issues or proposing any pull requests, please do the following: -1. Read our [Contributor's Guide](http://docs.pipenv.org/en/latest/dev/contributing/). -2. Understand our [development philosophy](http://docs.pipenv.org/en/latest/dev/philosophy/). +1. Read our [Contributor's Guide](https://docs.pipenv.org/dev/contributing/). +2. Understand our [development philosophy](https://docs.pipenv.org/dev/philosophy/). To get the greatest chance of helpful responses, please also observe the following additional notes.