zerodb-dagster 0.1.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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 AINative Studio
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,212 @@
1
+ Metadata-Version: 2.4
2
+ Name: zerodb-dagster
3
+ Version: 0.1.0
4
+ Summary: Dagster I/O manager, sensor, and resource for ZeroDB -- the free, auto-provisioning vector + relational database for AI and data pipelines. Store Dagster assets, trigger runs from ZeroDB events, no signup required.
5
+ Author-email: AINative Studio <dev@ainative.studio>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/AINative-Studio/zerodb-dagster
8
+ Project-URL: Documentation, https://docs.ainative.studio
9
+ Project-URL: Repository, https://github.com/AINative-Studio/zerodb-dagster
10
+ Project-URL: Issues, https://github.com/AINative-Studio/zerodb-dagster/issues
11
+ Keywords: dagster,dagster-io,dagster-plugin,io-manager,data-pipeline,etl,elt,orchestration,workflow,zerodb,ainative,vector-database,embeddings,ai-database,free-database,serverless-database,auto-provisioning,mcp,sensor,asset-materialization,data-engineering,mlops,ml-pipeline,ml-ops,agent-memory,ai-agent,data-asset-storage,pipeline-metadata,event-driven-pipeline
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Database
21
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
+ Requires-Python: >=3.9
24
+ Description-Content-Type: text/markdown
25
+ License-File: LICENSE
26
+ Requires-Dist: dagster>=1.5.0
27
+ Requires-Dist: requests>=2.28
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=7.0; extra == "dev"
30
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
31
+ Dynamic: license-file
32
+
33
+ # zerodb-dagster
34
+
35
+ **Dagster I/O manager, sensor, and resource for [ZeroDB](https://zerodb.dev) — the free, auto-provisioning vector + relational database for AI and data pipelines.**
36
+
37
+ Store Dagster assets directly in ZeroDB, trigger Dagster runs from ZeroDB events, and get a working free database in 200ms with zero signup — no API keys to request before your pipeline runs.
38
+
39
+ [![PyPI](https://img.shields.io/pypi/v/zerodb-dagster)](https://pypi.org/project/zerodb-dagster/)
40
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
41
+
42
+ ## Why use this?
43
+
44
+ | Feature | Description |
45
+ |---------|-------------|
46
+ | **I/O Manager** | Store and load Dagster assets directly in ZeroDB tables |
47
+ | **Event sensor** | ZeroDB events trigger Dagster runs via RunRequest |
48
+ | **Resource** | Configurable Dagster resource with authenticated client |
49
+ | **Auto-provision** | No signup needed -- ZeroDB project created on first use |
50
+ | **Webhook + polling** | Two modes: poll event stream or receive webhooks |
51
+
52
+ ## Installation
53
+
54
+ ```bash
55
+ pip install zerodb-dagster
56
+ ```
57
+
58
+ ## Quick Start
59
+
60
+ ### I/O Manager
61
+
62
+ ```python
63
+ from zerodb_dagster import ZeroDBIOManager
64
+
65
+ io = ZeroDBIOManager() # auto-provisions
66
+
67
+ # Store an asset output
68
+ io.handle_output(context, {'accuracy': 0.94, 'model': 'v2'})
69
+
70
+ # Load it back
71
+ data = io.load_input(context)
72
+ print(data) # {'accuracy': 0.94, 'model': 'v2'}
73
+ ```
74
+
75
+ ### Event Sensor
76
+
77
+ ```python
78
+ from zerodb_dagster import ZeroDBSensor
79
+
80
+ sensor = ZeroDBSensor(event_type='zerodb.table.row_inserted')
81
+
82
+ @sensor.on_event
83
+ def handle_insert(event):
84
+ return {'run_key': event.event_id, 'data': event.data}
85
+
86
+ sensor.start()
87
+ ```
88
+
89
+ ### Resource
90
+
91
+ ```python
92
+ from zerodb_dagster import ZeroDBResource
93
+
94
+ resource = ZeroDBResource(api_key='zdb_...', project_id='proj_...')
95
+ client = resource.get_client() # Authenticated requests.Session
96
+ ```
97
+
98
+ ## API Reference
99
+
100
+ ### `ZeroDBIOManager(**kwargs)`
101
+
102
+ Dagster I/O manager that stores assets in ZeroDB tables.
103
+
104
+ | Param | Default | Description |
105
+ |-------|---------|-------------|
106
+ | `api_key` | auto | ZeroDB API key |
107
+ | `project_id` | auto | ZeroDB project ID |
108
+ | `table` | `dagster_io` | Table name for storage |
109
+
110
+ **Methods:**
111
+
112
+ | Method | Description |
113
+ |--------|-------------|
114
+ | `handle_output(context, obj)` | Store output in ZeroDB |
115
+ | `load_input(context)` | Load input from ZeroDB |
116
+ | `delete_asset(asset_key)` | Delete stored asset |
117
+ | `list_assets(limit=100)` | List stored asset keys |
118
+
119
+ ### `ZeroDBSensor(event_type, **kwargs)`
120
+
121
+ Poll ZeroDB events and trigger Dagster runs.
122
+
123
+ | Param | Default | Description |
124
+ |-------|---------|-------------|
125
+ | `event_type` | required | Event type to listen for |
126
+ | `api_key` | auto | ZeroDB API key |
127
+ | `poll_interval` | 5 | Seconds between polls |
128
+ | `batch_size` | 100 | Max events per poll |
129
+
130
+ **Methods:**
131
+
132
+ | Method | Description |
133
+ |--------|-------------|
134
+ | `@sensor.on_event` | Decorator to register handler |
135
+ | `sensor.poll()` | Manually poll for events |
136
+ | `sensor.start()` | Start background polling |
137
+ | `sensor.stop()` | Stop polling |
138
+ | `sensor.process_webhook(payload)` | Process webhook payload |
139
+
140
+ ### `ZeroDBResource(**kwargs)`
141
+
142
+ Configurable Dagster resource for ZeroDB.
143
+
144
+ | Method | Description |
145
+ |--------|-------------|
146
+ | `get_client()` | Authenticated requests.Session |
147
+ | `get_headers()` | Auth headers as dict |
148
+ | `store_result(data, table)` | Store data in table |
149
+ | `query_table(table, filters)` | Query table rows |
150
+
151
+ ## Configuration
152
+
153
+ ### Environment Variables
154
+
155
+ ```bash
156
+ export ZERODB_API_KEY="your-api-key"
157
+ export ZERODB_PROJECT_ID="your-project-id"
158
+ ```
159
+
160
+ ### Auto-Provisioning
161
+
162
+ If no credentials are found, `zerodb-dagster` automatically creates a free ZeroDB project. Credentials are saved to `~/.zerodb/config.json`.
163
+
164
+ ## Use Cases
165
+
166
+ ### ML Pipeline
167
+
168
+ ```python
169
+ from zerodb_dagster import ZeroDBIOManager
170
+
171
+ io = ZeroDBIOManager(table='ml_assets')
172
+
173
+ # After training
174
+ io.handle_output(train_context, {
175
+ 'model_path': '/models/v2.pkl',
176
+ 'accuracy': 0.94,
177
+ })
178
+
179
+ # In evaluation
180
+ metrics = io.load_input(train_context)
181
+ ```
182
+
183
+ ### Event-Driven Data Pipeline
184
+
185
+ ```python
186
+ from zerodb_dagster import ZeroDBSensor, ZeroDBIOManager
187
+
188
+ sensor = ZeroDBSensor(event_type='zerodb.file.uploaded')
189
+ io = ZeroDBIOManager()
190
+
191
+ @sensor.on_event
192
+ def process_upload(event):
193
+ io.handle_output(event, {
194
+ 'source': event.data.get('path'),
195
+ 'status': 'queued',
196
+ })
197
+ return event.to_run_request()
198
+
199
+ sensor.start()
200
+ ```
201
+
202
+ ---
203
+
204
+ **Powered by [ZeroDB](https://zerodb.dev) + [AINative](https://ainative.studio)**
205
+
206
+ Free database for AI agents. Auto-provisions in 200ms. No signup required.
207
+
208
+ [Get started](https://ainative.studio) | [Documentation](https://docs.ainative.studio) | [ZeroDB](https://zerodb.dev) | [GitHub](https://github.com/AINative-Studio/zerodb-dagster)
209
+
210
+ ## License
211
+
212
+ MIT
@@ -0,0 +1,180 @@
1
+ # zerodb-dagster
2
+
3
+ **Dagster I/O manager, sensor, and resource for [ZeroDB](https://zerodb.dev) — the free, auto-provisioning vector + relational database for AI and data pipelines.**
4
+
5
+ Store Dagster assets directly in ZeroDB, trigger Dagster runs from ZeroDB events, and get a working free database in 200ms with zero signup — no API keys to request before your pipeline runs.
6
+
7
+ [![PyPI](https://img.shields.io/pypi/v/zerodb-dagster)](https://pypi.org/project/zerodb-dagster/)
8
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
9
+
10
+ ## Why use this?
11
+
12
+ | Feature | Description |
13
+ |---------|-------------|
14
+ | **I/O Manager** | Store and load Dagster assets directly in ZeroDB tables |
15
+ | **Event sensor** | ZeroDB events trigger Dagster runs via RunRequest |
16
+ | **Resource** | Configurable Dagster resource with authenticated client |
17
+ | **Auto-provision** | No signup needed -- ZeroDB project created on first use |
18
+ | **Webhook + polling** | Two modes: poll event stream or receive webhooks |
19
+
20
+ ## Installation
21
+
22
+ ```bash
23
+ pip install zerodb-dagster
24
+ ```
25
+
26
+ ## Quick Start
27
+
28
+ ### I/O Manager
29
+
30
+ ```python
31
+ from zerodb_dagster import ZeroDBIOManager
32
+
33
+ io = ZeroDBIOManager() # auto-provisions
34
+
35
+ # Store an asset output
36
+ io.handle_output(context, {'accuracy': 0.94, 'model': 'v2'})
37
+
38
+ # Load it back
39
+ data = io.load_input(context)
40
+ print(data) # {'accuracy': 0.94, 'model': 'v2'}
41
+ ```
42
+
43
+ ### Event Sensor
44
+
45
+ ```python
46
+ from zerodb_dagster import ZeroDBSensor
47
+
48
+ sensor = ZeroDBSensor(event_type='zerodb.table.row_inserted')
49
+
50
+ @sensor.on_event
51
+ def handle_insert(event):
52
+ return {'run_key': event.event_id, 'data': event.data}
53
+
54
+ sensor.start()
55
+ ```
56
+
57
+ ### Resource
58
+
59
+ ```python
60
+ from zerodb_dagster import ZeroDBResource
61
+
62
+ resource = ZeroDBResource(api_key='zdb_...', project_id='proj_...')
63
+ client = resource.get_client() # Authenticated requests.Session
64
+ ```
65
+
66
+ ## API Reference
67
+
68
+ ### `ZeroDBIOManager(**kwargs)`
69
+
70
+ Dagster I/O manager that stores assets in ZeroDB tables.
71
+
72
+ | Param | Default | Description |
73
+ |-------|---------|-------------|
74
+ | `api_key` | auto | ZeroDB API key |
75
+ | `project_id` | auto | ZeroDB project ID |
76
+ | `table` | `dagster_io` | Table name for storage |
77
+
78
+ **Methods:**
79
+
80
+ | Method | Description |
81
+ |--------|-------------|
82
+ | `handle_output(context, obj)` | Store output in ZeroDB |
83
+ | `load_input(context)` | Load input from ZeroDB |
84
+ | `delete_asset(asset_key)` | Delete stored asset |
85
+ | `list_assets(limit=100)` | List stored asset keys |
86
+
87
+ ### `ZeroDBSensor(event_type, **kwargs)`
88
+
89
+ Poll ZeroDB events and trigger Dagster runs.
90
+
91
+ | Param | Default | Description |
92
+ |-------|---------|-------------|
93
+ | `event_type` | required | Event type to listen for |
94
+ | `api_key` | auto | ZeroDB API key |
95
+ | `poll_interval` | 5 | Seconds between polls |
96
+ | `batch_size` | 100 | Max events per poll |
97
+
98
+ **Methods:**
99
+
100
+ | Method | Description |
101
+ |--------|-------------|
102
+ | `@sensor.on_event` | Decorator to register handler |
103
+ | `sensor.poll()` | Manually poll for events |
104
+ | `sensor.start()` | Start background polling |
105
+ | `sensor.stop()` | Stop polling |
106
+ | `sensor.process_webhook(payload)` | Process webhook payload |
107
+
108
+ ### `ZeroDBResource(**kwargs)`
109
+
110
+ Configurable Dagster resource for ZeroDB.
111
+
112
+ | Method | Description |
113
+ |--------|-------------|
114
+ | `get_client()` | Authenticated requests.Session |
115
+ | `get_headers()` | Auth headers as dict |
116
+ | `store_result(data, table)` | Store data in table |
117
+ | `query_table(table, filters)` | Query table rows |
118
+
119
+ ## Configuration
120
+
121
+ ### Environment Variables
122
+
123
+ ```bash
124
+ export ZERODB_API_KEY="your-api-key"
125
+ export ZERODB_PROJECT_ID="your-project-id"
126
+ ```
127
+
128
+ ### Auto-Provisioning
129
+
130
+ If no credentials are found, `zerodb-dagster` automatically creates a free ZeroDB project. Credentials are saved to `~/.zerodb/config.json`.
131
+
132
+ ## Use Cases
133
+
134
+ ### ML Pipeline
135
+
136
+ ```python
137
+ from zerodb_dagster import ZeroDBIOManager
138
+
139
+ io = ZeroDBIOManager(table='ml_assets')
140
+
141
+ # After training
142
+ io.handle_output(train_context, {
143
+ 'model_path': '/models/v2.pkl',
144
+ 'accuracy': 0.94,
145
+ })
146
+
147
+ # In evaluation
148
+ metrics = io.load_input(train_context)
149
+ ```
150
+
151
+ ### Event-Driven Data Pipeline
152
+
153
+ ```python
154
+ from zerodb_dagster import ZeroDBSensor, ZeroDBIOManager
155
+
156
+ sensor = ZeroDBSensor(event_type='zerodb.file.uploaded')
157
+ io = ZeroDBIOManager()
158
+
159
+ @sensor.on_event
160
+ def process_upload(event):
161
+ io.handle_output(event, {
162
+ 'source': event.data.get('path'),
163
+ 'status': 'queued',
164
+ })
165
+ return event.to_run_request()
166
+
167
+ sensor.start()
168
+ ```
169
+
170
+ ---
171
+
172
+ **Powered by [ZeroDB](https://zerodb.dev) + [AINative](https://ainative.studio)**
173
+
174
+ Free database for AI agents. Auto-provisions in 200ms. No signup required.
175
+
176
+ [Get started](https://ainative.studio) | [Documentation](https://docs.ainative.studio) | [ZeroDB](https://zerodb.dev) | [GitHub](https://github.com/AINative-Studio/zerodb-dagster)
177
+
178
+ ## License
179
+
180
+ MIT
@@ -0,0 +1,80 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "zerodb-dagster"
7
+ version = "0.1.0"
8
+ description = "Dagster I/O manager, sensor, and resource for ZeroDB -- the free, auto-provisioning vector + relational database for AI and data pipelines. Store Dagster assets, trigger runs from ZeroDB events, no signup required."
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.9"
12
+ authors = [
13
+ {name = "AINative Studio", email = "dev@ainative.studio"},
14
+ ]
15
+ keywords = [
16
+ "dagster",
17
+ "dagster-io",
18
+ "dagster-plugin",
19
+ "io-manager",
20
+ "data-pipeline",
21
+ "etl",
22
+ "elt",
23
+ "orchestration",
24
+ "workflow",
25
+ "zerodb",
26
+ "ainative",
27
+ "vector-database",
28
+ "embeddings",
29
+ "ai-database",
30
+ "free-database",
31
+ "serverless-database",
32
+ "auto-provisioning",
33
+ "mcp",
34
+ "sensor",
35
+ "asset-materialization",
36
+ "data-engineering",
37
+ "mlops",
38
+ "ml-pipeline",
39
+ "ml-ops",
40
+ "agent-memory",
41
+ "ai-agent",
42
+ "data-asset-storage",
43
+ "pipeline-metadata",
44
+ "event-driven-pipeline",
45
+ ]
46
+ classifiers = [
47
+ "Development Status :: 4 - Beta",
48
+ "Intended Audience :: Developers",
49
+ "Programming Language :: Python :: 3",
50
+ "Programming Language :: Python :: 3.9",
51
+ "Programming Language :: Python :: 3.10",
52
+ "Programming Language :: Python :: 3.11",
53
+ "Programming Language :: Python :: 3.12",
54
+ "Programming Language :: Python :: 3.13",
55
+ "Topic :: Database",
56
+ "Topic :: Software Development :: Libraries :: Python Modules",
57
+ "Topic :: Scientific/Engineering :: Artificial Intelligence",
58
+ ]
59
+ dependencies = [
60
+ "dagster>=1.5.0",
61
+ "requests>=2.28",
62
+ ]
63
+
64
+ [project.optional-dependencies]
65
+ dev = [
66
+ "pytest>=7.0",
67
+ "pytest-cov>=4.0",
68
+ ]
69
+
70
+ [project.urls]
71
+ Homepage = "https://github.com/AINative-Studio/zerodb-dagster"
72
+ Documentation = "https://docs.ainative.studio"
73
+ Repository = "https://github.com/AINative-Studio/zerodb-dagster"
74
+ Issues = "https://github.com/AINative-Studio/zerodb-dagster/issues"
75
+
76
+ [tool.setuptools.packages.find]
77
+ include = ["zerodb_dagster*"]
78
+
79
+ [tool.pytest.ini_options]
80
+ testpaths = ["tests"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+