Skip to content

Commit 9ff2c45

Browse files
authored
Merge pull request #3868 from regro/revert-3867-revert-3851-combine-dep
fix: add mini-replacement migrator back in w/ serialization fixes and tests
2 parents e0bc216 + 7d9471a commit 9ff2c45

20 files changed

+1633
-271
lines changed

conda_forge_tick/make_migrators.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,28 +51,26 @@
5151
GraphMigrator,
5252
GuardTestingMigrator,
5353
Jinja2VarsCleanup,
54-
JpegTurboMigrator,
5554
LibboostMigrator,
5655
LicenseMigrator,
5756
MigrationYaml,
5857
Migrator,
5958
MiniMigrator,
59+
MiniReplacement,
6060
MPIPinRunAsBuildCleanup,
6161
NoarchPythonMinMigrator,
6262
NoCondaInspectMigrator,
6363
Numpy2Migrator,
6464
PipMigrator,
6565
PipWheelMigrator,
6666
PyPIOrgMigrator,
67-
QtQtMainMigrator,
6867
Replacement,
6968
RUCRTCleanup,
7069
StaticLibMigrator,
7170
StdlibMigrator,
7271
UpdateCMakeArgsMigrator,
7372
UpdateConfigSubGuessMigrator,
7473
Version,
75-
XzLibLzmaDevelMigrator,
7674
YAMLRoundTrip,
7775
make_from_lazy_json_data,
7876
skip_migrator_due_to_schema,
@@ -376,9 +374,11 @@ def add_rebuild_migration_yaml(
376374
StdlibMigrator(),
377375
]
378376
if migration_name == "qt515":
379-
piggy_back_migrations.append(QtQtMainMigrator())
377+
piggy_back_migrations.append(MiniReplacement(old_pkg="qt", new_pkg="qt-main"))
380378
if migration_name == "jpeg_to_libjpeg_turbo":
381-
piggy_back_migrations.append(JpegTurboMigrator())
379+
piggy_back_migrations.append(
380+
MiniReplacement(old_pkg="jpeg", new_pkg="libjpeg-turbo")
381+
)
382382
if migration_name == "boost_cpp_to_libboost":
383383
piggy_back_migrations.append(LibboostMigrator())
384384
if migration_name == "numpy2":
@@ -388,7 +388,9 @@ def add_rebuild_migration_yaml(
388388
if migration_name.startswith("flang19"):
389389
piggy_back_migrations.append(FlangMigrator())
390390
if migration_name.startswith("xz_to_liblzma_devel"):
391-
piggy_back_migrations.append(XzLibLzmaDevelMigrator())
391+
piggy_back_migrations.append(
392+
MiniReplacement(old_pkg="xz", new_pkg="liblzma-devel")
393+
)
392394
piggy_back_migrations = _make_mini_migrators_with_defaults(
393395
extra_mini_migrators=piggy_back_migrations
394396
)

conda_forge_tick/migrators/__init__.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
from .extra_jinj2a_keys_cleanup import ExtraJinja2KeysCleanup
2727
from .flang import FlangMigrator
2828
from .jinja2_vars_cleanup import Jinja2VarsCleanup
29-
from .jpegturbo import JpegTurboMigrator
3029
from .libboost import LibboostMigrator
3130
from .license import LicenseMigrator
3231
from .matplotlib_base import MatplotlibBase
@@ -36,12 +35,10 @@
3635
from .pip_check import PipCheckMigrator
3736
from .pip_wheel_dep import PipWheelMigrator
3837
from .pypi_org import PyPIOrgMigrator
39-
from .qt_to_qt_main import QtQtMainMigrator
4038
from .r_ucrt import RUCRTCleanup
41-
from .replacement import Replacement
39+
from .replacement import Replacement, MiniReplacement
4240
from .use_pip import PipMigrator
4341
from .version import Version
44-
from .xz_to_liblzma_devel import XzLibLzmaDevelMigrator
4542
from .noarch_python_min import NoarchPythonMinMigrator
4643
from .round_trip import YAMLRoundTrip
4744
from .staticlib import StaticLibMigrator

conda_forge_tick/migrators/jpegturbo.py

Lines changed: 0 additions & 30 deletions
This file was deleted.

conda_forge_tick/migrators/qt_to_qt_main.py

Lines changed: 0 additions & 31 deletions
This file was deleted.

conda_forge_tick/migrators/replacement.py

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
import os
33
import re
44
import typing
5+
from pathlib import Path
56
from typing import Any
67

78
import networkx as nx
89

910
from conda_forge_tick.contexts import ClonedFeedstockContext, FeedstockContext
10-
from conda_forge_tick.migrators.core import Migrator
11+
from conda_forge_tick.migrators.core import Migrator, MiniMigrator
12+
from conda_forge_tick.os_utils import pushd
1113

1214
if typing.TYPE_CHECKING:
1315
from ..migrators_types import AttrsTypedDict, MigrationUidTypedDict, PackageName
@@ -147,3 +149,59 @@ def migrator_uid(self, attrs: "AttrsTypedDict") -> "MigrationUidTypedDict":
147149
n = super().migrator_uid(attrs)
148150
n["name"] = self.name
149151
return n
152+
153+
154+
class MiniReplacement(MiniMigrator):
155+
"""Minimigrator for replacing one package with another.
156+
157+
Parameters
158+
----------
159+
old_pkg : str
160+
The package to be replaced.
161+
new_pkg : str
162+
The package to replace the `old_pkg`.
163+
"""
164+
165+
allowed_schema_versions = [0, 1]
166+
167+
def __init__(
168+
self,
169+
*,
170+
old_pkg: "PackageName",
171+
new_pkg: "PackageName",
172+
requirement_types: tuple[str] = ("host",),
173+
):
174+
if not hasattr(self, "_init_args"):
175+
self._init_args = []
176+
177+
if not hasattr(self, "_init_kwargs"):
178+
self._init_kwargs = {
179+
"old_pkg": old_pkg,
180+
"new_pkg": new_pkg,
181+
"requirement_types": requirement_types,
182+
}
183+
184+
super().__init__()
185+
self.old_pkg = old_pkg
186+
self.new_pkg = new_pkg
187+
self.packages = {self.old_pkg}
188+
self.requirement_types = requirement_types
189+
190+
def filter(self, attrs: "AttrsTypedDict", not_bad_str_start: str = "") -> bool:
191+
requirements = attrs.get("requirements", {})
192+
rq = set()
193+
for req_type in self.requirement_types:
194+
rq |= requirements.get(req_type, set())
195+
return super().filter(attrs) or len(rq & self.packages) == 0
196+
197+
def migrate(self, recipe_dir: str, attrs: "AttrsTypedDict", **kwargs: Any):
198+
with pushd(recipe_dir):
199+
recipe_file = Path(
200+
next(filter(os.path.exists, ("recipe.yaml", "meta.yaml")))
201+
)
202+
raw = recipe_file.read_text()
203+
upd = raw.replace(f" {self.old_pkg} ", f" {self.new_pkg} ").replace(
204+
f" {self.old_pkg}\n", f" {self.new_pkg}\n"
205+
)
206+
207+
recipe_file.write_text(upd)

conda_forge_tick/migrators/xz_to_liblzma_devel.py

Lines changed: 0 additions & 31 deletions
This file was deleted.

tests/test_jpeg_libjpeg_turbo.py

Lines changed: 0 additions & 49 deletions
This file was deleted.

tests/test_migrator_to_json.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ def test_migrator_to_json_minimigrators_nodeps():
5151
and issubclass(migrator, conda_forge_tick.migrators.MiniMigrator)
5252
and migrator != conda_forge_tick.migrators.MiniMigrator
5353
and migrator != conda_forge_tick.migrators.DependencyUpdateMigrator
54+
and migrator != conda_forge_tick.migrators.MiniReplacement
5455
):
5556
migrator = migrator()
5657
data = migrator.to_lazy_json_data()
@@ -79,6 +80,7 @@ def test_migrator_to_json_version():
7980
conda_forge_tick.migrators.DependencyUpdateMigrator(["blah2"]),
8081
conda_forge_tick.migrators.LibboostMigrator(),
8182
conda_forge_tick.migrators.DuplicateLinesCleanup(),
83+
conda_forge_tick.migrators.MiniReplacement(old_pkg="foo", new_pkg="bar"),
8284
],
8385
)
8486
data = migrator.to_lazy_json_data()

0 commit comments

Comments
 (0)