quicknode-sdk 0.1.0a30__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.
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/Cargo.lock +29 -23
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/Cargo.toml +1 -1
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/PKG-INFO +12 -15
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/Cargo.toml +1 -1
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/README.md +4 -7
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/pyproject.toml +2 -2
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/python/README.md +11 -14
- {quicknode_sdk-0.1.0a30/python/sdk → quicknode_sdk-0.2.0/python/quicknode_sdk}/__init__.py +1 -1
- {quicknode_sdk-0.1.0a30/python/sdk → quicknode_sdk-0.2.0/python/quicknode_sdk}/__init__.pyi +3 -3
- {quicknode_sdk-0.1.0a30/python/sdk → quicknode_sdk-0.2.0/python/quicknode_sdk}/init_manual_override.pyi +3 -3
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/LICENSE +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/LICENSE +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/examples/admin.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/examples/admin_e2e.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/examples/kvstore_e2e.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/examples/streams.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/examples/streams_e2e.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/examples/webhooks_e2e.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/billing.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/bulk.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/chains.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/endpoint_metrics.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/endpoint_rate_limits.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/endpoint_security.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/endpoint_urls.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/endpoints.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/logs.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/mod.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/tags.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/teams.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/usage.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/config.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/errors.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/kvstore/mod.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/lib.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/streams/mod.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/streams/stream.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/webhooks/mod.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/webhooks/webhook.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/python/Cargo.toml +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/python/src/errors.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/python/src/lib.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/python/src/streams_destination.rs +0 -0
- {quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/python/src/webhooks_template.rs +0 -0
- {quicknode_sdk-0.1.0a30/python/sdk → quicknode_sdk-0.2.0/python/quicknode_sdk}/_core/__init__.pyi +0 -0
- {quicknode_sdk-0.1.0a30/python/sdk → quicknode_sdk-0.2.0/python/quicknode_sdk}/py.typed +0 -0
|
@@ -107,7 +107,7 @@ dependencies = [
|
|
|
107
107
|
"quote",
|
|
108
108
|
"regex",
|
|
109
109
|
"rustc-hash 2.1.2",
|
|
110
|
-
"shlex",
|
|
110
|
+
"shlex 1.3.0",
|
|
111
111
|
"syn",
|
|
112
112
|
]
|
|
113
113
|
|
|
@@ -168,14 +168,14 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
|
|
|
168
168
|
|
|
169
169
|
[[package]]
|
|
170
170
|
name = "cc"
|
|
171
|
-
version = "1.2.
|
|
171
|
+
version = "1.2.63"
|
|
172
172
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
173
|
-
checksum = "
|
|
173
|
+
checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
|
|
174
174
|
dependencies = [
|
|
175
175
|
"find-msvc-tools",
|
|
176
176
|
"jobserver",
|
|
177
177
|
"libc",
|
|
178
|
-
"shlex",
|
|
178
|
+
"shlex 2.0.1",
|
|
179
179
|
]
|
|
180
180
|
|
|
181
181
|
[[package]]
|
|
@@ -343,9 +343,9 @@ dependencies = [
|
|
|
343
343
|
|
|
344
344
|
[[package]]
|
|
345
345
|
name = "ctor"
|
|
346
|
-
version = "1.0.
|
|
346
|
+
version = "1.0.7"
|
|
347
347
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
348
|
-
checksum = "
|
|
348
|
+
checksum = "01334b89b69ff726750c5ce5073fc8bd860e99aa9a8fc5ca11b04730e3aee97a"
|
|
349
349
|
|
|
350
350
|
[[package]]
|
|
351
351
|
name = "darling"
|
|
@@ -757,9 +757,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
|
|
|
757
757
|
|
|
758
758
|
[[package]]
|
|
759
759
|
name = "hyper"
|
|
760
|
-
version = "1.10.
|
|
760
|
+
version = "1.10.1"
|
|
761
761
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
762
|
-
checksum = "
|
|
762
|
+
checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498"
|
|
763
763
|
dependencies = [
|
|
764
764
|
"atomic-waker",
|
|
765
765
|
"bytes",
|
|
@@ -1227,9 +1227,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
|
|
1227
1227
|
|
|
1228
1228
|
[[package]]
|
|
1229
1229
|
name = "mio"
|
|
1230
|
-
version = "1.2.
|
|
1230
|
+
version = "1.2.1"
|
|
1231
1231
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1232
|
-
checksum = "
|
|
1232
|
+
checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
|
|
1233
1233
|
dependencies = [
|
|
1234
1234
|
"libc",
|
|
1235
1235
|
"wasi",
|
|
@@ -1700,7 +1700,7 @@ dependencies = [
|
|
|
1700
1700
|
|
|
1701
1701
|
[[package]]
|
|
1702
1702
|
name = "quicknode-sdk"
|
|
1703
|
-
version = "0.
|
|
1703
|
+
version = "0.2.0"
|
|
1704
1704
|
dependencies = [
|
|
1705
1705
|
"bon",
|
|
1706
1706
|
"config",
|
|
@@ -2177,7 +2177,7 @@ dependencies = [
|
|
|
2177
2177
|
|
|
2178
2178
|
[[package]]
|
|
2179
2179
|
name = "sdk-node"
|
|
2180
|
-
version = "0.
|
|
2180
|
+
version = "0.2.0"
|
|
2181
2181
|
dependencies = [
|
|
2182
2182
|
"napi",
|
|
2183
2183
|
"napi-build",
|
|
@@ -2189,7 +2189,7 @@ dependencies = [
|
|
|
2189
2189
|
|
|
2190
2190
|
[[package]]
|
|
2191
2191
|
name = "sdk-python"
|
|
2192
|
-
version = "0.
|
|
2192
|
+
version = "0.2.0"
|
|
2193
2193
|
dependencies = [
|
|
2194
2194
|
"pyo3",
|
|
2195
2195
|
"pyo3-async-runtimes",
|
|
@@ -2200,7 +2200,7 @@ dependencies = [
|
|
|
2200
2200
|
|
|
2201
2201
|
[[package]]
|
|
2202
2202
|
name = "sdk-python-stubs"
|
|
2203
|
-
version = "0.
|
|
2203
|
+
version = "0.2.0"
|
|
2204
2204
|
dependencies = [
|
|
2205
2205
|
"pyo3-stub-gen",
|
|
2206
2206
|
"sdk-python",
|
|
@@ -2208,7 +2208,7 @@ dependencies = [
|
|
|
2208
2208
|
|
|
2209
2209
|
[[package]]
|
|
2210
2210
|
name = "sdk-ruby"
|
|
2211
|
-
version = "0.
|
|
2211
|
+
version = "0.2.0"
|
|
2212
2212
|
dependencies = [
|
|
2213
2213
|
"magnus",
|
|
2214
2214
|
"quicknode-sdk",
|
|
@@ -2373,6 +2373,12 @@ version = "1.3.0"
|
|
|
2373
2373
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2374
2374
|
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
|
2375
2375
|
|
|
2376
|
+
[[package]]
|
|
2377
|
+
name = "shlex"
|
|
2378
|
+
version = "2.0.1"
|
|
2379
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2380
|
+
checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
|
|
2381
|
+
|
|
2376
2382
|
[[package]]
|
|
2377
2383
|
name = "simd_cesu8"
|
|
2378
2384
|
version = "1.1.1"
|
|
@@ -2409,9 +2415,9 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
|
|
2409
2415
|
|
|
2410
2416
|
[[package]]
|
|
2411
2417
|
name = "socket2"
|
|
2412
|
-
version = "0.6.
|
|
2418
|
+
version = "0.6.4"
|
|
2413
2419
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2414
|
-
checksum = "
|
|
2420
|
+
checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
|
|
2415
2421
|
dependencies = [
|
|
2416
2422
|
"libc",
|
|
2417
2423
|
"windows-sys 0.61.2",
|
|
@@ -2743,9 +2749,9 @@ checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c"
|
|
|
2743
2749
|
|
|
2744
2750
|
[[package]]
|
|
2745
2751
|
name = "typenum"
|
|
2746
|
-
version = "1.20.
|
|
2752
|
+
version = "1.20.1"
|
|
2747
2753
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2748
|
-
checksum = "
|
|
2754
|
+
checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
|
|
2749
2755
|
|
|
2750
2756
|
[[package]]
|
|
2751
2757
|
name = "ucd-trie"
|
|
@@ -3303,18 +3309,18 @@ dependencies = [
|
|
|
3303
3309
|
|
|
3304
3310
|
[[package]]
|
|
3305
3311
|
name = "zerocopy"
|
|
3306
|
-
version = "0.8.
|
|
3312
|
+
version = "0.8.50"
|
|
3307
3313
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3308
|
-
checksum = "
|
|
3314
|
+
checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
|
|
3309
3315
|
dependencies = [
|
|
3310
3316
|
"zerocopy-derive",
|
|
3311
3317
|
]
|
|
3312
3318
|
|
|
3313
3319
|
[[package]]
|
|
3314
3320
|
name = "zerocopy-derive"
|
|
3315
|
-
version = "0.8.
|
|
3321
|
+
version = "0.8.50"
|
|
3316
3322
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
3317
|
-
checksum = "
|
|
3323
|
+
checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
|
|
3318
3324
|
dependencies = [
|
|
3319
3325
|
"proc-macro2",
|
|
3320
3326
|
"quote",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: quicknode-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Classifier: Intended Audience :: Developers
|
|
5
5
|
Classifier: License :: OSI Approved :: MIT License
|
|
6
6
|
Classifier: Operating System :: POSIX :: Linux
|
|
@@ -28,6 +28,8 @@ Python bindings for the Quicknode SDK.
|
|
|
28
28
|
|
|
29
29
|
This is one of four language bindings published from the same Rust core. See the [project README](https://github.com/quicknode/sdk/blob/main/README.md) for the polyglot overview, development setup, and release process.
|
|
30
30
|
|
|
31
|
+
> **Pre-1.0**: While on `0.x`, releases may contain breaking changes. Check the [release notes](https://github.com/quicknode/sdk/releases) before upgrading.
|
|
32
|
+
|
|
31
33
|
## Table of Contents
|
|
32
34
|
|
|
33
35
|
- [Installation](#installation)
|
|
@@ -82,7 +84,7 @@ Construct the SDK once, then reach into the four sub-clients (`admin`, `streams`
|
|
|
82
84
|
```python
|
|
83
85
|
# Python
|
|
84
86
|
import asyncio
|
|
85
|
-
from
|
|
87
|
+
from quicknode_sdk import QuicknodeSdk
|
|
86
88
|
|
|
87
89
|
async def main():
|
|
88
90
|
qn = QuicknodeSdk.from_env()
|
|
@@ -100,7 +102,7 @@ There are two ways to configure the SDK.
|
|
|
100
102
|
|
|
101
103
|
```python
|
|
102
104
|
# Python
|
|
103
|
-
from
|
|
105
|
+
from quicknode_sdk import QuicknodeSdk, SdkFullConfig, HttpConfig
|
|
104
106
|
qn = QuicknodeSdk(SdkFullConfig(api_key="your-key", http=HttpConfig(timeout_secs=30)))
|
|
105
107
|
```
|
|
106
108
|
|
|
@@ -135,7 +137,7 @@ quicknode-sdk-<language>/<sdk-version> (<os>-<arch>; <language>-<runtime-version
|
|
|
135
137
|
You can attach arbitrary headers via `HttpConfig.headers`. **These headers OVERRIDE any SDK-managed header with the same name**, including `User-Agent`, `x-api-key`, `Accept`, and `Content-Type`. Use this to inject correlation IDs, proxy auth, or to replace the default `User-Agent`. Header names are matched case-insensitively.
|
|
136
138
|
|
|
137
139
|
```python
|
|
138
|
-
from
|
|
140
|
+
from quicknode_sdk import QuicknodeSdk, SdkFullConfig, HttpConfig
|
|
139
141
|
|
|
140
142
|
qn = QuicknodeSdk(
|
|
141
143
|
SdkFullConfig(
|
|
@@ -1086,13 +1088,8 @@ Destinations are expressed via `DestinationAttributes`. Each variant wraps an at
|
|
|
1086
1088
|
| `Webhook` | `WebhookAttributes` | `url`, `max_retry`, `retry_interval_sec`, `post_timeout_sec`, `compression`, `security_token?` |
|
|
1087
1089
|
| `S3` | `S3Attributes` | `endpoint`, `access_key`, `secret_key`, `bucket`, `object_prefix`, `compression`, `file_type`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1088
1090
|
| `Azure` | `AzureAttributes` | `storage_account`, `sas_token`, `container`, `compression`, `file_type`, `max_retry`, `retry_interval_sec`, `blob_prefix?` |
|
|
1089
|
-
| `Postgres` | `PostgresAttributes` | `host`, `port`, `username`, `password`, `database`, `
|
|
1090
|
-
| `
|
|
1091
|
-
| `Mongo` | `MongoAttributes` | `connection_string`, `database`, `collection`, `max_retry`, `retry_interval_sec` |
|
|
1092
|
-
| `Clickhouse` | `ClickhouseAttributes` | `host`, `port`, `username`, `password`, `database`, `table`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1093
|
-
| `Snowflake` | `SnowflakeAttributes` | `account`, `warehouse`, `database`, `schema`, `table`, `username`, `private_key`, `max_retry`, `retry_interval_sec` |
|
|
1094
|
-
| `Kafka` | `KafkaAttributes` | `bootstrap_servers`, `topic`, `compression`, `max_retry`, `retry_interval_sec` |
|
|
1095
|
-
| `Redis` | `RedisAttributes` | `host`, `port`, `username`, `password`, `key`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1091
|
+
| `Postgres` | `PostgresAttributes` | `host`, `port`, `username`, `password`, `database`, `table_name`, `sslmode`, `max_retry`, `retry_interval_sec` |
|
|
1092
|
+
| `Kafka` | `KafkaAttributes` | `bootstrap_servers`, `topic_name`, `compression_type`, `batch_size`, `linger_ms`, `max_message_bytes`, `timeout_sec`, `max_retry`, `retry_interval_sec`, `username?`, `password?`, `protocol?`, `mechanisms?` |
|
|
1096
1093
|
|
|
1097
1094
|
Wrapper naming per language:
|
|
1098
1095
|
|
|
@@ -1113,7 +1110,7 @@ Creates a new stream that delivers filtered data to the configured destination.
|
|
|
1113
1110
|
|
|
1114
1111
|
```python
|
|
1115
1112
|
# Python
|
|
1116
|
-
from
|
|
1113
|
+
from quicknode_sdk import WebhookAttributes, StreamWebhookDestination
|
|
1117
1114
|
|
|
1118
1115
|
stream = await qn.streams.create_stream(
|
|
1119
1116
|
name="My Stream",
|
|
@@ -1336,7 +1333,7 @@ Creates a webhook from a predefined filter template.
|
|
|
1336
1333
|
|
|
1337
1334
|
```python
|
|
1338
1335
|
# Python
|
|
1339
|
-
from
|
|
1336
|
+
from quicknode_sdk import EvmWalletFilterArgs, EvmWalletFilterTemplate, WebhookDestinationAttributes
|
|
1340
1337
|
|
|
1341
1338
|
webhook = await qn.webhooks.create_webhook_from_template(
|
|
1342
1339
|
name="Wallet Webhook",
|
|
@@ -1646,11 +1643,11 @@ subclass to branch on transport vs. API semantics.
|
|
|
1646
1643
|
| `ApiError` | non-2xx HTTP response | `status`, `body` |
|
|
1647
1644
|
| `DecodeError` | 2xx response but JSON parse failed | `body` |
|
|
1648
1645
|
|
|
1649
|
-
Class names: Importable from `
|
|
1646
|
+
Class names: Importable from `quicknode_sdk`: `QuicknodeError`, `ConfigError`, `HttpError`, `TimeoutError`, `ConnectionError`, `ApiError`, `DecodeError`.
|
|
1650
1647
|
|
|
1651
1648
|
```python
|
|
1652
1649
|
# Python
|
|
1653
|
-
from
|
|
1650
|
+
from quicknode_sdk import ApiError, TimeoutError
|
|
1654
1651
|
try:
|
|
1655
1652
|
await qn.admin.show_endpoint("missing")
|
|
1656
1653
|
except ApiError as e:
|
|
@@ -4,6 +4,8 @@ The core Rust crate for the Quicknode SDK.
|
|
|
4
4
|
|
|
5
5
|
This is one of four language bindings published from the same Rust core. See the [project README](https://github.com/quicknode/sdk/blob/main/README.md) for the polyglot overview, development setup, and release process.
|
|
6
6
|
|
|
7
|
+
> **Pre-1.0**: While on `0.x`, releases may contain breaking changes. Check the [release notes](https://github.com/quicknode/sdk/releases) before upgrading.
|
|
8
|
+
|
|
7
9
|
## Table of Contents
|
|
8
10
|
|
|
9
11
|
- [Installation](#installation)
|
|
@@ -1113,13 +1115,8 @@ Destinations are expressed via `DestinationAttributes`. Each variant wraps an at
|
|
|
1113
1115
|
| `Webhook` | `WebhookAttributes` | `url`, `max_retry`, `retry_interval_sec`, `post_timeout_sec`, `compression`, `security_token?` |
|
|
1114
1116
|
| `S3` | `S3Attributes` | `endpoint`, `access_key`, `secret_key`, `bucket`, `object_prefix`, `compression`, `file_type`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1115
1117
|
| `Azure` | `AzureAttributes` | `storage_account`, `sas_token`, `container`, `compression`, `file_type`, `max_retry`, `retry_interval_sec`, `blob_prefix?` |
|
|
1116
|
-
| `Postgres` | `PostgresAttributes` | `host`, `port`, `username`, `password`, `database`, `
|
|
1117
|
-
| `
|
|
1118
|
-
| `Mongo` | `MongoAttributes` | `connection_string`, `database`, `collection`, `max_retry`, `retry_interval_sec` |
|
|
1119
|
-
| `Clickhouse` | `ClickhouseAttributes` | `host`, `port`, `username`, `password`, `database`, `table`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1120
|
-
| `Snowflake` | `SnowflakeAttributes` | `account`, `warehouse`, `database`, `schema`, `table`, `username`, `private_key`, `max_retry`, `retry_interval_sec` |
|
|
1121
|
-
| `Kafka` | `KafkaAttributes` | `bootstrap_servers`, `topic`, `compression`, `max_retry`, `retry_interval_sec` |
|
|
1122
|
-
| `Redis` | `RedisAttributes` | `host`, `port`, `username`, `password`, `key`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1118
|
+
| `Postgres` | `PostgresAttributes` | `host`, `port`, `username`, `password`, `database`, `table_name`, `sslmode`, `max_retry`, `retry_interval_sec` |
|
|
1119
|
+
| `Kafka` | `KafkaAttributes` | `bootstrap_servers`, `topic_name`, `compression_type`, `batch_size`, `linger_ms`, `max_message_bytes`, `timeout_sec`, `max_retry`, `retry_interval_sec`, `username?`, `password?`, `protocol?`, `mechanisms?` |
|
|
1123
1120
|
|
|
1124
1121
|
Wrapper naming per language:
|
|
1125
1122
|
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "quicknode-sdk"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.2.0"
|
|
8
8
|
description = "Quicknode SDK"
|
|
9
9
|
readme = "python/README.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -31,7 +31,7 @@ Issues = "https://github.com/quicknode/sdk/issues"
|
|
|
31
31
|
|
|
32
32
|
[tool.maturin]
|
|
33
33
|
manifest-path = "crates/python/Cargo.toml"
|
|
34
|
-
module-name = "
|
|
34
|
+
module-name = "quicknode_sdk._core"
|
|
35
35
|
python-source = "python"
|
|
36
36
|
features = ["extension-module"]
|
|
37
37
|
include = [
|
|
@@ -4,6 +4,8 @@ Python bindings for the Quicknode SDK.
|
|
|
4
4
|
|
|
5
5
|
This is one of four language bindings published from the same Rust core. See the [project README](https://github.com/quicknode/sdk/blob/main/README.md) for the polyglot overview, development setup, and release process.
|
|
6
6
|
|
|
7
|
+
> **Pre-1.0**: While on `0.x`, releases may contain breaking changes. Check the [release notes](https://github.com/quicknode/sdk/releases) before upgrading.
|
|
8
|
+
|
|
7
9
|
## Table of Contents
|
|
8
10
|
|
|
9
11
|
- [Installation](#installation)
|
|
@@ -58,7 +60,7 @@ Construct the SDK once, then reach into the four sub-clients (`admin`, `streams`
|
|
|
58
60
|
```python
|
|
59
61
|
# Python
|
|
60
62
|
import asyncio
|
|
61
|
-
from
|
|
63
|
+
from quicknode_sdk import QuicknodeSdk
|
|
62
64
|
|
|
63
65
|
async def main():
|
|
64
66
|
qn = QuicknodeSdk.from_env()
|
|
@@ -76,7 +78,7 @@ There are two ways to configure the SDK.
|
|
|
76
78
|
|
|
77
79
|
```python
|
|
78
80
|
# Python
|
|
79
|
-
from
|
|
81
|
+
from quicknode_sdk import QuicknodeSdk, SdkFullConfig, HttpConfig
|
|
80
82
|
qn = QuicknodeSdk(SdkFullConfig(api_key="your-key", http=HttpConfig(timeout_secs=30)))
|
|
81
83
|
```
|
|
82
84
|
|
|
@@ -111,7 +113,7 @@ quicknode-sdk-<language>/<sdk-version> (<os>-<arch>; <language>-<runtime-version
|
|
|
111
113
|
You can attach arbitrary headers via `HttpConfig.headers`. **These headers OVERRIDE any SDK-managed header with the same name**, including `User-Agent`, `x-api-key`, `Accept`, and `Content-Type`. Use this to inject correlation IDs, proxy auth, or to replace the default `User-Agent`. Header names are matched case-insensitively.
|
|
112
114
|
|
|
113
115
|
```python
|
|
114
|
-
from
|
|
116
|
+
from quicknode_sdk import QuicknodeSdk, SdkFullConfig, HttpConfig
|
|
115
117
|
|
|
116
118
|
qn = QuicknodeSdk(
|
|
117
119
|
SdkFullConfig(
|
|
@@ -1062,13 +1064,8 @@ Destinations are expressed via `DestinationAttributes`. Each variant wraps an at
|
|
|
1062
1064
|
| `Webhook` | `WebhookAttributes` | `url`, `max_retry`, `retry_interval_sec`, `post_timeout_sec`, `compression`, `security_token?` |
|
|
1063
1065
|
| `S3` | `S3Attributes` | `endpoint`, `access_key`, `secret_key`, `bucket`, `object_prefix`, `compression`, `file_type`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1064
1066
|
| `Azure` | `AzureAttributes` | `storage_account`, `sas_token`, `container`, `compression`, `file_type`, `max_retry`, `retry_interval_sec`, `blob_prefix?` |
|
|
1065
|
-
| `Postgres` | `PostgresAttributes` | `host`, `port`, `username`, `password`, `database`, `
|
|
1066
|
-
| `
|
|
1067
|
-
| `Mongo` | `MongoAttributes` | `connection_string`, `database`, `collection`, `max_retry`, `retry_interval_sec` |
|
|
1068
|
-
| `Clickhouse` | `ClickhouseAttributes` | `host`, `port`, `username`, `password`, `database`, `table`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1069
|
-
| `Snowflake` | `SnowflakeAttributes` | `account`, `warehouse`, `database`, `schema`, `table`, `username`, `private_key`, `max_retry`, `retry_interval_sec` |
|
|
1070
|
-
| `Kafka` | `KafkaAttributes` | `bootstrap_servers`, `topic`, `compression`, `max_retry`, `retry_interval_sec` |
|
|
1071
|
-
| `Redis` | `RedisAttributes` | `host`, `port`, `username`, `password`, `key`, `max_retry`, `retry_interval_sec`, `use_ssl?` |
|
|
1067
|
+
| `Postgres` | `PostgresAttributes` | `host`, `port`, `username`, `password`, `database`, `table_name`, `sslmode`, `max_retry`, `retry_interval_sec` |
|
|
1068
|
+
| `Kafka` | `KafkaAttributes` | `bootstrap_servers`, `topic_name`, `compression_type`, `batch_size`, `linger_ms`, `max_message_bytes`, `timeout_sec`, `max_retry`, `retry_interval_sec`, `username?`, `password?`, `protocol?`, `mechanisms?` |
|
|
1072
1069
|
|
|
1073
1070
|
Wrapper naming per language:
|
|
1074
1071
|
|
|
@@ -1089,7 +1086,7 @@ Creates a new stream that delivers filtered data to the configured destination.
|
|
|
1089
1086
|
|
|
1090
1087
|
```python
|
|
1091
1088
|
# Python
|
|
1092
|
-
from
|
|
1089
|
+
from quicknode_sdk import WebhookAttributes, StreamWebhookDestination
|
|
1093
1090
|
|
|
1094
1091
|
stream = await qn.streams.create_stream(
|
|
1095
1092
|
name="My Stream",
|
|
@@ -1312,7 +1309,7 @@ Creates a webhook from a predefined filter template.
|
|
|
1312
1309
|
|
|
1313
1310
|
```python
|
|
1314
1311
|
# Python
|
|
1315
|
-
from
|
|
1312
|
+
from quicknode_sdk import EvmWalletFilterArgs, EvmWalletFilterTemplate, WebhookDestinationAttributes
|
|
1316
1313
|
|
|
1317
1314
|
webhook = await qn.webhooks.create_webhook_from_template(
|
|
1318
1315
|
name="Wallet Webhook",
|
|
@@ -1622,11 +1619,11 @@ subclass to branch on transport vs. API semantics.
|
|
|
1622
1619
|
| `ApiError` | non-2xx HTTP response | `status`, `body` |
|
|
1623
1620
|
| `DecodeError` | 2xx response but JSON parse failed | `body` |
|
|
1624
1621
|
|
|
1625
|
-
Class names: Importable from `
|
|
1622
|
+
Class names: Importable from `quicknode_sdk`: `QuicknodeError`, `ConfigError`, `HttpError`, `TimeoutError`, `ConnectionError`, `ApiError`, `DecodeError`.
|
|
1626
1623
|
|
|
1627
1624
|
```python
|
|
1628
1625
|
# Python
|
|
1629
|
-
from
|
|
1626
|
+
from quicknode_sdk import ApiError, TimeoutError
|
|
1630
1627
|
try:
|
|
1631
1628
|
await qn.admin.show_endpoint("missing")
|
|
1632
1629
|
except ApiError as e:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
## Source of truth for
|
|
2
|
-
## python/
|
|
1
|
+
## Source of truth for quicknode_sdk/__init__.pyi
|
|
2
|
+
## python/quicknode_sdk/__init__.pyi is a build artifact — overwritten by `just python-build`.
|
|
3
3
|
## Edit this file, not __init__.pyi directly.
|
|
4
|
-
from
|
|
4
|
+
from quicknode_sdk._core import (
|
|
5
5
|
QuicknodeSdk,
|
|
6
6
|
AdminApiClient,
|
|
7
7
|
StreamsApiClient,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
## Source of truth for
|
|
2
|
-
## python/
|
|
1
|
+
## Source of truth for quicknode_sdk/__init__.pyi
|
|
2
|
+
## python/quicknode_sdk/__init__.pyi is a build artifact — overwritten by `just python-build`.
|
|
3
3
|
## Edit this file, not __init__.pyi directly.
|
|
4
|
-
from
|
|
4
|
+
from quicknode_sdk._core import (
|
|
5
5
|
QuicknodeSdk,
|
|
6
6
|
AdminApiClient,
|
|
7
7
|
StreamsApiClient,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quicknode_sdk-0.1.0a30 → quicknode_sdk-0.2.0}/crates/core/src/admin/endpoint_rate_limits.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quicknode_sdk-0.1.0a30/python/sdk → quicknode_sdk-0.2.0/python/quicknode_sdk}/_core/__init__.pyi
RENAMED
|
File without changes
|
|
File without changes
|