Skip to content

Commit 33f7062

Browse files
un-nest potcar summary statistics object
1 parent d5d0afa commit 33f7062

File tree

2 files changed

+28
-26
lines changed

2 files changed

+28
-26
lines changed

pymatgen/io/validation/__init__.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,10 @@
44
to ensure that data is compatible with some standard.
55
"""
66

7+
from pymatgen.io.validation.common import SETTINGS
78
from pymatgen.io.validation.validation import VaspValidator # noqa: F401
89

9-
from pymatgen.io.validation.settings import IOValidationSettings as _settings
10-
11-
if _settings().CHECK_PYPI_AT_LOAD:
10+
if SETTINGS.CHECK_PYPI_AT_LOAD:
1211
# Only check version at module load time, if specified in module settings.
1312
from pymatgen.io.validation.check_package_versions import package_version_check
1413

pymatgen/io/validation/common.py

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -26,37 +26,40 @@ class ValidationError(Exception):
2626
"""Define custom exception during validation."""
2727

2828

29-
class PotcarSummaryStats(BaseModel):
30-
"""Schematize `PotcarSingle._summary_stats`."""
29+
class PotcarSummaryKeywords(BaseModel):
30+
"""Schematize `PotcarSingle._summary_stats["keywords"]` field."""
31+
32+
header: set[str] = Field(description="The keywords in the POTCAR header.")
33+
data: set[str] = Field(description="The keywords in the POTCAR body.")
34+
35+
@model_serializer
36+
def set_to_list(self) -> dict[str, list[str]]:
37+
"""Ensure JSON compliance of set fields."""
38+
return {k: list(getattr(self, k)) for k in ("header", "data")}
39+
3140

32-
class _PotcarSummaryStatsKeywords(BaseModel):
33-
"""Schematize `PotcarSingle._summary_stats["keywords"]` field."""
41+
class PotcarSummaryStatisticsFields(BaseModel):
42+
"""Define statistics used in `PotcarSingle._summary_stats`."""
3443

35-
header: set[str] = Field(description="The keywords in the POTCAR header.")
36-
data: set[str] = Field(description="The keywords in the POTCAR body.")
44+
MEAN: float = Field(description="Data mean.")
45+
ABSMEAN: float = Field(description="Data magnitude mean.")
46+
VAR: float = Field(description="Mean of squares of data.")
47+
MIN: float = Field(description="Data minimum.")
48+
MAX: float = Field(description="Data maximum.")
3749

38-
@model_serializer
39-
def set_to_list(self) -> dict[str, list[str]]:
40-
"""Ensure JSON compliance of set fields."""
41-
return {k: list(getattr(self, k)) for k in ("header", "data")}
4250

43-
class _PotcarSummaryStatsStats(BaseModel):
44-
"""Schematize `PotcarSingle._summary_stats["stats"]` field."""
51+
class PotcarSummaryStatistics(BaseModel):
52+
"""Schematize `PotcarSingle._summary_stats["stats"]` field."""
4553

46-
class _PotcarSummaryStatsNames(BaseModel):
47-
"""Define statistics used in `PotcarSingle._summary_stats`."""
54+
header: PotcarSummaryStatisticsFields = Field(description="The keywords in the POTCAR header.")
55+
data: PotcarSummaryStatisticsFields = Field(description="The keywords in the POTCAR body.")
4856

49-
MEAN: float = Field(description="Data mean.")
50-
ABSMEAN: float = Field(description="Data magnitude mean.")
51-
VAR: float = Field(description="Mean of squares of data.")
52-
MIN: float = Field(description="Data minimum.")
53-
MAX: float = Field(description="Data maximum.")
5457

55-
header: _PotcarSummaryStatsNames = Field(description="The keywords in the POTCAR header.")
56-
data: _PotcarSummaryStatsNames = Field(description="The keywords in the POTCAR body.")
58+
class PotcarSummaryStats(BaseModel):
59+
"""Schematize `PotcarSingle._summary_stats`."""
5760

58-
keywords: Optional[_PotcarSummaryStatsKeywords] = None
59-
stats: Optional[_PotcarSummaryStatsStats] = None
61+
keywords: Optional[PotcarSummaryKeywords] = None
62+
stats: Optional[PotcarSummaryStatistics] = None
6063
titel: str
6164
lexch: str
6265

0 commit comments

Comments
 (0)