Module genshin.models.starrail.character

Starrail base character model.

Classes

class BaseMemoSprite (**data: Any)
Expand source code
class BaseMemoSprite(APIModel):
    """HSR base memosprite."""

    id: int = Aliased("servant_id")
    name: str = Aliased("servant_name")
    icon: str = Aliased("servant_icon")

HSR base memosprite.

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.

Ancestors

Subclasses

Class variables

var icon : str
var id : int
var model_config : pydantic.config.ConfigDict
var name : str
class BaseRelic (**data: Any)
Expand source code
class BaseRelic(APIModel):
    """HSR base relic."""

    id: int
    pos: int
    rarity: int

HSR base relic.

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.

Ancestors

Subclasses

Class variables

var id : int
var model_config : pydantic.config.ConfigDict
var pos : int
var rarity : int
class BaseSkill (**data: Any)
Expand source code
class BaseSkill(APIModel):
    """HSR character/memosprite skill."""

    point_id: str
    point_type: int
    item_url: str
    level: int
    is_activated: bool
    is_rank_work: bool
    pre_point: str
    anchor: str
    remake: str

HSR character/memosprite skill.

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.

Ancestors

Subclasses

Class variables

var anchor : str
var is_activated : bool
var is_rank_work : bool
var item_url : str
var level : int
var model_config : pydantic.config.ConfigDict
var point_id : str
var point_type : int
var pre_point : str
var remake : str
class DetailMemoSprite (**data: Any)
Expand source code
class DetailMemoSprite(BaseMemoSprite):
    """HSR memosprite for detail character."""

    properties: typing.Sequence[StarRailBaseProperty] = Aliased("servant_properties")
    skills: typing.Sequence[DetailSkill] = Aliased("servant_skills")

HSR memosprite for detail character.

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.

Ancestors

Class variables

var model_config : pydantic.config.ConfigDict
var properties : Sequence[StarRailBaseProperty]
var skills : Sequence[DetailSkill]
class DetailRelic (**data: Any)
Expand source code
class DetailRelic(SimpleRelic):
    """HSR character relic with properties."""

    wiki: str
    main_property: DetailRelicProperty
    properties: typing.Sequence[DetailRelicProperty]

HSR character relic with properties.

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.

Ancestors

Class variables

var main_property : DetailRelicProperty
var model_config : pydantic.config.ConfigDict
var properties : Sequence[DetailRelicProperty]
var wiki : str
class DetailRelicProperty (**data: Any)
Expand source code
class DetailRelicProperty(APIModel):
    """Relic property for detailed character."""

    property_type: int
    value: str
    times: int
    preferred: bool
    recommended: bool
    info: PropertyInfo

Relic property for detailed character.

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.

Ancestors

Class variables

var info : PropertyInfo
var model_config : pydantic.config.ConfigDict
var preferred : bool
var property_type : int
var recommended : bool
var times : int
var value : str
class DetailSkill (**data: Any)
Expand source code
class DetailSkill(BaseSkill):
    """HSR character/memosprite skill for detail character."""

    skill_stages: typing.Sequence[SkillStage]

HSR character/memosprite skill for detail character.

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.

Ancestors

Class variables

var model_config : pydantic.config.ConfigDict
var skill_stages : Sequence[SkillStage]
class FloorCharacter (**data: Any)
Expand source code
class FloorCharacter(StarRailBaseCharacter):
    """Character in a floor."""

    level: int
    rank: int

Character in a floor.

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.

Ancestors

Class variables

var level : int
var model_config : pydantic.config.ConfigDict
var rank : int
class LineupMemoSprite (**data: Any)
Expand source code
class LineupMemoSprite(BaseMemoSprite):
    """HSR lineup memosprite."""

    properties: typing.Sequence[StarRailLineupProperty] = Aliased("servant_properties")
    skills: typing.Sequence[BaseSkill] = Aliased("servant_skills")

HSR lineup memosprite.

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.

Ancestors

Class variables

var model_config : pydantic.config.ConfigDict
var properties : Sequence[StarRailLineupProperty]
var skills : Sequence[BaseSkill]
class LineupRelic (**data: Any)
Expand source code
class LineupRelic(BaseRelic):
    """HSR lineup relic."""

    set_name: str
    set_num: int

    main_property: RelicProperty
    properties: typing.Sequence[RelicProperty]

    wiki: str = Aliased("wiki_url")

HSR lineup relic.

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.

Ancestors

Class variables

var main_property : RelicProperty
var model_config : pydantic.config.ConfigDict
var properties : Sequence[RelicProperty]
var set_name : str
var set_num : int
var wiki : str
class PropertyInfo (**data: Any)
Expand source code
class PropertyInfo(APIModel):
    """Relic property info."""

    property_type: int
    name: str
    icon: str
    property_name_relic: str
    property_name_filter: str

