def test_default_virtual_package_input_hash_stability(): from conda_lock.virtual_package import default_virtual_package_repodata vpr = default_virtual_package_repodata() expected = { "linux-64": "93c22a62ca75ed0fd7649a6c9fbac611fd42a694465841b141c91aa2d4edf1b3", "linux-aarch64": "e1115c4d229438be0bd3e79c3734afb1f2fb8db42cf0c20c0e2ede5405e97e25", "linux-ppc64le": "d980051789ba7e6374c0833bf615b060bc0c5dfa63907eb4f11ac85f4dbb80da", "osx-64": "8e2e62ea8061892d10606e9a10f05f4c7358c798e5a2d390b1206568bf9338a2", "osx-arm64": "00eb1bef60572765717bba1fd86da4527f3b69bd40eb51cd0b60cdc89c27f5a6", "win-64": "d97edec84c3f450ac23bd2fbac57f77c0b0bffd5313114c1fa8c28c4df8ead6e", } spec = LockSpecification( dependencies=[], channels=[], platforms=list(expected.keys()), sources=[], virtual_package_repo=vpr, ) assert spec.content_hash() == expected
def test_virtual_package_input_hash_stability(): from conda_lock.virtual_package import virtual_package_repo_from_specification test_dir = TEST_DIR.joinpath("test-cuda") spec = test_dir / "virtual-packages-old-glibc.yaml" vpr = virtual_package_repo_from_specification(spec) spec = LockSpecification( dependencies=[], channels=[], platforms=["linux-64"], sources=[], virtual_package_repo=vpr, ) expected = "d8d0e556f97aed2eaa05fe9728b5a1c91c1b532d3eed409474e8a9b85b633a26" assert spec.content_hash() == {"linux-64": expected}
def create_lockfile_from_spec( *, conda: PathLike, spec: LockSpecification, platforms: List[str] = [], lockfile_path: pathlib.Path, update_spec: Optional[UpdateSpecification] = None, ) -> Lockfile: """ Solve or update specification """ assert spec.virtual_package_repo is not None virtual_package_channel = spec.virtual_package_repo.channel_url locked: Dict[Tuple[str, str, str], LockedDependency] = {} for platform in platforms or spec.platforms: deps = _solve_for_arch( conda=conda, spec=spec, platform=platform, channels=[*spec.channels, virtual_package_channel], update_spec=update_spec, ) for dep in deps: locked[(dep.manager, dep.name, dep.platform)] = dep return Lockfile( package=[locked[k] for k in locked], metadata=LockMeta( content_hash=spec.content_hash(), channels=spec.channels, platforms=spec.platforms, sources=[ relative_path(lockfile_path.parent, source) for source in spec.sources ], ), )