Skip to content

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

@j-martin

Description

@j-martin

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"}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Category: Dependency ResolutionIssue relates to dependency resolution.Priority: HighThis item is high priority and should be resolved quickly.Status: Awaiting UpstreamThis issue requires the attention of an upstream maintainer.Status: In ProgressThis item is in progress.Type: Bug 🐛This issue is a bug.Type: Release BlockerMust be resolved before the next release can be cut.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions