Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lock failure with direct URL dependency on 2018.11.27.dev0 #3692

Closed
j-martin opened this issue Apr 11, 2019 · 1 comment
Closed

Lock failure with direct URL dependency on 2018.11.27.dev0 #3692

j-martin opened this issue Apr 11, 2019 · 1 comment
Labels
Category: Dependency Resolution Issue relates to dependency resolution. Priority: High This item is high priority and should be resolved quickly. Status: Awaiting Upstream This issue requires the attention of an upstream maintainer. Status: In Progress This item is in progress. Type: Bug 🐛 This issue is a bug. Type: Release Blocker Must be resolved before the next release can be cut.

Comments

@j-martin
Copy link

j-martin commented Apr 11, 2019

Issue description

While investigating #3404 I tried to use the HEAD of master.

I installed 6c62d23

$ pip3 install git+git://github.com/pypa/pipenv.git@6c62d23cfcd1255b62bf7ef31b97caa5af492f46

We are getting some errors due to a fairly old repos metadata which we install with a direct URL. We suspect this is related to #3298

We have this dependency which seems to cause the issue:

[packages]
xmla = {editable = true,git = "https://github.com/alloytech/olap.git",ref = "py3",subdirectory = "xmla"}

All the modules seem to have the name and version. https://github.com/alloytech/olap/blob/py3/xmla/setup.py

Expected result

$ pipenv lock works like it does with version 2018.11.26.

Actual result

$ pipenv lock fails (there are two print statement included to see the metadata) due to name missing.

$ pipenv lock --verbose
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
Building requirements...
⠇ Locking...Branch 'py3' set up to track remote branch 'py3' from 'origin'.
Switched to a new branch 'py3'
Resolving dependencies...
Metadata-Version: 2.1
✘ Locking Failed!
Metadata-Version: 2.1
Name: UNKNOWN
Version: 0.0.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Platform: UNKNOWN

UNKNOWN



<LegacyMetadata UNKNOWN 0.0.0>
Traceback (most recent call last):
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 732, in __init__
    self._data = json.loads(data)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 681, in <module>
    main()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 677, in main
    parsed.requirements_dir, parsed.packages, parse_only=parsed.parse_only)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 640, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 610, in resolve_packages
    requirements_dir=requirements_dir,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 593, in resolve
    req_dir=requirements_dir
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 1088, in resolve_deps
    req_dir=req_dir,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 749, in actually_resolve_deps
    deps, index_lookup, markers_lookup, project, sources,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 363, in get_metadata
    constraint_update, lockfile_update = cls.get_deps_from_req(req)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 428, in get_deps_from_req
    req_list, lockfile = get_vcs_deps(reqs=[req])
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 1577, in get_vcs_deps
    with temp_path(), locked_repository(requirement) as repo:
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 1736, in locked_repository
    with requirement.req.locked_vcs_repo(src_dir=src_dir) as repo:
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 2334, in locked_vcs_repo
    self._parsed_line.vcsrepo = vcsrepo
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 800, in vcsrepo
    kwargs=wheel_kwargs,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 1001, in create
    created.get_info()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 875, in get_info
    self.build()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 766, in build
    os.path.join(self.extra_kwargs["build_dir"], dist_path)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 788, in get_metadata_from_wheel
    metadata_dict = get_metadata_from_wheel(wheel_path)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 350, in get_metadata_from_wheel
    metadata = dist.metadata
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/util.py", line 446, in __get__
    value = self.func(obj)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/wheel.py", line 234, in metadata
    result = Metadata(fileobj=wf)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 743, in __init__
    self.validate()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 960, in validate
    missing, warnings = self._legacy.check(True)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 534, in check
    raise MetadataMissingError(msg)
distlib.metadata.MetadataMissingError: missing required metadata: Name
Name: UNKNOWN
Version: 0.0.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Platform: UNKNOWN

UNKNOWN



<LegacyMetadata UNKNOWN 0.0.0>
Traceback (most recent call last):
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 732, in __init__
    self._data = json.loads(data)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 681, in <module>
    main()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 677, in main
    parsed.requirements_dir, parsed.packages, parse_only=parsed.parse_only)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 640, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 610, in resolve_packages
    requirements_dir=requirements_dir,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/resolver.py", line 593, in resolve
    req_dir=requirements_dir
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 1088, in resolve_deps
    req_dir=req_dir,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 749, in actually_resolve_deps
    deps, index_lookup, markers_lookup, project, sources,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 363, in get_metadata
    constraint_update, lockfile_update = cls.get_deps_from_req(req)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 428, in get_deps_from_req
    req_list, lockfile = get_vcs_deps(reqs=[req])
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 1577, in get_vcs_deps
    with temp_path(), locked_repository(requirement) as repo:
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/utils.py", line 1736, in locked_repository
    with requirement.req.locked_vcs_repo(src_dir=src_dir) as repo:
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 2334, in locked_vcs_repo
    self._parsed_line.vcsrepo = vcsrepo
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/requirements.py", line 800, in vcsrepo
    kwargs=wheel_kwargs,
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 1001, in create
    created.get_info()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 875, in get_info
    self.build()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 766, in build
    os.path.join(self.extra_kwargs["build_dir"], dist_path)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 788, in get_metadata_from_wheel
    metadata_dict = get_metadata_from_wheel(wheel_path)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/requirementslib/models/setup_info.py", line 350, in get_metadata_from_wheel
    metadata = dist.metadata
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/util.py", line 446, in __get__
    value = self.func(obj)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/wheel.py", line 234, in metadata
    result = Metadata(fileobj=wf)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 743, in __init__
    self.validate()
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 960, in validate
    missing, warnings = self._legacy.check(True)
  File "/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv/vendor/distlib/metadata.py", line 534, in check
    raise MetadataMissingError(msg)