Relic property info.

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.

Ancestors

Class variables

var icon : str
var model_config : pydantic.config.ConfigDict
var name : str
var property_name_filter : str
var property_name_relic : str
var property_type : int
class Rank (**data: Any)
Expand source code
class Rank(APIModel):
    """HSR character eidolon."""

    id: int
    pos: int
    name: str
    icon: str
    desc: str
    is_unlocked: bool

HSR character eidolon.

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.

Ancestors

Class variables

var desc : str
var icon : str
var id : int
var is_unlocked : bool
var model_config : pydantic.config.ConfigDict
var name : str
var pos : int
class RelicProperty (**data: Any)
Expand source code
class RelicProperty(APIModel):
    """HSR relic property."""

    property_type: int
    value: str
    times: int
    name: str = Aliased("property_name")
    icon: str

HSR relic property.

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.

Ancestors

Class variables

var icon : str
var model_config : pydantic.config.ConfigDict
var name : str
var property_type : int
var times : int
var value : str
class RogueCharacter (**data: Any)
Expand source code
class RogueCharacter(StarRailBaseCharacter):
    """Rogue character model."""

    level: int
    rank: int

Rogue 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.

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

Ancestors

Class variables

var level : int
var model_config : pydantic.config.ConfigDict
var rank : int
class SimpleRelic (**data: Any)
Expand source code
class SimpleRelic(BaseRelic):
    """HSR simple relic without properties."""

    level: int
    name: str
    desc: str
    icon: str

HSR simple relic without properties.

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.

Ancestors

Subclasses

Class variables

var desc : str
var icon : str
var level : int
var model_config : pydantic.config.ConfigDict
var name : str
class SkillStage (**data: Any)
Expand source code
class SkillStage(APIModel):
    """Character skill stage."""

    name: str
    desc: str
    level: int
    remake: str
    item_url: str
    is_activated: bool
    is_rank_work: bool

Character skill stage.

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.

Ancestors

Class variables

var desc : str
var is_activated : bool
var is_rank_work : bool
var item_url : str
var level : int
var model_config : pydantic.config.ConfigDict
var name : str
var remake : str
class StarRailBaseCharacter (**data: Any)
Expand source code
class StarRailBaseCharacter(APIModel, Unique):
    """Base character model."""

    id: int
    element: str
    rarity: int
    icon: str

Base 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.

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

Ancestors

Subclasses

Class variables

var element : str
var icon : str
var id : int
var model_config : pydantic.config.ConfigDict
var rarity : int
class StarRailBaseEquipment (**data: Any)
Expand source code
class StarRailBaseEquipment(APIModel):
    """HSR character light cone."""

    id: int
    level: int
    rank: int
    name: str
    desc: str
    icon: str
    rarity: int

HSR character light cone.

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.

Ancestors

Subclasses

Class variables

var desc : str
var icon : str
var id : int
var level : int
var model_config : pydantic.config.ConfigDict
var name : str
var rank : int
var rarity : int
class StarRailBaseProperty (**data: Any)
Expand source code
class StarRailBaseProperty(APIModel):
    """HSR detail character endpoint base property (for memosprite.)"""

    property_type: int
    info: PropertyInfo
    base: str
    add: str
    final: str

HSR detail character endpoint base property (for memosprite.)

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.

Ancestors

Subclasses

Class variables

var add : str
var base : str
var final : str
var info : PropertyInfo
var model_config : pydantic.config.ConfigDict
var property_type : int
class StarRailCharacterProperty (**data: Any)
Expand source code
class StarRailCharacterProperty(StarRailBaseProperty):
    """HSR property for detailed character, with preferred and recommended flags."""

    preferred: bool
    recommended: bool

HSR property for detailed character, with preferred and recommended flags.

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.

Ancestors

Class variables

var model_config : pydantic.config.ConfigDict
var preferred : bool
var recommended : bool
class StarRailDetailCharacter (**data: Any)
Expand source code
class StarRailDetailCharacter(StarRailSimpleCharacter):
    """HSR character with detailed equipment and relics."""

    relics: typing.Sequence[DetailRelic]
    ornaments: typing.Sequence[DetailRelic]

    properties: typing.Sequence[StarRailCharacterProperty]
    skills: typing.Sequence[DetailSkill]
    memosprite: typing.Optional[DetailMemoSprite] = Aliased("servant_detail")

    @pydantic.field_validator("memosprite", mode="before")
    @classmethod
    def __return_none(
        cls, value: typing.Optional[typing.Dict[str, typing.Any]]
    ) -> typing.Optional[typing.Dict[str, typing.Any]]:
        """Return None if memosprite ID is 0."""
        if value is None:
            return None
        if value.get("servant_id", "0") == "0":
            return None
        return value

HSR character with detailed equipment and relics.

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.

