chore(lint): restore green gate
This commit is contained in:
@@ -26,56 +26,14 @@ if TYPE_CHECKING:
|
||||
from pf1e_simulator.loaders.foundry import Json
|
||||
|
||||
from pf1e_simulator.abilities import (
|
||||
ADOPTED,
|
||||
ALERTNESS,
|
||||
ARMOR_PROFICIENCY_LIGHT,
|
||||
ARMOR_PROFICIENCY_MEDIUM,
|
||||
AXE_TO_GRIND,
|
||||
BITTER,
|
||||
BORN_DAMNED,
|
||||
BREEZE_KISSED,
|
||||
BREW_POTION,
|
||||
COMBAT_REFLEXES,
|
||||
CRAFT_WONDROUS_ITEM,
|
||||
DAZZLING_DISPLAY,
|
||||
DODGE,
|
||||
EXTRA_HEX,
|
||||
ESCHEW_MATERIALS,
|
||||
EXALTED_SOCIETY,
|
||||
EXTREMELY_FASHIONABLE,
|
||||
FATES_FAVORED,
|
||||
FEY_TOUCHED,
|
||||
FOCUSED_STUDY,
|
||||
FORTIFIED_DRINKER,
|
||||
FRIENDLY_FACE,
|
||||
GIFTED_ADEPT,
|
||||
GREAT_FORTITUDE,
|
||||
GUNSMITHING,
|
||||
HARMONIC_SPELL,
|
||||
IRON_WILL,
|
||||
LIKE_THE_WIND,
|
||||
LIGHTNING_REFLEXES,
|
||||
LONELY,
|
||||
LARGER_THAN_LIFE,
|
||||
MAW_OR_CLAW,
|
||||
MOUNTED_COMBAT,
|
||||
POINT_BLANK_SHOT,
|
||||
POWER_ATTACK,
|
||||
PRECISE_SHOT,
|
||||
PREHENSILE_TAIL,
|
||||
RAPID_RELOAD,
|
||||
SACRED_SUMS,
|
||||
SELECTIVE_CHANNELING,
|
||||
SKILL_FOCUS_PERCEPTION,
|
||||
SPELL_VULNERABILITY_DIVINATION,
|
||||
STEALTH_SYNERGY,
|
||||
SUMMON_GOOD_MONSTER,
|
||||
THOROUGHBRED,
|
||||
VAGABOND_CHILD,
|
||||
WHISPERING_WIND,
|
||||
VAGABOND_CHILD,
|
||||
WHISPERING_WIND,
|
||||
WEAPON_FINESSE,
|
||||
AbilitySpec,
|
||||
toughness,
|
||||
weapon_focus,
|
||||
@@ -175,16 +133,17 @@ def load_combatant(path: Path) -> Combatant:
|
||||
_auto_attack_ids(data, monster_id)
|
||||
|
||||
# Resolve features (list of strings → list of AbilitySpec)
|
||||
level = data.get("level", 1) if isinstance(data.get("level"), int) else 1
|
||||
raw_level = data.get("level")
|
||||
level = raw_level if isinstance(raw_level, int) and not isinstance(raw_level, bool) else 1
|
||||
raw_features = data.pop("features", None)
|
||||
validate_payload: dict[str, object] = dict(data)
|
||||
if isinstance(raw_features, list):
|
||||
# Type ignore: we assign AbilitySpec list into a Json dict before Pydantic validation
|
||||
data["features"] = _resolve_features(raw_features, level) # type: ignore[assignment]
|
||||
validate_payload["features"] = _resolve_features(raw_features, level)
|
||||
|
||||
# spells stays as list[str] — Pydantic validates it directly
|
||||
|
||||
try:
|
||||
return Combatant.model_validate(data)
|
||||
return Combatant.model_validate(validate_payload)
|
||||
except ValidationError as exc:
|
||||
raise CombatantLoadError(path, str(exc)) from exc
|
||||
|
||||
|
||||
Reference in New Issue
Block a user