Commit 288b2e6a by Sébastien Eustace

Fix handling of extras when resolving dependencies

parent c10742fd
...@@ -12,6 +12,10 @@ ...@@ -12,6 +12,10 @@
- Changed CLI error style. - Changed CLI error style.
- Improved debugging of dependency resolution. - Improved debugging of dependency resolution.
### Fixed
- Fixed handling of extras when resolving dependencies.
## [0.8.6] - 2018-04-30 ## [0.8.6] - 2018-04-30
......
...@@ -85,6 +85,7 @@ class Package(object): ...@@ -85,6 +85,7 @@ class Package(object):
self.requires = [] self.requires = []
self.dev_requires = [] self.dev_requires = []
self.extras = {} self.extras = {}
self.requires_extras = []
self._parser = VersionParser() self._parser = VersionParser()
......
...@@ -224,7 +224,10 @@ class Provider(SpecificationProvider, UI): ...@@ -224,7 +224,10 @@ class Provider(SpecificationProvider, UI):
# Information should already be set # Information should already be set
pass pass
else: else:
complete_package = self._pool.package(package.name, package.version) complete_package = self._pool.package(
package.name, package.version,
extras=package.requires_extras
)
# Update package with new information # Update package with new information
package.requires = complete_package.requires package.requires = complete_package.requires
......
...@@ -62,13 +62,13 @@ class Pool(BaseRepository): ...@@ -62,13 +62,13 @@ class Pool(BaseRepository):
def has_package(self, package): def has_package(self, package):
raise NotImplementedError() raise NotImplementedError()
def package(self, name, version): def package(self, name, version, extras=None):
package = poetry.packages.Package(name, version, version) package = poetry.packages.Package(name, version, version)
if package in self._packages: if package in self._packages:
return self._packages[self._packages.index(package)] return self._packages[self._packages.index(package)]
for repository in self._repositories: for repository in self._repositories:
package = repository.package(name, version) package = repository.package(name, version, extras=extras)
if package: if package:
self._packages.append(package) self._packages.append(package)
......
...@@ -112,7 +112,11 @@ class PyPiRepository(Repository): ...@@ -112,7 +112,11 @@ class PyPiRepository(Repository):
versions.append(version) versions.append(version)
for version in versions: for version in versions:
packages.append(Package(name, version)) package = Package(name, version)
if extras is not None:
package.requires_extras = extras
packages.append(package)
self._log( self._log(
'{} packages found for {} {}'.format( '{} packages found for {} {}'.format(
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment