Module genshin.models.genshin.chronicle.abyss

Classes

class AbyssCharacter (**data: Any)

Character with just a level.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class AbyssCharacter(character.BaseCharacter):
    """Character with just a level."""

    level: int

Ancestors

Class variables

var level : int
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields

Inherited members

class AbyssRankCharacter (**data: Any)

Character with a value of a rank.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class AbyssRankCharacter(character.BaseCharacter):
    """Character with a value of a rank."""

    id: int = Aliased("avatar_id")
    icon: str = Aliased("avatar_icon")

    value: int

Ancestors

Class variables

var icon : str
var id : int
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var value : int

Inherited members

class Battle (**data: Any)

Battle in the spiral abyss.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class Battle(APIModel):
    """Battle in the spiral abyss."""

    half: int = Aliased("index")
    timestamp: DateTimeField
    characters: typing.Sequence[AbyssCharacter] = Aliased("avatars")

Ancestors

Class variables

var characters : Sequence[AbyssCharacter]
var half : int
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var timestamp : datetime.datetime
class Chamber (**data: Any)

Chamber of the spiral abyss.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class Chamber(APIModel):
    """Chamber of the spiral abyss."""

    chamber: int = Aliased("index")
    stars: int = Aliased("star")
    max_stars: typing.Literal[3] = Aliased("max_star")
    battles: typing.Sequence[Battle]

Ancestors

Class variables

var battles : Sequence[Battle]
var chamber : int
var max_stars : Literal[3]
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var stars : int
class CharacterRanks (**data: Any)

Collection of rankings achieved during spiral abyss runs.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class CharacterRanks(APIModel):
    """Collection of rankings achieved during spiral abyss runs."""

    most_played: typing.Sequence[AbyssRankCharacter] = Aliased("reveal_rank", default=[])
    most_kills: typing.Sequence[AbyssRankCharacter] = Aliased("defeat_rank", default=[])
    strongest_strike: typing.Sequence[AbyssRankCharacter] = Aliased("damage_rank", default=[])
    most_damage_taken: typing.Sequence[AbyssRankCharacter] = Aliased("take_damage_rank", default=[])  # noqa: E501
    most_bursts_used: typing.Sequence[AbyssRankCharacter] = Aliased("energy_skill_rank", default=[])  # noqa: E501
    most_skills_used: typing.Sequence[AbyssRankCharacter] = Aliased("normal_skill_rank", default=[])  # noqa: E501

Ancestors

Class variables

var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var most_bursts_used : Sequence[AbyssRankCharacter]
var most_damage_taken : Sequence[AbyssRankCharacter]
var most_kills : Sequence[AbyssRankCharacter]
var most_played : Sequence[AbyssRankCharacter]
var most_skills_used : Sequence[AbyssRankCharacter]
var strongest_strike : Sequence[AbyssRankCharacter]
class Floor (**data: Any)

Floor of the spiral abyss.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class Floor(APIModel):
    """Floor of the spiral abyss."""

    floor: int = Aliased("index")
    # icon: str - unused
    # settle_time: int - appsample might be using this?
    unlocked: typing.Literal[True] = Aliased("is_unlock")
    stars: int = Aliased("star")
    max_stars: typing.Literal[9] = Aliased("max_star")  # maybe one day
    chambers: typing.Sequence[Chamber] = Aliased("levels")

Ancestors

Class variables

var chambers : Sequence[Chamber]
var floor : int
var max_stars : Literal[9]
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var stars : int
var unlocked : Literal[True]
class SpiralAbyss (**data: Any)

Information about Spiral Abyss runs during a specific season.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class SpiralAbyss(APIModel):
    """Information about Spiral Abyss runs during a specific season."""

    unlocked: bool = Aliased("is_unlock")
    season: int = Aliased("schedule_id")
    start_time: DateTimeField
    end_time: DateTimeField

    total_battles: int = Aliased("total_battle_times")
    total_wins: int = Aliased("total_win_times")
    max_floor: str
    total_stars: int = Aliased("total_star")

    ranks: CharacterRanks

    floors: typing.Sequence[Floor]

    @pydantic.model_validator(mode="before")
    def __nest_ranks(cls, values: dict[str, typing.Any]) -> dict[str, AbyssCharacter]:
        """By default ranks are for some reason on the same level as the rest of the abyss."""
        values.setdefault("ranks", {}).update(values)
        return values

Ancestors

Class variables

var end_time : datetime.datetime
var floors : Sequence[Floor]
var max_floor : str
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var ranksCharacterRanks
var season : int
var start_time : datetime.datetime
var total_battles : int
var total_stars : int
var total_wins : int
var unlocked : bool
class SpiralAbyssPair (**data: Any)

Pair of both current and previous spiral abyss.

This may not be a namedtuple due to how pydantic handles them.

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.

self is explicitly positional-only to allow self as a field name.

Expand source code
class SpiralAbyssPair(APIModel):
    """Pair of both current and previous spiral abyss.

    This may not be a namedtuple due to how pydantic handles them.
    """

    current: SpiralAbyss
    previous: SpiralAbyss

Ancestors

Class variables

var currentSpiralAbyss
var model_computed_fields
var model_config : pydantic.config.ConfigDict
var model_fields
var previousSpiralAbyss