Skip to content

Releases: MeGaNeKoS/Anisearch

v3.0.0

Choose a tag to compare

@MeGaNeKoS MeGaNeKoS released this 21 Feb 19:25
v3.0.0
d500b8e

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 of dict — update code that accesses result["data"]["Media"] to use result.title.romaji etc.

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

See README for full usage docs.

v2.1.0

Choose a tag to compare

@MeGaNeKoS MeGaNeKoS released this 21 Feb 10:34
v2.1.0
e591e0a

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

Choose a tag to compare

@MeGaNeKoS MeGaNeKoS released this 21 Feb 05:43
v2.0.0
c519c36

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 Fragment class
  • Pagination with .page() / .paginate()
  • Async support with .execute_async() (requires aiohttp)
  • 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

Choose a tag to compare

@MeGaNeKoS MeGaNeKoS released this 28 Oct 20:21

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