diff options
Diffstat (limited to 'tox/_config.py')
| -rw-r--r-- | tox/_config.py | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/tox/_config.py b/tox/_config.py index 3d26686..b7afc62 100644 --- a/tox/_config.py +++ b/tox/_config.py @@ -9,7 +9,8 @@ import pkg_resources import itertools from tox.interpreters import Interpreters - +from pip.req.req_file import parse_requirements +from pip.download import PipSession import py import tox @@ -371,6 +372,8 @@ class parseini: vc.whitelist_externals = reader.getlist(section, "whitelist_externals") vc.deps = [] + requirement_files = [] + for depline in reader.getlist(section, "deps"): m = re.match(r":(\w+):\s*(\S+)", depline) if m: @@ -379,8 +382,29 @@ class parseini: else: name = depline.strip() ixserver = None - name = self._replace_forced_dep(name, config) - vc.deps.append(DepConfig(name, ixserver)) + + + # We want to parse requirements.txt files last so that + # we can process them with forced dependencies + if name[:2] == '-r': + fname = name[2:].strip() + requirement_files.append(fname) + else: + name = self._replace_forced_dep(name, config) + vc.deps.append(DepConfig(name, ixserver)) + + pip_session = PipSession() + + for requirement_file in requirement_files: + req_deps = parse_requirements( + requirement_file, + session=pip_session + ) + + for r in req_deps: + name = self._replace_forced_dep(r.name, config) + vc.deps.append(DepConfig(name, ixserver)) + vc.distribute = reader.getbool(section, "distribute", False) vc.sitepackages = self.config.option.sitepackages or \ reader.getbool(section, "sitepackages", False) |
