"""Frozen screenshot taxonomy and canonical record vocabulary for contract v1.""" from collections.abc import Mapping from enum import StrEnum from types import MappingProxyType from typing import Final class Family(StrEnum): WEAPON = "weapon" GEAR = "gear" SKILL_CHIP = "skill_chip" OS_PROTOCOL = "os_protocol" SPECIALIZATION = "specialization" WEAPON_MOD = "weapon_mod" GEAR_MOD = "gear_mod" UNKNOWN = "unknown" class GearSlot(StrEnum): MASK = "Mask" GLOVES = "Gloves" BACKPACK = "Backpack" BODY_ARMOR = "Body Armor" HOLSTER = "Holster" KNEE_PADS = "Knee Pads" class AbstentionReason(StrEnum): LOW_CONFIDENCE = "low_confidence" AMBIGUOUS_FAMILY = "ambiguous_family" AMBIGUOUS_VIEW = "ambiguous_view" UNSUPPORTED_FAMILY = "unsupported_family" UNSUPPORTED_VIEW = "unsupported_view" INSUFFICIENT_VISUAL_EVIDENCE = "insufficient_visual_evidence" OCCLUDED = "occluded" CORRUPT_IMAGE = "corrupt_image" RESOURCE_LIMIT = "resource_limit" CANCELLED = "cancelled" class RecordType(StrEnum): WEAPON = "weapon" WEAPON_TALENT = "weapon_talent" WEAPON_AUGMENTATION_PROFILE = "weapon_augmentation_profile" GEAR = "gear" BRAND_SET = "brand_set" GEAR_TALENT = "gear_talent" GEAR_AUGMENTATION_PROFILE = "gear_augmentation_profile" SKILL_CHIP_SET = "skill_chip_set" SKILL_CHIP_SET_BONUS = "skill_chip_set_bonus" SKILL_CHIP_ROLL_POOL = "skill_chip_roll_pool" SKILL_CHIP_TALENT = "skill_chip_talent" OS_PROTOCOL = "os_protocol" OS_PROTOCOL_SECONDARY_PROFILE = "os_protocol_secondary_profile" OS_PROTOCOL_TALENT = "os_protocol_talent" SPECIALIZATION = "specialization" SPECIALIZATION_FOCUS = "specialization_focus" SPECIALIZATION_ABILITY = "specialization_ability" SPECIALIZATION_TREE_NODE = "specialization_tree_node" SPECIALIZATION_TREE_RANK = "specialization_tree_rank" WEAPON_MOD = "weapon_mod" GEAR_MOD = "gear_mod" SCREEN_VIEWS: Final[Mapping[Family, tuple[str, ...]]] = MappingProxyType( { Family.WEAPON: ( "detail", "blueprint", "crafting", "stat_range", "talent_grid", "augmentation", ), Family.GEAR: ("detail", "blueprint", "talent", "augmentation"), Family.SKILL_CHIP: ("detail", "set_bonus", "talent"), Family.OS_PROTOCOL: ("detail", "secondary_profile", "talent"), Family.SPECIALIZATION: ( "overview", "details", "ability", "focus_details", "focus_tree", "rank_details", ), Family.WEAPON_MOD: ("detail",), Family.GEAR_MOD: ("detail",), Family.UNKNOWN: ("unknown",), } ) GEAR_SLOTS: Final[tuple[str, ...]] = tuple(slot.value for slot in GearSlot) ABSTENTION_REASONS: Final[tuple[str, ...]] = tuple(reason.value for reason in AbstentionReason) RECORD_TYPES_BY_VIEW: Final[Mapping[tuple[Family, str], tuple[RecordType, ...]]] = MappingProxyType( { (Family.WEAPON, "detail"): (RecordType.WEAPON, RecordType.WEAPON_TALENT), (Family.WEAPON, "blueprint"): (RecordType.WEAPON, RecordType.WEAPON_TALENT), (Family.WEAPON, "crafting"): (RecordType.WEAPON,), (Family.WEAPON, "stat_range"): (RecordType.WEAPON,), (Family.WEAPON, "talent_grid"): (RecordType.WEAPON_TALENT,), (Family.WEAPON, "augmentation"): (RecordType.WEAPON_AUGMENTATION_PROFILE,), (Family.GEAR, "detail"): (RecordType.GEAR, RecordType.BRAND_SET), (Family.GEAR, "blueprint"): (RecordType.GEAR, RecordType.BRAND_SET), (Family.GEAR, "talent"): (RecordType.GEAR_TALENT,), (Family.GEAR, "augmentation"): (RecordType.GEAR_AUGMENTATION_PROFILE,), (Family.SKILL_CHIP, "detail"): ( RecordType.SKILL_CHIP_SET, RecordType.SKILL_CHIP_ROLL_POOL, ), (Family.SKILL_CHIP, "set_bonus"): (RecordType.SKILL_CHIP_SET_BONUS,), (Family.SKILL_CHIP, "talent"): (RecordType.SKILL_CHIP_TALENT,), (Family.OS_PROTOCOL, "detail"): (RecordType.OS_PROTOCOL,), (Family.OS_PROTOCOL, "secondary_profile"): (RecordType.OS_PROTOCOL_SECONDARY_PROFILE,), (Family.OS_PROTOCOL, "talent"): (RecordType.OS_PROTOCOL_TALENT,), (Family.SPECIALIZATION, "overview"): (RecordType.SPECIALIZATION,), (Family.SPECIALIZATION, "details"): (RecordType.SPECIALIZATION,), (Family.SPECIALIZATION, "ability"): (RecordType.SPECIALIZATION_ABILITY,), (Family.SPECIALIZATION, "focus_details"): (RecordType.SPECIALIZATION_FOCUS,), (Family.SPECIALIZATION, "focus_tree"): ( RecordType.SPECIALIZATION_FOCUS, RecordType.SPECIALIZATION_TREE_NODE, ), (Family.SPECIALIZATION, "rank_details"): (RecordType.SPECIALIZATION_TREE_RANK,), (Family.WEAPON_MOD, "detail"): (RecordType.WEAPON_MOD,), (Family.GEAR_MOD, "detail"): (RecordType.GEAR_MOD,), (Family.UNKNOWN, "unknown"): (), } )