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.
- dataquery_sdk-1.2.1/CHANGELOG.md +48 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/MANIFEST.in +1 -3
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/PKG-INFO +1 -1
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/__init__.py +18 -11
- dataquery_sdk-1.2.1/dataquery/cli.py +776 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/config/env.py +1 -46
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/config/logging.py +1 -12
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/constants/__init__.py +5 -5
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/constants/api.py +1 -5
- dataquery_sdk-1.2.1/dataquery/constants/download.py +40 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/constants/rate_limit.py +0 -1
- dataquery_sdk-1.2.1/dataquery/constants/sse.py +10 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/core/_mixins.py +185 -51
- dataquery_sdk-1.2.1/dataquery/core/_sync.py +97 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/core/client.py +84 -149
- dataquery_sdk-1.2.1/dataquery/data/function.json +1024 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/dataquery.py +59 -117
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/download/parallel.py +23 -44
- dataquery_sdk-1.2.1/dataquery/export.py +153 -0
- dataquery_sdk-1.2.1/dataquery/function_registry.py +148 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/client.py +169 -101
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/event_store.py +0 -9
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/subscriber.py +80 -50
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/__init__.py +0 -6
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/auth.py +35 -41
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/connection_pool.py +8 -23
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/rate_limiter.py +18 -183
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/transport/retry.py +26 -24
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/types/__init__.py +0 -2
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/types/exceptions.py +0 -4
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/types/models.py +73 -104
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/utils.py +386 -46
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/PKG-INFO +1 -1
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/SOURCES.txt +4 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/pyproject.toml +5 -4
- dataquery_sdk-1.0.0/CHANGELOG.md +0 -36
- dataquery_sdk-1.0.0/dataquery/cli.py +0 -363
- dataquery_sdk-1.0.0/dataquery/constants/download.py +0 -51
- dataquery_sdk-1.0.0/dataquery/constants/sse.py +0 -9
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/CONTRIBUTING.md +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/LICENSE +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/README.md +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/config/__init__.py +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/core/__init__.py +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/download/__init__.py +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/download/utils.py +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/py.typed +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery/sse/__init__.py +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/dependency_links.txt +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/entry_points.txt +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/requires.txt +0 -0
- {dataquery_sdk-1.0.0 → dataquery_sdk-1.2.1}/dataquery_sdk.egg-info/top_level.txt +0 -0
- {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.
|
|
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.
|
|
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.
|
|
120
|
+
"python_requires": ">=3.12",
|
|
114
121
|
}
|