Skip to content

Commit

Permalink
Fixes custom repositories with wrong precedence
Browse files Browse the repository at this point in the history
  • Loading branch information
linw1995 committed Jul 16, 2020
1 parent b19873a commit ef9501a
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 1 deletion.
2 changes: 1 addition & 1 deletion poetry/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ def create_poetry(
# Always put PyPI last to prefer private repositories
# but only if we have no other default source
if not poetry.pool.has_default():
poetry.pool.add_repository(PyPiRepository(), True)
poetry.pool.add_repository(PyPiRepository(), default=False)
else:
if io.is_debug():
io.write_line("Deactivating the PyPI repository")
Expand Down
2 changes: 2 additions & 0 deletions tests/fixtures/with_custom_source/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
My Package
==========
60 changes: 60 additions & 0 deletions tests/fixtures/with_custom_source/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
[tool.poetry]
name = "my-package"
version = "1.2.3"
description = "Some description."
authors = [
"Sébastien Eustace <sebastien@eustace.io>"
]
license = "MIT"

readme = "README.rst"

homepage = "https://python-poetry.org"
repository = "https://github.com/python-poetry/poetry"
documentation = "https://python-poetry.org/docs"

keywords = ["packaging", "dependency", "poetry"]

classifiers = [
"Topic :: Software Development :: Build Tools",
"Topic :: Software Development :: Libraries :: Python Modules"
]

# Requirements
[tool.poetry.dependencies]
python = "~2.7 || ^3.6"
cleo = "^0.6"
pendulum = { git = "https://github.com/sdispater/pendulum.git", branch = "2.0" }
requests = { version = "^2.18", optional = true, extras=[ "security" ] }
pathlib2 = { version = "^2.2", python = "~2.7" }

orator = { version = "^0.9", optional = true }

# File dependency
demo = { path = "../distributions/demo-0.1.0-py2.py3-none-any.whl" }

# Dir dependency with setup.py
my-package = { path = "../project_with_setup/" }

# Dir dependency with pyproject.toml
simple-project = { path = "../simple_project/" }


[tool.poetry.extras]
db = [ "orator" ]

[tool.poetry.dev-dependencies]
pytest = "~3.4"


[tool.poetry.scripts]
my-script = "my_package:main"


[tool.poetry.plugins."blogtool.parsers"]
".rst" = "some_module::SomeClass"


[[tool.poetry.source]]
name = "foo"
url = "https://foo.bar/simple/"
8 changes: 8 additions & 0 deletions tests/test_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,14 @@ def test_poetry_with_two_default_sources():
assert "Only one repository can be the default" == str(e.value)


def test_poetry_with_custom_source():
poetry = Factory().create_poetry(fixtures_dir / "with_custom_source")

assert ["foo", "PyPI"] == [
repository.name for repository in poetry.pool.repositories
]


def test_validate():
complete = TomlFile(fixtures_dir / "complete.toml")
content = complete.read()["tool"]["poetry"]
Expand Down

1 comment on commit ef9501a

@linw1995
Copy link
Owner Author

@linw1995 linw1995 commented on ef9501a Jul 16, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It will work well with a secondary repository. The PyPI repository will insert before the secondary repository as the custom repository does. And PyPI is the last one to be inserted after the custom repositories. So their precedences will be correct.

Please sign in to comment.