distlib.metadata.MetadataMissingError: missing required metadata: Name

Steps to replicate

$ pip3 install git+git://github.com/pypa/pipenv.git@6c62d23cfcd1255b62bf7ef31b97caa5af492f46
$ cat > Pipfile << EOF
[requires]
python_version = "3.7"

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
xmla = {editable = true,git = "https://github.com/alloytech/olap.git",ref = "py3",subdirectory = "xmla"}
EOF
$ pipenv lock

$ pipenv --support

Pipenv version: '2018.11.27.dev0'

Pipenv location: '/Users/jm/.pyenv/versions/3.7.2/lib/python3.7/site-packages/pipenv'

Python location: '/Users/jm/.pyenv/versions/3.7.2/bin/python3.7'

Python installations found:

  • 3.7.2: /Users/jm/.pyenv/versions/3.7.2/bin/python3
  • 3.7.2: /Users/jm/.pyenv/versions/3.7.2/bin/python3.7m
  • 2.7.16: /usr/local/bin/python2
  • 2.7.16: /usr/local/bin/pythonw
  • 2.7.10: /usr/bin/pythonw
  • 2.7.10: /usr/bin/python2.7

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.7.2',
 'os_name': 'posix',
 'platform_machine': 'x86_64',
 'platform_python_implementation': 'CPython',
 'platform_release': '18.5.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 18.5.0: Mon Mar 11 20:40:32 PDT '
                     '2019; root:xnu-4903.251.3~3/RELEASE_X86_64',
 'python_full_version': '3.7.2',
 'python_version': '3.7',
 'sys_platform': 'darwin'}

System environment variables:

  • SHELL
  • LSCOLORS
  • PYENV_HOOK_PATH
  • ITERM_PROFILE
  • COLORTERM
  • HBASE_CONF_DIR
  • LESS
  • XPC_FLAGS
  • TERM_PROGRAM_VERSION
  • HOSTNAME
  • JAVA_HOME
  • SSH_AUTH_SOCK
  • TERM_SESSION_ID
  • RIPGREP_CONFIG_PATH
  • SDKMAN_CANDIDATES_DIR
  • GPG_TTY
  • EDITOR
  • PYENV_VERSION
  • PWD
  • LOGNAME
  • FZF_DEFAULT_COMMAND
  • CDPATH
  • JENKINS
  • ITERM_SESSION_ID
  • HOME
  • LANG
  • _ZSH_TMUX_FIXED_CONFIG
  • SECURITYSESSIONID
  • KEYTIMEOUT
  • SDKMAN_VERSION
  • TMPDIR
  • LC_TERMINAL
  • ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE
  • GROOVY_HOME
  • PYENV_DIR
  • TERM
  • WORK
  • USER
  • COLORFGBG
  • VISUAL
  • LC_TERMINAL_VERSION
  • SDKMAN_DIR
  • DISPLAY
  • SHLVL
  • PAGER
  • PGDATABASE
  • SDKMAN_CANDIDATES_API
  • XPC_SERVICE_NAME
  • DIRHISTORY_SIZE
  • LC_CTYPE
  • ZSH_TMUX_TERM
  • PYENV_ROOT
  • GOWORK
  • LC_ALL
  • Apple_PubSub_Socket_Render
  • PATH
  • SDKMAN_PLATFORM
  • OLDPWD
  • GOPATH
  • __CF_USER_TEXT_ENCODING
  • TERM_PROGRAM
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • PIP_SHIMS_BASE_MODULE
  • PIP_PYTHON_PATH
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

Debug–specific environment variables:

  • PATH: /Users/jm/.pyenv/versions/3.7.2/bin:/usr/local/Cellar/pyenv/1.2.10/libexec:/Users/jm/.pyenv/shims:/Users/jm/.sdkman/candidates/java/current/bin:/Users/jm/.sdkman/candidates/groovy/current/bin:/Users/jm/code/go/bin:/usr/local/sbin:/Users/jm/.npm/bin:/usr/local/bin:/Users/jm/.bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/jm/.fzf/bin
  • SHELL: /usr/local/bin/zsh
  • EDITOR: /usr/local/bin/nvim
  • LANG: en_US.UTF-8
  • PWD: /Users/jm/code/alloy

Contents of Pipfile ('/Users/jm/code/alloy/Pipfile'):

[requires]
python_version = "3.7"

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
xmla = {editable = true,git = "https://github.com/alloytech/olap.git",ref = "py3",subdirectory = "xmla"}
@techalchemy techalchemy added Category: Dependency Resolution Issue relates to dependency resolution. Priority: High This item is high priority and should be resolved quickly. Status: Awaiting Upstream This issue requires the attention of an upstream maintainer. Status: In Progress This item is in progress. Type: Bug 🐛 This issue is a bug. Type: Release Blocker Must be resolved before the next release can be cut. labels May 19, 2019
@techalchemy
Copy link
Member

#3404 is incredibly complicated and required multiple upstream fixes across pip, setuptools, requirementslib, and was impacted by the pep517 rollout which is still causing breakages across the ecosystem. This on the other hand uncovers an additional bug related to the rollout. Thanks for reporting!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Category: Dependency Resolution Issue relates to dependency resolution. Priority: High This item is high priority and should be resolved quickly. Status: Awaiting Upstream This issue requires the attention of an upstream maintainer. Status: In Progress This item is in progress. Type: Bug 🐛 This issue is a bug. Type: Release Blocker Must be resolved before the next release can be cut.
Projects
None yet
Development

No branches or pull requests

2 participants