Module genshin.models.zzz.chronicle.challenge.shiyu
ZZZ Shiyu Defense models.
Classes
class ChallengeBangboo (**data: Any)-
Expand source code
class ChallengeBangboo(APIModel): """Shiyu Defense bangboo model.""" id: int rarity: typing.Literal["S", "A"] level: int icon: str = Aliased("bangboo_rectangle_url")Shiyu Defense bangboo model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Subclasses
Class variables
var icon : strvar id : intvar level : intvar model_config : pydantic.config.ConfigDictvar rarity : Literal['S', 'A']
class ShiyuDefenseBangboo (**data: Any)-
Expand source code
class ShiyuDefenseBangboo(ChallengeBangboo): """Shiyu Defense bangboo model."""Shiyu Defense bangboo model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- ChallengeBangboo
- APIModel
- pydantic.main.BaseModel
Class variables
var icon : strvar id : intvar level : intvar model_config : pydantic.config.ConfigDictvar rarity : Literal['S', 'A']
class ShiyuDefenseBuff (**data: Any)-
Expand source code
class ShiyuDefenseBuff(APIModel): """Shiyu Defense buff model.""" name: str = Aliased("title") description: str = Aliased("text")Shiyu Defense buff model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var description : strvar model_config : pydantic.config.ConfigDictvar name : str
class ShiyuDefenseCharacter (**data: Any)-
Expand source code
class ShiyuDefenseCharacter(APIModel): """Shiyu Defense character model.""" id: int level: int rarity: typing.Literal["S", "A"] element: ZZZElementType = Aliased("element_type") icon: str = Aliased("role_square_url") mindscape: int = Aliased("rank")Shiyu Defense character model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var element : ZZZElementTypevar icon : strvar id : intvar level : intvar mindscape : intvar model_config : pydantic.config.ConfigDictvar rarity : Literal['S', 'A']
class ShiyuDefenseFloor (**data: Any)-
Expand source code
class ShiyuDefenseFloor(APIModel): """Shiyu Defense floor model.""" index: int = Aliased("layer_index") rating: typing.Literal["S", "A", "B"] id: int = Aliased("layer_id") buffs: list[ShiyuDefenseBuff] node_1: ShiyuDefenseNode node_2: ShiyuDefenseNode challenge_time: DateTime = Aliased("floor_challenge_time") name: str = Aliased("zone_name")Shiyu Defense floor model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var buffs : list[ShiyuDefenseBuff]var challenge_time : datetime.datetimevar id : intvar index : intvar model_config : pydantic.config.ConfigDictvar name : strvar node_1 : ShiyuDefenseNodevar node_2 : ShiyuDefenseNodevar rating : Literal['B', 'A', 'S']
class ShiyuDefenseMonster (**data: Any)-
Expand source code
class ShiyuDefenseMonster(APIModel): """Shiyu Defense monster model.""" id: int name: str weakness: typing.Union[ZZZElementType, int] = Aliased( "weak_element_type", deprecated="ShiyuDefenseMonster.weakness doesn't return anything meaningful anymore." ) level: int element_effects: ShiyuMonsterElementEffects @pydantic.model_validator(mode="before") @classmethod def __nest_element_effects(cls, v: dict[str, typing.Any]) -> dict[str, typing.Any]: v["element_effects"] = { "ice_weakness": v["ice_weakness"], "fire_weakness": v["fire_weakness"], "elec_weakness": v["elec_weakness"], "ether_weakness": v["ether_weakness"], "physics_weakness": v["physics_weakness"], } return vShiyu Defense monster model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var element_effects : ShiyuMonsterElementEffectsvar id : intvar level : intvar model_config : pydantic.config.ConfigDictvar name : str
Instance variables
var weakness : ZZZElementType | int-
Expand source code
def __get__(self, obj: BaseModel | None, obj_type: type[BaseModel] | None = None) -> Any: if obj is None: if self.wrapped_property is not None: return self.wrapped_property.__get__(None, obj_type) raise AttributeError(self.field_name) warnings.warn(self.msg, DeprecationWarning, stacklevel=2) if self.wrapped_property is not None: return self.wrapped_property.__get__(obj, obj_type) return obj.__dict__[self.field_name]Read-only data descriptor used to emit a runtime deprecation warning before accessing a deprecated field.
Attributes
msg- The deprecation message to be emitted.
wrapped_property- The property instance if the deprecated field is a computed field, or
None. field_name- The name of the field being deprecated.
class ShiyuDefenseNode (**data: Any)-
Expand source code
class ShiyuDefenseNode(APIModel): """Shiyu Defense node model.""" characters: list[ShiyuDefenseCharacter] = Aliased("avatars") bangboo: typing.Optional[ShiyuDefenseBangboo] = Aliased("buddy", default=None) recommended_elements: list[ZZZElementType] = Aliased("element_type_list") enemies: list[ShiyuDefenseMonster] = Aliased("monster_info") battle_time: typing.Optional[datetime.timedelta] = None @pydantic.field_validator("enemies", mode="before") @classmethod def __convert_enemies(cls, value: dict[typing.Literal["level", "list"], typing.Any]) -> list[ShiyuDefenseMonster]: level = value["level"] result: list[ShiyuDefenseMonster] = [] for monster in value["list"]: monster["level"] = level result.append(ShiyuDefenseMonster(**monster)) return resultShiyu Defense node model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var bangboo : ShiyuDefenseBangboo | Nonevar battle_time : datetime.timedelta | Nonevar characters : list[ShiyuDefenseCharacter]var enemies : list[ShiyuDefenseMonster]var model_config : pydantic.config.ConfigDictvar recommended_elements : list[ZZZElementType]
class ShiyuDefense (**data: Any)-
Expand source code
class ShiyuDefenseV1(APIModel): """ZZZ Shiyu Defense V1 model.""" schedule_id: int begin_time: typing.Optional[DateTime] = Aliased("hadal_begin_time") end_time: typing.Optional[DateTime] = Aliased("hadal_end_time") has_data: bool ratings: typing.Mapping[typing.Literal["S", "A", "B"], int] = Aliased("rating_list") floors: list[ShiyuDefenseFloor] = Aliased("all_floor_detail") fastest_clear_time: int = Aliased("fast_layer_time") """Fastest clear time this season in seconds.""" max_floor: int = Aliased("max_layer") @pydantic.field_validator("ratings", mode="before") @classmethod def __convert_ratings( cls, v: list[dict[typing.Literal["times", "rating"], typing.Any]] ) -> typing.Mapping[typing.Literal["S", "A", "B"], int]: return {d["rating"]: d["times"] for d in v} @pydantic.computed_field # type: ignore[prop-decorator] @property def total_clear_time(self) -> int: """Total clear time for all floors in seconds.""" total = 0 for floor in self.floors: for node in (floor.node_1, floor.node_2): if node.battle_time is None: continue total += int(node.battle_time.total_seconds()) return totalZZZ Shiyu Defense V1 model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var begin_time : datetime.datetime | Nonevar end_time : datetime.datetime | Nonevar fastest_clear_time : int-
Fastest clear time this season in seconds.
var floors : list[ShiyuDefenseFloor]var has_data : boolvar max_floor : intvar model_config : pydantic.config.ConfigDictvar ratings : Mapping[Literal['S', 'A', 'B'], int]var schedule_id : int
Instance variables
prop total_clear_time : int-
Expand source code
@pydantic.computed_field # type: ignore[prop-decorator] @property def total_clear_time(self) -> int: """Total clear time for all floors in seconds.""" total = 0 for floor in self.floors: for node in (floor.node_1, floor.node_2): if node.battle_time is None: continue total += int(node.battle_time.total_seconds()) return totalTotal clear time for all floors in seconds.
class ShiyuDefenseV1 (**data: Any)-
Expand source code
class ShiyuDefenseV1(APIModel): """ZZZ Shiyu Defense V1 model.""" schedule_id: int begin_time: typing.Optional[DateTime] = Aliased("hadal_begin_time") end_time: typing.Optional[DateTime] = Aliased("hadal_end_time") has_data: bool ratings: typing.Mapping[typing.Literal["S", "A", "B"], int] = Aliased("rating_list") floors: list[ShiyuDefenseFloor] = Aliased("all_floor_detail") fastest_clear_time: int = Aliased("fast_layer_time") """Fastest clear time this season in seconds.""" max_floor: int = Aliased("max_layer") @pydantic.field_validator("ratings", mode="before") @classmethod def __convert_ratings( cls, v: list[dict[typing.Literal["times", "rating"], typing.Any]] ) -> typing.Mapping[typing.Literal["S", "A", "B"], int]: return {d["rating"]: d["times"] for d in v} @pydantic.computed_field # type: ignore[prop-decorator] @property def total_clear_time(self) -> int: """Total clear time for all floors in seconds.""" total = 0 for floor in self.floors: for node in (floor.node_1, floor.node_2): if node.battle_time is None: continue total += int(node.battle_time.total_seconds()) return totalZZZ Shiyu Defense V1 model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var begin_time : datetime.datetime | Nonevar end_time : datetime.datetime | Nonevar fastest_clear_time : int-
Fastest clear time this season in seconds.
var floors : list[ShiyuDefenseFloor]var has_data : boolvar max_floor : intvar model_config : pydantic.config.ConfigDictvar ratings : Mapping[Literal['S', 'A', 'B'], int]var schedule_id : int
Instance variables
prop total_clear_time : int-
Expand source code
@pydantic.computed_field # type: ignore[prop-decorator] @property def total_clear_time(self) -> int: """Total clear time for all floors in seconds.""" total = 0 for floor in self.floors: for node in (floor.node_1, floor.node_2): if node.battle_time is None: continue total += int(node.battle_time.total_seconds()) return totalTotal clear time for all floors in seconds.
class ShiyuDefenseV2 (**data: Any)-
Expand source code
class ShiyuDefenseV2(APIModel): """ZZZ Shiyu Defense V2 model.""" schedule_id: int = Aliased("zone_id") begin_time: typing.Optional[DateTime] = Aliased("hadal_begin_time") end_time: typing.Optional[DateTime] = Aliased("hadal_end_time") passed_fifth_floor: bool = Aliased("pass_fifth_floor") brief_info: typing.Optional[ShiyuV2BriefInfo] = Aliased("brief", default=None) fourth_frontier: typing.Optional[ShiyuV2FourthFloor] = Aliased("fourth_layer_detail", default=None) fifth_frontier: typing.Optional[ShiyuV2FifthFloor] = Aliased("fitfh_layer_detail", default=None) # Nice typo hoyo player_nickname: str = Aliased("nick_name") player_avatar: str = Aliased("icon")ZZZ Shiyu Defense V2 model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var begin_time : datetime.datetime | Nonevar brief_info : genshin.models.zzz.chronicle.challenge.shiyu.ShiyuV2BriefInfo | Nonevar end_time : datetime.datetime | Nonevar fifth_frontier : ShiyuV2FifthFloor | Nonevar fourth_frontier : ShiyuV2FourthFloor | Nonevar model_config : pydantic.config.ConfigDictvar passed_fifth_floor : boolvar player_avatar : strvar player_nickname : strvar schedule_id : int
class ShiyuMonsterElementEffect (value, names=None, *, module=None, qualname=None, type=None, start=1)-
Expand source code
class ShiyuMonsterElementEffect(enum.IntEnum): """Shiyu Defense monster element effect enum.""" WEAKNESS = 1 RESISTANCE = -1 NEUTRAL = 0Shiyu Defense monster element effect enum.
Ancestors
- enum.IntEnum
- builtins.int
- enum.Enum
Class variables
var NEUTRALvar RESISTANCEvar WEAKNESS
class ShiyuMonsterElementEffects (**data: Any)-
Expand source code
class ShiyuMonsterElementEffects(pydantic.BaseModel): """Shiyu Defense monster element effects model.""" ice: ShiyuMonsterElementEffect = Aliased("ice_weakness") fire: ShiyuMonsterElementEffect = Aliased("fire_weakness") electric: ShiyuMonsterElementEffect = Aliased("elec_weakness") ether: ShiyuMonsterElementEffect = Aliased("ether_weakness") physical: ShiyuMonsterElementEffect = Aliased("physics_weakness")Shiyu Defense monster element effects model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- pydantic.main.BaseModel
Class variables
var electric : ShiyuMonsterElementEffectvar ether : ShiyuMonsterElementEffectvar fire : ShiyuMonsterElementEffectvar ice : ShiyuMonsterElementEffectvar model_configvar physical : ShiyuMonsterElementEffect
class ShiyuV2FifthFloor (**data: Any)-
Expand source code
class ShiyuV2FifthFloor(APIModel): """ZZZ Shiyu Defense V2 fifth floor model.""" layers: typing.Sequence[ShiyuV2FifthFloorLayer] = Aliased("layer_challenge_info_list")ZZZ Shiyu Defense V2 fifth floor model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var layers : Sequence[ShiyuV2FifthFloorLayer]var model_config : pydantic.config.ConfigDict
class ShiyuV2FifthFloorLayer (**data: Any)-
Expand source code
class ShiyuV2FifthFloorLayer(APIModel): """ZZZ Shiyu Defense V2 fifth floor layer model.""" id: int = Aliased("layer_id") rating: typing.Literal["S", "A", "B"] buff: ShiyuDefenseBuff = Aliased("buffer") score: int max_score: int clear_time: typing.Optional[int] = Aliased("battle_time", default=None) """Clear time in seconds.""" boss_icon: str = Aliased("monster_pic") bangboo: typing.Optional[ShiyuDefenseBangboo] = Aliased("buddy", default=None) characters: typing.Sequence[ShiyuDefenseCharacter] = Aliased("avatar_list")ZZZ Shiyu Defense V2 fifth floor layer model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var bangboo : ShiyuDefenseBangboo | Nonevar boss_icon : strvar buff : ShiyuDefenseBuffvar characters : Sequence[ShiyuDefenseCharacter]var clear_time : int | None-
Clear time in seconds.
var id : intvar max_score : intvar model_config : pydantic.config.ConfigDictvar rating : Literal['B', 'A', 'S']var score : int
class ShiyuV2FourthFloor (**data: Any)-
Expand source code
class ShiyuV2FourthFloor(APIModel): """ZZZ Shiyu Defense V2 fourth floor model.""" buff: ShiyuDefenseBuff = Aliased("buffer") challenge_time: DateTime rating: typing.Literal["S", "A", "B"] layers: typing.Sequence[ShiyuV2FourthFloorLayer] = Aliased("layer_challenge_info_list")ZZZ Shiyu Defense V2 fourth floor model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var buff : ShiyuDefenseBuffvar challenge_time : datetime.datetimevar layers : Sequence[ShiyuV2FourthFloorLayer]var model_config : pydantic.config.ConfigDictvar rating : Literal['B', 'A', 'S']
class ShiyuV2FourthFloorLayer (**data: Any)-
Expand source code
class ShiyuV2FourthFloorLayer(APIModel): """ZZZ Shiyu Defense V2 fourth floor layer model.""" id: int = Aliased("layer_id") clear_time: typing.Optional[int] = Aliased("battle_time", default=None) """Clear time in seconds.""" characters: typing.Sequence[ShiyuDefenseCharacter] = Aliased("avatar_list") bangboo: typing.Optional[ShiyuDefenseBangboo] = Aliased("buddy", default=None)ZZZ Shiyu Defense V2 fourth floor layer model.
Create a new model by parsing and validating input data from keyword arguments.
Raises [
ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.selfis explicitly positional-only to allowselfas a field name.Ancestors
- APIModel
- pydantic.main.BaseModel
Class variables
var bangboo : ShiyuDefenseBangboo | Nonevar characters : Sequence[ShiyuDefenseCharacter]var clear_time : int | None-
Clear time in seconds.
var id : intvar model_config : pydantic.config.ConfigDict