quickbase-extract 0.1.0__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. quickbase_extract-0.2.0/CHANGELOG.md +82 -0
  2. quickbase_extract-0.2.0/PKG-INFO +4219 -0
  3. quickbase_extract-0.2.0/README.md +4192 -0
  4. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/pyproject.toml +3 -9
  5. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/src/quickbase_extract/__init__.py +26 -33
  6. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/src/quickbase_extract/api_handlers.py +1 -1
  7. quickbase_extract-0.2.0/src/quickbase_extract/cache_manager.py +327 -0
  8. quickbase_extract-0.2.0/src/quickbase_extract/cache_orchestration.py +298 -0
  9. quickbase_extract-0.2.0/src/quickbase_extract/cache_sync.py +94 -0
  10. quickbase_extract-0.2.0/src/quickbase_extract/config.py +27 -0
  11. quickbase_extract-0.2.0/src/quickbase_extract/report_data.py +388 -0
  12. quickbase_extract-0.2.0/src/quickbase_extract/report_metadata.py +309 -0
  13. quickbase_extract-0.2.0/src/quickbase_extract/utils.py +17 -0
  14. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/tests/conftest.py +37 -32
  15. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/tests/test_cache_manager.py +127 -58
  16. quickbase_extract-0.2.0/tests/test_cache_orchestration.py +947 -0
  17. quickbase_extract-0.2.0/tests/test_cache_sync.py +117 -0
  18. quickbase_extract-0.2.0/tests/test_report_data.py +613 -0
  19. quickbase_extract-0.2.0/tests/test_report_metadata.py +397 -0
  20. quickbase_extract-0.2.0/tests/test_utils.py +32 -0
  21. quickbase_extract-0.1.0/CHANGELOG.md +0 -32
  22. quickbase_extract-0.1.0/PKG-INFO +0 -1735
  23. quickbase_extract-0.1.0/README.md +0 -1708
  24. quickbase_extract-0.1.0/src/quickbase_extract/cache_freshness.py +0 -199
  25. quickbase_extract-0.1.0/src/quickbase_extract/cache_manager.py +0 -234
  26. quickbase_extract-0.1.0/src/quickbase_extract/cache_sync.py +0 -74
  27. quickbase_extract-0.1.0/src/quickbase_extract/client.py +0 -61
  28. quickbase_extract-0.1.0/src/quickbase_extract/report_data.py +0 -253
  29. quickbase_extract-0.1.0/src/quickbase_extract/report_metadata.py +0 -316
  30. quickbase_extract-0.1.0/src/quickbase_extract/utils.py +0 -42
  31. quickbase_extract-0.1.0/tests/test_cache_freshness.py +0 -236
  32. quickbase_extract-0.1.0/tests/test_cache_sync.py +0 -124
  33. quickbase_extract-0.1.0/tests/test_client.py +0 -170
  34. quickbase_extract-0.1.0/tests/test_report_data.py +0 -395
  35. quickbase_extract-0.1.0/tests/test_report_metadata.py +0 -255
  36. quickbase_extract-0.1.0/tests/test_utils.py +0 -71
  37. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/.editorconfig +0 -0
  38. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/.gitignore +0 -0
  39. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/.pre-commit-config.yaml +0 -0
  40. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/.python-version +0 -0
  41. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/LICENSE.txt +0 -0
  42. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/TODO.md +0 -0
  43. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/src/quickbase_extract/py.typed +0 -0
  44. {quickbase_extract-0.1.0 → quickbase_extract-0.2.0}/tests/test_api_handlers.py +0 -0
