Skip to content

Crash in project.py and util/resource.py if a source doesn't have a 'name' attribute. #6106

@jralls

Description

@jralls

Pipenv during install without a Pipfile.lock crashes if a module source entry doesn't have a name attribute:

 File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/resolver.py", line 675, in <module>
    main()
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/resolver.py", line 661, in main
    _main(
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/resolver.py", line 645, in _main
    resolve_packages(
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/resolver.py", line 612, in resolve_packages
    results, resolver = resolve(
                        ^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/resolver.py", line 592, in resolve
    return resolve_deps(
           ^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 918, in resolve_deps
    results, hashes, internal_resolver = actually_resolve_deps(
                                         ^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 692, in actually_resolve_deps
    hashes = resolver.resolve_hashes
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/share/pyenv/versions/3.11.7/lib/python3.11/functools.py", line 1001, in __get__
    val = self.func(instance)
          ^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 595, in resolve_hashes
    self.hashes = self.collect_hashes(ireq)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 566, in collect_hashes
    hashes = self.project.get_hashes_from_pypi(ireq, source)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/project.py", line 270, in get_hashes_from_pypi
    session = self.get_requests_session_for_source(source)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/project.py", line 239, in get_requests_session_for_source
    if self.sessions.get(source["name"]):
                         ~~~~~~^^^^^^^^
KeyError: 'name'
✘ Locking Failed!
⠦ Locking...
Traceback (most recent call last):
  File "/Users/john/test-setup/bin/pipenv", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/cli/options.py", line 58, in main
    return super().main(*args, **kwargs, windows_expand_args=False)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1078, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/decorators.py", line 92, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/vendor/click/core.py", line 783, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/cli/command.py", line 209, in install
    do_install(
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/routines/install.py", line 164, in do_install
    do_init(
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/routines/install.py", line 672, in do_init
    do_lock(
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/routines/lock.py", line 65, in do_lock
    venv_resolve_deps(
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 859, in venv_resolve_deps
    c = resolve(cmd, st, project=project)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/john/test-setup/lib/python3.11/site-packages/pipenv/utils/resolver.py", line 728, in resolve
    raise RuntimeError("Failed to lock Pipfile.lock!")
RuntimeError: Failed to lock Pipfile.lock!

$ pipenv --support

Pipenv version: '2023.12.1'

Pipenv location: '/Users/john/test-setup/lib/python3.11/site-packages/pipenv'

Python location: '/Users/john/test-setup/share/pyenv/versions/3.11.7/bin/python3.11'

OS Name: 'posix'

User pip version: '23.3.2'

user Python installations found:

PEP 508 Information:

{'implementation_name': 'cpython',
 'implementation_version': '3.11.7',
 'os_name': 'posix',
 'platform_machine': 'arm64',
 'platform_python_implementation': 'CPython',
 'platform_release': '23.4.0',
 'platform_system': 'Darwin',
 'platform_version': 'Darwin Kernel Version 23.4.0: Thu Feb 22 21:55:06 PST '
                     '2024; root:xnu-10063.101.15~3/RELEASE_ARM64_T6000',
 'python_full_version': '3.11.7',
 'python_version': '3.11',
 'sys_platform': 'darwin'}

System environment variables:

  • PYTHONUSERBASE
  • PIPENV_PIPFILE
  • PATH
  • PIPENV_DOTENV_LOCATION
  • MANPATH
  • TERM_PROGRAM
  • GTK_OSX_BUILD_DIR
  • TERM
  • SHELL
  • COPYFILE_DISABLE
  • TMPDIR
  • TERM_PROGRAM_VERSION
  • OLDPWD
  • TERM_SESSION_ID
  • GTK_OSX_DIR
  • PATHSET
  • USER
  • ALPHAVANTAGE_API_KEY
  • LD_TWOLEVEL_NAMESPACE
  • COMMAND_MODE
  • SSH_AUTH_SOCK
  • __CF_USER_TEXT_ENCODING
  • BASH_SILENCE_DEPRECATION_WARNING
  • __CFBundleIdentifier
  • PWD
  • EDITOR
  • LANG
  • ITERM_PROFILE
  • XPC_FLAGS
  • XPC_SERVICE_NAME
  • PYENV_SHELL
  • SHLVL
  • HOME
  • COLORFGBG
  • LC_TERMINAL_VERSION
  • ITERM_SESSION_ID
  • LOGNAME
  • VISUAL
  • CVS_RSH
  • PROMPT_COMMAND
  • INFOPATH
  • LC_TERMINAL
  • COLORTERM
  • _
  • PIP_DISABLE_PIP_VERSION_CHECK
  • PYTHONDONTWRITEBYTECODE
  • DEV_SRC_ROOT
  • PYENV_ROOT
  • PIP_CONFIG_DIR
  • PYTHONFINDER_IGNORE_UNSUPPORTED

Pipenv–specific environment variables:

  • PIPENV_PIPFILE: /Users/john/test-setup/etc/Pipfile
  • PIPENV_DOTENV_LOCATION: /Users/john/test-setup/etc/pipenv-env

Debug–specific environment variables:

  • PATH: /Users/john/test-setup/bin:test-setup/share/pyenv/shims/:/Users/john/Source/pyenv/plugins/python-build/bin/:/Users/john/.pyenv/shims:/Users/john/.local/bin:/usr/local/bin:/bin:/usr/bin:/sbin:/usr/sbin
  • SHELL: /bin/bash
  • EDITOR: pico
  • LANG: C
  • PWD: /Users/john

Contents of Pipfile ('/Users/john/test-setup/etc/Pipfile'):

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

[packages]
pygments = "*"
meson = {version=">=0.56.0"}
docutils = "*"
gi-docgen = "*"
setuptools = "*"
packaging = "*"

[scripts]
jhbuild = "/Users/john/test-setup/libexec/run_jhbuild.py"

[requires]
python_version = "3.11"

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions