Coverage for src / mafw / devtools / cli / dependencies / freeze.py: 100%
25 statements
« prev ^ index » next coverage.py v7.14.0, created at 2026-06-28 13:34 +0000
« prev ^ index » next coverage.py v7.14.0, created at 2026-06-28 13:34 +0000
1# Copyright 2026 European Union
2# Author: Bulgheroni Antonio (antonio.bulgheroni@ec.europa.eu)
3# SPDX-License-Identifier: EUPL-1.2
4"""Freeze and unfreeze dependency upper bounds in pyproject.toml."""
6from __future__ import annotations
8import click
10from mafw.devtools.dependencies.compile import (
11 collect_compiled_dependency_versions,
12 load_pyproject_doc,
13 project_python_versions_from_doc,
14)
15from mafw.devtools.dependencies.freeze import (
16 freeze_pyproject_toml,
17 unfreeze_pyproject_toml,
18)
19from mafw.devtools.git import PYPROJECT_FILE
20from mafw.tools.shell_tools import CONSOLE
23@click.command(
24 context_settings={'help_option_names': ['-h', '--help']},
25 help='Freeze dependency upper bounds in pyproject.toml.',
26)
27def freeze() -> None:
28 """Freeze dependency upper bounds in the project TOML."""
29 before = PYPROJECT_FILE.read_text(encoding='utf-8')
30 doc = load_pyproject_doc(before)
31 supported_python_versions = project_python_versions_from_doc(doc)
32 resolved_versions = collect_compiled_dependency_versions(supported_python_versions)
33 after, warnings = freeze_pyproject_toml(before, resolved_versions=resolved_versions, doc=doc)
34 for warning in warnings:
35 CONSOLE.print(f'WARNING: {warning}')
36 if before != after:
37 PYPROJECT_FILE.write_text(after, encoding='utf-8')
40@click.command(
41 context_settings={'help_option_names': ['-h', '--help']},
42 help='Remove frozen dependency upper bounds from pyproject.toml.',
43)
44def unfreeze() -> None:
45 """Unfreeze dependency upper bounds in the project TOML."""
46 before = PYPROJECT_FILE.read_text(encoding='utf-8')
47 after, warnings = unfreeze_pyproject_toml(before)
48 for warning in warnings:
49 CONSOLE.print(f'WARNING: {warning}')
50 if before != after:
51 PYPROJECT_FILE.write_text(after, encoding='utf-8')