Skip to content

Commit 0aaeb10

Browse files
wilsonfreitasclaude
andcommitted
chore: Release version 0.3.6
## Summary of Changes (Phase 8 Complete) ### New Features - Async API support across all modules (sgs, currency, odata) - Comprehensive async documentation with examples - Full Portuguese translation of README and examples - Global sidebar navigation in documentation - 36 new test cases with proper mock isolation ### Documentation - New async.rst guide (43KB HTML) - Portuguese translations (README.md + 4 example scripts) - Theme config for Furo sidebar navigation on all pages ### Examples - 4 working examples (sgs, currency, odata, async) - Fixed API constraints (last=20 for SGS, filter syntax) ### Testing - 103 unit tests passing (71% code coverage) - Integration tests separated from unit tests - All Definition of Done checks passing ### Bug Fixes - Cache state issues resolved - Example API constraint corrections Version: 0.3.5 → 0.3.6 Date: 2026-03-26 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
1 parent 3d8cba6 commit 0aaeb10

2 files changed

Lines changed: 7 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
# Changelog
22

3-
## [Unreleased]
3+
## [0.3.6] - 2026-03-26
44

55
### Added
66
- **Async API Support** — All modules now have async counterparts: `sgs.async_get()`, `sgs.async_get_json()`, `currency.async_get()`, `ODataQuery.async_text()`, `ODataQuery.async_collect()`, `Endpoint.async_get()` for concurrent data fetching with `asyncio.gather()`
77
- **Logging Infrastructure** — Debug-level logging for all HTTP requests/responses (URL, status, response length) and warning-level logging for connection retry attempts across currency, sgs, and odata modules
88
- **Comprehensive Test Coverage** — Added 36 new tests: 12 negative tests for currency API (404/429/500 errors, malformed CSV), 15 negative tests for SGS API (malformed JSON, invalid inputs), 9 async tests; total 103 unit tests with proper mock isolation
9-
- **Example Scripts** — Added `examples/` directory with 4 comprehensive usage examples: SGS time series, currency exchange rates, OData queries with filters/sorting, and async API usage
9+
- **Example Scripts** — Added `examples/` directory with 4 comprehensive usage examples: SGS time series, currency exchange rates, OData queries with filters/sorting, and async API usage (all translated to Portuguese)
10+
- **Async Documentation** — New `docs/async.rst` with comprehensive guide to async APIs, examples with `asyncio.gather()`, performance comparisons, and semaphore patterns
11+
- **Portuguese Documentation** — Translated README.md and all example scripts to Portuguese (docstrings and comments)
1012
- **Enhanced Documentation** — Added "Which Module to Use?" decision table and FAQ section to README covering module differences, data coverage, async usage, error handling, logging setup, caching, and long-running applications
1113
- **Factory Functions** in tests/conftest.py — Parameterizable mock data generators: `make_currency_id_list_html()`, `make_currency_list_csv()`, `make_currency_rate_csv()`, `make_sgs_response()`, `make_odata_metadata_xml()`, `make_odata_query_response()`
1214
- **Cache Clearing Fixtures** — Added automatic OData metadata cache clearing between tests to prevent pytest-httpx mock assertion errors
15+
- **Sidebar Navigation** — Configured Furo theme with global sidebar navigation appearing on all documentation pages
1316

1417
### Changed
1518
- **Exception Handling** — Updated `bcb/currency.py` `get()` function to wrap `_get_symbol()` calls in try-except, allowing skipping of missing currencies while maintaining fail-fast for internal errors (per Phase 2 architecture)
@@ -19,6 +22,7 @@
1922
### Fixed
2023
- **Cache State Issues** — Resolved pytest-httpx unused mock assertions by implementing `clear_odata_cache` fixture that clears global `_METADATA_CACHE` between tests
2124
- **Test Failures** — Fixed 2 failing tests (`test_clear_cache`, `test_get_symbol_unknown_currency_returns_none`) to work with Phase 2 architecture changes and Phase 3 cache refactor
25+
- **Example API Constraints** — Updated examples to respect API limits: `last=20` (not 30) for SGS; fixed OData filter syntax and `select()` variadic arguments
2226

2327
## [0.3.5] - 2026-02-27
2428
- Added `output="text"` parameter to `sgs.get()`, `currency.get()`, `EndpointQuery.collect()`, and `Endpoint.get()` — returns raw API response text (JSON for SGS and OData, CSV for currency) instead of a DataFrame; multi-code/symbol calls return `dict[key, str]`; default behavior unchanged

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "python-bcb"
3-
version = "0.3.5"
3+
version = "0.3.6"
44
description = ""
55
authors = [{ name = "wilsonfreitas", email = "wilson.freitas@gmail.com" }]
66
readme = "README.md"

0 commit comments

Comments
 (0)