sarugaku / passa

Resolver implementation and toolset for generating and interacting with Pipfile and Pipfile.lock.
ISC License
53 stars 12 forks source link

Passa lock fails due to KeyError #67

Open frostming opened 4 years ago

frostming commented 4 years ago

Run passa lock on the add_test_frost branch.

Traceback (most recent call last):
  File "C:\Users\frostming\.virtualenvs\passa-ZPGQzv6O\Scripts\passa-script.py", line 11, in <module>
    load_entry_point('passa', 'console_scripts', 'passa')()
  File "d:\workspace\passa\src\passa\cli\__init__.py", line 47, in main
    result = f(options)
  File "d:\workspace\passa\src\passa\cli\lock.py", line 14, in run
    return lock(project=options.project)
  File "d:\workspace\passa\src\passa\actions\lock.py", line 12, in lock
    success = lock(locker)
  File "d:\workspace\passa\src\passa\operations\lock.py", line 13, in lock
    locker.lock()
  File "d:\workspace\passa\src\passa\models\lockers.py", line 158, in lock
    provider.collected_requires_pythons,
  File "d:\workspace\passa\src\passa\models\metadata.py", line 210, in set_metadata
    dependencies, pythons, copy.deepcopy(traces),
  File "d:\workspace\passa\src\passa\models\metadata.py", line 161, in _calculate_metasets_mapping
    dependencies, pythons, key, trace, all_metasets,
  File "d:\workspace\passa\src\passa\models\metadata.py", line 140, in _build_metasets
    python = pythons[key]
KeyError: 'plette[validation]'
frostming commented 4 years ago

https://github.com/sarugaku/passa/blob/802474118c67c7b9cfd01b49acaea75a37b10ac7/src/passa/internals/utils.py#L141-L148

This is because Requirement.from_line() hits the LRU cache and didn't create a new instance, which results in unexpectedly stripping the extras from the original requirement.