From 8a1f0dbb572a4351c3cb62ee4788948a727ac928 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 08:41:14 +0200 Subject: [PATCH 01/10] add build number editing for v1 recipes --- conda_forge_tick/migrators/core.py | 25 ++++---- conda_forge_tick/update_recipe/v1/__init__.py | 3 + .../update_recipe/v1/build_number.py | 61 +++++++++++++++++++ conda_forge_tick/update_recipe/v1/yaml.py | 22 +++++++ .../build_number/test_1/expected.yaml | 10 +++ .../recipe_v1/build_number/test_1/recipe.yaml | 10 +++ .../build_number/test_2/expected.yaml | 11 ++++ .../recipe_v1/build_number/test_2/recipe.yaml | 11 ++++ tests/test_recipe_editing_v1.py | 21 +++++++ 9 files changed, 163 insertions(+), 11 deletions(-) create mode 100644 conda_forge_tick/update_recipe/v1/__init__.py create mode 100644 conda_forge_tick/update_recipe/v1/build_number.py create mode 100644 conda_forge_tick/update_recipe/v1/yaml.py create mode 100644 tests/recipe_v1/build_number/test_1/expected.yaml create mode 100644 tests/recipe_v1/build_number/test_1/recipe.yaml create mode 100644 tests/recipe_v1/build_number/test_2/expected.yaml create mode 100644 tests/recipe_v1/build_number/test_2/recipe.yaml create mode 100644 tests/test_recipe_editing_v1.py diff --git a/conda_forge_tick/migrators/core.py b/conda_forge_tick/migrators/core.py index c0bfa47c9..8fc3d2550 100644 --- a/conda_forge_tick/migrators/core.py +++ b/conda_forge_tick/migrators/core.py @@ -5,6 +5,7 @@ import logging import re import typing +from pathlib import Path from typing import Any, List, Sequence, Set import dateutil.parser @@ -14,7 +15,7 @@ from conda_forge_tick.lazy_json_backends import LazyJson from conda_forge_tick.make_graph import make_outputs_lut_from_graph from conda_forge_tick.path_lengths import cyclic_topological_sort -from conda_forge_tick.update_recipe import update_build_number +from conda_forge_tick.update_recipe import update_build_number, v2 from conda_forge_tick.utils import ( frozen_to_json_friendly, get_bot_run_url, @@ -592,7 +593,7 @@ def order( } return cyclic_topological_sort(graph, top_level) - def set_build_number(self, filename: str) -> None: + def set_build_number(self, filename: str | Path) -> None: """Bump the build number of the specified recipe. Parameters @@ -600,17 +601,19 @@ def set_build_number(self, filename: str) -> None: filename : str Path the the meta.yaml """ - with open(filename) as f: - raw = f.read() + filename = Path(filename) + if filename.name == "recipe.yaml": + filename.write_text(v2.update_build_number(filename, self.new_build_number)) + else: + raw = filename.read_text() - new_myaml = update_build_number( - raw, - self.new_build_number, - build_patterns=self.build_patterns, - ) + new_myaml = update_build_number( + raw, + self.new_build_number, + build_patterns=self.build_patterns, + ) - with open(filename, "w") as f: - f.write(new_myaml) + filename.write_text(new_myaml) def new_build_number(self, old_number: int) -> int: """Determine the new build number to use. diff --git a/conda_forge_tick/update_recipe/v1/__init__.py b/conda_forge_tick/update_recipe/v1/__init__.py new file mode 100644 index 000000000..b8551a6ab --- /dev/null +++ b/conda_forge_tick/update_recipe/v1/__init__.py @@ -0,0 +1,3 @@ +from .build_number import update_build_number + +__all__ = ["update_build_number"] diff --git a/conda_forge_tick/update_recipe/v1/build_number.py b/conda_forge_tick/update_recipe/v1/build_number.py new file mode 100644 index 000000000..ae328613b --- /dev/null +++ b/conda_forge_tick/update_recipe/v1/build_number.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +import logging +from typing import TYPE_CHECKING, Any, Literal + +from conda_forge_tick.update_recipe.v1.yaml import _dump_yaml_to_str, _load_yaml + +if TYPE_CHECKING: + from pathlib import Path + +logger = logging.getLogger(__name__) + +HashType = Literal["md5", "sha256"] + + +def _update_build_number_in_context( + recipe: dict[str, Any], new_build_number: int +) -> bool: + for key in recipe.get("context", {}): + if key.startswith("build_") or key == "build": + recipe["context"][key] = new_build_number + return True + return False + + +def _update_build_number_in_recipe( + recipe: dict[str, Any], new_build_number: int +) -> bool: + is_modified = False + if "build" in recipe and "number" in recipe["build"]: + recipe["build"]["number"] = new_build_number + is_modified = True + + if "outputs" in recipe: + for output in recipe["outputs"]: + if "build" in output and "number" in output["build"]: + output["build"]["number"] = new_build_number + is_modified = True + + return is_modified + + +def update_build_number(file: Path, new_build_number: int = 0) -> str: + """ + Update the build number in the recipe file. + + Arguments: + ---------- + * `file` - The path to the recipe file. + * `new_build_number` - The new build number to use. (default: 0) + + Returns: + -------- + * The updated recipe as a string. + """ + data = _load_yaml(file) + build_number_modified = _update_build_number_in_context(data, new_build_number) + if not build_number_modified: + _update_build_number_in_recipe(data, new_build_number) + + return _dump_yaml_to_str(data) diff --git a/conda_forge_tick/update_recipe/v1/yaml.py b/conda_forge_tick/update_recipe/v1/yaml.py new file mode 100644 index 000000000..fd5990636 --- /dev/null +++ b/conda_forge_tick/update_recipe/v1/yaml.py @@ -0,0 +1,22 @@ +import io +from pathlib import Path + +from ruamel.yaml import YAML + +yaml = YAML() +yaml.preserve_quotes = True +yaml.width = 320 +yaml.indent(mapping=2, sequence=4, offset=2) + + +def _load_yaml(file: Path) -> dict: + """Load a YAML file.""" + with file.open("r") as f: + return yaml.load(f) + + +def _dump_yaml_to_str(data: dict) -> str: + """Dump a dictionary to a YAML string.""" + with io.StringIO() as f: + yaml.dump(data, f) + return f.getvalue() diff --git a/tests/recipe_v1/build_number/test_1/expected.yaml b/tests/recipe_v1/build_number/test_1/expected.yaml new file mode 100644 index 000000000..f22fd1978 --- /dev/null +++ b/tests/recipe_v1/build_number/test_1/expected.yaml @@ -0,0 +1,10 @@ +# set the build number to something +context: + build: 0 + +package: + name: recipe_1 + version: "0.1.0" + +build: + number: ${{ build }} diff --git a/tests/recipe_v1/build_number/test_1/recipe.yaml b/tests/recipe_v1/build_number/test_1/recipe.yaml new file mode 100644 index 000000000..5ea4da2af --- /dev/null +++ b/tests/recipe_v1/build_number/test_1/recipe.yaml @@ -0,0 +1,10 @@ +# set the build number to something +context: + build: 123 + +package: + name: recipe_1 + version: "0.1.0" + +build: + number: ${{ build }} diff --git a/tests/recipe_v1/build_number/test_2/expected.yaml b/tests/recipe_v1/build_number/test_2/expected.yaml new file mode 100644 index 000000000..3095c27dd --- /dev/null +++ b/tests/recipe_v1/build_number/test_2/expected.yaml @@ -0,0 +1,11 @@ +# set the build number to something +package: + name: recipe_1 + version: "0.1.0" + +# set the build number to something directly in the recipe text +build: + number: 0 + +source: + - url: foo diff --git a/tests/recipe_v1/build_number/test_2/recipe.yaml b/tests/recipe_v1/build_number/test_2/recipe.yaml new file mode 100644 index 000000000..d0906a9a5 --- /dev/null +++ b/tests/recipe_v1/build_number/test_2/recipe.yaml @@ -0,0 +1,11 @@ +# set the build number to something +package: + name: recipe_1 + version: "0.1.0" + +# set the build number to something directly in the recipe text +build: + number: 321 + +source: +- url: foo diff --git a/tests/test_recipe_editing_v1.py b/tests/test_recipe_editing_v1.py new file mode 100644 index 000000000..102a3e567 --- /dev/null +++ b/tests/test_recipe_editing_v1.py @@ -0,0 +1,21 @@ +from pathlib import Path + +import pytest + +from conda_forge_tick.update_recipe.v1 import update_build_number + + +@pytest.fixture +def data_dir() -> Path: + return Path(__file__).parent / "recipe_v1" + + +def test_build_number_mod(data_dir: Path) -> None: + tests = data_dir / "build_number" + result = update_build_number(tests / "test_1/recipe.yaml", 0) + expected = tests / "test_1/expected.yaml" + assert result == expected.read_text() + + result = update_build_number(tests / "test_2/recipe.yaml", 0) + expected = tests / "test_2/expected.yaml" + assert result == expected.read_text() From 0bb212761caabd93921f232a907dd29de2a26193 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 10:27:07 +0200 Subject: [PATCH 02/10] adjust import --- conda_forge_tick/migrators/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conda_forge_tick/migrators/core.py b/conda_forge_tick/migrators/core.py index 8fc3d2550..d431e1704 100644 --- a/conda_forge_tick/migrators/core.py +++ b/conda_forge_tick/migrators/core.py @@ -15,7 +15,7 @@ from conda_forge_tick.lazy_json_backends import LazyJson from conda_forge_tick.make_graph import make_outputs_lut_from_graph from conda_forge_tick.path_lengths import cyclic_topological_sort -from conda_forge_tick.update_recipe import update_build_number, v2 +from conda_forge_tick.update_recipe import update_build_number, v1 from conda_forge_tick.utils import ( frozen_to_json_friendly, get_bot_run_url, @@ -603,7 +603,7 @@ def set_build_number(self, filename: str | Path) -> None: """ filename = Path(filename) if filename.name == "recipe.yaml": - filename.write_text(v2.update_build_number(filename, self.new_build_number)) + filename.write_text(v1.update_build_number(filename, self.new_build_number)) else: raw = filename.read_text() From 8ca6b11499cc5b4333d704e8c9604662f9694f3c Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 17:05:16 +0200 Subject: [PATCH 03/10] allow callable --- .../update_recipe/v1/build_number.py | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/conda_forge_tick/update_recipe/v1/build_number.py b/conda_forge_tick/update_recipe/v1/build_number.py index ae328613b..1a5f315d0 100644 --- a/conda_forge_tick/update_recipe/v1/build_number.py +++ b/conda_forge_tick/update_recipe/v1/build_number.py @@ -1,7 +1,8 @@ from __future__ import annotations import logging -from typing import TYPE_CHECKING, Any, Literal +import re +from typing import TYPE_CHECKING, Any, Callable, Literal from conda_forge_tick.update_recipe.v1.yaml import _dump_yaml_to_str, _load_yaml @@ -12,6 +13,26 @@ HashType = Literal["md5", "sha256"] +RE_PATTERN = re.compile(r"(?:build|build_number|number):\s*(\d+)") + + +def old_build_number(recipe_text: str) -> int: + """ + Extract the build number from the recipe text. + + Arguments: + ---------- + * `recipe_text` - The recipe text. + + Returns: + -------- + * The build number. + """ + match = re.search(RE_PATTERN, recipe_text) + if match is not None: + return int(match.group(1)) + return 0 + def _update_build_number_in_context( recipe: dict[str, Any], new_build_number: int @@ -40,7 +61,7 @@ def _update_build_number_in_recipe( return is_modified -def update_build_number(file: Path, new_build_number: int = 0) -> str: +def update_build_number(file: Path, new_build_number: int | Callable = 0) -> str: """ Update the build number in the recipe file. @@ -54,7 +75,13 @@ def update_build_number(file: Path, new_build_number: int = 0) -> str: * The updated recipe as a string. """ data = _load_yaml(file) + + if callable(new_build_number): + detected_build_number = old_build_number(file.read_text()) + new_build_number = new_build_number(detected_build_number) + build_number_modified = _update_build_number_in_context(data, new_build_number) + if not build_number_modified: _update_build_number_in_recipe(data, new_build_number) From 5753390b9325460f9b946535b19237de0ae358e6 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 17:09:49 +0200 Subject: [PATCH 04/10] fix precommit --- conda_forge_tick/recipe_parser/_parser.py | 2 +- conda_forge_tick/update_recipe/v1/__init__.py | 3 - .../update_recipe/v1/build_number.py | 88 ------------------- conda_forge_tick/update_recipe/v1/yaml.py | 22 ----- 4 files changed, 1 insertion(+), 114 deletions(-) delete mode 100644 conda_forge_tick/update_recipe/v1/__init__.py delete mode 100644 conda_forge_tick/update_recipe/v1/build_number.py delete mode 100644 conda_forge_tick/update_recipe/v1/yaml.py diff --git a/conda_forge_tick/recipe_parser/_parser.py b/conda_forge_tick/recipe_parser/_parser.py index 6f6aa5f68..89531a64d 100644 --- a/conda_forge_tick/recipe_parser/_parser.py +++ b/conda_forge_tick/recipe_parser/_parser.py @@ -41,7 +41,7 @@ BAD_MULTILINE_STRING_WITH_SELECTOR = re.compile(r"[^|#]*\|\s+#") -def _get_yaml_parser(): +def _get_yaml_parser(typ="jinja2"): """yaml parser that is jinja2 aware""" # using a function here so settings are always the same parser = YAML(typ="jinja2") diff --git a/conda_forge_tick/update_recipe/v1/__init__.py b/conda_forge_tick/update_recipe/v1/__init__.py deleted file mode 100644 index b8551a6ab..000000000 --- a/conda_forge_tick/update_recipe/v1/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .build_number import update_build_number - -__all__ = ["update_build_number"] diff --git a/conda_forge_tick/update_recipe/v1/build_number.py b/conda_forge_tick/update_recipe/v1/build_number.py deleted file mode 100644 index 1a5f315d0..000000000 --- a/conda_forge_tick/update_recipe/v1/build_number.py +++ /dev/null @@ -1,88 +0,0 @@ -from __future__ import annotations - -import logging -import re -from typing import TYPE_CHECKING, Any, Callable, Literal - -from conda_forge_tick.update_recipe.v1.yaml import _dump_yaml_to_str, _load_yaml - -if TYPE_CHECKING: - from pathlib import Path - -logger = logging.getLogger(__name__) - -HashType = Literal["md5", "sha256"] - -RE_PATTERN = re.compile(r"(?:build|build_number|number):\s*(\d+)") - - -def old_build_number(recipe_text: str) -> int: - """ - Extract the build number from the recipe text. - - Arguments: - ---------- - * `recipe_text` - The recipe text. - - Returns: - -------- - * The build number. - """ - match = re.search(RE_PATTERN, recipe_text) - if match is not None: - return int(match.group(1)) - return 0 - - -def _update_build_number_in_context( - recipe: dict[str, Any], new_build_number: int -) -> bool: - for key in recipe.get("context", {}): - if key.startswith("build_") or key == "build": - recipe["context"][key] = new_build_number - return True - return False - - -def _update_build_number_in_recipe( - recipe: dict[str, Any], new_build_number: int -) -> bool: - is_modified = False - if "build" in recipe and "number" in recipe["build"]: - recipe["build"]["number"] = new_build_number - is_modified = True - - if "outputs" in recipe: - for output in recipe["outputs"]: - if "build" in output and "number" in output["build"]: - output["build"]["number"] = new_build_number - is_modified = True - - return is_modified - - -def update_build_number(file: Path, new_build_number: int | Callable = 0) -> str: - """ - Update the build number in the recipe file. - - Arguments: - ---------- - * `file` - The path to the recipe file. - * `new_build_number` - The new build number to use. (default: 0) - - Returns: - -------- - * The updated recipe as a string. - """ - data = _load_yaml(file) - - if callable(new_build_number): - detected_build_number = old_build_number(file.read_text()) - new_build_number = new_build_number(detected_build_number) - - build_number_modified = _update_build_number_in_context(data, new_build_number) - - if not build_number_modified: - _update_build_number_in_recipe(data, new_build_number) - - return _dump_yaml_to_str(data) diff --git a/conda_forge_tick/update_recipe/v1/yaml.py b/conda_forge_tick/update_recipe/v1/yaml.py deleted file mode 100644 index fd5990636..000000000 --- a/conda_forge_tick/update_recipe/v1/yaml.py +++ /dev/null @@ -1,22 +0,0 @@ -import io -from pathlib import Path - -from ruamel.yaml import YAML - -yaml = YAML() -yaml.preserve_quotes = True -yaml.width = 320 -yaml.indent(mapping=2, sequence=4, offset=2) - - -def _load_yaml(file: Path) -> dict: - """Load a YAML file.""" - with file.open("r") as f: - return yaml.load(f) - - -def _dump_yaml_to_str(data: dict) -> str: - """Dump a dictionary to a YAML string.""" - with io.StringIO() as f: - yaml.dump(data, f) - return f.getvalue() From bad38e3aa3d569e2ffb9324c514887b07fe651cc Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 17:14:55 +0200 Subject: [PATCH 05/10] rename to v1_recipe and remove yaml module --- conda_forge_tick/recipe_parser/_parser.py | 2 +- .../update_recipe/v1_recipe/__init__.py | 3 + .../update_recipe/v1_recipe/build_number.py | 102 ++++++++++++++++++ tests/test_recipe_editing_v1.py | 2 +- 4 files changed, 107 insertions(+), 2 deletions(-) create mode 100644 conda_forge_tick/update_recipe/v1_recipe/__init__.py create mode 100644 conda_forge_tick/update_recipe/v1_recipe/build_number.py diff --git a/conda_forge_tick/recipe_parser/_parser.py b/conda_forge_tick/recipe_parser/_parser.py index 89531a64d..f30a8225d 100644 --- a/conda_forge_tick/recipe_parser/_parser.py +++ b/conda_forge_tick/recipe_parser/_parser.py @@ -44,7 +44,7 @@ def _get_yaml_parser(typ="jinja2"): """yaml parser that is jinja2 aware""" # using a function here so settings are always the same - parser = YAML(typ="jinja2") + parser = YAML(typ=typ) parser.indent(mapping=2, sequence=4, offset=2) parser.width = 320 parser.preserve_quotes = True diff --git a/conda_forge_tick/update_recipe/v1_recipe/__init__.py b/conda_forge_tick/update_recipe/v1_recipe/__init__.py new file mode 100644 index 000000000..b8551a6ab --- /dev/null +++ b/conda_forge_tick/update_recipe/v1_recipe/__init__.py @@ -0,0 +1,3 @@ +from .build_number import update_build_number + +__all__ = ["update_build_number"] diff --git a/conda_forge_tick/update_recipe/v1_recipe/build_number.py b/conda_forge_tick/update_recipe/v1_recipe/build_number.py new file mode 100644 index 000000000..0553d7ae9 --- /dev/null +++ b/conda_forge_tick/update_recipe/v1_recipe/build_number.py @@ -0,0 +1,102 @@ +from __future__ import annotations + +import logging +import re +import io +from typing import TYPE_CHECKING, Any, Callable, Literal +from conda_forge_tick.recipe_parser._parser import _get_yaml_parser + +if TYPE_CHECKING: + from pathlib import Path + +logger = logging.getLogger(__name__) + +HashType = Literal["md5", "sha256"] + +RE_PATTERN = re.compile(r"(?:build|build_number|number):\s*(\d+)") + + +def old_build_number(recipe_text: str) -> int: + """ + Extract the build number from the recipe text. + + Arguments: + ---------- + * `recipe_text` - The recipe text. + + Returns: + -------- + * The build number. + """ + match = re.search(RE_PATTERN, recipe_text) + if match is not None: + return int(match.group(1)) + return 0 + + +def _update_build_number_in_context( + recipe: dict[str, Any], new_build_number: int +) -> bool: + for key in recipe.get("context", {}): + if key in {"build_number", "build", "number"}: + recipe["context"][key] = new_build_number + return True + return False + + +def _update_build_number_in_recipe( + recipe: dict[str, Any], new_build_number: int +) -> bool: + is_modified = False + if "build" in recipe and "number" in recipe["build"]: + recipe["build"]["number"] = new_build_number + is_modified = True + + if "outputs" in recipe: + for output in recipe["outputs"]: + if "build" in output and "number" in output["build"]: + output["build"]["number"] = new_build_number + is_modified = True + + return is_modified + + +def _load_yaml(file: Path): + yaml = _get_yaml_parser(typ=None) + with file.open("r") as f: + return yaml.load(f) + + +def _dump_yaml_to_str(data: dict) -> str: + """Dump a dictionary to a YAML string.""" + yaml = _get_yaml_parser(typ=None) + with io.StringIO() as f: + yaml.dump(data, f) + return f.getvalue() + + +def update_build_number(file: Path, new_build_number: int | Callable = 0) -> str: + """ + Update the build number in the recipe file. + + Arguments: + ---------- + * `file` - The path to the recipe file. + * `new_build_number` - The new build number to use. (default: 0) + + Returns: + -------- + * The updated recipe as a string. + """ + data = _load_yaml(file) + + if callable(new_build_number): + detected_build_number = old_build_number(file.read_text()) + new_build_number = new_build_number(detected_build_number) + + build_number_modified = _update_build_number_in_context(data, new_build_number) + + if not build_number_modified: + _update_build_number_in_recipe(data, new_build_number) + + return _dump_yaml_to_str(data) diff --git a/tests/test_recipe_editing_v1.py b/tests/test_recipe_editing_v1.py index 102a3e567..9ea532be4 100644 --- a/tests/test_recipe_editing_v1.py +++ b/tests/test_recipe_editing_v1.py @@ -2,7 +2,7 @@ import pytest -from conda_forge_tick.update_recipe.v1 import update_build_number +from conda_forge_tick.update_recipe.v1_recipe import update_build_number @pytest.fixture From dc769fc2882d6cca2badd4f788af0f04c1d5eab2 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 17:15:25 +0200 Subject: [PATCH 06/10] fix lint --- conda_forge_tick/update_recipe/v1_recipe/build_number.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conda_forge_tick/update_recipe/v1_recipe/build_number.py b/conda_forge_tick/update_recipe/v1_recipe/build_number.py index 0553d7ae9..a57c02197 100644 --- a/conda_forge_tick/update_recipe/v1_recipe/build_number.py +++ b/conda_forge_tick/update_recipe/v1_recipe/build_number.py @@ -1,9 +1,10 @@ from __future__ import annotations +import io import logging import re -import io from typing import TYPE_CHECKING, Any, Callable, Literal + from conda_forge_tick.recipe_parser._parser import _get_yaml_parser if TYPE_CHECKING: From 4fd1233d6308fb24a2123f2662d8680984b033ee Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 17:18:22 +0200 Subject: [PATCH 07/10] fix import --- conda_forge_tick/migrators/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conda_forge_tick/migrators/core.py b/conda_forge_tick/migrators/core.py index d431e1704..055b0daed 100644 --- a/conda_forge_tick/migrators/core.py +++ b/conda_forge_tick/migrators/core.py @@ -15,7 +15,7 @@ from conda_forge_tick.lazy_json_backends import LazyJson from conda_forge_tick.make_graph import make_outputs_lut_from_graph from conda_forge_tick.path_lengths import cyclic_topological_sort -from conda_forge_tick.update_recipe import update_build_number, v1 +from conda_forge_tick.update_recipe import update_build_number, v1_recipe from conda_forge_tick.utils import ( frozen_to_json_friendly, get_bot_run_url, @@ -603,7 +603,7 @@ def set_build_number(self, filename: str | Path) -> None: """ filename = Path(filename) if filename.name == "recipe.yaml": - filename.write_text(v1.update_build_number(filename, self.new_build_number)) + filename.write_text(v1_recipe.update_build_number(filename, self.new_build_number)) else: raw = filename.read_text() From b971072c3ad14f40b2b525b8e01c05c51a145f13 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 17:18:31 +0200 Subject: [PATCH 08/10] fix lint --- conda_forge_tick/migrators/core.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/conda_forge_tick/migrators/core.py b/conda_forge_tick/migrators/core.py index 055b0daed..9dbf91e1e 100644 --- a/conda_forge_tick/migrators/core.py +++ b/conda_forge_tick/migrators/core.py @@ -603,7 +603,9 @@ def set_build_number(self, filename: str | Path) -> None: """ filename = Path(filename) if filename.name == "recipe.yaml": - filename.write_text(v1_recipe.update_build_number(filename, self.new_build_number)) + filename.write_text( + v1_recipe.update_build_number(filename, self.new_build_number) + ) else: raw = filename.read_text() From c0dccc381b28677d9834d6e51baedb30665229b7 Mon Sep 17 00:00:00 2001 From: "Matthew R. Becker" Date: Tue, 24 Sep 2024 11:07:10 -0500 Subject: [PATCH 09/10] Update conda_forge_tick/update_recipe/v1_recipe/build_number.py --- conda_forge_tick/update_recipe/v1_recipe/build_number.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda_forge_tick/update_recipe/v1_recipe/build_number.py b/conda_forge_tick/update_recipe/v1_recipe/build_number.py index a57c02197..d52ef9ee5 100644 --- a/conda_forge_tick/update_recipe/v1_recipe/build_number.py +++ b/conda_forge_tick/update_recipe/v1_recipe/build_number.py @@ -63,7 +63,7 @@ def _update_build_number_in_recipe( def _load_yaml(file: Path): - yaml = _get_yaml_parser(typ=None) + yaml = _get_yaml_parser(typ="safe") with file.open("r") as f: return yaml.load(f) From ebec1468433526cd425dad7d155f95593861b5a2 Mon Sep 17 00:00:00 2001 From: Wolf Vollprecht Date: Tue, 24 Sep 2024 19:24:57 +0200 Subject: [PATCH 10/10] use rt loader --- conda_forge_tick/update_recipe/v1_recipe/build_number.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conda_forge_tick/update_recipe/v1_recipe/build_number.py b/conda_forge_tick/update_recipe/v1_recipe/build_number.py index d52ef9ee5..131e88f10 100644 --- a/conda_forge_tick/update_recipe/v1_recipe/build_number.py +++ b/conda_forge_tick/update_recipe/v1_recipe/build_number.py @@ -63,14 +63,14 @@ def _update_build_number_in_recipe( def _load_yaml(file: Path): - yaml = _get_yaml_parser(typ="safe") + yaml = _get_yaml_parser(typ="rt") with file.open("r") as f: return yaml.load(f) def _dump_yaml_to_str(data: dict) -> str: """Dump a dictionary to a YAML string.""" - yaml = _get_yaml_parser(typ=None) + yaml = _get_yaml_parser(typ="rt") with io.StringIO() as f: yaml.dump(data, f) return f.getvalue()