@@ -0,0 +1,82 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.0] - 2026-04-22
9
+
10
+ ### Added
11
+
12
+ - `ensure_cache_freshness()` function in new `cache_orchestration` module for orchestrating cache freshness checks
13
+ - Independent cache refresh: metadata and data refresh separately based on their staleness
14
+ - `METADATA_STALE_HOURS`, `DATA_STALE_HOURS`, `FORCE_CACHE_REFRESH` environment variables
15
+ - `cache_all_data` parameter in `ensure_cache_freshness()` to cache all reports regardless of subset
16
+ - `report_configs_all` and `report_configs_to_cache` parameters to separate metadata refresh from data caching
17
+ - Cache freshness management documentation and examples
18
+ - `CacheManager.is_cache_empty()` method to check if cache directory is empty
19
+ - `CacheManager.get_cache_age_hours()` method to get age of oldest file in cache
20
+ - `CacheManager` now accepts `s3_prefix` parameter for flexible S3 path configuration
21
+ - Environment-first cache path structure: `{project}/{env}/cache/` instead of `cache/{env}/`
22
+ - `ReportConfig` NamedTuple in new `config.py` module for type-safe report identification
23
+ - `_extract_report_names()` helper function in `report_data.py` to reduce code duplication
24
+ - `_replace_ask_placeholders()` function for dynamic filter manipulation with runtime ask_values
25
+ - Support for per-report ask_values in `get_data_parallel()` for dynamic filtering
26
+ - Multiple organization strategies for report configs (by app, by function, by environment, by tags)
27
+ - Environment-specific caching strategies (dev/staging/prod with different subsets)
28
+
29
+ ### Changed
30
+
31
+ - **All functions now require `CacheManager` instance**: Changed from optional `cache_root` parameter
32
+ - Cache structure now follows pattern: `my_project/dev/cache/report_metadata/...`
33
+ - Previously: `.quickbase-cache/dev/report_metadata/...`
34
+ - `ensure_cache_freshness()` refreshes only stale caches instead of always refreshing both
35
+ - `sync_from_s3_once()` now requires `cache_mgr` parameter instead of using singleton
36
+ - `sync_from_s3_once()` now supports `FORCE_CACHE_REFRESH` environment variable
37
+ - S3 sync operations now use `s3_prefix` for path construction instead of auto-adding environment
38
+ - CacheManager now provides cache inspection methods for both metadata and data directories
39
+ - **All functions now require `ReportConfig` instances instead of dicts**
40
+ - `fetch_report_metadata_api()` now returns only essential fields (no full `report` object)
41
+
42
+ ### Removed
43
+
44
+ - `cache_freshness.py` module — functionality consolidated into `cache_manager.py` (use `ensure_cache_freshness()` instead)
45
+ - `check_cache_freshness()`, `get_cache_files()`, `get_cache_summary()` functions — use `CacheManager` methods directly or `ensure_cache_freshness()` for orchestration
46
+ - `refresh_all()` function**: Use `ensure_cache_freshness()` for cache management
47
+ - `client.py` module**: Users must create Quickbase clients directly using `quickbase-api` package
48
+ - `get_cache_manager()` singleton**: Users must create `CacheManager` instances explicitly
49
+ - `find_report()` function from utils - no longer needed with `ReportConfig`
50
+ - Dict-based report config format - all configs must use `ReportConfig` NamedTuple
51
+ - Nested `report` object from metadata - simplified structure
52
+
53
+ ### Fixed
54
+
55
+ - Cache freshness checks now work independently for metadata vs data
56
+ - S3 sync no longer double-adds environment prefix to paths
57
+
58
+ ## [0.1.0] - 2026-04-19
59
+
60
+ ### Added
61
+
62
+ - Initial release
63
+ - Parallel report fetching with configurable worker threads
64
+ - Local and S3-backed caching for reduced API calls
65
+ - Automatic retry logic with exponential backoff for rate limits
66
+ - AWS Lambda support with S3 cache synchronization
67
+ - Cache monitoring tools for freshness checks
68
+ - Type hints and TypedDict support for better IDE integration
69
+ - Comprehensive error handling and detailed logging
70
+ - Data transformation with field ID to label conversion
71
+ - Support for multiple Quickbase applications
72
+
73
+ ### Features
74
+
75
+ - **Parallel Processing**: Fetch multiple reports concurrently for improved performance
76
+ - **Smart Caching**: Local and S3-backed caching to minimize API calls
77
+ - **Automatic Retries**: Built-in retry logic with exponential backoff for rate limits
78
+ - **Lambda Ready**: First-class support for AWS Lambda with S3 cache sync
79
+ - **Type Safe**: Full type hints with TypedDict for better IDE support
80
+ - **Cache Monitoring**: Tools to check cache freshness and manage stale data
81
+ - **Robust Error Handling**: Comprehensive error handling with detailed logging
82
+ - **Data Transformation**: Automatically converts field IDs to human-readable labels