|
1 | 1 | """Main interface for working with .fmu directory.""" |
2 | 2 |
|
| 3 | +import getpass |
3 | 4 | from collections.abc import Mapping |
| 5 | +from datetime import UTC, datetime |
4 | 6 | from pathlib import Path |
5 | 7 | from typing import TYPE_CHECKING, Any, Final, Self, TypeAlias, cast |
6 | 8 |
|
|
19 | 21 | from ._resources.lock_manager import DEFAULT_LOCK_TIMEOUT, LockManager |
20 | 22 | from ._utils import path_exists, path_is_dir, path_is_file |
21 | 23 | from .models._enums import CacheResource |
22 | | -from .models.project_config import ProjectConfig |
| 24 | +from .models.project_config import ( |
| 25 | + ProjectConfig, |
| 26 | + ValidationRecord, |
| 27 | + ValidationSource, |
| 28 | +) |
23 | 29 | from .models.user_config import UserConfig |
24 | 30 |
|
25 | 31 | logger: Final = null_logger(__name__) |
@@ -341,6 +347,24 @@ def __init__( |
341 | 347 | f"Using default value '{CacheManager.MIN_REVISIONS}'. Error: {e}" |
342 | 348 | ) |
343 | 349 |
|
| 350 | + def update_validation_metadata( |
| 351 | + self: Self, |
| 352 | + validation_source: ValidationSource, |
| 353 | + ) -> None: |
| 354 | + """Record successful validation of project configuration data. |
| 355 | +
|
| 356 | + Args: |
| 357 | + validation_source: Configuration data checked by the validation. |
| 358 | + """ |
| 359 | + record = ValidationRecord( |
| 360 | + last_validated_at=datetime.now(UTC), |
| 361 | + last_validated_by=getpass.getuser(), |
| 362 | + ) |
| 363 | + self.set_config_value( |
| 364 | + f"validation.{validation_source}", |
| 365 | + record.model_dump(), |
| 366 | + ) |
| 367 | + |
344 | 368 | @property |
345 | 369 | def changelog(self: Self) -> ChangelogManager: |
346 | 370 | """Access the ChangelogManager.""" |
|
0 commit comments