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
f3439dad
Commit
f3439dad
authored
May 19, 2022
by
Arun Babu Neelicattu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mixology: ensure dependency cache respects source
parent
b7acf884
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
71 additions
and
4 deletions
+71
-4
src/poetry/mixology/version_solver.py
+12
-4
tests/mixology/version_solver/test_dependency_cache.py
+59
-0
No files found.
src/poetry/mixology/version_solver.py
View file @
f3439dad
...
...
@@ -41,18 +41,26 @@ class DependencyCache:
def
__init__
(
self
,
provider
:
Provider
)
->
None
:
self
.
provider
=
provider
self
.
cache
:
dict
[
str
,
list
[
DependencyPackage
]]
=
{}
self
.
cache
:
dict
[
tuple
[
str
,
str
|
None
,
str
|
None
,
str
|
None
],
list
[
DependencyPackage
]
]
=
{}
@functools.lru_cache
(
maxsize
=
128
)
def
search_for
(
self
,
dependency
:
Dependency
)
->
list
[
DependencyPackage
]:
complete_name
=
dependency
.
complete_name
packages
=
self
.
cache
.
get
(
complete_name
)
key
=
(
dependency
.
complete_name
,
dependency
.
source_type
,
dependency
.
source_url
,
dependency
.
source_reference
,
)
packages
=
self
.
cache
.
get
(
key
)
if
packages
is
None
:
packages
=
self
.
provider
.
search_for
(
dependency
)
else
:
packages
=
[
p
for
p
in
packages
if
dependency
.
constraint
.
allows
(
p
.
version
)]
self
.
cache
[
complete_name
]
=
packages
self
.
cache
[
key
]
=
packages
return
packages
...
...
tests/mixology/version_solver/test_dependency_cache.py
0 → 100644
View file @
f3439dad
from
__future__
import
annotations
from
typing
import
TYPE_CHECKING
from
poetry.factory
import
Factory
from
poetry.mixology.version_solver
import
DependencyCache
from
tests.mixology.helpers
import
add_to_repo
if
TYPE_CHECKING
:
from
poetry.core.packages.project_package
import
ProjectPackage
from
poetry.repositories
import
Repository
from
tests.mixology.version_solver.conftest
import
Provider
def
test_solver_dependency_cache_respects_source_type
(
root
:
ProjectPackage
,
provider
:
Provider
,
repo
:
Repository
):
dependency_pypi
=
Factory
.
create_dependency
(
"demo"
,
">=0.1.0"
)
dependency_git
=
Factory
.
create_dependency
(
"demo"
,
{
"git"
:
"https://github.com/demo/demo.git"
},
groups
=
[
"dev"
]
)
root
.
add_dependency
(
dependency_pypi
)
root
.
add_dependency
(
dependency_git
)
add_to_repo
(
repo
,
"demo"
,
"1.0.0"
)
cache
=
DependencyCache
(
provider
)
cache
.
search_for
.
cache_clear
()
# ensure cache was never hit for both calls
cache
.
search_for
(
dependency_pypi
)
cache
.
search_for
(
dependency_git
)
assert
not
cache
.
search_for
.
cache_info
()
.
hits
packages_pypi
=
cache
.
search_for
(
dependency_pypi
)
packages_git
=
cache
.
search_for
(
dependency_git
)
assert
cache
.
search_for
.
cache_info
()
.
hits
==
2
assert
cache
.
search_for
.
cache_info
()
.
currsize
==
2
assert
len
(
packages_pypi
)
==
len
(
packages_git
)
==
1
assert
packages_pypi
!=
packages_git
package_pypi
=
packages_pypi
[
0
]
package_git
=
packages_git
[
0
]
assert
package_pypi
.
package
.
name
==
dependency_pypi
.
name
assert
package_pypi
.
package
.
version
.
text
==
"1.0.0"
assert
package_git
.
package
.
name
==
dependency_git
.
name
assert
package_git
.
package
.
version
.
text
==
"0.1.2"
assert
package_git
.
package
.
source_type
==
dependency_git
.
source_type
assert
package_git
.
package
.
source_url
==
dependency_git
.
source_url
assert
(
package_git
.
package
.
source_resolved_reference
==
"9cf87a285a2d3fbb0b9fa621997b3acc3631ed24"
)
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