-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Closed
Labels
kind/bugSomething isn't working as expectedSomething isn't working as expected
Description
Description
Turning `solver.lazy-wheel` setting to True by default kills us two days of testing.
Our setup includes public PyPI mirror at self-hosted Artifactory proxy 7.68.
Upon upgrading to poetry 1.8.1, our CI immediately had started failing with following stack trace at running `poetry lock --no-update` command:
16:59:08 Resolving dependencies...
16:59:09
16:59:09 ValueError
16:59:09
16:59:09 Package('docker', '7.0.0') is not in list
16:59:09
16:59:09 at ~/.local/lib/python3.11/site-packages/poetry/repositories/legacy_repository.py:66 in package
16:59:09 62│ Note that this will be cached so the subsequent operations
16:59:09 63│ should be much faster.
16:59:09 64│ """
16:59:09 65│ try:
16:59:09 → 66│ index = self._packages.index(Package(name, version))
16:59:09 67│
16:59:09 68│ return self._packages[index]
16:59:09 69│ except ValueError:
16:59:09 70│ package = super().package(name, version, extras)
16:59:09
16:59:09 The following error occurred when trying to handle this error:
16:59:09
16:59:09
16:59:09 AssertionError
16:59:09
16:59:09
16:59:09
16:59:09 at ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:410 in _stream_response
16:59:09 406│ logger.debug("streamed bytes request: %s", headers["Range"])
16:59:09 407│ self._request_count += 1
16:59:09 408│ response = self._session.get(self._url, headers=headers, stream=True)
16:59:09 409│ response.raise_for_status()
16:59:09 → 410│ assert int(response.headers["Content-Length"]) == (end - start + 1)
16:59:09 411│ return response
16:59:09 412│
16:59:09 413│ def _fetch_content_range(self, start: int, end: int) -> Iterator[bytes]:
16:59:09 414│ """Perform a series of HTTP range requests to cover the specified byte range.
What's more annoying, the issue was either reproducing or not depending (supposedly) on state of local poetry download caches. E.g. it might lock OK at one CI agent and crash at another.
Workarounds
Either set
`poetry config solver.lazy-wheel false`
or downgrade to poetry 1.7.1
Poetry Installation Method
pip
Operating System
Linux
Poetry Version
1.8.1
Poetry Configuration
cache-dir = "/home/ci/.cache/pypoetry"
experimental.system-git-client = false
installer.max-workers = null
installer.modern-installation = true
installer.no-binary = null
installer.parallel = true
keyring.enabled = true
solver.lazy-wheel = true
virtualenvs.create = true
virtualenvs.in-project = null
virtualenvs.options.always-copy = false
virtualenvs.options.no-pip = false
virtualenvs.options.no-setuptools = false
virtualenvs.options.system-site-packages = false
virtualenvs.path = "{cache-dir}/virtualenvs" # /home/ci/.cache/pypoetry/virtualenvs
virtualenvs.prefer-active-python = false
virtualenvs.prompt = "{project_name}-py{python_version}"
warnings.export = truePython Sysconfig
n/aExample pyproject.toml
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
[[tool.poetry.source]]
name = "internal"
url = "https://artifactory.company.com/artifactory/api/pypi/internal-packages/simple"
priority = "primary"
[[tool.poetry.source]]
name = "pypi-mirror"
url = "https://artifactory.company.com/artifactory/api/pypi/proxy-pypiorg/simple"
priority = "primary"
[tool.poetry]
name = "project"
version = "0.1.34"
description = "python project"
authors = ["Max Shonichev <[email protected]>"]
maintainers = ["Max Shonichev <[email protected]>"]
license = "Proprietary. Copyright (c), 2023."
packages = [{include = "project", from = "src"}]
repository = "https://git.company.com/projects/GIT/repos/REPO/browse/project"
include = ["project-docs/*"]
exclude = ["src/project/tasks/*"]
[tool.poetry.scripts]
project = "project.cli.main:main"
[tool.setuptools.package-data]
project = ["py.typed"]
[tool.setuptools.packages.find]
where = ["src"]
[tool.poe.poetry_hooks]
pre_build = "pre-build"
[tool.poe.tasks.pre-build]
help = "Tasks before package build"
sequence = [ "build-docs", "zip-docs", "build-dita" ]
[tool.poe.tasks.test]
help = "Run tests"
shell = "poetry run py.test -sv --doctest-modules --rootdir=src --cov --cov-config pyproject.toml --cov-report term --alluredir allure-results"
[tool.poe.tasks.pre-commit]
help = "Run static checks"
shell = "poetry run -- pre-commit run --all-files"
[tool.poetry.dependencies]
python = "^3.10"
pydantic = "^2.5.1"
pydantic-yaml = "^1.2.1"
packaging = "^23.1"
yarl = "^1.9.2"
types-requests = "^2.31.0.6"
requests = {extras = ["security"], version = "^2.31.0"}
configparser = "^6.0.0"
urllib3 = "^2.2.0"
click = "^8.1.7"
platformdirs = "^4.1.0"
[tool.poetry.group.dev.dependencies]
# ----------------------------------
# static checks and testing subgroup
# ----------------------------------
pre-commit = "^3.3.3"
black = "^23.12.1"
isort = "^5.12.0"
pytest = "^7.4.0"
# NB: must temporary pin this due to JSON/OpenAPI inconsistencies and correlated datamodel-codegen/pydantic inconsistencies
# see https://github.com/koxudaxi/datamodel-code-generator/issues/1721
mypy = "1.6.1"
allure-pytest = "^2.13.2"
twine = "^4.0.2"
datamodel-code-generator = {version = "^0.24.2", extras = ["validation"]}
pytest-dependency = "^0.5.1"
pylama = {extras = ["pylint", "toml"], version = "^8.4.1"}
pytest-cov = "^4.1.0"
types-setuptools = "^69.1.0.0"
pytest-glamor-allure = "^0.0.10"
# ----------------------------------
# docs subgroup
# ----------------------------------
sphinx = "^7.2.6"
sphinx-click = "^5.1.0"
sphinxcontrib-mermaid = "^0.9.2"
sphinxcontrib-apidoc = "^0.4.0"
autodoc-pydantic = "^2.0.1"
sphinx-rtd-theme = "^2.0.0"
sphinx-copybutton = "^0.5.2"
myst-parser = "^2.0.0"
docker = "^7.0.0"
project-rst2dita = "^0.2.0"
covdefaults = "^2.3.0"
[tool.datamodel-codegen]
target-python-version = "3.10" # NB: must match [tool.poetry.dependencies] minimal python version
use-field-description = true # Use schema description to populate field docstring.
use-standard-collections = true # Use generic container types for type hinting instead of `collections.abc`.
use-union-operator = true # Use '|' operator for Union type (PEP 604).
use-unique-items-as-set = true # define field type as `set` when the field attribute has `uniqueItems`.
use-schema-description = true # Use schema description to populate class docstring.
use-double-quotes = true # Model generated with double quotes.
reuse-model = true # Re-use models on the field when a module has the model with the same content.
disable-warnings = true # Disable warnings summary.
keep-model-order = true # Keep generated models' order.
enable-version-header = true # Enable package version on file headers (it does not change yet, just for sake).
use-annotated = false # (Don't) Use typing.Annotated for Field().
field-constraints = true # Use field constraints and not con* annotations.
use-default-kwarg = true # Use `default=` instead of a positional argument.
remove-special-field-name-prefix = true # Remove field name prefix if it has a special meaning e.g. underscores.
enum-field-as-literal = "all" # All enum field type are Literal.
[tool.pytest.ini_options]
log_cli = "true"
log_cli_level = "DEBUG"
log_file_level = "DEBUG"
log_format = "%(asctime)s [%(levelname)-8s] %(message)s"
log_date_format = "%Y-%m-%d %H:%M:%S"
log_file_format = "%(asctime)s [%(levelname)-8s] %(message)s"
markers = [
"integration: mark a test as an integration test"
]
addopts = "--ignore tmp --ignore html --ignore project-docs --ignore dist --ignore dita"
[tool.coverage.run]
plugins = ["covdefaults"]
source = ["project",]
data_file = "project.coverage"
branch = true
omit = [
"*/tests/**/*.py",
"*/tasks/**/*.py",
"**/conf.py",
]
[tool.coverage.html]
skip_empty = true
[tool.coverage.report]
fail_under = 80
skip_empty = true
[tool.pylama.linter.pylint]
max_line_length = 180
load-plugins = "pylint.extensions.docparams,pylint.extensions.docstyle,pylint.extensions.redefined_loop_name,pylint.extensions.overlapping_exceptions"
# parameter_documentation
accept-no-param-doc = true
accept-no-raise-doc = true
accept-no-return-doc = true
accept-no-yields-doc = true
default-docstring-type = "google"One note is that we have two sources set in project: one for private company packages and one for mirror
$ poetry source show
name : internal
url : https://artifactory.company.com/artifactory/api/pypi/internal-packages/simple
priority : primary
name : pypi-mirror
url : https://artifactory.company.com/artifactory/api/pypi/proxy-pypiorg/simple/
priority : primary
Poetry Runtime Logs
Loading configuration file /home/ci/.config/pypoetry/config.toml
Adding repository internal (https://artifactory.company.com/artifactory/api/pypi/internal-packages/simple) and setting it as primary
Adding repository pypi-mirror (https://artifactory.company.com/artifactory/api/pypi/proxy-pypiorg/simple) and setting it as primary
Deactivating the PyPI repository
Creating virtualenv project-BOmdJNI2-py3.11 in /home/ci/.cache/pypoetry/virtualenvs
[virtualenv] created app data folder /home/ci/.local/share/virtualenv
[virtualenv] find interpreter for spec PythonSpec(path=/usr/local/bin/python3)
[virtualenv] proposed PythonInfo(spec=CPython3.11.1.final.0-64, exe=/usr/local/bin/python3, platform=linux, version='3.11.1 (main, Nov 23 2023, 13:00:05) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8)
[virtualenv] accepted PythonInfo(spec=CPython3.11.1.final.0-64, exe=/usr/local/bin/python3, platform=linux, version='3.11.1 (main, Nov 23 2023, 13:00:05) [GCC 11.4.0]', encoding_fs_io=utf-8-utf-8)
[virtualenv] filesystem is case-sensitive
[virtualenv] create virtual environment via CPython3Posix(dest=/home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11, clear=False, no_vcs_ignore=False, global=False)
[virtualenv] create folder /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin
[virtualenv] create folder /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages
[virtualenv] write /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/pyvenv.cfg
[virtualenv] home = /usr/local/bin
[virtualenv] implementation = CPython
[virtualenv] version_info = 3.11.1.final.0
[virtualenv] virtualenv = 20.24.7
[virtualenv] include-system-site-packages = false
[virtualenv] base-prefix = /usr/local
[virtualenv] base-exec-prefix = /usr/local
[virtualenv] base-executable = /usr/local/bin/python3
[virtualenv] symlink /usr/local/bin/python3 to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/python
[virtualenv] create virtualenv import hook file /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/_virtualenv.pth
[virtualenv] create /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/_virtualenv.py
[virtualenv] ============================== target debug ==============================
[virtualenv] debug via /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/python /usr/local/lib/python3.11/site-packages/virtualenv/create/debug.py
[virtualenv] {
[virtualenv] "sys": {
[virtualenv] "executable": "/home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/python",
[virtualenv] "_base_executable": "/usr/local/bin/python3.11",
[virtualenv] "prefix": "/home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11",
[virtualenv] "base_prefix": "/usr/local",
[virtualenv] "real_prefix": null,
[virtualenv] "exec_prefix": "/home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11",
[virtualenv] "base_exec_prefix": "/usr/local",
[virtualenv] "path": [
[virtualenv] "/usr/local/lib/python311.zip",
[virtualenv] "/usr/local/lib/python3.11",
[virtualenv] "/usr/local/lib/python3.11/lib-dynload",
[virtualenv] "/home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages"
[virtualenv] ],
[virtualenv] "meta_path": [
[virtualenv] "<class '_virtualenv._Finder'>",
[virtualenv] "<class '_frozen_importlib.BuiltinImporter'>",
[virtualenv] "<class '_frozen_importlib.FrozenImporter'>",
[virtualenv] "<class '_frozen_importlib_external.PathFinder'>"
[virtualenv] ],
[virtualenv] "fs_encoding": "utf-8",
[virtualenv] "io_encoding": "utf-8"
[virtualenv] },
[virtualenv] "version": "3.11.1 (main, Nov 23 2023, 13:00:05) [GCC 11.4.0]",
[virtualenv] "makefile_filename": "/usr/local/lib/python3.11/config-3.11-x86_64-linux-gnu/Makefile",
[virtualenv] "os": "<module 'os' (frozen)>",
[virtualenv] "site": "<module 'site' (frozen)>",
[virtualenv] "datetime": "<module 'datetime' from '/usr/local/lib/python3.11/datetime.py'>",
[virtualenv] "math": "<module 'math' from '/usr/local/lib/python3.11/lib-dynload/math.cpython-311-x86_64-linux-gnu.so'>",
[virtualenv] "json": "<module 'json' from '/usr/local/lib/python3.11/json/__init__.py'>"
[virtualenv] }
[virtualenv] add seed packages via FromAppData(download=False, pip=bundle, setuptools=bundle, via=copy, app_data_dir=/home/ci/.local/share/virtualenv)
[virtualenv] install pip from wheel /usr/local/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/pip-23.3.1-py3-none-any.whl via CopyPipInstall
[virtualenv] install setuptools from wheel /usr/local/lib/python3.11/site-packages/virtualenv/seed/wheels/embed/setuptools-68.2.2-py3-none-any.whl via CopyPipInstall
[filelock:filelock] Attempting to acquire lock 139832159771664 on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any.lock
[filelock:filelock] Attempting to acquire lock 139832159266256 on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any.lock
[filelock:filelock] Lock 139832159771664 acquired on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any.lock
[filelock:filelock] Lock 139832159266256 acquired on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any.lock
[virtualenv] build install image for pip-23.3.1-py3-none-any.whl to /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any
[virtualenv] build install image for setuptools-68.2.2-py3-none-any.whl to /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any
[filelock:filelock] Attempting to release lock 139832159266256 on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any.lock
[filelock:filelock] Lock 139832159266256 released on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any.lock
[virtualenv] copy directory /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any/setuptools to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/setuptools
[virtualenv] copy directory /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any/setuptools-68.2.2.dist-info to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/setuptools-68.2.2.dist-info
[virtualenv] copy directory /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any/pkg_resources to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/pkg_resources
[virtualenv] copy directory /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any/_distutils_hack to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/_distutils_hack
[virtualenv] copy /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any/distutils-precedence.pth to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/distutils-precedence.pth
[virtualenv] copy /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/setuptools-68.2.2-py3-none-any/setuptools-68.2.2.virtualenv to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/setuptools-68.2.2.virtualenv
[virtualenv] generated console scripts
[distlib:distlib.util] changing mode of /tmp/tmp2mfn7q1y/pip-3.11 to 775
[distlib:distlib.util] changing mode of /tmp/tmp2mfn7q1y/pip3 to 775
[distlib:distlib.util] changing mode of /tmp/tmp2mfn7q1y/pip to 775
[distlib:distlib.util] changing mode of /tmp/tmp2mfn7q1y/pip3.11 to 775
[filelock:filelock] Attempting to release lock 139832159771664 on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any.lock
[filelock:filelock] Lock 139832159771664 released on /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any.lock
[virtualenv] copy directory /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any/pip-23.3.1.dist-info to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/pip-23.3.1.dist-info
[virtualenv] copy directory /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any/pip to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/pip
[virtualenv] copy /home/ci/.local/share/virtualenv/wheel/3.11/image/1/CopyPipInstall/pip-23.3.1-py3-none-any/pip-23.3.1.virtualenv to /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/lib/python3.11/site-packages/pip-23.3.1.virtualenv
[distlib:distlib.util] changing mode of /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/pip-3.11 to 775
[distlib:distlib.util] changing mode of /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/pip3 to 775
[distlib:distlib.util] changing mode of /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/pip to 775
[distlib:distlib.util] changing mode of /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/bin/pip3.11 to 775
[virtualenv] generated console scripts pip-3.11 pip pip3.11 pip3
[virtualenv] add activators for Bash, CShell, Fish, Nushell, PowerShell, Python
[virtualenv] write /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11/pyvenv.cfg
[virtualenv] home = /usr/local/bin
[virtualenv] implementation = CPython
[virtualenv] version_info = 3.11.1.final.0
[virtualenv] virtualenv = 20.24.7
[virtualenv] include-system-site-packages = false
[virtualenv] base-prefix = /usr/local
[virtualenv] base-exec-prefix = /usr/local
[virtualenv] base-executable = /usr/local/bin/python3
[virtualenv] prompt = project-py3.11
Using virtualenv: /home/ci/.cache/pypoetry/virtualenvs/project-BOmdJNI2-py3.11
Resolving dependencies...
1: fact: project is 0.1.34
1: derived: project
1: fact: project depends on pydantic (^2.5.1)
1: fact: project depends on pydantic-yaml (^1.2.1)
1: fact: project depends on packaging (^23.1)
1: fact: project depends on yarl (^1.9.2)
1: fact: project depends on types-requests (^2.31.0.6)
1: fact: project depends on requests[security] (^2.31.0)
1: fact: project depends on configparser (^6.0.0)
1: fact: project depends on urllib3 (^2.2.0)
1: fact: project depends on click (^8.1.7)
1: fact: project depends on platformdirs (^4.1.0)
1: fact: project depends on pre-commit (^3.3.3)
1: fact: project depends on black (^23.12.1)
1: fact: project depends on isort (^5.12.0)
1: fact: project depends on pytest (^7.4.0)
1: fact: project depends on mypy (1.6.1)
1: fact: project depends on allure-pytest (^2.13.2)
1: fact: project depends on twine (^4.0.2)
1: fact: project depends on datamodel-code-generator[validation] (^0.24.2)
1: fact: project depends on pytest-dependency (^0.5.1)
1: fact: project depends on pylama[pylint,toml] (^8.4.1)
1: fact: project depends on pytest-cov (^4.1.0)
1: fact: project depends on types-setuptools (^69.1.0.0)
1: fact: project depends on pytest-glamor-allure (^0.0.10)
1: fact: project depends on sphinx (^7.2.6)
1: fact: project depends on sphinx-click (^5.1.0)
1: fact: project depends on sphinxcontrib-mermaid (^0.9.2)
1: fact: project depends on sphinxcontrib-apidoc (^0.4.0)
1: fact: project depends on autodoc-pydantic (^2.0.1)
1: fact: project depends on sphinx-rtd-theme (^2.0.0)
1: fact: project depends on sphinx-copybutton (^0.5.2)
1: fact: project depends on myst-parser (^2.0.0)
1: fact: project depends on docker (^7.0.0)
1: fact: project depends on project-rst2dita (^0.2.0)
1: fact: project depends on covdefaults (^2.3.0)
1: selecting project (0.1.34)
1: derived: covdefaults (>=2.3.0,<3.0.0)
1: derived: project-rst2dita (>=0.2.0,<0.3.0)
1: derived: docker (>=7.0.0,<8.0.0)
1: derived: myst-parser (>=2.0.0,<3.0.0)
1: derived: sphinx-copybutton (>=0.5.2,<0.6.0)
1: derived: sphinx-rtd-theme (>=2.0.0,<3.0.0)
1: derived: autodoc-pydantic (>=2.0.1,<3.0.0)
1: derived: sphinxcontrib-apidoc (>=0.4.0,<0.5.0)
1: derived: sphinxcontrib-mermaid (>=0.9.2,<0.10.0)
1: derived: sphinx-click (>=5.1.0,<6.0.0)
1: derived: sphinx (>=7.2.6,<8.0.0)
1: derived: pytest-glamor-allure (>=0.0.10,<0.0.11)
1: derived: types-setuptools (>=69.1.0.0,<70.0.0.0)
1: derived: pytest-cov (>=4.1.0,<5.0.0)
1: derived: pylama[pylint,toml] (>=8.4.1,<9.0.0)
1: derived: pytest-dependency (>=0.5.1,<0.6.0)
1: derived: datamodel-code-generator[validation] (>=0.24.2,<0.25.0)
1: derived: twine (>=4.0.2,<5.0.0)
1: derived: allure-pytest (>=2.13.2,<3.0.0)
1: derived: mypy (==1.6.1)
1: derived: pytest (>=7.4.0,<8.0.0)
1: derived: isort (>=5.12.0,<6.0.0)
1: derived: black (>=23.12.1,<24.0.0)
1: derived: pre-commit (>=3.3.3,<4.0.0)
1: derived: platformdirs (>=4.1.0,<5.0.0)
1: derived: click (>=8.1.7,<9.0.0)
1: derived: urllib3 (>=2.2.0,<3.0.0)
1: derived: configparser (>=6.0.0,<7.0.0)
1: derived: requests[security] (>=2.31.0,<3.0.0)
1: derived: types-requests (>=2.31.0.6,<3.0.0.0)
1: derived: yarl (>=1.9.2,<2.0.0)
1: derived: packaging (>=23.1,<24.0)
1: derived: pydantic-yaml (>=1.2.1,<2.0.0)
1: derived: pydantic (>=2.5.1,<3.0.0)
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Checking if keyring is available
[keyring:keyring.backend] Loading KWallet
[keyring:keyring.backend] Loading SecretService
[keyring:keyring.backend] Loading Windows
[keyring:keyring.backend] Loading chainer
[keyring:keyring.backend] Loading libsecret
[keyring:keyring.backend] Loading macOS
Backend 'fail Keyring' is not suitable
No valid keyring backend was found
Creating new session for artifactory.company.com
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] Starting new HTTPS connection (1): artifactory.company.com:443
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/internal-packages/simple/covdefaults/ HTTP/1.1" 404 None
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Checking if keyring is available
Backend 'fail Keyring' is not suitable
No valid keyring backend was found
Creating new session for artifactory.company.com
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] Starting new HTTPS connection (1): artifactory.company.com:443
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/proxy-pypiorg/simple/covdefaults/ HTTP/1.1" 200 None
[filelock:filelock] Attempting to acquire lock 139832124757840 on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/0/b/2/3/d/0b23db5319e4e9a794aeaa04172dd017f0f57438faaa55d770545f19.lock
[filelock:filelock] Lock 139832124757840 acquired on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/0/b/2/3/d/0b23db5319e4e9a794aeaa04172dd017f0f57438faaa55d770545f19.lock
[filelock:filelock] Attempting to release lock 139832124757840 on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/0/b/2/3/d/0b23db5319e4e9a794aeaa04172dd017f0f57438faaa55d770545f19.lock
[filelock:filelock] Lock 139832124757840 released on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/0/b/2/3/d/0b23db5319e4e9a794aeaa04172dd017f0f57438faaa55d770545f19.lock
begin fetching content length
initial bytes request: bytes=-10000
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/proxy-pypiorg/packages/packages/76/4c/823bc951445aa97e5a1b7e337690db3abf85212c8d138e170922e7916ac8/covdefaults-2.3.0-py2.py3-none-any.whl HTTP/1.1" 200 5144
[filelock:filelock] Attempting to acquire lock 139832124795664 on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/1/5/5/c6155f333db99acf23d4f1bc211294e028e828596c61240d2fc544ec.lock
[filelock:filelock] Lock 139832124795664 acquired on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/1/5/5/c6155f333db99acf23d4f1bc211294e028e828596c61240d2fc544ec.lock
[filelock:filelock] Attempting to release lock 139832124795664 on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/1/5/5/c6155f333db99acf23d4f1bc211294e028e828596c61240d2fc544ec.lock
[filelock:filelock] Lock 139832124795664 released on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/1/5/5/c6155f333db99acf23d4f1bc211294e028e828596c61240d2fc544ec.lock
done fetching content length (is: 5144)
read size -1 at 5122 from lazy file /tmp/tmpv098s_3j
read size 20 at 5102 from lazy file /tmp/tmpv098s_3j
read size 469 at 4653 from lazy file /tmp/tmpv098s_3j
begin prefetching METADATA for covdefaults-2.3.0-py2.py3-none-any.whl
read size -1 at 5122 from lazy file /tmp/tmpv098s_3j
read size 20 at 5102 from lazy file /tmp/tmpv098s_3j
read size 469 at 4653 from lazy file /tmp/tmpv098s_3j
fetch covdefaults-2.3.0.dist-info/METADATA
done prefetching METADATA for covdefaults-2.3.0-py2.py3-none-any.whl
read size 30 at 2186 from lazy file /tmp/tmpv098s_3j
read size 36 at 2216 from lazy file /tmp/tmpv098s_3j
read size 1796 at 2252 from lazy file /tmp/tmpv098s_3j
unsetting merge intervals (were: MergeIntervals(left=(0,), right=(5143,)))
unsetting content length (was: 5144)
1: fact: covdefaults (2.3.0) depends on coverage (>=6.0.2)
1: selecting covdefaults (2.3.0)
1: derived: coverage (>=6.0.2)
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/internal-packages/simple/project-rst2dita/ HTTP/1.1" 200 None
[filelock:filelock] Attempting to acquire lock 139832124799184 on /home/ci/.cache/pypoetry/cache/repositories/internal/_http/d/8/4/8/1/d8481746c73f3f62da726b2fd99f6fac69a5db6c692a9e3c9272c8d7.lock
[filelock:filelock] Lock 139832124799184 acquired on /home/ci/.cache/pypoetry/cache/repositories/internal/_http/d/8/4/8/1/d8481746c73f3f62da726b2fd99f6fac69a5db6c692a9e3c9272c8d7.lock
[filelock:filelock] Attempting to release lock 139832124799184 on /home/ci/.cache/pypoetry/cache/repositories/internal/_http/d/8/4/8/1/d8481746c73f3f62da726b2fd99f6fac69a5db6c692a9e3c9272c8d7.lock
[filelock:filelock] Lock 139832124799184 released on /home/ci/.cache/pypoetry/cache/repositories/internal/_http/d/8/4/8/1/d8481746c73f3f62da726b2fd99f6fac69a5db6c692a9e3c9272c8d7.lock
begin fetching content length
initial bytes request: bytes=-10000
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/internal-packages/project-rst2dita/0.2.0/project_rst2dita-0.2.0-py3-none-any.whl HTTP/1.1" 206 10001
streamed bytes request: bytes=1521-11520
[urllib3:urllib3.connectionpool] Starting new HTTPS connection (2): artifactory.company.com:443
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/internal-packages/project-rst2dita/0.2.0/project_rst2dita-0.2.0-py3-none-any.whl HTTP/1.1" 206 10000
done fetching content length (is: 11521)
read size -1 at 11499 from lazy file /tmp/tmp_psx5b7l
read size 20 at 11479 from lazy file /tmp/tmp_psx5b7l
read size 658 at 10841 from lazy file /tmp/tmp_psx5b7l
begin prefetching METADATA for project_rst2dita-0.2.0-py3-none-any.whl
read size -1 at 11499 from lazy file /tmp/tmp_psx5b7l
read size 20 at 11479 from lazy file /tmp/tmp_psx5b7l
read size 658 at 10841 from lazy file /tmp/tmp_psx5b7l
fetch project_rst2dita-0.2.0.dist-info/METADATA
done prefetching METADATA for project_rst2dita-0.2.0-py3-none-any.whl
read size 30 at 9409 from lazy file /tmp/tmp_psx5b7l
read size 44 at 9439 from lazy file /tmp/tmp_psx5b7l
read size 683 at 9483 from lazy file /tmp/tmp_psx5b7l
unsetting merge intervals (were: MergeIntervals(left=(1521,), right=(11520,)))
unsetting content length (was: 11521)
1: fact: project-rst2dita (0.2.0) depends on Sphinx (>=7.2.6,<8.0.0)
1: fact: project-rst2dita (0.2.0) depends on lxml (>=4.9.4,<5.0.0)
1: fact: project-rst2dita (0.2.0) depends on pydantic (>=2.5.1,<3.0.0)
1: fact: project-rst2dita (0.2.0) depends on types-lxml (>=2023.10.21,<2024.0.0)
1: selecting project-rst2dita (0.2.0)
1: derived: types-lxml (>=2023.10.21,<2024.0.0)
1: derived: lxml (>=4.9.4,<5.0.0)
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/internal-packages/simple/docker/ HTTP/1.1" 404 None
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/proxy-pypiorg/simple/docker/ HTTP/1.1" 200 None
[filelock:filelock] Attempting to acquire lock 139832124909136 on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/a/4/a/c6a4a60d5e00285d634a05f7597d46b93d99316e83a0f46e29bebc6c.lock
[filelock:filelock] Lock 139832124909136 acquired on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/a/4/a/c6a4a60d5e00285d634a05f7597d46b93d99316e83a0f46e29bebc6c.lock
[filelock:filelock] Attempting to release lock 139832124909136 on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/a/4/a/c6a4a60d5e00285d634a05f7597d46b93d99316e83a0f46e29bebc6c.lock
[filelock:filelock] Lock 139832124909136 released on /home/ci/.cache/pypoetry/cache/repositories/pypi-mirror/_http/c/6/a/4/a/c6a4a60d5e00285d634a05f7597d46b93d99316e83a0f46e29bebc6c.lock
begin fetching content length
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
Multiple source configurations found for artifactory.company.com - internal, pypi-mirror
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "HEAD /artifactory/api/pypi/proxy-pypiorg/packages/packages/18/bd/9706c10bb12e05043ef138dc8d412cfd17f29c8df0fb28ad71c96a98785d/docker-7.0.0-py3-none-any.whl HTTP/1.1" 200 0
streamed bytes request: bytes=137565-147564
[urllib3:urllib3.connectionpool] https://artifactory.company.com:443 "GET /artifactory/api/pypi/proxy-pypiorg/packages/packages/18/bd/9706c10bb12e05043ef138dc8d412cfd17f29c8df0fb28ad71c96a98785d/docker-7.0.0-py3-none-any.whl HTTP/1.1" 200 147565
1: Version solving took 0.890 seconds.
1: Tried 1 solutions.
ValueError
Package('docker', '7.0.0') is not in list
at ~/.local/lib/python3.11/site-packages/poetry/repositories/legacy_repository.py:66 in package
62│ Note that this will be cached so the subsequent operations
63│ should be much faster.
64│ """
65│ try:
→ 66│ index = self._packages.index(Package(name, version))
67│
68│ return self._packages[index]
69│ except ValueError:
70│ package = super().package(name, version, extras)
The following error occurred when trying to handle this error:
Stack trace:
32 ~/.local/lib/python3.11/site-packages/cleo/application.py:327 in run
325│
326│ try:
→ 327│ exit_code = self._run(io)
328│ except BrokenPipeError:
329│ # If we are piped to another process, it may close early and send a
31 ~/.local/lib/python3.11/site-packages/poetry/console/application.py:190 in _run
188│ self._load_plugins(io)
189│
→ 190│ exit_code: int = super()._run(io)
191│ return exit_code
192│
30 ~/.local/lib/python3.11/site-packages/cleo/application.py:431 in _run
429│ io.input.interactive(interactive)
430│
→ 431│ exit_code = self._run_command(command, io)
432│ self._running_command = None
433│
29 ~/.local/lib/python3.11/site-packages/cleo/application.py:473 in _run_command
471│
472│ if error is not None:
→ 473│ raise error
474│
475│ return terminate_event.exit_code
28 ~/.local/lib/python3.11/site-packages/cleo/application.py:457 in _run_command
455│
456│ if command_event.command_should_run():
→ 457│ exit_code = command.run(io)
458│ else:
459│ exit_code = ConsoleCommandEvent.RETURN_CODE_DISABLED
27 ~/.local/lib/python3.11/site-packages/cleo/commands/base_command.py:117 in run
115│ io.input.validate()
116│
→ 117│ return self.execute(io) or 0
118│
119│ def merge_application_definition(self, merge_args: bool = True) -> None:
26 ~/.local/lib/python3.11/site-packages/cleo/commands/command.py:61 in execute
59│
60│ try:
→ 61│ return self.handle()
62│ except KeyboardInterrupt:
63│ return 1
25 ~/.local/lib/python3.11/site-packages/poetry/console/commands/lock.py:55 in handle
53│ self.installer.lock(update=not self.option("no-update"))
54│
→ 55│ return self.installer.run()
56│
24 ~/.local/lib/python3.11/site-packages/poetry/installation/installer.py:95 in run
93│ # Check if refresh
94│ if not self._update and self._lock and self._locker.is_locked():
→ 95│ return self._do_refresh()
96│
97│ # Force update if there is no lock file present
23 ~/.local/lib/python3.11/site-packages/poetry/installation/installer.py:201 in _do_refresh
199│ source_root=self._env.path.joinpath("src")
200│ ):
→ 201│ ops = solver.solve(use_latest=use_latest).calculate_operations()
202│
203│ lockfile_repo = LockfileRepository()
22 ~/.local/lib/python3.11/site-packages/poetry/puzzle/solver.py:71 in solve
69│ with self._progress(), self._provider.use_latest_for(use_latest or []):
70│ start = time.time()
→ 71│ packages, depths = self._solve()
72│ end = time.time()
73│
21 ~/.local/lib/python3.11/site-packages/poetry/puzzle/solver.py:154 in _solve
152│
153│ try:
→ 154│ result = resolve_version(self._package, self._provider)
155│
156│ packages = result.packages
20 ~/.local/lib/python3.11/site-packages/poetry/mixology/__init__.py:18 in resolve_version
16│ solver = VersionSolver(root, provider)
17│
→ 18│ return solver.solve()
19│
19 ~/.local/lib/python3.11/site-packages/poetry/mixology/version_solver.py:175 in solve
173│ while next is not None:
174│ self._propagate(next)
→ 175│ next = self._choose_package_version()
176│
177│ return self._result()
18 ~/.local/lib/python3.11/site-packages/poetry/mixology/version_solver.py:514 in _choose_package_version
512│ package = locked
513│
→ 514│ package = self._provider.complete_package(package)
515│
516│ conflict = False
17 ~/.local/lib/python3.11/site-packages/poetry/puzzle/provider.py:489 in complete_package
487│ dependency_package = DependencyPackage(
488│ dependency,
→ 489│ self._pool.package(
490│ package.pretty_name,
491│ package.version,
16 ~/.local/lib/python3.11/site-packages/poetry/repositories/repository_pool.py:204 in package
202│ for repo in self.repositories:
203│ try:
→ 204│ return repo.package(name, version, extras=extras)
205│ except PackageNotFound:
206│ continue
15 ~/.local/lib/python3.11/site-packages/poetry/repositories/legacy_repository.py:70 in package
68│ return self._packages[index]
69│ except ValueError:
→ 70│ package = super().package(name, version, extras)
71│ package._source_type = "legacy"
72│ package._source_url = self._url
14 ~/.local/lib/python3.11/site-packages/poetry/repositories/cached_repository.py:75 in package
73│ extras: list[str] | None = None,
74│ ) -> Package:
→ 75│ return self.get_release_info(canonicalize_name(name), version).to_package(
76│ name=name, extras=extras
77│ )
13 ~/.local/lib/python3.11/site-packages/poetry/repositories/cached_repository.py:52 in get_release_info
50│ return PackageInfo.load(self._get_release_info(name, version))
51│
→ 52│ cached = self._release_cache.remember(
53│ f"{name}:{version}", lambda: self._get_release_info(name, version)
54│ )
12 ~/.local/lib/python3.11/site-packages/poetry/utils/cache.py:147 in remember
145│ value = self.get(key)
146│ if value is None:
→ 147│ value = callback() if callable(callback) else callback
148│ self.put(key, value, minutes)
149│ return value
11 ~/.local/lib/python3.11/site-packages/poetry/repositories/cached_repository.py:53 in <lambda>
51│
52│ cached = self._release_cache.remember(
→ 53│ f"{name}:{version}", lambda: self._get_release_info(name, version)
54│ )
55│
10 ~/.local/lib/python3.11/site-packages/poetry/repositories/legacy_repository.py:123 in _get_release_info
121│ yanked = page.yanked(name, version)
122│
→ 123│ return self._links_to_data(
124│ links,
125│ PackageInfo(
9 ~/.local/lib/python3.11/site-packages/poetry/repositories/http_repository.py:360 in _links_to_data
358│
359│ # drop yanked files unless the entire release is yanked
→ 360│ info = self._get_info_from_links(links, ignore_yanked=not data.yanked)
361│
362│ data.summary = info.summary
8 ~/.local/lib/python3.11/site-packages/poetry/repositories/http_repository.py:310 in _get_info_from_links
308│ return self._get_info_from_metadata(
309│ universal_python3_wheel
→ 310│ ) or self._get_info_from_wheel(universal_python3_wheel)
311│
312│ if universal_python2_wheel:
7 ~/.local/lib/python3.11/site-packages/poetry/repositories/http_repository.py:123 in _get_info_from_wheel
121│ try:
122│ package_info = PackageInfo.from_metadata(
→ 123│ metadata_from_wheel_url(link.filename, link.url, self.session)
124│ )
125│ except HTTPRangeRequestUnsupported:
6 ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:77 in metadata_from_wheel_url
75│ # After context manager exit, wheel.name will point to a deleted file path.
76│ # Add `delete_backing_file=False` to disable this for debugging.
→ 77│ with LazyWheelOverHTTP(url, session) as lazy_file:
78│ metadata_bytes = lazy_file.read_metadata(name)
79│
5 ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:289 in __enter__
287│ def __enter__(self: U) -> U:
288│ super().__enter__()
→ 289│ self._setup_content()
290│ return self
291│
4 ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:357 in _setup_content
355│ if self._length is None:
356│ logger.debug("begin fetching content length")
→ 357│ self._length = self._fetch_content_length()
358│ logger.debug("done fetching content length (is: %d)", self._length)
359│ # Enable us to seek and write anywhere in the backing file up to this
3 ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:520 in _fetch_content_length
518│ # central directory.
519│ initial_start = max(0, ret_length - initial_chunk_size)
→ 520│ self._ensure_downloaded(initial_start, ret_length)
521│ else:
522│ # If we *could* download some file contents, then write them to the end of
2 ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:450 in _ensure_downloaded
448│ ) in self._merge_intervals.minimal_intervals_covering(start, end):
449│ self.seek(start)
→ 450│ for chunk in self._fetch_content_range(range_start, range_end):
451│ self._file.write(chunk)
452│
1 ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:420 in _fetch_content_range
418│ bytes long, and the range can never be empty).
419│ """
→ 420│ yield from self._stream_response(start, end).iter_content(CONTENT_CHUNK_SIZE)
421│
422│ @contextmanager
AssertionError
at ~/.local/lib/python3.11/site-packages/poetry/inspection/lazy_wheel.py:410 in _stream_response
406│ logger.debug("streamed bytes request: %s", headers["Range"])
407│ self._request_count += 1
408│ response = self._session.get(self._url, headers=headers, stream=True)
409│ response.raise_for_status()
→ 410│ assert int(response.headers["Content-Length"]) == (end - start + 1)
411│ return response
412│
413│ def _fetch_content_range(self, start: int, end: int) -> Iterator[bytes]:
414│ """Perform a series of HTTP range requests to cover the specified byte range.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
kind/bugSomething isn't working as expectedSomething isn't working as expected