Releases: jmmeus/aioarxiv
aioarxiv v1.1.3
This release enhances RSS feed functionality and further unifies the API and RSS interfaces, improving overall code cohesion and maintainability.
What's Changed
Interface Unification
- Enhanced query structure consistency:
- Introduced
id_listparameter inBaseQuery - Unified parameter handling between
SearchQueryandRSSQuery - Harmonized behavior between API and RSS feed infrastructure
- Introduced
RSS Feed Improvements
- Enhanced author information parsing:
- Fixed author parsing for RSS feeds
- Added new
.institutionsattribute toAuthorclass - Institutions data available when provided in RSS feeds (defaults to None)
Internal Refinements
- Implemented consistent parameter validation across query types
- Improved code cohesion between API and RSS implementations
- Enhanced parameter handling documentation
Installing
$ pip install git+https://github.com/jmmeus/aioarxiv.gitFor more information, please visit our GitHub repository.
aioarxiv v1.1.2
This release focuses on API cohesion and interface unification, alongside continued architectural improvements for better maintainability and user experience.
What's Changed
Architectural Improvements
- Enhanced query structure and organization:
- Converted
Searchclass to a more flexible query system - Implemented shared base functionality in
BaseQuery - Specialized implementations in
SearchQueryandRSSQuery
- Converted
Unified Query Interface
- Streamlined API interaction for end users:
- Introduced new class hierarchy with
BaseQuery,SearchQuery, andRSSQuery - Unified search and RSS feed interfaces for consistent user experience
- All queries now use identical setup and
client.results()method - Backend differences abstracted away from end users
- Introduced new class hierarchy with
Internal Refinements
- Updated internal documentation to reflect new class hierarchy
- Refined type hints for improved IDE support
- Ensured consistent behavior across all query types
Installing
$ pip install git+https://github.com/jmmeus/aioarxiv.gitFor more information, please visit our GitHub repository.
aioarxiv v1.1.1
This release introduces a major architectural overhaul, improving maintainability and modularity, alongside internal enhancements to the Client class for better resource management.
What's Changed
Modular Architecture Redesign
- Improved code structure for better maintainability:
- Split the monolithic
__init__.pyinto smaller, focused modules:client.pyfor API interaction logicmodelspackage for handling search results, RSS results, and enumserrors.pyfor centralized error handlingrate_limiter.pyfor asynchronous rate-limiting logicdecorators.pyfor reusable decorator utilities
- Introduced
models/utilities.pyto house shared validation, parsing, and helper functions.
- Split the monolithic
Internal Enhancements
- Implemented reference-counted context management for the
Clientclass:- Simplifies internal session handling in nested contexts.
- Improves robustness by ensuring proper resource cleanup.
Testing Enhancements
- Refactored test cases to align with the new modular structure.
- Verified the reliability of the
Client's context management. - Expanded test coverage for utility functions and decorators.
Installing
$ pip install git+https://github.com/jmmeus/aioarxiv.gitFor more information, please visit our GitHub repository.
aioarxiv v1.1.0
This release focuses on implementing RSS feed support, and improved Result class architecture.
What's Changed
RSS Feed Support
- Added full RSS feed compatibility
- Introduced new
RSSResultclass for handling RSS feed responses - Implemented flexible feed parsing and data extraction
Architecture Improvements
- Refactored result handling with new class hierarchy:
- Introduced
BaseResultas the foundation class - Split into specialized
RSSResultandSearchResultclasses - Maintained backward compatibility for existing search operations
- Introduced
Testing Enhancements
- Extended test suite to cover RSS feed functionality
- Updated existing tests to accommodate new result class structure
- Improved test reliability and coverage
Example: RSS Feed Usage
from aioarxiv import Client
async with Client() as client:
# Fetch latest papers in quantum physics
async for entry in client.get_feed("quant-ph"):
print(entry.title)Installing
$ pip install git+https://github.com/jmmeus/aioarxiv.gitFor more information, please visit our GitHub repository.
aioarxiv v1.0.2
This release focuses on improving test infrastructure and modernizing the rate limiting implementation.
What's Changed
Testing Improvements
- Updated pytest test suite to ensure all test cases are passing
- Enhanced GitHub workflow configurations for more reliable CI/CD
- Improved test coverage and reliability
Core Changes
- Migrated from legacy rate limit handler to new asynchronous-friendly implementation
- Improved handling of concurrent requests
- Better compliance with arXiv API rate limits
Installing
$ pip install git+https://github.com/jmmeus/aioarxiv.gitFor more information, please visit our GitHub repository.
arioarxiv v1.0.0
π First Major Release
aioarxiv is an asynchronous Python wrapper for the arXiv API, designed to provide efficient, non-blocking interactions with scholarly research databases.
β¨ Key Features
- Fully asynchronous API client
- Support for advanced search queries
- PDF and source file downloads
- Flexible configuration options
- Compatible with modern Python async workflows
π Migrating from arxiv.py
This library is an async reimplementation of the popular arxiv.py by Lukas Schwab. Major differences include:
- Async/await syntax
- Non-blocking API interactions
- Enhanced performance for concurrent searches
π¦ Installation
pip install git+https://github.com/jmmeus/aioarxiv.gitπ‘ Quick Example
import asyncio
import aioarxiv
async def main():
search = aioarxiv.Search(query="quantum", max_results=10)
async with aioarxiv.Client() as client:
async for result in client.results(search):
print(result.title)
asyncio.run(main())π Compatibility
- Python 3.8+
- Requires modern async programming practices
Enjoy efficient, non-blocking arXiv research with aioarxiv!