From c2e71e7ce6abd33384e06e93081ef63b3c694ede Mon Sep 17 00:00:00 2001 From: MinRK Date: Wed, 18 Jun 2014 15:32:08 -0700 Subject: [PATCH] query installed requirements for extras fixes issue where egg_info('requires.txt') does not exist for packages installed from wheels. --- CHANGES.txt | 3 +++ pip/req/req_install.py | 4 ++++ tests/data/packages/README.txt | 4 +++- ...ires_simple_extra-0.1-py2.py3-none-any.whl | Bin 0 -> 2001 bytes .../requires_simple_extra.py | 0 .../data/src/requires_simple_extra/setup.cfg | 2 ++ tests/data/src/requires_simple_extra/setup.py | 9 +++++++++ tests/functional/test_install_extras.py | 19 ++++++++++++++++++ 8 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 tests/data/packages/requires_simple_extra-0.1-py2.py3-none-any.whl create mode 100644 tests/data/src/requires_simple_extra/requires_simple_extra.py create mode 100644 tests/data/src/requires_simple_extra/setup.cfg create mode 100644 tests/data/src/requires_simple_extra/setup.py diff --git a/CHANGES.txt b/CHANGES.txt index 27211ac8d..a48fbc0f0 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -54,6 +54,9 @@ * Fixed :issue:`1101`. Properly handle an index or --find-links target which has a without a href attribute. (:pull:`1869`) +* Fixed :issue:`1885`. Will properly handle extras when a project is installed + via Wheel. (:pull:`1896`) + **1.5.7** diff --git a/pip/req/req_install.py b/pip/req/req_install.py index 820d57e88..a087f4c17 100644 --- a/pip/req/req_install.py +++ b/pip/req/req_install.py @@ -451,6 +451,10 @@ exec(compile( _requirements_section_re = re.compile(r'\[(.*?)\]') def requirements(self, extras=()): + if self.satisfied_by: + for r in self.satisfied_by.requires(extras): + yield str(r) + return in_extra = None for line in self.egg_info_lines('requires.txt'): match = self._requirements_section_re.match(line.lower()) diff --git a/tests/data/packages/README.txt b/tests/data/packages/README.txt index d1de98543..23ee4b130 100644 --- a/tests/data/packages/README.txt +++ b/tests/data/packages/README.txt @@ -84,6 +84,8 @@ meta-1.0-py2.py3-none-any.whl -------------------------------------------------- Is an empty package which install_requires the simple and simple2 packages. - +requires_simple_extra-0.1-py2.py3-none-any.whl +---------------------------------------------- +requires_simple_extra[extra] requires simple==1.0 diff --git a/tests/data/packages/requires_simple_extra-0.1-py2.py3-none-any.whl b/tests/data/packages/requires_simple_extra-0.1-py2.py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..c618eaa06d8fb2b57c0a5b0729a701840a295953 GIT binary patch literal 2001 zcmWIWW@Zs#U|`^2m{obn1;}7v0uewU0mMbAg{7HAsm1ZdnYjfysqv{5B}IvP1(nPU z0dRersxP_3>DFK30jlQ$Vq;wTbPea*)=75=@qobfRC-ut~XD@9W(qq0o&41*T8c7{8) znW=_aOr7m^xMt(*-08Fb7RhpN;(N7_T_&ynL!g$Ebi~qbYqlR{DhoL?N{lA^srjq? zwifA}uvS}2Rk}Sw)k>b5pwbr7jBmCnp3FD=gRPLTWW)*rN z{KB*ke_oaxNk4biEjr^8@7MWTrFBzpyq4?|yb_NZ&_Rj!i$M`12E@dMMM-`^d`@av zYK~q>MTxeTuFhEgaXqv#$)iU~s|M=$i3` zCtRn_>tFn;bB$L+*X!&_pG`p;np(b3xjcQg2WhM@xpemQdGD*fXI8g#N+`SRKuZ|E z@-J>&1a#eBAl4z$mAr!X zym9qf*E+2m>D@WCXO7&7oFp2z!g;b)jO_n(Pch$%7nfQFzO3Ht+xYO!jc**gcb~j( zx4FNg=~(*hD8F8QE~#*djJd~77TlTQklnE_T*c+LUxzqq#J|`laW@;70h)l>Q;SHy z2Dv)>2f6fKJUeNTfe7n^+VHcp8FJkjs|~qZG_+iP26CB&OtENCIU*2J^J`|L#p=in z_NDuxzjGA5)^^;rXSGJYhu^%QgkFBH@T3LO_UX%*nd8pib#1w76L;C=s=3)qW} zeKq?$H(lM*^XsYO%s)Q_{;v*JzcoE9WNwIdS*E?L#Lb6Q^6Sezgy+_HTU)=YPN{gl zB;U(?me{TxS6szUurQ?U63{(-X+>`HpRB3tCr;r{KD{yNb*|68g8^;KatFd@f=3xEAi^mUWe!K27($bdh?m+Wi0f-W=Wh^WBLL zFQ3|Oo7;co<}wb?Teo+JNGubzw)@$8cxrSsmqcaQBc~U885dW6vYBPKNwinI=&8J> z)4hWGdgt$yu%yufmnmpj6RoI4w*b9>MOZMENDEMkTXf^m%PfTP3xNq5Ybc<(AEg9CHy*vL zLKx2h%qzqg4=%aTjYTh95XP<}(pXqggKjc