Skip to content

Commit d79dd44

Browse files
authored
Merge pull request crs4#65 from kikkomep/enhancement/settings-initialisation
enhancement: avoid overriding `__init__` of the `ValidationSettings` dataclass
2 parents 107f5e9 + a80281b commit d79dd44

File tree

3 files changed

+9
-27
lines changed

3 files changed

+9
-27
lines changed

rocrate_validator/cli/commands/validate.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,6 @@ def validate(ctx,
278278
"requirement_severity": requirement_severity,
279279
"requirement_severity_only": requirement_severity_only,
280280
"enable_profile_inheritance": not disable_profile_inheritance,
281-
"verbose": verbose,
282281
"rocrate_uri": rocrate_uri,
283282
"abort_on_first": fail_fast
284283
}
@@ -348,14 +347,14 @@ def validate(ctx,
348347
for profile in profile_identifier:
349348
# Set the selected profile
350349
validation_settings["profile_identifier"] = profile
351-
validation_settings["profile_autodetected"] = autodetection
352350
logger.debug("Profile selected for validation: %s", validation_settings["profile_identifier"])
353351
logger.debug("Profile autodetected: %s", autodetection)
354352

355353
# Compute the profile statistics
356354
profile_stats = __compute_profile_stats__(validation_settings)
357355

358-
report_layout = ValidationReportLayout(console, validation_settings, profile_stats, None)
356+
report_layout = ValidationReportLayout(console, validation_settings,
357+
profile_stats, None, profile_autodetected=autodetection)
359358

360359
# Validate RO-Crate against the profile and get the validation result
361360
result: ValidationResult = None
@@ -513,11 +512,13 @@ def update(self, event: Event):
513512

514513
class ValidationReportLayout(Layout):
515514

516-
def __init__(self, console: Console, validation_settings: dict, profile_stats: dict, result: ValidationResult):
515+
def __init__(self, console: Console, validation_settings: dict,
516+
profile_stats: dict, result: ValidationResult, profile_autodetected: bool = False):
517517
super().__init__()
518518
self.console = console
519519
self.validation_settings = validation_settings
520520
self.profile_stats = profile_stats
521+
self.profile_autodetected = profile_autodetected
521522
self.result = result
522523
self.__layout = None
523524
self._validation_checks_progress = None
@@ -566,7 +567,7 @@ def __init_layout__(self):
566567
f"\n[bold cyan]RO-Crate:[/bold cyan] [bold]{URI(settings['rocrate_uri']).uri}[/bold]"
567568
"\n[bold cyan]Target Profile:[/bold cyan][bold magenta] "
568569
f"{settings['profile_identifier']}[/bold magenta] "
569-
f"{'[italic](autodetected)[/italic]' if settings['profile_autodetected'] else ''}"
570+
f"{'[italic](autodetected)[/italic]' if self.profile_autodetected else ''}"
570571
f"\n[bold cyan]Validation Severity:[/bold cyan] "
571572
f"[bold {severity_color}]{settings['requirement_severity']}[/bold {severity_color}]",
572573
style="white", align="left"),

rocrate_validator/models.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,20 +1576,10 @@ class ValidationSettings:
15761576
#: Flag to disable the check for duplicates
15771577
disable_check_for_duplicates: bool = False
15781578

1579-
def __init__(self, **kwargs):
1580-
for key, value in kwargs.items():
1581-
setattr(self, key, value)
1582-
1579+
def __post_init__(self):
15831580
# if requirement_severity is a str, convert to Severity
1584-
severity = getattr(self, "requirement_severity")
1585-
if isinstance(severity, str):
1586-
setattr(self, "requirement_severity", Severity[severity])
1587-
1588-
# parse and set the rocrate URI
1589-
self._rocrate_uri = None
1590-
if "rocrate_uri" in kwargs:
1591-
self.rocrate_uri = kwargs["rocrate_uri"]
1592-
logger.debug("Validating RO-Crate: %s", self.rocrate_uri)
1581+
if isinstance(self.requirement_severity, str):
1582+
self.requirement_severity = Severity[self.requirement_severity]
15931583

15941584
def to_dict(self):
15951585
"""

tests/unit/test_validation_settings.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,12 @@ def test_validation_settings_parse_dict():
2222
"rocrate_uri": "/path/to/data",
2323
"profiles_path": "/path/to/profiles",
2424
"requirement_severity": "RECOMMENDED",
25-
"allow_infos": True,
2625
"enable_profile_inheritance": False,
2726
}
2827
settings = ValidationSettings.parse(settings_dict)
2928
assert str(settings.rocrate_uri) == "/path/to/data"
3029
assert settings.profiles_path == "/path/to/profiles"
3130
assert settings.requirement_severity == Severity.RECOMMENDED
32-
assert settings.allow_infos is True
3331
assert settings.enable_profile_inheritance is False
3432

3533

@@ -38,7 +36,6 @@ def test_validation_settings_parse_object():
3836
rocrate_uri="/path/to/data",
3937
profiles_path="/path/to/profiles",
4038
requirement_severity=Severity.RECOMMENDED,
41-
allow_infos=True,
4239
enable_profile_inheritance=False
4340
)
4441
settings = ValidationSettings.parse(existing_settings)
@@ -58,7 +55,6 @@ def test_validation_settings_to_dict():
5855
rocrate_uri="/path/to/data",
5956
profiles_path="/path/to/profiles",
6057
requirement_severity=Severity.RECOMMENDED,
61-
allow_infos=True,
6258
enable_profile_inheritance=False
6359
)
6460
settings_dict = settings.to_dict()
@@ -91,11 +87,6 @@ def test_validation_settings_requirement_severity():
9187
assert settings.requirement_severity == Severity.RECOMMENDED
9288

9389

94-
def test_validation_settings_allow_infos():
95-
settings = ValidationSettings(allow_infos=True)
96-
assert settings.allow_infos is True
97-
98-
9990
def test_validation_settings_abort_on_first():
10091
settings = ValidationSettings(abort_on_first=True)
10192
assert settings.abort_on_first is True

0 commit comments

Comments
 (0)