Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
python-poetry
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
open
python-poetry
Commits
c2c69a3c
Unverified
Commit
c2c69a3c
authored
Jul 13, 2022
by
David Hotham
Committed by
GitHub
Jul 13, 2022
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
every Repository is named (#5910)
* every Repository is named * assert repository not added to pool twice
parent
f97b3722
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
106 additions
and
87 deletions
+106
-87
src/poetry/console/commands/debug/resolve.py
+5
-6
src/poetry/console/commands/show.py
+28
-16
src/poetry/installation/installer.py
+11
-7
src/poetry/packages/locker.py
+2
-2
src/poetry/puzzle/provider.py
+4
-5
src/poetry/puzzle/solver.py
+7
-8
src/poetry/repositories/installed_repository.py
+3
-0
src/poetry/repositories/lockfile_repository.py
+3
-0
src/poetry/repositories/pool.py
+9
-12
src/poetry/repositories/repository.py
+2
-4
tests/conftest.py
+1
-1
tests/installation/test_installer.py
+1
-1
tests/installation/test_installer_old.py
+1
-1
tests/mixology/version_solver/conftest.py
+1
-1
tests/puzzle/test_provider.py
+1
-1
tests/puzzle/test_solver.py
+25
-20
tests/repositories/test_pool.py
+2
-2
No files found.
src/poetry/console/commands/debug/resolve.py
View file @
c2c69a3c
...
@@ -85,7 +85,7 @@ class DebugResolveCommand(InitCommand):
...
@@ -85,7 +85,7 @@ class DebugResolveCommand(InitCommand):
pool
=
self
.
poetry
.
pool
pool
=
self
.
poetry
.
pool
solver
=
Solver
(
package
,
pool
,
Repository
(),
Repository
()
,
self
.
io
)
solver
=
Solver
(
package
,
pool
,
[],
[]
,
self
.
io
)
ops
=
solver
.
solve
()
.
calculate_operations
()
ops
=
solver
.
solve
()
.
calculate_operations
()
...
@@ -98,13 +98,12 @@ class DebugResolveCommand(InitCommand):
...
@@ -98,13 +98,12 @@ class DebugResolveCommand(InitCommand):
show_command
.
init_styles
(
self
.
io
)
show_command
.
init_styles
(
self
.
io
)
packages
=
[
op
.
package
for
op
in
ops
]
packages
=
[
op
.
package
for
op
in
ops
]
repo
=
Repository
(
packages
=
packages
)
requires
=
package
.
all_requires
requires
=
package
.
all_requires
for
pkg
in
repo
.
packages
:
for
pkg
in
packages
:
for
require
in
requires
:
for
require
in
requires
:
if
pkg
.
name
==
require
.
name
:
if
pkg
.
name
==
require
.
name
:
show_command
.
display_package_tree
(
self
.
io
,
pkg
,
repo
)
show_command
.
display_package_tree
(
self
.
io
,
pkg
,
packages
)
break
break
return
0
return
0
...
@@ -116,13 +115,13 @@ class DebugResolveCommand(InitCommand):
...
@@ -116,13 +115,13 @@ class DebugResolveCommand(InitCommand):
if
self
.
option
(
"install"
):
if
self
.
option
(
"install"
):
env
=
EnvManager
(
self
.
poetry
)
.
get
()
env
=
EnvManager
(
self
.
poetry
)
.
get
()
pool
=
Pool
()
pool
=
Pool
()
locked_repository
=
Repository
()
locked_repository
=
Repository
(
"poetry-locked"
)
for
op
in
ops
:
for
op
in
ops
:
locked_repository
.
add_package
(
op
.
package
)
locked_repository
.
add_package
(
op
.
package
)
pool
.
add_repository
(
locked_repository
)
pool
.
add_repository
(
locked_repository
)
solver
=
Solver
(
package
,
pool
,
Repository
(),
Repository
()
,
NullIO
())
solver
=
Solver
(
package
,
pool
,
[],
[]
,
NullIO
())
with
solver
.
use_environment
(
env
):
with
solver
.
use_environment
(
env
):
ops
=
solver
.
solve
()
.
calculate_operations
()
ops
=
solver
.
solve
()
.
calculate_operations
()
...
...
src/poetry/console/commands/show.py
View file @
c2c69a3c
...
@@ -15,7 +15,6 @@ if TYPE_CHECKING:
...
@@ -15,7 +15,6 @@ if TYPE_CHECKING:
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.package
import
Package
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.repositories.installed_repository
import
InstalledRepository
from
poetry.repositories.repository
import
Repository
from
poetry.repositories.repository
import
Repository
...
@@ -74,7 +73,6 @@ lists all packages available."""
...
@@ -74,7 +73,6 @@ lists all packages available."""
from
poetry.puzzle.solver
import
Solver
from
poetry.puzzle.solver
import
Solver
from
poetry.repositories.installed_repository
import
InstalledRepository
from
poetry.repositories.installed_repository
import
InstalledRepository
from
poetry.repositories.pool
import
Pool
from
poetry.repositories.pool
import
Pool
from
poetry.repositories.repository
import
Repository
from
poetry.utils.helpers
import
get_package_version_display_string
from
poetry.utils.helpers
import
get_package_version_display_string
package
=
self
.
argument
(
"package"
)
package
=
self
.
argument
(
"package"
)
...
@@ -119,7 +117,7 @@ lists all packages available."""
...
@@ -119,7 +117,7 @@ lists all packages available."""
for
p
in
packages
:
for
p
in
packages
:
for
require
in
requires
:
for
require
in
requires
:
if
p
.
name
==
require
.
name
:
if
p
.
name
==
require
.
name
:
self
.
display_package_tree
(
self
.
io
,
p
,
locked_repo
)
self
.
display_package_tree
(
self
.
io
,
p
,
packages
)
break
break
return
0
return
0
...
@@ -131,8 +129,8 @@ lists all packages available."""
...
@@ -131,8 +129,8 @@ lists all packages available."""
solver
=
Solver
(
solver
=
Solver
(
root
,
root
,
pool
=
pool
,
pool
=
pool
,
installed
=
Repository
()
,
installed
=
[]
,
locked
=
locked_
repo
,
locked
=
locked_
packages
,
io
=
NullIO
(),
io
=
NullIO
(),
)
)
solver
.
provider
.
load_deferred
(
False
)
solver
.
provider
.
load_deferred
(
False
)
...
@@ -174,11 +172,11 @@ lists all packages available."""
...
@@ -174,11 +172,11 @@ lists all packages available."""
for
p
in
packages
:
for
p
in
packages
:
self
.
display_package_tree
(
self
.
display_package_tree
(
self
.
io
,
p
,
locked_
repo
,
why_package
=
pkg
self
.
io
,
p
,
locked_
packages
,
why_package
=
pkg
)
)
else
:
else
:
self
.
display_package_tree
(
self
.
io
,
pkg
,
locked_
repo
)
self
.
display_package_tree
(
self
.
io
,
pkg
,
locked_
packages
)
return
0
return
0
...
@@ -224,7 +222,9 @@ lists all packages available."""
...
@@ -224,7 +222,9 @@ lists all packages available."""
current_length
=
len
(
locked
.
pretty_name
)
current_length
=
len
(
locked
.
pretty_name
)
if
not
self
.
io
.
output
.
is_decorated
():
if
not
self
.
io
.
output
.
is_decorated
():
installed_status
=
self
.
get_installed_status
(
locked
,
installed_repo
)
installed_status
=
self
.
get_installed_status
(
locked
,
installed_repo
.
packages
)
if
installed_status
==
"not-installed"
:
if
installed_status
==
"not-installed"
:
current_length
+=
4
current_length
+=
4
...
@@ -300,7 +300,9 @@ lists all packages available."""
...
@@ -300,7 +300,9 @@ lists all packages available."""
color
=
"black;options=bold"
color
=
"black;options=bold"
else
:
else
:
installed_status
=
self
.
get_installed_status
(
locked
,
installed_repo
)
installed_status
=
self
.
get_installed_status
(
locked
,
installed_repo
.
packages
)
if
installed_status
==
"not-installed"
:
if
installed_status
==
"not-installed"
:
color
=
"red"
color
=
"red"
...
@@ -371,7 +373,7 @@ lists all packages available."""
...
@@ -371,7 +373,7 @@ lists all packages available."""
self
,
self
,
io
:
IO
,
io
:
IO
,
package
:
Package
,
package
:
Package
,
installed_
repo
:
Repository
,
installed_
packages
:
list
[
Package
]
,
why_package
:
Package
|
None
=
None
,
why_package
:
Package
|
None
=
None
,
)
->
None
:
)
->
None
:
io
.
write
(
f
"<c1>{package.pretty_name}</c1>"
)
io
.
write
(
f
"<c1>{package.pretty_name}</c1>"
)
...
@@ -408,14 +410,19 @@ lists all packages available."""
...
@@ -408,14 +410,19 @@ lists all packages available."""
packages_in_tree
=
[
package
.
name
,
dependency
.
name
]
packages_in_tree
=
[
package
.
name
,
dependency
.
name
]
self
.
_display_tree
(
self
.
_display_tree
(
io
,
dependency
,
installed_repo
,
packages_in_tree
,
tree_bar
,
level
+
1
io
,
dependency
,
installed_packages
,
packages_in_tree
,
tree_bar
,
level
+
1
,
)
)
def
_display_tree
(
def
_display_tree
(
self
,
self
,
io
:
IO
,
io
:
IO
,
dependency
:
Dependency
,
dependency
:
Dependency
,
installed_
repo
:
Repository
,
installed_
packages
:
list
[
Package
]
,
packages_in_tree
:
list
[
str
],
packages_in_tree
:
list
[
str
],
previous_tree_bar
:
str
=
"├"
,
previous_tree_bar
:
str
=
"├"
,
level
:
int
=
1
,
level
:
int
=
1
,
...
@@ -423,7 +430,7 @@ lists all packages available."""
...
@@ -423,7 +430,7 @@ lists all packages available."""
previous_tree_bar
=
previous_tree_bar
.
replace
(
"├"
,
"│"
)
previous_tree_bar
=
previous_tree_bar
.
replace
(
"├"
,
"│"
)
dependencies
=
[]
dependencies
=
[]
for
package
in
installed_
repo
.
packages
:
for
package
in
installed_packages
:
if
package
.
name
==
dependency
.
name
:
if
package
.
name
==
dependency
.
name
:
dependencies
=
package
.
requires
dependencies
=
package
.
requires
...
@@ -459,7 +466,12 @@ lists all packages available."""
...
@@ -459,7 +466,12 @@ lists all packages available."""
current_tree
.
append
(
dependency
.
name
)
current_tree
.
append
(
dependency
.
name
)
self
.
_display_tree
(
self
.
_display_tree
(
io
,
dependency
,
installed_repo
,
current_tree
,
tree_bar
,
level
+
1
io
,
dependency
,
installed_packages
,
current_tree
,
tree_bar
,
level
+
1
,
)
)
def
_write_tree_line
(
self
,
io
:
IO
,
line
:
str
)
->
None
:
def
_write_tree_line
(
self
,
io
:
IO
,
line
:
str
)
->
None
:
...
@@ -517,9 +529,9 @@ lists all packages available."""
...
@@ -517,9 +529,9 @@ lists all packages available."""
return
"update-possible"
return
"update-possible"
def
get_installed_status
(
def
get_installed_status
(
self
,
locked
:
Package
,
installed_
repo
:
InstalledRepository
self
,
locked
:
Package
,
installed_
packages
:
list
[
Package
]
)
->
str
:
)
->
str
:
for
package
in
installed_
repo
.
packages
:
for
package
in
installed_packages
:
if
locked
.
name
==
package
.
name
:
if
locked
.
name
==
package
.
name
:
return
"installed"
return
"installed"
...
...
src/poetry/installation/installer.py
View file @
c2c69a3c
...
@@ -193,8 +193,8 @@ class Installer:
...
@@ -193,8 +193,8 @@ class Installer:
solver
=
Solver
(
solver
=
Solver
(
self
.
_package
,
self
.
_package
,
self
.
_pool
,
self
.
_pool
,
locked_repository
,
locked_repository
.
packages
,
locked_repository
,
locked_repository
.
packages
,
self
.
_io
,
self
.
_io
,
)
)
...
@@ -213,7 +213,7 @@ class Installer:
...
@@ -213,7 +213,7 @@ class Installer:
def
_do_install
(
self
)
->
int
:
def
_do_install
(
self
)
->
int
:
from
poetry.puzzle.solver
import
Solver
from
poetry.puzzle.solver
import
Solver
locked_repository
=
Repository
()
locked_repository
=
Repository
(
"poetry-locked"
)
if
self
.
_update
:
if
self
.
_update
:
if
self
.
_locker
.
is_locked
()
and
not
self
.
_lock
:
if
self
.
_locker
.
is_locked
()
and
not
self
.
_lock
:
locked_repository
=
self
.
_locker
.
locked_repository
()
locked_repository
=
self
.
_locker
.
locked_repository
()
...
@@ -233,8 +233,8 @@ class Installer:
...
@@ -233,8 +233,8 @@ class Installer:
solver
=
Solver
(
solver
=
Solver
(
self
.
_package
,
self
.
_package
,
self
.
_pool
,
self
.
_pool
,
self
.
_installed_repository
,
self
.
_installed_repository
.
packages
,
locked_repository
,
locked_repository
.
packages
,
self
.
_io
,
self
.
_io
,
)
)
...
@@ -291,7 +291,7 @@ class Installer:
...
@@ -291,7 +291,7 @@ class Installer:
# Making a new repo containing the packages
# Making a new repo containing the packages
# newly resolved and the ones from the current lock file
# newly resolved and the ones from the current lock file
repo
=
Repository
()
repo
=
Repository
(
"poetry-repo"
)
for
package
in
lockfile_repo
.
packages
+
locked_repository
.
packages
:
for
package
in
lockfile_repo
.
packages
+
locked_repository
.
packages
:
if
not
package
.
is_direct_origin
()
and
not
repo
.
has_package
(
package
):
if
not
package
.
is_direct_origin
()
and
not
repo
.
has_package
(
package
):
repo
.
add_package
(
package
)
repo
.
add_package
(
package
)
...
@@ -299,7 +299,11 @@ class Installer:
...
@@ -299,7 +299,11 @@ class Installer:
pool
.
add_repository
(
repo
)
pool
.
add_repository
(
repo
)
solver
=
Solver
(
solver
=
Solver
(
root
,
pool
,
self
.
_installed_repository
,
locked_repository
,
NullIO
()
root
,
pool
,
self
.
_installed_repository
.
packages
,
locked_repository
.
packages
,
NullIO
(),
)
)
# Everything is resolved at this point, so we no longer need
# Everything is resolved at this point, so we no longer need
# to load deferred dependencies (i.e. VCS, URL and path dependencies)
# to load deferred dependencies (i.e. VCS, URL and path dependencies)
...
...
src/poetry/packages/locker.py
View file @
c2c69a3c
...
@@ -102,10 +102,10 @@ class Locker:
...
@@ -102,10 +102,10 @@ class Locker:
from
poetry.repositories
import
Repository
from
poetry.repositories
import
Repository
if
not
self
.
is_locked
():
if
not
self
.
is_locked
():
return
Repository
()
return
Repository
(
"poetry-locked"
)
lock_data
=
self
.
lock_data
lock_data
=
self
.
lock_data
packages
=
Repository
()
packages
=
Repository
(
"poetry-locked"
)
locked_packages
=
cast
(
"list[dict[str, Any]]"
,
lock_data
[
"package"
])
locked_packages
=
cast
(
"list[dict[str, Any]]"
,
lock_data
[
"package"
])
if
not
locked_packages
:
if
not
locked_packages
:
...
...
src/poetry/puzzle/provider.py
View file @
c2c69a3c
...
@@ -53,7 +53,6 @@ if TYPE_CHECKING:
...
@@ -53,7 +53,6 @@ if TYPE_CHECKING:
from
poetry.core.version.markers
import
BaseMarker
from
poetry.core.version.markers
import
BaseMarker
from
poetry.repositories
import
Pool
from
poetry.repositories
import
Pool
from
poetry.repositories
import
Repository
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
Env
...
@@ -127,7 +126,7 @@ class Provider:
...
@@ -127,7 +126,7 @@ class Provider:
pool
:
Pool
,
pool
:
Pool
,
io
:
IO
,
io
:
IO
,
env
:
Env
|
None
=
None
,
env
:
Env
|
None
=
None
,
installed
:
Repository
|
None
=
None
,
installed
:
list
[
Package
]
|
None
=
None
,
)
->
None
:
)
->
None
:
self
.
_package
=
package
self
.
_package
=
package
self
.
_pool
=
pool
self
.
_pool
=
pool
...
@@ -140,7 +139,7 @@ class Provider:
...
@@ -140,7 +139,7 @@ class Provider:
self
.
_deferred_cache
:
dict
[
Dependency
,
Package
]
=
{}
self
.
_deferred_cache
:
dict
[
Dependency
,
Package
]
=
{}
self
.
_load_deferred
=
True
self
.
_load_deferred
=
True
self
.
_source_root
:
Path
|
None
=
None
self
.
_source_root
:
Path
|
None
=
None
self
.
_installed
=
installed
self
.
_installed
_packages
=
installed
if
installed
is
not
None
else
[]
@property
@property
def
pool
(
self
)
->
Pool
:
def
pool
(
self
)
->
Pool
:
...
@@ -201,7 +200,7 @@ class Provider:
...
@@ -201,7 +200,7 @@ class Provider:
This is useful when dealing with packages that are under development, not
This is useful when dealing with packages that are under development, not
published on package sources and/or only available via system installations.
published on package sources and/or only available via system installations.
"""
"""
if
not
self
.
_installed
:
if
not
self
.
_installed
_packages
:
return
[]
return
[]
logger
.
debug
(
logger
.
debug
(
...
@@ -210,7 +209,7 @@ class Provider:
...
@@ -210,7 +209,7 @@ class Provider:
)
)
packages
=
[
packages
=
[
package
package
for
package
in
self
.
_installed
.
packages
for
package
in
self
.
_installed
_
packages
if
package
.
provides
(
specification
)
if
package
.
provides
(
specification
)
]
]
logger
.
debug
(
logger
.
debug
(
...
...
src/poetry/puzzle/solver.py
View file @
c2c69a3c
...
@@ -29,7 +29,6 @@ if TYPE_CHECKING:
...
@@ -29,7 +29,6 @@ if TYPE_CHECKING:
from
poetry.puzzle.transaction
import
Transaction
from
poetry.puzzle.transaction
import
Transaction
from
poetry.repositories
import
Pool
from
poetry.repositories
import
Pool
from
poetry.repositories
import
Repository
from
poetry.utils.env
import
Env
from
poetry.utils.env
import
Env
...
@@ -38,15 +37,15 @@ class Solver:
...
@@ -38,15 +37,15 @@ class Solver:
self
,
self
,
package
:
ProjectPackage
,
package
:
ProjectPackage
,
pool
:
Pool
,
pool
:
Pool
,
installed
:
Repository
,
installed
:
list
[
Package
]
,
locked
:
Repository
,
locked
:
list
[
Package
]
,
io
:
IO
,
io
:
IO
,
provider
:
Provider
|
None
=
None
,
provider
:
Provider
|
None
=
None
,
)
->
None
:
)
->
None
:
self
.
_package
=
package
self
.
_package
=
package
self
.
_pool
=
pool
self
.
_pool
=
pool
self
.
_installed
=
installed
self
.
_installed
_packages
=
installed
self
.
_locked
=
locked
self
.
_locked
_packages
=
locked
self
.
_io
=
io
self
.
_io
=
io
if
provider
is
None
:
if
provider
is
None
:
...
@@ -85,9 +84,9 @@ class Solver:
...
@@ -85,9 +84,9 @@ class Solver:
)
)
return
Transaction
(
return
Transaction
(
self
.
_locked
.
packages
,
self
.
_locked
_
packages
,
list
(
zip
(
packages
,
depths
)),
list
(
zip
(
packages
,
depths
)),
installed_packages
=
self
.
_installed
.
packages
,
installed_packages
=
self
.
_installed
_
packages
,
root_package
=
self
.
_package
,
root_package
=
self
.
_package
,
)
)
...
@@ -128,7 +127,7 @@ class Solver:
...
@@ -128,7 +127,7 @@ class Solver:
self
.
_overrides
.
append
(
self
.
_provider
.
_overrides
)
self
.
_overrides
.
append
(
self
.
_provider
.
_overrides
)
locked
:
dict
[
str
,
list
[
DependencyPackage
]]
=
defaultdict
(
list
)
locked
:
dict
[
str
,
list
[
DependencyPackage
]]
=
defaultdict
(
list
)
for
package
in
self
.
_locked
.
packages
:
for
package
in
self
.
_locked
_
packages
:
locked
[
package
.
name
]
.
append
(
locked
[
package
.
name
]
.
append
(
DependencyPackage
(
package
.
to_dependency
(),
package
)
DependencyPackage
(
package
.
to_dependency
(),
package
)
)
)
...
...
src/poetry/repositories/installed_repository.py
View file @
c2c69a3c
...
@@ -33,6 +33,9 @@ logger = logging.getLogger(__name__)
...
@@ -33,6 +33,9 @@ logger = logging.getLogger(__name__)
class
InstalledRepository
(
Repository
):
class
InstalledRepository
(
Repository
):
def
__init__
(
self
)
->
None
:
super
()
.
__init__
(
"poetry-installed"
)
@classmethod
@classmethod
def
get_package_paths
(
cls
,
env
:
Env
,
name
:
str
)
->
set
[
Path
]:
def
get_package_paths
(
cls
,
env
:
Env
,
name
:
str
)
->
set
[
Path
]:
"""
"""
...
...
src/poetry/repositories/lockfile_repository.py
View file @
c2c69a3c
...
@@ -15,6 +15,9 @@ class LockfileRepository(Repository):
...
@@ -15,6 +15,9 @@ class LockfileRepository(Repository):
but also by source type, url, etc.
but also by source type, url, etc.
"""
"""
def
__init__
(
self
)
->
None
:
super
()
.
__init__
(
"poetry-lockfile"
)
def
has_package
(
self
,
package
:
Package
)
->
bool
:
def
has_package
(
self
,
package
:
Package
)
->
bool
:
return
any
(
p
==
package
for
p
in
self
.
packages
)
return
any
(
p
==
package
for
p
in
self
.
packages
)
...
...
src/poetry/repositories/pool.py
View file @
c2c69a3c
...
@@ -17,12 +17,12 @@ class Pool(Repository):
...
@@ -17,12 +17,12 @@ class Pool(Repository):
repositories
:
list
[
Repository
]
|
None
=
None
,
repositories
:
list
[
Repository
]
|
None
=
None
,
ignore_repository_names
:
bool
=
False
,
ignore_repository_names
:
bool
=
False
,
)
->
None
:
)
->
None
:
super
()
.
__init__
()
super
()
.
__init__
(
"poetry-pool"
)
if
repositories
is
None
:
if
repositories
is
None
:
repositories
=
[]
repositories
=
[]
self
.
_lookup
:
dict
[
str
|
None
,
int
]
=
{}
self
.
_lookup
:
dict
[
str
,
int
]
=
{}
self
.
_repositories
:
list
[
Repository
]
=
[]
self
.
_repositories
:
list
[
Repository
]
=
[]
self
.
_default
=
False
self
.
_default
=
False
self
.
_has_primary_repositories
=
False
self
.
_has_primary_repositories
=
False
...
@@ -33,8 +33,6 @@ class Pool(Repository):
...
@@ -33,8 +33,6 @@ class Pool(Repository):
self
.
_ignore_repository_names
=
ignore_repository_names
self
.
_ignore_repository_names
=
ignore_repository_names
super
()
.
__init__
()
@property
@property
def
repositories
(
self
)
->
list
[
Repository
]:
def
repositories
(
self
)
->
list
[
Repository
]:
return
self
.
_repositories
return
self
.
_repositories
...
@@ -49,11 +47,11 @@ class Pool(Repository):
...
@@ -49,11 +47,11 @@ class Pool(Repository):
return
name
.
lower
()
in
self
.
_lookup
return
name
.
lower
()
in
self
.
_lookup
def
repository
(
self
,
name
:
str
)
->
Repository
:
def
repository
(
self
,
name
:
str
)
->
Repository
:
if
name
is
not
None
:
name
=
name
.
lower
()
name
=
name
.
lower
()
if
name
in
self
.
_lookup
:
lookup
=
self
.
_lookup
.
get
(
name
)
return
self
.
_repositories
[
self
.
_lookup
[
name
]]
if
lookup
is
not
None
:
return
self
.
_repositories
[
lookup
]
raise
ValueError
(
f
'Repository "{name}" does not exist.'
)
raise
ValueError
(
f
'Repository "{name}" does not exist.'
)
...
@@ -63,11 +61,10 @@ class Pool(Repository):
...
@@ -63,11 +61,10 @@ class Pool(Repository):
"""
"""
Adds a repository to the pool.
Adds a repository to the pool.
"""
"""
# FIXME: surely it's a problem that the repository name can be None here?
repository_name
=
repository
.
name
.
lower
()
# All nameless repositories will collide in self._lookup.
if
repository_name
in
self
.
_lookup
:
repository_name
=
(
raise
ValueError
(
f
"{repository_name} already added"
)
repository
.
name
.
lower
()
if
repository
.
name
is
not
None
else
None
)
if
default
:
if
default
:
if
self
.
has_default
():
if
self
.
has_default
():
raise
ValueError
(
"Only one repository can be the default"
)
raise
ValueError
(
"Only one repository can be the default"
)
...
...
src/poetry/repositories/repository.py
View file @
c2c69a3c
...
@@ -18,9 +18,7 @@ if TYPE_CHECKING:
...
@@ -18,9 +18,7 @@ if TYPE_CHECKING:
class
Repository
:
class
Repository
:
def
__init__
(
def
__init__
(
self
,
name
:
str
,
packages
:
list
[
Package
]
|
None
=
None
)
->
None
:
self
,
name
:
str
|
None
=
None
,
packages
:
list
[
Package
]
|
None
=
None
)
->
None
:
self
.
_name
=
name
self
.
_name
=
name
self
.
_packages
:
list
[
Package
]
=
[]
self
.
_packages
:
list
[
Package
]
=
[]
...
@@ -28,7 +26,7 @@ class Repository:
...
@@ -28,7 +26,7 @@ class Repository:
self
.
add_package
(
package
)
self
.
add_package
(
package
)
@property
@property
def
name
(
self
)
->
str
|
None
:
def
name
(
self
)
->
str
:
return
self
.
_name
return
self
.
_name
@property
@property
...
...
tests/conftest.py
View file @
c2c69a3c
...
@@ -333,7 +333,7 @@ def tmp_venv(tmp_dir: str) -> Iterator[VirtualEnv]:
...
@@ -333,7 +333,7 @@ def tmp_venv(tmp_dir: str) -> Iterator[VirtualEnv]:
@pytest.fixture
@pytest.fixture
def
installed
()
->
Repository
:
def
installed
()
->
Repository
:
return
Repository
()
return
Repository
(
"installed"
)
@pytest.fixture
(
scope
=
"session"
)
@pytest.fixture
(
scope
=
"session"
)
...
...
tests/installation/test_installer.py
View file @
c2c69a3c
...
@@ -152,7 +152,7 @@ def package() -> ProjectPackage:
...
@@ -152,7 +152,7 @@ def package() -> ProjectPackage:
@pytest.fixture
()
@pytest.fixture
()
def
repo
()
->
Repository
:
def
repo
()
->
Repository
:
return
Repository
()
return
Repository
(
"repo"
)
@pytest.fixture
()
@pytest.fixture
()
...
...
tests/installation/test_installer_old.py
View file @
c2c69a3c
...
@@ -105,7 +105,7 @@ def package() -> ProjectPackage:
...
@@ -105,7 +105,7 @@ def package() -> ProjectPackage:
@pytest.fixture
()
@pytest.fixture
()
def
repo
()
->
Repository
:
def
repo
()
->
Repository
:
return
Repository
()
return
Repository
(
"repo"
)
@pytest.fixture
()
@pytest.fixture
()
...
...
tests/mixology/version_solver/conftest.py
View file @
c2c69a3c
...
@@ -24,7 +24,7 @@ class Provider(BaseProvider):
...
@@ -24,7 +24,7 @@ class Provider(BaseProvider):
@pytest.fixture
@pytest.fixture
def
repo
()
->
Repository
:
def
repo
()
->
Repository
:
return
Repository
()
return
Repository
(
"repo"
)
@pytest.fixture
@pytest.fixture
...
...
tests/puzzle/test_provider.py
View file @
c2c69a3c
...
@@ -39,7 +39,7 @@ def root() -> ProjectPackage:
...
@@ -39,7 +39,7 @@ def root() -> ProjectPackage:
@pytest.fixture
@pytest.fixture
def
repository
()
->
Repository
:
def
repository
()
->
Repository
:
return
Repository
()
return
Repository
(
"repo"
)
@pytest.fixture
@pytest.fixture
...
...
tests/puzzle/test_solver.py
View file @
c2c69a3c
...
@@ -65,12 +65,12 @@ def installed() -> InstalledRepository:
...
@@ -65,12 +65,12 @@ def installed() -> InstalledRepository:
@pytest.fixture
()
@pytest.fixture
()
def
locked
()
->
Repository
:
def
locked
()
->
Repository
:
return
Repository
()
return
Repository
(
"locked"
)
@pytest.fixture
()
@pytest.fixture
()
def
repo
()
->
Repository
:
def
repo
()
->
Repository
:
return
Repository
()
return
Repository
(
"repo"
)
@pytest.fixture
()
@pytest.fixture
()
...
@@ -89,10 +89,10 @@ def solver(
...
@@ -89,10 +89,10 @@ def solver(
return
Solver
(
return
Solver
(
package
,
package
,
pool
,
pool
,
installed
,
installed
.
packages
,
locked
,
locked
.
packages
,
io
,
io
,
provider
=
Provider
(
package
,
pool
,
io
,
installed
=
installed
),
provider
=
Provider
(
package
,
pool
,
io
,
installed
=
installed
.
packages
),
)
)
...
@@ -2019,7 +2019,7 @@ def test_solver_does_not_raise_conflict_for_locked_conditional_dependencies(
...
@@ -2019,7 +2019,7 @@ def test_solver_does_not_raise_conflict_for_locked_conditional_dependencies(
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_a
)
repo
.
add_package
(
package_b
)
repo
.
add_package
(
package_b
)
solver
.
_locked
=
Repository
([
package_a
])
solver
.
_locked
=
Repository
(
"locked"
,
[
package_a
])
transaction
=
solver
.
solve
(
use_latest
=
[
package_b
.
name
])
transaction
=
solver
.
solve
(
use_latest
=
[
package_b
.
name
])
check_solver_result
(
check_solver_result
(
...
@@ -2298,7 +2298,12 @@ def test_solver_can_resolve_directory_dependencies_nested_editable(
...
@@ -2298,7 +2298,12 @@ def test_solver_can_resolve_directory_dependencies_nested_editable(
package
=
poetry
.
package
package
=
poetry
.
package
solver
=
Solver
(
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
,
provider
=
Provider
(
package
,
pool
,
io
)
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
,
provider
=
Provider
(
package
,
pool
,
io
),
)
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2539,7 +2544,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_dists(
...
@@ -2539,7 +2544,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_dists(
repo
=
MockLegacyRepository
()
repo
=
MockLegacyRepository
()
pool
=
Pool
([
repo
])
pool
=
Pool
([
repo
])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"isort"
,
"4.3.4"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"isort"
,
"4.3.4"
))
...
@@ -2586,7 +2591,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_
...
@@ -2586,7 +2591,7 @@ def test_solver_can_solve_with_legacy_repository_using_proper_python_compatible_
repo
=
MockLegacyRepository
()
repo
=
MockLegacyRepository
()
pool
=
Pool
([
repo
])
pool
=
Pool
([
repo
])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"isort"
,
"4.3.4"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"isort"
,
"4.3.4"
))
...
@@ -2620,7 +2625,7 @@ def test_solver_skips_invalid_versions(
...
@@ -2620,7 +2625,7 @@ def test_solver_skips_invalid_versions(
repo
=
MockPyPIRepository
()
repo
=
MockPyPIRepository
()
pool
=
Pool
([
repo
])
pool
=
Pool
([
repo
])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
package
.
add_dependency
(
Factory
.
create_dependency
(
"trackpy"
,
"^0.4"
))
package
.
add_dependency
(
Factory
.
create_dependency
(
"trackpy"
,
"^0.4"
))
...
@@ -2667,7 +2672,7 @@ def test_solver_chooses_most_recent_version_amongst_repositories(
...
@@ -2667,7 +2672,7 @@ def test_solver_chooses_most_recent_version_amongst_repositories(
repo
=
MockLegacyRepository
()
repo
=
MockLegacyRepository
()
pool
=
Pool
([
repo
,
MockPyPIRepository
()])
pool
=
Pool
([
repo
,
MockPyPIRepository
()])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2693,7 +2698,7 @@ def test_solver_chooses_from_correct_repository_if_forced(
...
@@ -2693,7 +2698,7 @@ def test_solver_chooses_from_correct_repository_if_forced(
repo
=
MockLegacyRepository
()
repo
=
MockLegacyRepository
()
pool
=
Pool
([
repo
,
MockPyPIRepository
()])
pool
=
Pool
([
repo
,
MockPyPIRepository
()])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2728,13 +2733,13 @@ def test_solver_chooses_from_correct_repository_if_forced_and_transitive_depende
...
@@ -2728,13 +2733,13 @@ def test_solver_chooses_from_correct_repository_if_forced_and_transitive_depende
Factory
.
create_dependency
(
"tomlkit"
,
{
"version"
:
"^0.5"
,
"source"
:
"legacy"
})
Factory
.
create_dependency
(
"tomlkit"
,
{
"version"
:
"^0.5"
,
"source"
:
"legacy"
})
)
)
repo
=
Repository
()
repo
=
Repository
(
"repo"
)
foo
=
get_package
(
"foo"
,
"1.0.0"
)
foo
=
get_package
(
"foo"
,
"1.0.0"
)
foo
.
add_dependency
(
Factory
.
create_dependency
(
"tomlkit"
,
"^0.5.0"
))
foo
.
add_dependency
(
Factory
.
create_dependency
(
"tomlkit"
,
"^0.5.0"
))
repo
.
add_package
(
foo
)
repo
.
add_package
(
foo
)
pool
=
Pool
([
MockLegacyRepository
(),
repo
,
MockPyPIRepository
()])
pool
=
Pool
([
MockLegacyRepository
(),
repo
,
MockPyPIRepository
()])
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2774,7 +2779,7 @@ def test_solver_does_not_choose_from_secondary_repository_by_default(
...
@@ -2774,7 +2779,7 @@ def test_solver_does_not_choose_from_secondary_repository_by_default(
pool
.
add_repository
(
MockPyPIRepository
(),
secondary
=
True
)
pool
.
add_repository
(
MockPyPIRepository
(),
secondary
=
True
)
pool
.
add_repository
(
MockLegacyRepository
())
pool
.
add_repository
(
MockLegacyRepository
())
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2826,7 +2831,7 @@ def test_solver_chooses_from_secondary_if_explicit(
...
@@ -2826,7 +2831,7 @@ def test_solver_chooses_from_secondary_if_explicit(
pool
.
add_repository
(
MockPyPIRepository
(),
secondary
=
True
)
pool
.
add_repository
(
MockPyPIRepository
(),
secondary
=
True
)
pool
.
add_repository
(
MockLegacyRepository
())
pool
.
add_repository
(
MockLegacyRepository
())
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2883,7 +2888,7 @@ def test_solver_discards_packages_with_empty_markers(
...
@@ -2883,7 +2888,7 @@ def test_solver_discards_packages_with_empty_markers(
repo
.
add_package
(
package_b
)
repo
.
add_package
(
package_b
)
repo
.
add_package
(
package_c
)
repo
.
add_package
(
package_c
)
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -2989,7 +2994,7 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
...
@@ -2989,7 +2994,7 @@ def test_solver_does_not_fail_with_locked_git_and_non_git_dependencies(
repo
.
add_package
(
get_package
(
"a"
,
"1.2.3"
))
repo
.
add_package
(
get_package
(
"a"
,
"1.2.3"
))
repo
.
add_package
(
Package
(
"pendulum"
,
"2.1.2"
))
repo
.
add_package
(
Package
(
"pendulum"
,
"2.1.2"
))
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
transaction
=
solver
.
solve
()
transaction
=
solver
.
solve
()
...
@@ -3067,7 +3072,7 @@ def test_solver_synchronize_single(
...
@@ -3067,7 +3072,7 @@ def test_solver_synchronize_single(
locked
:
Repository
,
locked
:
Repository
,
io
:
NullIO
,
io
:
NullIO
,
):
):
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
package_a
=
get_package
(
"a"
,
"1.0"
)
package_a
=
get_package
(
"a"
,
"1.0"
)
installed
.
add_package
(
package_a
)
installed
.
add_package
(
package_a
)
...
@@ -3086,7 +3091,7 @@ def test_solver_with_synchronization_keeps_critical_package(
...
@@ -3086,7 +3091,7 @@ def test_solver_with_synchronization_keeps_critical_package(
locked
:
Repository
,
locked
:
Repository
,
io
:
NullIO
,
io
:
NullIO
,
):
):
solver
=
Solver
(
package
,
pool
,
installed
,
locked
,
io
)
solver
=
Solver
(
package
,
pool
,
installed
.
packages
,
locked
.
packages
,
io
)
package_pip
=
get_package
(
"setuptools"
,
"1.0"
)
package_pip
=
get_package
(
"setuptools"
,
"1.0"
)
installed
.
add_package
(
package_pip
)
installed
.
add_package
(
package_pip
)
...
...
tests/repositories/test_pool.py
View file @
c2c69a3c
...
@@ -10,7 +10,7 @@ from poetry.repositories.legacy_repository import LegacyRepository
...
@@ -10,7 +10,7 @@ from poetry.repositories.legacy_repository import LegacyRepository
def
test_pool_raises_package_not_found_when_no_package_is_found
():
def
test_pool_raises_package_not_found_when_no_package_is_found
():
pool
=
Pool
()
pool
=
Pool
()
pool
.
add_repository
(
Repository
())
pool
.
add_repository
(
Repository
(
"repo"
))
with
pytest
.
raises
(
PackageNotFound
):
with
pytest
.
raises
(
PackageNotFound
):
pool
.
package
(
"foo"
,
"1.0.0"
)
pool
.
package
(
"foo"
,
"1.0.0"
)
...
@@ -24,7 +24,7 @@ def test_pool():
...
@@ -24,7 +24,7 @@ def test_pool():
def
test_pool_with_initial_repositories
():
def
test_pool_with_initial_repositories
():
repo
=
Repository
()
repo
=
Repository
(
"repo"
)
pool
=
Pool
([
repo
])
pool
=
Pool
([
repo
])
assert
len
(
pool
.
repositories
)
==
1
assert
len
(
pool
.
repositories
)
==
1
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment