Releases: zarca-ai/CryptoExplorer
Release list
v1.3 - QuickNodeAPI: The Slim Edition
Overview
This release refactor QuickNodeAPI class to be more a clean and less redundant and made error handling more robust. The API now handles edge cases that previously went unnoticed.
🎯 Core Improvements
Streamlined Architecture
- DRY Principle Applied: Consolidated duplicate request logic into a single
_make_request()method that handles all API calls - Modular Error Handling: Extracted error handling into dedicated methods (
_check_response,_handle_request_exception) for cleaner, more maintainable code - Configurable Constants: Introduced class-level constants for timeouts and retry delays, making adjustments a breeze:
RATE_LIMIT_SECONDS = 1 CONNECTION_RETRY_SECONDS = 300 TIMEOUT_RETRY_SECONDS = 120 REQUEST_TIMEOUT = 60
Bug Fixes
- Fixed logger identity crisis: renamed from
moralis_APItoquicknode_API🐛
New Error Handling
- SSLError Support: Now skips to the next API key on SSL failures
- 403 Forbidden: Properly logs and fails over instead of crashing
- Exhausted Keys: Clear "All API keys exhausted" message when all endpoints fail
- JSON Decode Errors: Handles malformed API responses without breaking
Developer Experience
- Added input validation for
api_keysanddefault_api_key_idxparameters - Added return type hints across all methods for better IDE support
🧪 Test Suite Revamp
- Reorganized tests into focused, logical test classes
- Added comprehensive coverage for all new helper methods
- New integration tests for complete failover scenarios
- Edge case coverage for initialization and error paths
Full Changelog: v1.2.1...v1.3
v1.2.1 - The (un)necessary refactor
🔧 Refactor
• Removed unnecessary current block fetching from get_wallet_blocks() method
• Simplified get_wallet_blocks() to return only transaction block numbers
• Cleaned up method logic by removing redundant fetch_block("now") call
📝 Changes
• Updated version from 1.2 to 1.2.1 in setup.py
• Streamlined get_wallet_blocks() implementation for better performance
• Updated corresponding unit tests to reflect the refactored behavior
🧪 Testing
• Updated test expectations to match new get_wallet_blocks() behavior
• Removed mock dependencies for fetch_block in related tests
• Minor code formatting improvements
This patch release refactors the get_wallet_blocks() method to be more focused and efficient by removing the automatic inclusion of the current block number, providing cleaner and more predictable results for block analysis workflows.
Full Changelog: v1.2...v1.2.1
v1.2 - Enhanced Transaction Processing & Database Support
🚀 Major Features
• Added pagination support for large transaction datasets
• Implemented database integration with SQLAlchemy and PostgreSQL support
• Enhanced spam filtering with verified contract checking
• Added cursor-based transaction fetching for improved performance
🔧 New Methods
• fetch_paginated_transactions() - Handle large transaction sets efficiently
• fetch_unpaginated_transactions() - Process smaller datasets quickly
• fetch_first_and_last_transactions() - Get wallet transaction boundaries
• Enhanced get_wallet_blocks() with improved filtering
⚡ API Improvements
• fetch_block() now supports "now" parameter for current timestamp
• Switched to get_wallet_token_balances_price endpoint for better balance data
• Added exclude_unverified_contracts filtering
• Improved balance formatting using balance_formatted field
• Enhanced swap processing with better direction detection
🛠️ Technical Enhancements
• Added SQLAlchemy >=2.0.41 and psycopg2 >=2.9.10 dependencies
• Improved error handling and type hints
• Better separation of concerns in transaction processing
• Enhanced parameter validation
🧪 Testing
• Significantly expanded test coverage
• Added comprehensive tests for new methods
• Improved error handling test scenarios
• Better mocking and edge case coverage
🔍 Quality Improvements
• Enhanced logging functionality
• Better spam detection for ERC20 transfers
• Improved API response structure handling
• More robust pagination support
This release focuses on scalability, data quality, and database integration, making CryptoExplorer more suitable for production environments and large-scale data processing.
Full Changelog: v1.1.4...v1.2
v1.1.4 - Filter spam tokens
MoralisAPI
- refactor
get_wallet_token_balancesto filter spam tokens.
Full Changelog: v1.1.3...v1.1.4
v1.1.3 fix Overflow Error
- Fix OverflowError: int too big to convert caused by fetching tokens with many high decimal values.
Full Changelog: v1.1.2...v1.1.3
v1.1.2 - fix Overflow Error
- Fix
OverflowError: int too big to convertcaused by fetching tokens with many high decimal values.
Full Changelog: v1.1.1...v1.1.2
v1.1.1
MoralisAPI
- Add
get_wallet_blocksmethod that retrieves the historical token balances for a specific wallet.
Full Changelog: v1.1.0...v1.1.1
v1.1 - Hotfix Update
- Fix
ModuleNotFoundErrorchaging import paths. - Relocated the unit tests from the root tests directory to src/tests.
- Updated the import paths in the test files accordingly.
Full Changelog: v1.0.2...v1.1.0
v1.0.3rc1
v1.0.2 - Unit Tests update
Unit Test Update
- Add unit tests for all methods in account_api.py
- Add
ConnectErrorandTimeouttests forget_block_statsandget_block_infoin quicknode_api.py - Filter
DeprecationWarningsin tests/test_account_api.py
Full Changelog: v1.0.0...v1.0.2