Skip to content

Commit

Permalink
added support for local editable eggs
Browse files Browse the repository at this point in the history
  • Loading branch information
bubenkoff committed Dec 5, 2013
1 parent 49eef76 commit ddac129
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 7 deletions.
6 changes: 6 additions & 0 deletions CHANGES.rst
@@ -1,6 +1,12 @@
Changelog
=========

0.1.8 (2013-12-05)
------------------

- Support local editable eggs


0.1.7 (2013-06-27)
------------------

Expand Down
9 changes: 9 additions & 0 deletions collective/recipe/pip/README.rst
Expand Up @@ -43,6 +43,13 @@ Let's create test config files
... some.included.egg2
... """)

>>> mkdir('file.package')
>>> write('file.package/setup.py',
... """
... from setuptools import setup
... setup(name='file.package')
... """)

>>> write('requirements2.txt',
... """
... -r requirements-included.txt
Expand All @@ -51,6 +58,7 @@ Let's create test config files
... django>=1.3,<1.4
... django-extensions #django extension requirements (not mandatory, but useful on dev)
... -e http://some2.package.git.url#egg=develop2.egg
... -e file.package
... --extra-index-url=http://some.index.url
... -f http://git.fabfile.org
... """)
Expand Down Expand Up @@ -116,6 +124,7 @@ Running the buildout gives us::
django = >=1.3,<1.4
html5lib = 0.95
[urls]
/sample-buildout/file.package
git+http://some.package.git.url#egg=develop.egg
git+http://some2.package.git.url#egg=develop2.egg
http://sourceforge.net/projects/pychecker/files/latest/download?source=files#egg=pychecker==0.8.19
Expand Down
21 changes: 15 additions & 6 deletions collective/recipe/pip/__init__.py
@@ -1,6 +1,8 @@
# -*- coding: utf-8 -*-
"""Recipe pip."""
import itertools
import os

from pip import req


Expand All @@ -25,11 +27,11 @@ def process(self):
versions = []
urls = []
for requirement in self.parse_files(self.options.get('configs').split()):
if requirement.req is None:
# strange case, sometimes happen
continue
specs = ','.join([''.join(s) for s in requirement.req.specs])
eggs.append(requirement.name + specs)
if requirement.req is not None:
specs = ','.join([''.join(s) for s in requirement.req.specs])
eggs.append(requirement.name + specs)
else:
specs = None
if specs:
versions.append((requirement.name, specs[2:] if specs.startswith('=') else specs))
if requirement.editable:
Expand All @@ -52,7 +54,14 @@ def parse_files(self, files):
def parse_file(self, file):
"""Parse single file."""
try:
return req.parse_requirements(file, options=self)
dir = os.getcwd()
file_dir = os.path.dirname(file)
if os.path.exists(file_dir):
os.chdir(file_dir)
try:
return req.parse_requirements(file, options=self)
finally:
os.chdir(dir)
except SystemExit:
raise RuntimeError("Can't parse {0}".format(file))

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Expand Up @@ -9,7 +9,7 @@
def read(*rnames):
return open(os.path.join(os.path.dirname(__file__), *rnames)).read()

version = '0.1.7'
version = '0.1.8'

long_description = (
read('README.rst')
Expand Down

0 comments on commit ddac129

Please sign in to comment.