Ancestors

Class variables

var memosprite : DetailMemoSprite | None
var model_config : pydantic.config.ConfigDict
var ornaments : Sequence[DetailRelic]
var properties : Sequence[StarRailCharacterProperty]
var relics : Sequence[DetailRelic]
var skills : Sequence[DetailSkill]

Inherited members

class StarRailEquipment (**data: Any)
Expand source code
class StarRailEquipment(StarRailBaseEquipment):
    """HSR character light cone."""

    wiki: str

HSR character light cone.

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.

Ancestors

Class variables

var model_config : pydantic.config.ConfigDict
var wiki : str
class StarRailLineupCharacter (**data: Any)
Expand source code
class StarRailLineupCharacter(StarRailPartialCharacter):
    """HSR lineup simulator character."""

    equip: typing.Optional[StarRailBaseEquipment]
    relics: typing.Sequence[LineupRelic]
    ranks: typing.Sequence[Rank]
    properties: typing.Sequence[StarRailLineupProperty]
    skills: typing.Sequence[BaseSkill]
    memosprite: typing.Optional[LineupMemoSprite] = Aliased("servant_detail")

    path: StarRailPath = Aliased("base_type")
    figure_path: str

HSR lineup simulator character.

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.

Ancestors

Class variables

var equip : StarRailBaseEquipment | None
var figure_path : str
var memosprite : LineupMemoSprite | None
var model_config : pydantic.config.ConfigDict
var path : StarRailPath
var properties : Sequence[StarRailLineupProperty]
var ranks : Sequence[Rank]
var relics : Sequence[LineupRelic]
var skills : Sequence[BaseSkill]
class StarRailLineupProperty (**data: Any)
Expand source code
class StarRailLineupProperty(APIModel):
    """HSR character/memosprite property for lineup simulator."""

    property_type: int
    base: str
    add: str
    final: str
    name: str = Aliased("property_name")
    icon: str

    base_float: float
    add_float: float
    final_float: float

HSR character/memosprite property for lineup simulator.

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.

Ancestors

Class variables

var add : str
var add_float : float
var base : str
var base_float : float
var final : str
var final_float : float
var icon : str
var model_config : pydantic.config.ConfigDict
var name : str
var property_type : int
class StarRailPartialCharacter (**data: Any)
Expand source code
class StarRailPartialCharacter(StarRailBaseCharacter):
    """Character without any equipment."""

    name: str
    level: int
    rank: int

Character without any equipment.

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.

Ancestors

Subclasses

Class variables

var level : int
var model_config : pydantic.config.ConfigDict
var name : str
var rank : int
class StarRailPath (value, names=None, *, module=None, qualname=None, type=None, start=1)
Expand source code
class StarRailPath(enum.IntEnum):
    """StarRail character path."""

    DESTRUCTION = 1
    THE_HUNT = 2
    ERUDITION = 3
    HARMONY = 4
    NIHILITY = 5
    PRESERVATION = 6
    ABUNDANCE = 7
    REMEMBRANCE = 8
    ELATION = 9

StarRail character path.

Ancestors

  • enum.IntEnum
  • builtins.int
  • enum.Enum

Class variables

var ABUNDANCE
var DESTRUCTION
var ELATION
var ERUDITION
var HARMONY
var NIHILITY
var PRESERVATION
var REMEMBRANCE
var THE_HUNT
class StarRailSimpleCharacter (**data: Any)
Expand source code
class StarRailSimpleCharacter(StarRailPartialCharacter):
    """HSR character with simplified data.

    Relics and ornaments have no properties, no skills, properties, and memosprite.
    This happens when the character is viewed by other players.
    """

    image: str
    equip: typing.Optional[StarRailEquipment]
    relics: typing.Sequence[SimpleRelic]
    ornaments: typing.Sequence[SimpleRelic]
    ranks: typing.Sequence[Rank]
    path: StarRailPath = Aliased("base_type")
    figure_path: str

    @property
    def is_wearing_outfit(self) -> bool:
        """Whether the character is wearing an outfit."""
        return "avatar_skin_image" in self.image

HSR character with simplified data.

Relics and ornaments have no properties, no skills, properties, and memosprite. This happens when the character is viewed by other players.

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.

Ancestors

Subclasses

Class variables

var equip : StarRailEquipment | None
var figure_path : str
var image : str
var model_config : pydantic.config.ConfigDict
var ornaments : Sequence[SimpleRelic]
var path : StarRailPath
var ranks : Sequence[Rank]
var relics : Sequence[SimpleRelic]

Instance variables

prop is_wearing_outfit : bool
Expand source code
@property
def is_wearing_outfit(self) -> bool:
    """Whether the character is wearing an outfit."""
    return "avatar_skin_image" in self.image

Whether the character is wearing an outfit.