diff --git a/conda_forge_tick/make_migrators.py b/conda_forge_tick/make_migrators.py index 1bb864400..46c6a3852 100644 --- a/conda_forge_tick/make_migrators.py +++ b/conda_forge_tick/make_migrators.py @@ -689,6 +689,7 @@ def load_migrators() -> MutableSequence[Migrator]: migrators = [] version_migrator = None pinning_migrators = [] + longterm_migrators = [] all_names = get_all_keys_for_hashmap("migrators") with executor("process", 4) as pool: futs = [pool.submit(_load, name) for name in all_names] @@ -703,7 +704,10 @@ def load_migrators() -> MutableSequence[Migrator]: elif isinstance(migrator, MigrationYamlCreator) or isinstance( migrator, MigrationYaml ): - pinning_migrators.append(migrator) + if getattr(migrator, "longterm", False): + longterm_migrators.append(migrator) + else: + pinning_migrators.append(migrator) else: migrators.append(migrator) @@ -711,7 +715,8 @@ def load_migrators() -> MutableSequence[Migrator]: raise RuntimeError("No version migrator found in the migrators directory!") random.shuffle(pinning_migrators) - migrators = [version_migrator] + migrators + pinning_migrators + random.shuffle(longterm_migrators) + migrators = [version_migrator] + migrators + pinning_migrators + longterm_migrators return migrators diff --git a/conda_forge_tick/migrators/migration_yaml.py b/conda_forge_tick/migrators/migration_yaml.py index 5fa64c62f..52584d243 100644 --- a/conda_forge_tick/migrators/migration_yaml.py +++ b/conda_forge_tick/migrators/migration_yaml.py @@ -136,6 +136,7 @@ def __init__( ignored_deps_per_node=None, max_solver_attempts=3, effective_graph: nx.DiGraph = None, + longterm=False, **kwargs: Any, ): if not hasattr(self, "_init_args"): @@ -156,6 +157,7 @@ def __init__( "ignored_deps_per_node": ignored_deps_per_node, "max_solver_attempts": max_solver_attempts, "effective_graph": effective_graph, + "longterm": longterm, } self._init_kwargs.update(copy.deepcopy(kwargs)) @@ -198,6 +200,7 @@ def __init__( self.pr_limit = 5 self.bump_number = bump_number self.max_solver_attempts = max_solver_attempts + self.longterm = longterm self._reset_effective_graph()