Skip to content

Commit

Permalink
Add support for private repositories
Browse files Browse the repository at this point in the history
  • Loading branch information
sdispater committed Mar 1, 2018
1 parent 31b9dbf commit c3731a5
Show file tree
Hide file tree
Showing 18 changed files with 320 additions and 31 deletions.
1 change: 1 addition & 0 deletions poetry.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ cleo = "^0.6"
requests = "^2.18"
toml = "^0.9"
cachy = "^0.1.0"
pip-tools = "^1.11"

[dev-dependencies]
pytest = "~3.4"
Expand Down
4 changes: 2 additions & 2 deletions poetry/console/commands/add.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def handle(self):
self.output,
self.poetry.package,
self.poetry.locker,
self.poetry.repository
self.poetry.pool
)

installer.update(True)
Expand Down Expand Up @@ -135,7 +135,7 @@ def _find_best_version_for_package(self,
name,
required_version=None
) -> Tuple[str, str]:
selector = VersionSelector(self.poetry.repository)
selector = VersionSelector(self.poetry.pool)
package = selector.find_best_candidate(name, required_version)

if not package:
Expand Down
2 changes: 1 addition & 1 deletion poetry/console/commands/install.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def handle(self):
self.output,
self.poetry.package,
self.poetry.locker,
PyPiRepository()
self.poetry.pool
)

installer.dev_mode(not self.option('no-dev'))
Expand Down
2 changes: 1 addition & 1 deletion poetry/console/commands/lock.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def handle(self):
self.output,
self.poetry.package,
self.poetry.locker,
PyPiRepository()
self.poetry.pool
)

installer.update(True)
Expand Down
2 changes: 1 addition & 1 deletion poetry/console/commands/remove.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def handle(self):
self.output,
self.poetry.package,
self.poetry.locker,
self.poetry.repository
self.poetry.pool
)

installer.dry_run(self.option('dry-run'))
Expand Down
2 changes: 1 addition & 1 deletion poetry/console/commands/update.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def handle(self):
self.output,
self.poetry.package,
self.poetry.locker,
self.poetry.repository
self.poetry.pool
)

if packages:
Expand Down
7 changes: 4 additions & 3 deletions poetry/installation/installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from poetry.puzzle.operations import Uninstall
from poetry.puzzle.operations import Update
from poetry.puzzle.operations.operation import Operation
from poetry.repositories import Pool
from poetry.repositories import Repository
from poetry.repositories.installed_repository import InstalledRepository

Expand All @@ -21,11 +22,11 @@ def __init__(self,
io,
package: Package,
locker: Locker,
repository: Repository):
pool: Pool):
self._io = io
self._package = package
self._locker = locker
self._repository = repository
self._pool = pool

self._dry_run = False
self._update = False
Expand Down Expand Up @@ -130,7 +131,7 @@ def _do_install(self, local_repo):
request = self._package.requires
request += self._package.dev_requires

ops = solver.solve(request, self._repository, fixed=fixed)
ops = solver.solve(request, self._pool, fixed=fixed)
else:
self._io.writeln('<info>Installing dependencies from lock file</>')
# If we are installing from lock
Expand Down
10 changes: 9 additions & 1 deletion poetry/installation/pip_installer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,17 @@ def __init__(self, venv: Venv, io):
self._io = io

def install(self, package):
self.run('install', self.requirement(package), '--no-deps')
args = ['install', self.requirement(package), '--no-deps']
if package.source_type == 'legacy' and package.source_url:
args += ['--index-url', package.source_url]

self.run(*args)

def update(self, source, target):
args = ['install', self.requirement(target), '--no-deps', '-U']
if target.source_type == 'legacy' and target.source_url:
args += ['--index-url', target.source_url]

self.run('install', self.requirement(target), '--no-deps', '-U')

def remove(self, package):
Expand Down
1 change: 1 addition & 0 deletions poetry/packages/locker.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class Locker:
'python_versions',
'dependencies',
'dev-dependencies',
'source',
]

def __init__(self, lock: Path, original: Path):
Expand Down
18 changes: 11 additions & 7 deletions poetry/poetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from .packages import Locker
from .packages import Package
from .repositories import Pool
from .repositories.pypi_repository import PyPiRepository
from .semver.helpers import normalize_version
from .utils.toml_file import TomlFile
Expand All @@ -18,7 +19,14 @@ def __init__(self,
self._package = package
self._config = config
self._locker = locker
self._repository = PyPiRepository()

# Configure sources
self._pool = Pool()
for source in self._config.get('source', []):
self._pool.configure(source)

# Always put PyPI last to prefere private repositories
self._pool.add_repository(PyPiRepository())

@property
def package(self) -> Package:
Expand All @@ -33,12 +41,8 @@ def locker(self) -> Locker:
return self._locker

@property
def repository(self) -> PyPiRepository:
return self._repository

@property
def installer(self):
return self._instal
def pool(self) -> Pool:
return self._pool

@classmethod
def create(cls, cwd) -> 'Poetry':
Expand Down
14 changes: 7 additions & 7 deletions poetry/puzzle/provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from poetry.packages import Package
from poetry.packages import VCSDependency

from poetry.repositories.repository import Repository
from poetry.repositories import Pool

from poetry.semver import less_than
from poetry.semver.constraints import Constraint
Expand All @@ -31,12 +31,12 @@ class Provider(SpecificationProvider):

UNSAFE_PACKAGES = {'setuptools', 'distribute', 'pip'}

def __init__(self, repository: Repository):
self._repository = repository
def __init__(self, pool: Pool):
self._pool = pool

@property
def repository(self) -> Repository:
return self._repository
def pool(self) -> Pool:
return self._pool

@property
def name_for_explicit_dependency_source(self) -> str:
Expand All @@ -62,7 +62,7 @@ def search_for(self, dependency: Dependency) -> List[Package]:
if dependency.is_vcs():
return self.search_for_vcs(dependency)

packages = self._repository.find_packages(
packages = self._pool.find_packages(
dependency.name,
dependency.constraint
)
Expand Down Expand Up @@ -150,7 +150,7 @@ def dependencies_for(self, package: Package):
# Information should already be set
pass
else:
package = self._repository.package(package.name, package.version)
package = self._pool.package(package.name, package.version)

return [
r for r in package.requires
Expand Down
4 changes: 2 additions & 2 deletions poetry/puzzle/solver.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ def __init__(self, locked, io):
self._locked = locked
self._io = io

def solve(self, requested, repository, fixed=None) -> List[Operation]:
resolver = Resolver(Provider(repository), UI(self._io))
def solve(self, requested, pool, fixed=None) -> List[Operation]:
resolver = Resolver(Provider(pool), UI(self._io))

base = None
if fixed is not None:
Expand Down
1 change: 1 addition & 0 deletions poetry/repositories/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
from .pool import Pool
from .repository import Repository
Loading

0 comments on commit c3731a5

Please sign in to comment.