<#2150 A locked requirement with mixed artifact ty...
# github-notifications
c
#2150 A locked requirement with mixed artifact types fails to lock. Issue created by jsirois An example error (with PEX_VERBOSE set) looks like so:
Copy code
File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/result.py", line 105, in catch
    return func(*args, **kwargs)
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/cli/command.py", line 84, in run
    return subcommand_func(self)
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/cli/commands/lock.py", line 482, in _create
    create(
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/resolve/lockfile/create.py", line 428, in create
    locked_resolves = lock_observer.lock(downloaded)
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/resolve/lockfile/create.py", line 328, in lock
    return tuple(
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/resolve/lockfile/create.py", line 329, in <genexpr>
    LockedResolve.create(
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/resolve/locked_resolve.py", line 534, in create
    return cls(locked_requirements=SortedTuple(locked_requirements), platform_tag=platform_tag)
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/sorted_tuple.py", line 60, in __new__
    cls, sorted(iterable, key=key, reverse=reverse) if iterable else ()
  File "/Users/kvelayutham/opt/anaconda3/envs/py38/lib/python3.8/site-packages/pex/vendor/_vendored/attrs/attr/_make.py", line 1848, in __lt__
    return attrs_to_tuple(self) < attrs_to_tuple(other)
TypeError: '<' not supported between instances of 'VCSArtifact' and 'FileArtifact'
This is fundamentally because this
SortedSet
admits a union of types that do not support inter-comparison: pex/pex/resolve/locked_resolve.py Lines 253 to 255 in </pantsbuild/pex/commit/adf7e5449562fc819a3e93c0f4f4d6e155284af0|adf7e54> Each of these types just accepts the default
@attr.s(frozen=True)
generated comparison methods, which require an exact type match. pantsbuild/pex