Repository navigation
Releases: MeGaNeKoS/Anisearch
Releases · MeGaNeKoS/Anisearch
Release list
v3.0.0
Anisearch v3.0.0
BREAKING: execute() now returns typed dataclass objects instead of raw dicts.
Highlights
- Typed responses — access fields via attributes (
result.id,result.title.english) with full IDE autocomplete - Dataclass models for all entity types:
Media,Character,Staff,Studio,PageResult - Return type annotations and docstrings on all builder methods for IDE support
- Proper type hints on all connection parameters using enums
- Duplicate field detection at compile time
- Default sub-selections for connections without
fields=lambda - Snake-to-camelCase auto-conversion for mutation keyword arguments
Breaking Changes
execute()returns typed objects instead ofdict— update code that accessesresult["data"]["Media"]to useresult.title.romajietc.
Migration
# Before (v2.x)
result = api.media(id=1).title("romaji").execute()
title = result["data"]["Media"]["title"]["romaji"]
# After (v3.0)
result = api.media(id=1).title("romaji").execute()
title = result.title.romajiSee README for full usage docs.
v2.1.0
What's New
- Mutation support: All AniList mutation builders (media lists, activities, threads, reviews, recommendations, user settings)
- OAuth2 token authentication:
set_token()/remove_token()for authenticated requests - Literal type hints: IDE autocomplete for builder field selection
- Comprehensive test coverage
See CHANGELOG.txt for details.
v2.0.0
Anisearch v2.0.0
Complete rewrite with a declarative GraphQL query builder API.
Highlights
- Builder API — chain
.media(),.character(),.staff(),.studio()with fluent field selection - Reusable fragments via
Fragmentclass - Pagination with
.page()/.paginate() - Async support with
.execute_async()(requiresaiohttp) - Configurable retry via
RetryStrategy(wait, backoff, raise, or custom callable) - Raw query escape hatch with
.raw_query()
Infrastructure
- Migrated to
pyproject.toml+setuptools-scm(version from git tags) - CI: Python 3.8–3.13 on Ubuntu + Windows
- 218 unit tests, 86% coverage
Breaking Changes
- The old
instance.get.anime()/instance.search.anime()API is removed - Use the new builder API:
anilist.media(id=13601).title("romaji").execute()
See README for full usage docs.
Release the package
What's Changed
- Object/Memory optimization
- Error handling
- Supress any error by returning error message instead
- Change the default query to match the anilist website
Full Changelog: https://github.com/MeGaNeKoS/Anisearch/commits/1.1.0