mihomo is a small Python client library that fetches parsed Honkai: Star Rail player profiles from the public MiHoMo API (api.mihomo.me/sr_info_parsed/{UID}) and validates them into typed Pydantic models. It is a companion library, not the MetaCubeX/mihomo Go proxy: the source tree is KT-Yeh's Python package (version 1.1.7), and the GitHub release workflow explicitly gates to the KT-Yeh/mihomo repository, even though the .github issue templates were copied from the proxy project. Architecture is a thin async aiohttp client plus a comprehensive Pydantic v1 model layer split into two schema versions (V1 and V2), a small custom exception hierarchy (UserNotFound, InvalidParams, HttpRequestError), and a utilities module for post-processing. The client maps HTTP status codes to typed exceptions via a match statement, optionally rewrites icon file paths into absolute CDN asset URLs, and parses responses into StarrailInfoParsed or StarrailInfoParsedV1 models. The model layer encodes the complete game schema - characters, light cones, relics, traces, stats, player details - with field aliases matching raw API keys and computed properties for derived values. Primary data flow: user UID to GET request with language and optional version parameter, then JSON response, optional cleaning (empty-dict removal, icon URL expansion, trailblazer name replacement), Pydantic validation, and a typed model returned to the caller. The tools module also supports merging old and new character snapshots with deduplication by character ID. External dependencies are minimal: aiohttp for transport, pydantic 1.x for validation, and the remote MiHoMo API plus the Mar-7th/StarRailRes asset CDN. Code quality is solid for a focused library: clean separation of client/models/tools/errors, extensive docstrings, Python 3.10+ features (match statements, union types). Notable weaknesses: pydantic is pinned to the deprecated 1.x line, the client opens a fresh aiohttp ClientSession per request, request() declares a mutable default argument, tools mutate input dicts in place, several imports are unused, and CI runs no tests (the build workflow only archives a zip). The repository is maintained casually rather than rigorously - usable and documented, but with accumulating debt.