ainative-python 2.0.0__py3-none-any.whl

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,550 @@
1
+ Metadata-Version: 2.4
2
+ Name: ainative-python
3
+ Version: 2.0.0
4
+ Summary: Official Python SDK for AINative Studio APIs with ZeroDB Local support
5
+ Home-page: https://github.com/ainative/ainative-python
6
+ Author: AINative Team
7
+ Author-email: support@ainative.studio
8
+ Project-URL: Documentation, https://docs.ainative.studio/sdk/python
9
+ Project-URL: API Reference, https://api.ainative.studio/docs-enhanced
10
+ Project-URL: Bug Reports, https://github.com/ainative/studio/issues
11
+ Project-URL: Source, https://github.com/ainative/ainative-python
12
+ Keywords: ainative,database,vector,embedding,ai,ml,machine learning,artificial intelligence,api,sdk,zerodb,agent swarm,postgresql,vector search,nosql,table operations,mongodb-style,crud
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Developers
15
+ Classifier: License :: OSI Approved :: MIT License
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.8
19
+ Classifier: Programming Language :: Python :: 3.9
20
+ Classifier: Programming Language :: Python :: 3.10
21
+ Classifier: Programming Language :: Python :: 3.11
22
+ Classifier: Programming Language :: Python :: 3.12
23
+ Classifier: Topic :: Database
24
+ Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
25
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
26
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
+ Requires-Python: >=3.8
28
+ Description-Content-Type: text/markdown
29
+ Requires-Dist: requests>=2.25.0
30
+ Requires-Dist: python-dateutil>=2.8.0
31
+ Requires-Dist: typing-extensions>=4.0.0
32
+ Requires-Dist: pydantic>=2.0.0
33
+ Requires-Dist: httpx>=0.24.0
34
+ Requires-Dist: aiohttp>=3.8.0
35
+ Requires-Dist: numpy>=1.24.0
36
+ Requires-Dist: PyYAML>=6.0.0
37
+ Requires-Dist: python-dotenv>=1.0.0
38
+ Requires-Dist: click>=8.1.0
39
+ Requires-Dist: rich>=13.0.0
40
+ Requires-Dist: tenacity>=8.2.0
41
+ Requires-Dist: backoff>=2.2.0
42
+ Provides-Extra: dev
43
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
44
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
45
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
46
+ Requires-Dist: pytest-mock>=3.10.0; extra == "dev"
47
+ Requires-Dist: black>=22.0.0; extra == "dev"
48
+ Requires-Dist: flake8>=5.0.0; extra == "dev"
49
+ Requires-Dist: mypy>=1.0.0; extra == "dev"
50
+ Requires-Dist: isort>=5.10.0; extra == "dev"
51
+ Provides-Extra: docs
52
+ Requires-Dist: sphinx>=5.0.0; extra == "docs"
53
+ Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "docs"
54
+ Requires-Dist: sphinx-autodoc-typehints>=1.19.0; extra == "docs"
55
+ Provides-Extra: async
56
+ Requires-Dist: aiohttp>=3.8.0; extra == "async"
57
+ Requires-Dist: asyncio>=3.4.3; extra == "async"
58
+ Dynamic: author
59
+ Dynamic: author-email
60
+ Dynamic: classifier
61
+ Dynamic: description
62
+ Dynamic: description-content-type
63
+ Dynamic: home-page
64
+ Dynamic: keywords
65
+ Dynamic: project-url
66
+ Dynamic: provides-extra
67
+ Dynamic: requires-dist
68
+ Dynamic: requires-python
69
+ Dynamic: summary
70
+
71
+ # AINative Python SDK
72
+
73
+ Official Python SDK for AINative Studio APIs - unified database and AI operations platform.
74
+
75
+ ## Features
76
+
77
+ - 🚀 **Simple Integration** - Get started with just an API key
78
+ - 🗄️ **ZeroDB Operations** - Full support for vector storage, search, and memory management
79
+ - 🤖 **Agent Swarm** - Orchestrate multiple AI agents for complex tasks
80
+ - 🔐 **Enterprise Security** - Multi-tenant authentication with API key management
81
+ - ⚡ **High Performance** - Async support and connection pooling
82
+ - 📊 **Analytics** - Built-in usage tracking and performance metrics
83
+
84
+ ## Installation
85
+
86
+ ```bash
87
+ pip install ainative-python
88
+ ```
89
+
90
+ For development version:
91
+ ```bash
92
+ pip install git+https://github.com/ainative/ainative-python.git
93
+ ```
94
+
95
+ ## Quick Start
96
+
97
+ ```python
98
+ from ainative import AINativeClient
99
+
100
+ # Initialize client
101
+ client = AINativeClient(api_key="your-api-key")
102
+
103
+ # Create a project
104
+ project = client.zerodb.projects.create(
105
+ name="My First Project",
106
+ description="Testing AINative SDK"
107
+ )
108
+
109
+ # Store vectors
110
+ client.zerodb.vectors.upsert(
111
+ project_id=project["id"],
112
+ vectors=[[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]],
113
+ metadata=[{"text": "Hello"}, {"text": "World"}]
114
+ )
115
+
116
+ # Search vectors
117
+ results = client.zerodb.vectors.search(
118
+ project_id=project["id"],
119
+ vector=[0.15, 0.25, 0.35],
120
+ top_k=5
121
+ )
122
+
123
+ # Create memory
124
+ memory = client.zerodb.memory.create(
125
+ content="Important information to remember",
126
+ tags=["tutorial", "example"]
127
+ )
128
+ ```
129
+
130
+ ## Authentication
131
+
132
+ ### Using Environment Variables
133
+
134
+ ```bash
135
+ export AINATIVE_API_KEY="your-api-key"
136
+ export AINATIVE_API_SECRET="your-api-secret" # Optional
137
+ export AINATIVE_ORG_ID="your-org-id" # For multi-tenant scenarios
138
+ ```
139
+
140
+ ```python
141
+ from ainative import AINativeClient
142
+
143
+ # Automatically uses environment variables
144
+ client = AINativeClient()
145
+ ```
146
+
147
+ ### Direct Configuration
148
+
149
+ ```python
150
+ from ainative import AINativeClient, AuthConfig
151
+
152
+ auth_config = AuthConfig(
153
+ api_key="your-api-key",
154
+ api_secret="your-api-secret", # Optional for enhanced security
155
+ environment="production" # or "staging", "development"
156
+ )
157
+
158
+ client = AINativeClient(auth_config=auth_config)
159
+ ```
160
+
161
+ ## ZeroDB Operations
162
+
163
+ ### Project Management
164
+
165
+ ```python
166
+ # List all projects
167
+ projects = client.zerodb.projects.list(limit=10)
168
+
169
+ # Get project details
170
+ project = client.zerodb.projects.get(project_id="proj_123")
171
+
172
+ # Update project
173
+ client.zerodb.projects.update(
174
+ project_id="proj_123",
175
+ name="Updated Name",
176
+ metadata={"version": "2.0"}
177
+ )
178
+
179
+ # Suspend/Activate project
180
+ client.zerodb.projects.suspend(project_id="proj_123", reason="Maintenance")
181
+ client.zerodb.projects.activate(project_id="proj_123")
182
+ ```
183
+
184
+ ### Vector Operations
185
+
186
+ ```python
187
+ import numpy as np
188
+
189
+ # Upsert vectors with numpy arrays
190
+ vectors = np.random.rand(10, 768) # 10 vectors of dimension 768
191
+ metadata = [{"doc_id": i, "category": "test"} for i in range(10)]
192
+
193
+ client.zerodb.vectors.upsert(
194
+ project_id="proj_123",
195
+ vectors=vectors,
196
+ metadata=metadata,
197
+ namespace="documents"
198
+ )
199
+
200
+ # Search vectors
201
+ query_vector = np.random.rand(768)
202
+ results = client.zerodb.vectors.search(
203
+ project_id="proj_123",
204
+ vector=query_vector,
205
+ top_k=5,
206
+ namespace="documents",
207
+ filter={"category": "test"}
208
+ )
209
+
210
+ # Delete vectors
211
+ client.zerodb.vectors.delete(
212
+ project_id="proj_123",
213
+ ids=["vec_1", "vec_2"],
214
+ namespace="documents"
215
+ )
216
+ ```
217
+
218
+ ### NoSQL Table Operations
219
+
220
+ ```python
221
+ # Create a table with schema
222
+ table = client.zerodb.tables.create_table(
223
+ table_name="users",
224
+ schema={
225
+ "fields": {
226
+ "email": "string",
227
+ "name": "string",
228
+ "age": "number",
229
+ "active": "boolean"
230
+ },
231
+ "indexes": ["email"]
232
+ }
233
+ )
234
+
235
+ # Insert rows
236
+ result = client.zerodb.tables.insert_rows("users", [
237
+ {"email": "user@example.com", "name": "John", "age": 30, "active": True},
238
+ {"email": "jane@example.com", "name": "Jane", "age": 25, "active": True}
239
+ ])
240
+
241
+ # Query rows with filters
242
+ users = client.zerodb.tables.query_rows(
243
+ "users",
244
+ filter={"age": {"$gte": 25}, "active": True},
245
+ sort={"age": -1},
246
+ limit=10
247
+ )
248
+
249
+ # Update rows
250
+ client.zerodb.tables.update_rows(
251
+ "users",
252
+ filter={"email": "user@example.com"},
253
+ update={"$set": {"age": 31}}
254
+ )
255
+
256
+ # Delete rows
257
+ client.zerodb.tables.delete_rows(
258
+ "users",
259
+ filter={"age": {"$lt": 18}}
260
+ )
261
+
262
+ # Count rows
263
+ total = client.zerodb.tables.count_rows("users")
264
+ active_users = client.zerodb.tables.count_rows("users", filter={"active": True})
265
+ ```
266
+
267
+ See the complete [Table Operations Guide](TABLE_OPERATIONS.md) for advanced usage.
268
+
269
+ ### Memory Management
270
+
271
+ ```python
272
+ from ainative.zerodb.memory import MemoryPriority
273
+
274
+ # Create memory with priority
275
+ memory = client.zerodb.memory.create(
276
+ content="Critical system configuration",
277
+ title="System Config",
278
+ tags=["config", "system"],
279
+ priority=MemoryPriority.HIGH,
280
+ metadata={"version": "1.0"}
281
+ )
282
+
283
+ # Search memories
284
+ results = client.zerodb.memory.search(
285
+ query="system configuration",
286
+ semantic=True, # Use semantic search
287
+ limit=10
288
+ )
289
+
290
+ # List memories with filters
291
+ memories = client.zerodb.memory.list(
292
+ tags=["config"],
293
+ priority=MemoryPriority.HIGH
294
+ )
295
+
296
+ # Get related memories
297
+ related = client.zerodb.memory.get_related(
298
+ memory_id=memory["id"],
299
+ limit=5
300
+ )
301
+ ```
302
+
303
+ ## Agent Swarm
304
+
305
+ ### Starting a Swarm
306
+
307
+ ```python
308
+ from ainative.agent_swarm import AgentType
309
+
310
+ # Define agents
311
+ agents = [
312
+ {
313
+ "id": "researcher_1",
314
+ "type": AgentType.RESEARCHER.value,
315
+ "capabilities": ["web_search", "document_analysis"]
316
+ },
317
+ {
318
+ "id": "coder_1",
319
+ "type": AgentType.CODER.value,
320
+ "capabilities": ["python", "javascript", "testing"]
321
+ }
322
+ ]
323
+
324
+ # Start swarm
325
+ swarm = client.agent_swarm.start_swarm(
326
+ project_id="proj_123",
327
+ agents=agents,
328
+ objective="Research and implement a new feature"
329
+ )
330
+
331
+ # Orchestrate task
332
+ result = client.agent_swarm.orchestrate(
333
+ swarm_id=swarm["id"],
334
+ task="Find best practices for implementing OAuth2",
335
+ context={"language": "Python", "framework": "FastAPI"}
336
+ )
337
+ ```
338
+
339
+ ### Managing Swarms
340
+
341
+ ```python
342
+ # Get swarm status
343
+ status = client.agent_swarm.get_status(swarm_id="swarm_123")
344
+
345
+ # Get performance metrics
346
+ metrics = client.agent_swarm.get_metrics(swarm_id="swarm_123")
347
+
348
+ # Configure specific agent
349
+ client.agent_swarm.configure_agent(
350
+ swarm_id="swarm_123",
351
+ agent_id="coder_1",
352
+ config={"temperature": 0.7, "max_tokens": 2000}
353
+ )
354
+
355
+ # Pause/Resume swarm
356
+ client.agent_swarm.pause_swarm(swarm_id="swarm_123")
357
+ client.agent_swarm.resume_swarm(swarm_id="swarm_123")
358
+
359
+ # Stop swarm
360
+ client.agent_swarm.stop_swarm(swarm_id="swarm_123")
361
+ ```
362
+
363
+ ## Analytics
364
+
365
+ ```python
366
+ from datetime import datetime, timedelta
367
+
368
+ # Get usage analytics
369
+ usage = client.zerodb.analytics.get_usage(
370
+ project_id="proj_123",
371
+ start_date=datetime.now() - timedelta(days=30),
372
+ end_date=datetime.now(),
373
+ granularity="daily"
374
+ )
375
+
376
+ # Get performance metrics
377
+ performance = client.zerodb.analytics.get_performance_metrics(
378
+ project_id="proj_123",
379
+ metric_type="latency"
380
+ )
381
+
382
+ # Get cost analysis
383
+ costs = client.zerodb.analytics.get_cost_analysis(
384
+ project_id="proj_123"
385
+ )
386
+
387
+ # Export analytics report
388
+ report = client.zerodb.analytics.export_report(
389
+ report_type="detailed",
390
+ project_id="proj_123",
391
+ format="pdf"
392
+ )
393
+ ```
394
+
395
+ ## Async Support
396
+
397
+ ```python
398
+ import asyncio
399
+ from ainative import AsyncAINativeClient
400
+
401
+ async def main():
402
+ async with AsyncAINativeClient(api_key="your-api-key") as client:
403
+ # Async operations
404
+ project = await client.zerodb.projects.create(
405
+ name="Async Project"
406
+ )
407
+
408
+ # Concurrent operations
409
+ tasks = [
410
+ client.zerodb.vectors.search(project_id, vector)
411
+ for vector in vectors
412
+ ]
413
+ results = await asyncio.gather(*tasks)
414
+
415
+ asyncio.run(main())
416
+ ```
417
+
418
+ ## Error Handling
419
+
420
+ ```python
421
+ from ainative.exceptions import (
422
+ AuthenticationError,
423
+ RateLimitError,
424
+ ValidationError,
425
+ ResourceNotFoundError
426
+ )
427
+
428
+ try:
429
+ result = client.zerodb.projects.get("invalid_id")
430
+ except ResourceNotFoundError as e:
431
+ print(f"Project not found: {e.resource_id}")
432
+ except AuthenticationError:
433
+ print("Invalid API credentials")
434
+ except RateLimitError as e:
435
+ print(f"Rate limited. Retry after {e.retry_after} seconds")
436
+ except ValidationError as e:
437
+ print(f"Invalid input: {e.message}")
438
+ ```
439
+
440
+ ## Configuration
441
+
442
+ ### Custom Base URL
443
+
444
+ ```python
445
+ client = AINativeClient(
446
+ api_key="your-api-key",
447
+ base_url="https://custom.ainative.studio"
448
+ )
449
+ ```
450
+
451
+ ### Timeout and Retries
452
+
453
+ ```python
454
+ from ainative.client import ClientConfig
455
+
456
+ config = ClientConfig(
457
+ timeout=60, # 60 seconds
458
+ max_retries=5,
459
+ retry_delay=2.0
460
+ )
461
+
462
+ client = AINativeClient(
463
+ api_key="your-api-key",
464
+ config=config
465
+ )
466
+ ```
467
+
468
+ ## CLI Tool
469
+
470
+ The SDK includes a CLI tool for quick operations:
471
+
472
+ ```bash
473
+ # Configure credentials
474
+ ainative config set api_key YOUR_API_KEY
475
+
476
+ # List projects
477
+ ainative projects list
478
+
479
+ # Create project
480
+ ainative projects create --name "CLI Project"
481
+
482
+ # Search vectors
483
+ ainative vectors search --project proj_123 --query "test"
484
+ ```
485
+
486
+ ## Examples
487
+
488
+ Full examples are available in the [examples/](examples/) directory:
489
+
490
+ - [Basic Usage](examples/basic_usage.py)
491
+ - [Vector Search](examples/vector_search.py)
492
+ - [Memory Management](examples/memory_management.py)
493
+ - [Agent Swarm](examples/agent_swarm.py)
494
+ - [Analytics Dashboard](examples/analytics.py)
495
+ - [Multi-tenant Setup](examples/multi_tenant.py)
496
+
497
+ ## Development
498
+
499
+ ### Setting up development environment
500
+
501
+ ```bash
502
+ # Clone repository
503
+ git clone https://github.com/ainative/ainative-python.git
504
+ cd ainative-python
505
+
506
+ # Install in development mode
507
+ pip install -e ".[dev]"
508
+
509
+ # Run tests
510
+ pytest
511
+
512
+ # Format code
513
+ black ainative/
514
+ isort ainative/
515
+
516
+ # Type checking
517
+ mypy ainative/
518
+ ```
519
+
520
+ ### Running Tests
521
+
522
+ ```bash
523
+ # All tests
524
+ pytest
525
+
526
+ # With coverage
527
+ pytest --cov=ainative
528
+
529
+ # Specific module
530
+ pytest tests/test_zerodb.py
531
+ ```
532
+
533
+ ## Support
534
+
535
+ - **Documentation**: [https://docs.ainative.studio/sdk/python](https://docs.ainative.studio/sdk/python)
536
+ - **API Reference**: [https://api.ainative.studio/docs-enhanced](https://api.ainative.studio/docs-enhanced)
537
+ - **Issues**: [GitHub Issues](https://github.com/ainative/ainative-python/issues)
538
+ - **Discord**: [Join our community](https://discord.gg/ainative)
539
+
540
+ ## License
541
+
542
+ MIT License - see [LICENSE](LICENSE) file for details.
543
+
544
+ ## Contributing
545
+
546
+ We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.
547
+
548
+ ## Changelog
549
+
550
+ See [CHANGELOG.md](CHANGELOG.md) for release history.
@@ -0,0 +1,35 @@
1
+ ainative/__init__.py,sha256=HZ60wi5-m6Lv9GjTkNETKEWahqnDm2npsJk9ROs6xrU,1122
2
+ ainative/agent_coordination.py,sha256=PGGfQV6C0BIECjJOU1YwU9iaUxbPNazJGAWxNsnJu6k,6557
3
+ ainative/agent_identity_system.py,sha256=PKlAjwH2nnAbA6m8k2gFAVlCN399aPnqjejthnw7y_c,61331
4
+ ainative/agent_learning.py,sha256=-_gWl-tqfjRPWFqYG6hYR-dTMucOJfBGyuems-JnBsE,6258
5
+ ainative/agent_orchestration.py,sha256=Pvip-zN_ArhGEwX07w5uCcYQ0CKDsNfoMAl4UMHd3rM,5277
6
+ ainative/agent_state.py,sha256=SWrX6evhElWq2n9yFKk9dAMsVwQBS24FjQOgxkT0Vnc,5649
7
+ ainative/auth.py,sha256=GjTOzCim-d_eNxegd4bU1lounvs2AmJs4Hpg59X1cmo,3646
8
+ ainative/cli.py,sha256=TclB5StZtNME1on8M9PwcU38vI1uTs7xuWi4X44CrR8,20154
9
+ ainative/client.py,sha256=_vIcCoSmkTUEmyJe87cXPN_3dP0D7O9LAUrf0zpiwn0,9422
10
+ ainative/exceptions.py,sha256=AUkBQqN_dRF6PGKEkYGUP_g4thVqjWctLy1aNCBDX10,2522
11
+ ainative/agent_swarm/__init__.py,sha256=viHLy5nrRYe6it5CZG09QwsFcK24DEBDqnYutlIm_KY,13147
12
+ ainative/cli_utils/__init__.py,sha256=jUq-9B6vQ0KEJ4Ty4hWRC5Neet3Pz3xe4FdljXSwbJ4,214
13
+ ainative/cli_utils/diff.py,sha256=_OG2f6p7AHybhlc-MEfMh6BcP-I94oQk_en1qnl1TUw,10316
14
+ ainative/cli_utils/formatters.py,sha256=ka2DRi1sRIu9u8K4dDo0ICAN1HI4SAIYHm7Dq9sHcAQ,8100
15
+ ainative/commands/__init__.py,sha256=k-2Xx3yRmVkT8xTz29OZ1qN7rCDl8c6Yr7kw63Bjew8,582
16
+ ainative/commands/agents.py,sha256=OPvUHIXDBRTAwrpxWcMVunAP0lUUgC3OasqYIgSpIkk,7907
17
+ ainative/commands/coordination.py,sha256=1ELqb2D0O9zZ0GNuRO_gvUfQa84YSYYhK1DvjLk3pVg,3256
18
+ ainative/commands/inspect.py,sha256=gz7-PJCO5mzZ0rPYGNLE-2wSadrfqLltMphs_tuDRk4,16846
19
+ ainative/commands/learning.py,sha256=PWHgv7niKzqZLV8zw7hQcZh0sEV52OW2AQC_SOaebwc,3659
20
+ ainative/commands/local.py,sha256=nLMsjY3Bsy_VspotUeiQOGvh8YJ2FrOyl-fNml3oXzc,17489
21
+ ainative/commands/state.py,sha256=F8rNELeCRJN8ni4CzvjZpjZKVJfyft0hBSvrPqfPQ3E,4406
22
+ ainative/commands/swarm.py,sha256=0x98mj0hFUJyTNExEFiz09BcDHzqWUGoGMwaIc0jkFc,5597
23
+ ainative/commands/sync.py,sha256=fVTQToiJdhBjC-6HIH_c5ouYP0IiTlp85-MKiJSD14s,4084
24
+ ainative/commands/tasks.py,sha256=-xkURYK2bRwndxN9AupmQWMroqLN2mCitJ-Q1vq62bA,5926
25
+ ainative/zerodb/__init__.py,sha256=LaIU0PDN7epgjEOfJMFKQI6L5aJPipzVwJG3MR14NXA,2531
26
+ ainative/zerodb/analytics.py,sha256=dcxUY19_-o_SNWFHr6oxOub7g4JdWaORDGkNuQVX3XQ,6623
27
+ ainative/zerodb/memory.py,sha256=-cbqSCU53DBRgbbgpz72nStnqqh0m0xT5N7KgAERff0,7202
28
+ ainative/zerodb/projects.py,sha256=663LD_gCXnlGX0sZsUg-kBy5j9tpOmCbyo4wBT1U__Y,6021
29
+ ainative/zerodb/tables.py,sha256=5y6Pd0pR_8aYpE1rZnyOKb56xdytizlteYWJlzWW3EA,10198
30
+ ainative/zerodb/vectors.py,sha256=kiaa39bNMqUMmJDaPOG2tT_y3O2t7uEnxfTTn3KrlU0,6497
31
+ ainative_python-2.0.0.dist-info/METADATA,sha256=DUcBbgC5nTPPl9XAju8gl9mTAr5bBA74lQBMsmMs2yo,13362
32
+ ainative_python-2.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
33
+ ainative_python-2.0.0.dist-info/entry_points.txt,sha256=IMzkHrb-9Xmehjqb99G4j5avDvvD0acsKvDjLByiKLo,47
34
+ ainative_python-2.0.0.dist-info/top_level.txt,sha256=ykLnDIPJjvN3FV9QlyqCePGbglJvhZPft1xprQ0uo9A,9
35
+ ainative_python-2.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ ainative = ainative.cli:main
@@ -0,0 +1 @@
1
+ ainative