Skip to content

CHANGELOG

v0.6.0 (2026-04-07)

Chores

  • deps: Bump aiohttp from 3.13.3 to 3.13.4 (24b513c)

--- updated-dependencies: - dependency-name: aiohttp dependency-version: 3.13.4

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

  • deps: Bump requests from 2.32.5 to 2.33.0 (0e47556)

Bumps requests from 2.32.5 to 2.33.0. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0

dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

Features

v0.5.1 (2026-04-06)

Bug Fixes

  • Remove Py 3.10, add 3.14 (51b5cb9)

v0.5.0 (2026-04-06)

Chores

  • deps: Bump tornado from 6.5.4 to 6.5.5 (49e0d7b)

Bumps tornado from 6.5.4 to 6.5.5. - Changelog - Commits

--- updated-dependencies: - dependency-name: tornado dependency-version: 6.5.5

dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

Documentation

  • Add AGENTS.md project knowledge base (d1a63e4)

Features

v0.4.2 (2026-03-04)

Bug Fixes

Chores

v0.4.1 (2026-03-04)

Bug Fixes

Documentation

  • Add comprehensive documentation (#12, 457a003)

  • docs: add comprehensive documentation

Add extensive documentation covering all aspects of the RepeaterBook library:

  • getting-started.md: Complete tutorial for beginners with quick start examples - usage.md: Comprehensive usage guide covering API client, database operations, geographic queries, frequency filtering, digital modes, and data export - architecture.md: Technical architecture documentation with diagrams, data flow explanations, design decisions, and extensibility guide - examples.md: Real-world examples including web apps, codeplug generation, coverage maps, statistics dashboards, travel planning, and network analysis - faq.md: Extensive FAQ covering installation, usage, performance, troubleshooting, and integration questions - README.md: Enhanced with better introduction, features list, quick example, and clear navigation to all documentation sections - mkdocs.yml: Updated navigation structure to include all new documentation pages

This significantly improves the developer experience by providing clear, comprehensive documentation with practical examples for common use cases.

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

  • fix: regenerate corrupted uv.lock file

The uv.lock file had a corruption with typing-extensions dependency missing source field. Regenerated the lock file to resolve the issue.

  • fix: correct all field names and API usage in documentation examples

Fixed all code examples across documentation to use correct field names and proper API patterns:

  • Changed LatLon(latitude=, longitude=) to LatLon(lat=, lon=) - Updated field names to match actual model: - location → location_nearest_city - input_ctcss → pl_ctcss_uplink - output_ctcss → pl_ctcss_tsq_downlink - p25_capable → apco_p_25_capable - p25_nac → p_25_nac - Fixed distance handling: filter_radius() returns sorted repeaters but doesn't add distance attribute, must calculate manually with haversine - Changed states= to state_ids= in ExportQuery - Removed references to non-existent fields (input_dcs, output_dcs, nxdn_ran, trustee) - Fixed emergency services to use actual fields (ares, races, skywarn, canwarn) instead of non-existent Emergency.YES/NO enum - Removed incorrect rb.session usage

All examples now work correctly with the actual codebase.

  • fix: infinite CI

  • chore: update cruft

  • build(CI): fix pre-commit

  • chore: cruft update

  • docs: update documentation for v0.4.0 features

  • Updated API configuration to use max_cache_age (timedelta) instead of cache_ttl - Added documentation for custom exceptions: - RepeaterBookError (base) - RepeaterBookAPIError - RepeaterBookValidationError - RepeaterBookCacheError - Documented model validation (latitude, longitude, frequency) - Added error handling examples to usage guide and FAQ - Added timedelta, haversine, frozenset to wordlist

  • Changed LatLon(latitude=, longitude=) to LatLon(lat=, lon=) - Removed non-existent .distance attribute access - Added inline haversine calculation for distance display - filter_radius() returns sorted repeaters without distance attribute

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com

  • fix: remove non-existent field references and update API patterns

  • Remove rep.network references (field doesn't exist in Repeater model) - Update cache_ttl to max_cache_age (timedelta) in examples - Fix filter_radius documentation to not set repeater.distance - Fix square_bounds call signature - Rename Example 7 from network analysis to DMR analysis

  • fix: use FIPS codes for state_ids instead of state names

The state_ids parameter requires numeric FIPS codes (e.g., "06" for California, "48" for Texas), not state names. Updated all documentation examples to use correct FIPS codes.

Examples: - California: "06" - Nevada: "32" - Oregon: "41" - Washington: "53" - Texas: "48" - Oklahoma: "40" - New Mexico: "35" - Florida: "12" - Arizona: "04" - Utah: "49"

  • fix: use keyword argument for RepeaterBook database parameter

RepeaterBook's first positional arg is working_dir, not database. Fixed all examples to use database= keyword argument.

Also removed incorrect :memory: example - the current implementation doesn't support in-memory databases as it always constructs a file path.

  • chore: mkdocs cfg place

Co-authored-by: Claude Sonnet 4.5 noreply@anthropic.com

v0.4.0 (2026-02-04)

Features

  • Comprehensive codebase improvements (#8, c893c4b)

  • feat: comprehensive codebase improvements

  • Add custom exception classes (RepeaterBookError, RepeaterBookAPIError, RepeaterBookCacheError, RepeaterBookValidationError) - Enable North America endpoint in urls_export() - Fix cache race conditions with atomic write pattern - Add model validation for latitude, longitude, and frequency fields - Replace MD5 with SHA256 for cache key generation - Make configuration injectable (max_cache_age, max_count) - Remove commented-out operating_mode field - Improve type safety with explanatory comments for casts - Optimize cache stat calls (single stat instead of exists + stat)

Test suite expansion: - Add test_exceptions.py for exception hierarchy - Add test_services.py for services module - Add test_models.py for model validation - Add test_queries.py for query builders - Add test_database.py for database operations - Add test_utils.py for utility functions - Expand test_repeaterbook.py for public API

Total: 108 tests passing

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com

  • feat: add smart routing for NA/ROW endpoints

Implement intelligent endpoint routing in urls_export(): - NA-specific fields (state_id, county, emcomm, stype) route to NA only - ROW-specific fields (region) route to ROW only - NA countries (US, Canada, Mexico) route to NA only - ROW countries route to ROW only - Mixed or common-only queries route to both

This prevents redundant API calls and avoids unfiltered queries that could return thousands of irrelevant results.

Added tests for all routing scenarios.

  • test: add comprehensive smart routing integration tests

Add live API integration tests to verify smart routing behavior: - NA-only queries (state_id) route to export.php only - ROW-only queries (region) route to exportROW.php only - NA country queries route to NA endpoint - ROW country queries route to ROW endpoint - Mixed country queries route to both endpoints - Empty queries route to both endpoints - Mode-only queries route to both endpoints

Also fix linting warnings (use next(iter()) instead of list()[0]).


Co-authored-by: Claude Opus 4.5 noreply@anthropic.com

v0.3.0 (2026-02-03)

Chores

  • deps: Bump aiohttp from 3.11.14 to 3.13.3 (#6, 5ac6362)

--- updated-dependencies: - dependency-name: aiohttp dependency-version: 3.13.3

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] 49699333+dependabot[bot]@users.noreply.github.com

  • deps: Bump filelock from 3.18.0 to 3.20.3 (#4, 00e7717)

Bumps filelock from 3.18.0 to 3.20.3. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: filelock dependency-version: 3.20.3

dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] 49699333+dependabot[bot]@users.noreply.github.com

  • deps: Bump urllib3 from 2.3.0 to 2.6.3 (#5, 6870e08)

Bumps urllib3 from 2.3.0 to 2.6.3. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: urllib3 dependency-version: 2.6.3

dependency-type: indirect ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] 49699333+dependabot[bot]@users.noreply.github.com

  • deps: Bump virtualenv from 20.29.3 to 20.36.1 (#3, 89b2aa3)

Bumps virtualenv from 20.29.3 to 20.36.1. - Release notes - Changelog - Commits

--- updated-dependencies: - dependency-name: virtualenv dependency-version: 20.36.1

dependency-type: direct:production ...

Signed-off-by: dependabot[bot] support@github.com

Co-authored-by: dependabot[bot] 49699333+dependabot[bot]@users.noreply.github.com

Features

  • Update Cruft (#11, 0c7c471)

  • feat: update Cruft

  • chore: update Cruft

Testing

  • Add cache tests + opt-in live API integration (#7, 804cedd)

  • test: add offline cache tests and opt-in live API integration tests

  • refactor: fix linting and type checking issues in tests

  • Add missing init.py to tests/integration/ package - Replace Any with proper StdPath type annotations for tmp_path - Add missing docstring to test function - Fix line length violations (88 char limit) - Use more specific type:ignore[union-attr] for mypy - Extract magic number to named constant - Move pathlib imports to TYPE_CHECKING block

All linting (ruff) and type checking (mypy) now pass.

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

  • refactor(tests): extract local server fixture and clean up test code

  • Add local_server fixture in conftest.py to reduce test duplication - Simplify _live_enabled() with case-insensitive comparison - Move pycountry import to module level in test_live_api.py - Extract _NA_SAMPLE_SIZE constant for magic number 200 - Fix import organization (blank lines after TYPE_CHECKING blocks)

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com


Co-authored-by: Claude Sonnet 4.5 noreply@anthropic.com

v0.2.2 (2026-01-31)

Bug Fixes

  • Tolerate RepeaterBook API drift (#2, 665d78e)

  • fix: tolerate RepeaterBook API drift (sponsor, NA fields, empty Use)

  • refactor: simplify Region parsing (use .get)

  • refactor: add b() helper for Yes/No + 1/0 fields

v0.2.1 (2025-04-09)

Chores

v0.2.0 (2025-04-08)

Bug Fixes

  • Use and_ for square query (9c09b5e)

Features

v0.1.1 (2025-04-03)

Bug Fixes

  • Merge instead of add to local DB (f6dfcbf)

Chores

  • Dunder all as tuples (2dfb808)

  • Simpler working dir default (fecdd43)

v0.1.0 (2025-03-31)

Features

v0.0.0 (2025-03-21)