dataquery-sdk 1.0.0__tar.gz → 1.2.1__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 (53) hide show
  1. dataquery_sdk-1.2.1/CHANGELOG.md +48 -0
  2. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/MANIFEST.in +1 -3
  3. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/PKG-INFO +1 -1
  4. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/__init__.py +18 -11
  5. dataquery_sdk-1.2.1/dataquery/cli.py +776 -0
  6. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/config/env.py +1 -46
  7. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/config/logging.py +1 -12
  8. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/constants/__init__.py +5 -5
  9. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/constants/api.py +1 -5
  10. dataquery_sdk-1.2.1/dataquery/constants/download.py +40 -0
  11. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/constants/rate_limit.py +0 -1
  12. dataquery_sdk-1.2.1/dataquery/constants/sse.py +10 -0
  13. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/core/_mixins.py +185 -51
  14. dataquery_sdk-1.2.1/dataquery/core/_sync.py +97 -0
  15. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/core/client.py +84 -149
  16. dataquery_sdk-1.2.1/dataquery/data/function.json +1024 -0
  17. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/dataquery.py +59 -117
  18. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/download/parallel.py +23 -44
  19. dataquery_sdk-1.2.1/dataquery/export.py +153 -0
  20. dataquery_sdk-1.2.1/dataquery/function_registry.py +148 -0
  21. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/client.py +169 -101
  22. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/event_store.py +0 -9
  23. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/subscriber.py +80 -50
  24. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/__init__.py +0 -6
  25. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/auth.py +35 -41
  26. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/connection_pool.py +8 -23
  27. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/rate_limiter.py +18 -183
  28. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/retry.py +26 -24
  29. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/types/__init__.py +0 -2
  30. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/types/exceptions.py +0 -4
  31. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/types/models.py +73 -104
  32. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/utils.py +386 -46
  33. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/PKG-INFO +1 -1
  34. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/SOURCES.txt +4 -0
  35. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/pyproject.toml +5 -4
  36. dataquery_sdk-1.0.0/CHANGELOG.md +0 -36
  37. dataquery_sdk-1.0.0/dataquery/cli.py +0 -363
  38. dataquery_sdk-1.0.0/dataquery/constants/download.py +0 -51
  39. dataquery_sdk-1.0.0/dataquery/constants/sse.py +0 -9
  40. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/CONTRIBUTING.md +0 -0
  41. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/LICENSE +0 -0
  42. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/README.md +0 -0
  43. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/config/__init__.py +0 -0
  44. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/core/__init__.py +0 -0
  45. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/download/__init__.py +0 -0
  46. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/download/utils.py +0 -0
  47. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/py.typed +0 -0
  48. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/__init__.py +0 -0
  49. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/dependency_links.txt +0 -0
  50. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/entry_points.txt +0 -0
  51. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/requires.txt +0 -0
  52. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/top_level.txt +0 -0
  53. {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/setup.cfg +0 -0
@@ -0,0 +1,48 @@
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
+
9
+ ## [0.0.7] - 2025-10-20
10
+ - Initial release of dataquery-sdk
11
+ - Parallel file download functionality with HTTP range requests
12
+ - Group download capabilities with intelligent rate limiting
13
+ - Comprehensive test suite with coverage reporting
14
+ ## [0.0.8] - 2025-10-21
15
+ - Made label and expression parameters optional in attribute api response
16
+ ## [0.0.9] - 2025-12-09
17
+ - Performance optimizations
18
+ ## [0.1.0] - 2025-12-10
19
+ - Time series data made optional
20
+ ## [0.1.1] - 2026-02-18
21
+ - Non blocking IO
22
+ ## [0.1.2] - 2026-02-18
23
+ - File already exists status added
24
+ ## [0.1.3] - 2026-02-21
25
+ - Historical file download added
26
+ ## [0.1.4] - 2026-03-23
27
+ - Introduced circuit breaker environment variable (`DATAQUERY_CIRCUIT_BREAKER_THRESHOLD`)
28
+ ## [0.1.5] - 2026-04-16
29
+ - Introduced file-group-id to the group downloads
30
+ ## [0.2.0] - 2026-05-06
31
+ - SSE auto-download with cross-process event replay and multi-group support
32
+ - Python 3.11+ only
33
+ ## [1.0.0] - 2026-06-03
34
+ - Stable 1.0 release
35
+ - Bumped minimum Python to 3.12; added 3.14 to test matrix
36
+ - Security floors: idna>=3.15, urllib3>=2.7.0, pymdown-extensions>=10.21.3
37
+ ## [1.1.0] - 2026-06-10
38
+ - Reliability: 429 responses are now retried instead of surfaced immediately; the server `Retry-After` is honored when timing retry backoff; adaptive rate-limit backoff now engages instead of staying at zero
39
+ - Auth: OAuth token-fetch network/timeout failures now raise `NetworkError` (previously `AuthenticationError`); token acquisition is single-flight so concurrent callers don't stampede the token endpoint
40
+ - SSE: jittered reconnect backoff to avoid synchronized reconnect storms; stop reconnecting on fatal 403/404 and bound retries on 401; idle `sock_read` timeout distinguished from the heartbeat watchdog; honor the server `retry:` hint; strip a leading UTF-8 BOM; larger read buffer guards against `LineTooLong`; `stop()` is await-safe under concurrent callers
41
+ ## [1.2.0] - 2026-06-29
42
+ - DataQuery functions: new `function-help` command for local lookup of all 158 DQ function syntaxes, parameters, and categories (no API call); backed by a static, frozen `dataquery/data/function.json` dataset
43
+ ## [1.2.1] - 2026-07-14
44
+ - Written research: new `download_zip_async` helper that downloads a group over a date range (split into calendar-month windows to fit the available-files endpoint limit) and safely extracts ZIP archives as each download completes, overlapping unzip with in-flight downloads
45
+ - Group downloads: `run_group_download_async` accepts an `on_file_complete` async callback awaited per file on `completed`/`already_exists`
46
+ - Extraction is Zip Slip-guarded, skips current-day archives, and surfaces failures via `extraction_errors` (downgrading overall status to `partial`); date windows with no available files no longer mark a multi-window run as `partial`
47
+
48
+
@@ -2,14 +2,12 @@ include README.md
2
2
  include LICENSE
3
3
  include CHANGELOG.md
4
4
  include CONTRIBUTING.md
5
- include requirements.txt
6
- include requirements-dev.txt
7
5
  include pyproject.toml
8
- include .env.template
9
6
 
10
7
  # Include package data
11
8
  recursive-include dataquery *.py
12
9
  recursive-include dataquery *.typed
10
+ recursive-include dataquery *.json
13
11
 
14
12
  # Exclude development and testing files
15
13
  recursive-exclude tests *
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dataquery-sdk
3
- Version: 1.0.0
3
+ Version: 1.2.1
4
4
  Summary: Python SDK for DATAQUERY Data API - Query, download, and check availability of economic data files
5
5
  Author-email: DATAQUERY SDK Team <dataquery_support@jpmorgan.com>
6
6
  Project-URL: Homepage, https://github.com/dataquery/dataquery-sdk
@@ -14,16 +14,23 @@ Quick Start:
14
14
  For more information, visit: https://github.com/dataquery/dataquery-sdk
15
15
  """
16
16
 
17
- __version__ = "1.0.0"
17
+ __version__ = "1.2.1"
18
18
  __author__ = "DATAQUERY SDK Team"
19
19
  __email__ = "dataquery_support@jpmorgan.com"
20
20
  __license__ = "MIT"
21
21
  __url__ = "https://github.com/jpmorganchase/dataquery-sdk"
22
22
 
23
- # Core
24
23
  from .config import EnvConfig
25
24
  from .core import DataQueryClient
26
25
  from .dataquery import DataQuery
26
+ from .function_registry import (
27
+ format_function_syntax,
28
+ get_function_categories,
29
+ get_function_param_counts,
30
+ get_function_registry,
31
+ list_functions_by_category,
32
+ lookup_function,
33
+ )
27
34
  from .sse.client import SSEClient, SSEEvent
28
35
  from .sse.subscriber import NotificationDownloadManager
29
36
  from .types.exceptions import (
@@ -56,13 +63,11 @@ from .types.models import (
56
63
  Group,
57
64
  GroupList,
58
65
  )
66
+ from .utils import download_zip_async
59
67
 
60
- # Type aliases for convenience
61
68
  __all__ = [
62
- # Core
63
69
  "DataQuery",
64
70
  "DataQueryClient",
65
- # Models
66
71
  "ClientConfig",
67
72
  "Group",
68
73
  "GroupList",
@@ -75,7 +80,6 @@ __all__ = [
75
80
  "DownloadOptions",
76
81
  "DownloadProgress",
77
82
  "DateRange",
78
- # Exceptions
79
83
  "DataQueryError",
80
84
  "AuthenticationError",
81
85
  "ValidationError",
@@ -90,18 +94,21 @@ __all__ = [
90
94
  "DateRangeError",
91
95
  "FileTypeError",
92
96
  "WorkflowError",
93
- # Configuration
94
97
  "EnvConfig",
95
- # SSE notification-driven download
96
98
  "NotificationDownloadManager",
97
99
  "SSEClient",
98
100
  "SSEEvent",
101
+ "format_function_syntax",
102
+ "get_function_categories",
103
+ "get_function_param_counts",
104
+ "get_function_registry",
105
+ "list_functions_by_category",
106
+ "lookup_function",
107
+ "download_zip_async",
99
108
  ]
100
109
 
101
- # Version info
102
110
  __version_info__ = tuple(int(x) for x in __version__.split("."))
103
111
 
104
- # Package metadata
105
112
  __package_info__ = {
106
113
  "name": "dataquery-sdk",
107
114
  "version": __version__,
@@ -110,5 +117,5 @@ __package_info__ = {
110
117
  "license": __license__,
111
118
  "url": __url__,
112
119
  "description": "Python SDK for DATAQUERY Data API - Query, download, and check availability of economic data files",
113
- "python_requires": ">=3.11",
120
+ "python_requires": ">=3.12",
114
121
  }