anysite-cli 0.1.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.

Potentially problematic release.


This version of anysite-cli might be problematic. Click here for more details.

Files changed (64) hide show
  1. anysite/__init__.py +4 -0
  2. anysite/__main__.py +6 -0
  3. anysite/api/__init__.py +21 -0
  4. anysite/api/client.py +271 -0
  5. anysite/api/errors.py +137 -0
  6. anysite/api/schemas.py +333 -0
  7. anysite/batch/__init__.py +1 -0
  8. anysite/batch/executor.py +176 -0
  9. anysite/batch/input.py +160 -0
  10. anysite/batch/rate_limiter.py +98 -0
  11. anysite/cli/__init__.py +1 -0
  12. anysite/cli/config.py +176 -0
  13. anysite/cli/executor.py +388 -0
  14. anysite/cli/options.py +249 -0
  15. anysite/config/__init__.py +11 -0
  16. anysite/config/paths.py +46 -0
  17. anysite/config/settings.py +187 -0
  18. anysite/dataset/__init__.py +37 -0
  19. anysite/dataset/analyzer.py +268 -0
  20. anysite/dataset/cli.py +644 -0
  21. anysite/dataset/collector.py +686 -0
  22. anysite/dataset/db_loader.py +248 -0
  23. anysite/dataset/errors.py +30 -0
  24. anysite/dataset/exporters.py +121 -0
  25. anysite/dataset/history.py +153 -0
  26. anysite/dataset/models.py +245 -0
  27. anysite/dataset/notifications.py +87 -0
  28. anysite/dataset/scheduler.py +107 -0
  29. anysite/dataset/storage.py +171 -0
  30. anysite/dataset/transformer.py +213 -0
  31. anysite/db/__init__.py +38 -0
  32. anysite/db/adapters/__init__.py +1 -0
  33. anysite/db/adapters/base.py +158 -0
  34. anysite/db/adapters/postgres.py +201 -0
  35. anysite/db/adapters/sqlite.py +183 -0
  36. anysite/db/cli.py +687 -0
  37. anysite/db/config.py +92 -0
  38. anysite/db/manager.py +166 -0
  39. anysite/db/operations/__init__.py +1 -0
  40. anysite/db/operations/insert.py +199 -0
  41. anysite/db/operations/query.py +43 -0
  42. anysite/db/schema/__init__.py +1 -0
  43. anysite/db/schema/inference.py +213 -0
  44. anysite/db/schema/types.py +71 -0
  45. anysite/db/utils/__init__.py +1 -0
  46. anysite/db/utils/sanitize.py +99 -0
  47. anysite/main.py +498 -0
  48. anysite/models/__init__.py +1 -0
  49. anysite/output/__init__.py +11 -0
  50. anysite/output/console.py +45 -0
  51. anysite/output/formatters.py +301 -0
  52. anysite/output/templates.py +76 -0
  53. anysite/py.typed +0 -0
  54. anysite/streaming/__init__.py +1 -0
  55. anysite/streaming/progress.py +121 -0
  56. anysite/streaming/writer.py +130 -0
  57. anysite/utils/__init__.py +1 -0
  58. anysite/utils/fields.py +242 -0
  59. anysite/utils/retry.py +109 -0
  60. anysite_cli-0.1.0.dist-info/METADATA +437 -0
  61. anysite_cli-0.1.0.dist-info/RECORD +64 -0
  62. anysite_cli-0.1.0.dist-info/WHEEL +4 -0
  63. anysite_cli-0.1.0.dist-info/entry_points.txt +2 -0
  64. anysite_cli-0.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,437 @@
1
+ Metadata-Version: 2.4
2
+ Name: anysite-cli
3
+ Version: 0.1.0
4
+ Summary: CLI for Anysite API - web data extraction for humans and AI agents
5
+ Project-URL: Homepage, https://anysite.io
6
+ Project-URL: Documentation, https://docs.anysite.io/cli
7
+ Project-URL: Repository, https://github.com/anysiteio/anysite-cli
8
+ Project-URL: Issues, https://github.com/anysiteio/anysite-cli/issues
9
+ Author-email: Anysite Team <support@anysite.io>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: api,cli,instagram,linkedin,scraping,twitter
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Programming Language :: Python :: 3.14
23
+ Classifier: Topic :: Internet :: WWW/HTTP
24
+ Classifier: Topic :: Software Development :: Libraries
25
+ Classifier: Topic :: Utilities
26
+ Requires-Python: >=3.11
27
+ Requires-Dist: httpx>=0.25.0
28
+ Requires-Dist: orjson>=3.9.0
29
+ Requires-Dist: pydantic-settings>=2.0.0
30
+ Requires-Dist: pydantic>=2.0.0
31
+ Requires-Dist: python-dotenv>=1.0.0
32
+ Requires-Dist: pyyaml>=6.0.0
33
+ Requires-Dist: rich>=13.0.0
34
+ Requires-Dist: tabulate>=0.9.0
35
+ Requires-Dist: typer[all]>=0.9.0
36
+ Provides-Extra: data
37
+ Requires-Dist: duckdb>=1.0.0; extra == 'data'
38
+ Requires-Dist: httpx>=0.25.0; extra == 'data'
39
+ Requires-Dist: pyarrow>=15.0.0; extra == 'data'
40
+ Provides-Extra: db
41
+ Requires-Dist: psycopg[binary]>=3.1.0; extra == 'db'
42
+ Requires-Dist: pymysql>=1.1.0; extra == 'db'
43
+ Provides-Extra: dev
44
+ Requires-Dist: mypy>=1.5.0; extra == 'dev'
45
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
46
+ Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
47
+ Requires-Dist: pytest>=7.4.0; extra == 'dev'
48
+ Requires-Dist: respx>=0.20.0; extra == 'dev'
49
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
50
+ Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
51
+ Requires-Dist: types-tabulate>=0.9.0; extra == 'dev'
52
+ Provides-Extra: mysql
53
+ Requires-Dist: pymysql>=1.1.0; extra == 'mysql'
54
+ Provides-Extra: postgres
55
+ Requires-Dist: psycopg[binary]>=3.1.0; extra == 'postgres'
56
+ Description-Content-Type: text/markdown
57
+
58
+ # Anysite CLI
59
+
60
+ Web data extraction for humans and AI agents.
61
+
62
+ ## Installation
63
+
64
+ ```bash
65
+ pip install anysite-cli
66
+ ```
67
+
68
+ Or install from source:
69
+
70
+ ```bash
71
+ git clone https://github.com/anysiteio/anysite-cli.git
72
+ cd anysite-cli
73
+ pip install -e .
74
+ ```
75
+
76
+ ## Quick Start
77
+
78
+ ### 1. Configure your API key
79
+
80
+ ```bash
81
+ anysite config set api_key sk-xxxxx
82
+ ```
83
+
84
+ Or set environment variable:
85
+
86
+ ```bash
87
+ export ANYSITE_API_KEY=sk-xxxxx
88
+ ```
89
+
90
+ ### 2. Update the schema cache
91
+
92
+ ```bash
93
+ anysite schema update
94
+ ```
95
+
96
+ ### 3. Make your first request
97
+
98
+ ```bash
99
+ anysite api /api/linkedin/user user=satyanadella
100
+ ```
101
+
102
+ ## The `api` Command
103
+
104
+ A single universal command for calling any API endpoint:
105
+
106
+ ```bash
107
+ anysite api <endpoint> [key=value ...] [OPTIONS]
108
+ ```
109
+
110
+ Parameters are passed as `key=value` pairs. Types are auto-converted using the schema cache.
111
+
112
+ ```bash
113
+ # LinkedIn
114
+ anysite api /api/linkedin/user user=satyanadella
115
+ anysite api /api/linkedin/company company=anthropic
116
+ anysite api /api/linkedin/search/users title=CTO count=50 --format csv
117
+
118
+ # Instagram
119
+ anysite api /api/instagram/user user=cristiano
120
+ anysite api /api/instagram/user/posts user=nike count=20
121
+
122
+ # Twitter/X
123
+ anysite api /api/twitter/user user=elonmusk --format table
124
+
125
+ # Web parsing
126
+ anysite api /api/web/parse url=https://example.com
127
+
128
+ # Y Combinator
129
+ anysite api /api/yc/company company=anthropic
130
+ ```
131
+
132
+ ## Endpoint Discovery
133
+
134
+ Browse and search all available API endpoints:
135
+
136
+ ```bash
137
+ # List all endpoints
138
+ anysite describe
139
+
140
+ # Describe a specific endpoint (input params + output fields)
141
+ anysite describe /api/linkedin/company
142
+ anysite describe linkedin.user
143
+
144
+ # Search by keyword
145
+ anysite describe --search "company"
146
+
147
+ # JSON output for scripts/agents
148
+ anysite describe --json -q
149
+ ```
150
+
151
+ ## Output Formats
152
+
153
+ ```bash
154
+ --format json # Default: Pretty JSON
155
+ --format jsonl # Newline-delimited JSON (for streaming)
156
+ --format csv # CSV with headers
157
+ --format table # Rich table for terminal
158
+ ```
159
+
160
+ ## Field Selection
161
+
162
+ ```bash
163
+ # Include specific fields (dot notation and wildcards supported)
164
+ anysite api /api/linkedin/user user=satyanadella --fields "name,headline,follower_count"
165
+
166
+ # Exclude fields
167
+ anysite api /api/linkedin/user user=satyanadella --exclude "certifications,recommendations"
168
+
169
+ # Compact JSON
170
+ anysite api /api/linkedin/user user=satyanadella --compact
171
+ ```
172
+
173
+ Built-in field presets: `minimal`, `contact`, `recruiting`.
174
+
175
+ ## Save to File
176
+
177
+ ```bash
178
+ anysite api /api/linkedin/search/users title=CTO count=100 --output ctos.json
179
+ anysite api /api/linkedin/search/users title=CTO count=100 --output ctos.csv --format csv
180
+ ```
181
+
182
+ ## Pipe to jq
183
+
184
+ ```bash
185
+ anysite api /api/linkedin/user user=satyanadella -q | jq '.follower_count'
186
+ ```
187
+
188
+ ## Batch Processing
189
+
190
+ Process multiple inputs from a file or stdin:
191
+
192
+ ```bash
193
+ # From a text file (one value per line)
194
+ anysite api /api/linkedin/user --from-file users.txt --input-key user
195
+
196
+ # From JSONL (one JSON object per line)
197
+ anysite api /api/linkedin/user --from-file users.jsonl
198
+
199
+ # From stdin
200
+ cat users.txt | anysite api /api/linkedin/user --stdin --input-key user
201
+
202
+ # Parallel execution
203
+ anysite api /api/linkedin/user --from-file users.txt --input-key user --parallel 5
204
+
205
+ # Rate limiting
206
+ anysite api /api/linkedin/user --from-file users.txt --input-key user --rate-limit "10/s"
207
+
208
+ # Error handling
209
+ anysite api /api/linkedin/user --from-file users.txt --input-key user --on-error skip
210
+
211
+ # Progress bar and stats
212
+ anysite api /api/linkedin/user --from-file users.txt --input-key user --progress --stats
213
+ ```
214
+
215
+ Input file formats: plain text (one value per line), JSONL, CSV.
216
+
217
+ ## Dataset Pipelines
218
+
219
+ Collect multi-source datasets with dependency chains, store as Parquet, query with DuckDB, and load into a relational database. Includes per-source transforms, file/webhook exports, run history, scheduling, and webhook notifications.
220
+
221
+ ### Create a dataset
222
+
223
+ ```bash
224
+ anysite dataset init my-dataset
225
+ ```
226
+
227
+ Edit `my-dataset/dataset.yaml` to define sources:
228
+
229
+ ```yaml
230
+ name: my-dataset
231
+ sources:
232
+ - id: companies
233
+ endpoint: /api/linkedin/company
234
+ from_file: companies.txt
235
+ input_key: company
236
+ transform: # Post-collection transform (for exports)
237
+ filter: '.employee_count > 10'
238
+ fields: [name, url, employee_count]
239
+ add_columns:
240
+ batch: "q1-2026"
241
+ export: # Export to file/webhook after Parquet write
242
+ - type: file
243
+ path: ./output/companies-{{date}}.csv
244
+ format: csv
245
+ db_load:
246
+ fields: [name, url, employee_count]
247
+
248
+ - id: employees
249
+ endpoint: /api/linkedin/company/employees
250
+ dependency:
251
+ from_source: companies
252
+ field: urn.value
253
+ input_key: companies
254
+ input_template:
255
+ companies:
256
+ - type: company
257
+ value: "{value}"
258
+ count: 5
259
+ db_load:
260
+ fields: [name, url, headline]
261
+
262
+ storage:
263
+ format: parquet
264
+ path: ./data/
265
+
266
+ schedule:
267
+ cron: "0 9 * * *" # Daily at 9 AM
268
+
269
+ notifications:
270
+ on_complete:
271
+ - url: "https://hooks.slack.com/xxx"
272
+ on_failure:
273
+ - url: "https://alerts.example.com/fail"
274
+ ```
275
+
276
+ ### Collect, query, and load
277
+
278
+ ```bash
279
+ # Preview collection plan
280
+ anysite dataset collect dataset.yaml --dry-run
281
+
282
+ # Collect data (supports --incremental to skip already-collected inputs)
283
+ anysite dataset collect dataset.yaml
284
+
285
+ # Collect and auto-load into PostgreSQL
286
+ anysite dataset collect dataset.yaml --load-db pg
287
+
288
+ # Check status
289
+ anysite dataset status dataset.yaml
290
+
291
+ # Query with SQL (DuckDB)
292
+ anysite dataset query dataset.yaml --sql "SELECT * FROM companies LIMIT 10"
293
+
294
+ # Query with dot-notation field extraction
295
+ anysite dataset query dataset.yaml --source profiles --fields "name, urn.value AS urn_id"
296
+
297
+ # Interactive SQL shell
298
+ anysite dataset query dataset.yaml --interactive
299
+
300
+ # Column stats and data profiling
301
+ anysite dataset stats dataset.yaml --source companies
302
+ anysite dataset profile dataset.yaml
303
+
304
+ # Load into PostgreSQL with automatic FK linking
305
+ anysite dataset load-db dataset.yaml -c pg --drop-existing
306
+
307
+ # Run history and logs
308
+ anysite dataset history my-dataset
309
+ anysite dataset logs my-dataset --run 42
310
+
311
+ # Generate cron/systemd schedule
312
+ anysite dataset schedule dataset.yaml --incremental --load-db pg
313
+
314
+ # Reset incremental state
315
+ anysite dataset reset-cursor dataset.yaml
316
+ ```
317
+
318
+ ## Database
319
+
320
+ Manage database connections and run queries.
321
+
322
+ ```bash
323
+ # Add a connection
324
+ anysite db add pg
325
+
326
+ # List and test connections
327
+ anysite db list
328
+ anysite db test pg
329
+
330
+ # Query
331
+ anysite db query pg --sql "SELECT * FROM companies" --format table
332
+
333
+ # Insert data (auto-create table from schema inference)
334
+ cat data.jsonl | anysite db insert pg --table users --stdin --auto-create
335
+
336
+ # Upsert with conflict handling
337
+ cat updates.jsonl | anysite db upsert pg --table users --conflict-columns id --stdin
338
+
339
+ # Inspect schema
340
+ anysite db schema pg --table users
341
+ ```
342
+
343
+ Supports SQLite and PostgreSQL. Passwords stored as env var references.
344
+
345
+ ## Configuration
346
+
347
+ Configuration is stored in `~/.anysite/config.yaml`.
348
+
349
+ ```bash
350
+ # Set a value
351
+ anysite config set api_key sk-xxxxx
352
+ anysite config set defaults.format table
353
+
354
+ # Get a value
355
+ anysite config get api_key
356
+
357
+ # List all settings
358
+ anysite config list
359
+
360
+ # Show config file path
361
+ anysite config path
362
+
363
+ # Initialize interactively
364
+ anysite config init
365
+
366
+ # Reset to defaults
367
+ anysite config reset --force
368
+ ```
369
+
370
+ ### Configuration Priority
371
+
372
+ 1. CLI arguments (`--api-key`)
373
+ 2. Environment variables (`ANYSITE_API_KEY`)
374
+ 3. Config file (`~/.anysite/config.yaml`)
375
+ 4. Defaults
376
+
377
+ ## Global Options
378
+
379
+ ```bash
380
+ anysite [OPTIONS] COMMAND
381
+
382
+ Options:
383
+ --api-key TEXT API key (or set ANYSITE_API_KEY)
384
+ --base-url TEXT API base URL
385
+ --debug Enable debug output
386
+ --no-color Disable colored output
387
+ --version, -v Show version
388
+ --help Show help
389
+ ```
390
+
391
+ ## Claude Code Skill
392
+
393
+ Install the anysite-cli skill for Claude Code to get AI-assisted data collection:
394
+
395
+ ```bash
396
+ # Add marketplace
397
+ /plugin marketplace add https://github.com/anysiteio/agent-skills
398
+
399
+ # Install skill
400
+ /plugin install anysite-cli@anysite-skills
401
+ ```
402
+
403
+ The skill gives Claude Code knowledge of all anysite commands, dataset pipeline configuration, and database operations.
404
+
405
+ ## Development
406
+
407
+ ### Setup
408
+
409
+ ```bash
410
+ git clone https://github.com/anysiteio/anysite-cli.git
411
+ cd anysite-cli
412
+ python -m venv .venv
413
+ source .venv/bin/activate
414
+ pip install -e ".[dev]"
415
+
416
+ # With dataset + database support
417
+ pip install -e ".[dev,data]"
418
+ ```
419
+
420
+ ### Run Tests
421
+
422
+ ```bash
423
+ pytest
424
+ pytest --cov=anysite --cov-report=term-missing
425
+ ```
426
+
427
+ ### Linting
428
+
429
+ ```bash
430
+ ruff check src/
431
+ ruff format src/
432
+ mypy src/
433
+ ```
434
+
435
+ ## License
436
+
437
+ MIT
@@ -0,0 +1,64 @@
1
+ anysite/__init__.py,sha256=ItGZgmlGhc78lMia9zzkLrqD7q79bLQU-AbDlTh0ztY,114
2
+ anysite/__main__.py,sha256=bV_uwkbsAqegw5OcaKtqhGlQtbbrLqtQhPZRkwAe5TI,138
3
+ anysite/main.py,sha256=7-mlLVDXhZQTqEgkNGiEBecmdyqFa8ceXY-Xu3HT8Xs,15365
4
+ anysite/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ anysite/api/__init__.py,sha256=a6qGQ9tPaxFZhL2_2dls8odG7m87pOg9JoUTYUt8lyI,394
6
+ anysite/api/client.py,sha256=cyITTgO0rSsuRJROXQC2Q7LB8rVaLeSxGoY888BUZU0,8663
7
+ anysite/api/errors.py,sha256=IjVdCuW812NZ0vxFdFN0y8bDrtITU8kEvwb1fktXQIY,4382
8
+ anysite/api/schemas.py,sha256=4zhOkOTrvHDmYcifvNrcK3I05Dz-q_NfntGOooehVak,10135
9
+ anysite/batch/__init__.py,sha256=DRtia5dfYGsLPKwBUi6X_NgtJbDBKMr90qiOu3SEuSI,32
10
+ anysite/batch/executor.py,sha256=BbW4UWJpSefE3FcKSifsLfFflddsuq2uUj1ZxszLrHM,5891
11
+ anysite/batch/input.py,sha256=zvKhUAljPQzT_hRR4qChTKLER3tUfXpIiMlwrk0su-s,4751
12
+ anysite/batch/rate_limiter.py,sha256=hZvX8l0HD7PGJiaK2rCzXiphm9ZmVYWzkrqokNC1ua4,3008
13
+ anysite/cli/__init__.py,sha256=gQ6tnU0Rvm0-ESWFUBU-KDl5dpNOpUTG509hXOQQjwY,27
14
+ anysite/cli/config.py,sha256=AL7e_cFzzjcgm-nHA4GS4ZlDKa6LW_Qbn1cdomI5Xi0,4746
15
+ anysite/cli/executor.py,sha256=zA8j2-dxiSmicyINKhm5PbuAcX6q31rh8u__NqZiVBU,11892
16
+ anysite/cli/options.py,sha256=wZJXxfsispUR7WSSFDX3d0hRiZJbt5woAUl9U6XKxKM,4995
17
+ anysite/config/__init__.py,sha256=owepoMLgaR0bvfguZkwis7dEpY82XvvxciP3wWZkVfs,249
18
+ anysite/config/paths.py,sha256=EmHJD8wlf4Q9IUn8Gp1JQ8Z3ffrIYAt5iHRyImQOf5I,1087
19
+ anysite/config/settings.py,sha256=Hc0j_aCCtkJeL4nHw-EFyfJ8WEDk57G08iNUFquUhpM,5235
20
+ anysite/dataset/__init__.py,sha256=J0sKQkGwVOPtvp6pka7LcdeUEADvjWRs71yRuROzJxI,847
21
+ anysite/dataset/analyzer.py,sha256=8dsPW32SbSaUTy1F0NIed1U45wjiMgQeJ2iWX7hBxRQ,9245
22
+ anysite/dataset/cli.py,sha256=elBpp7XEmMcWBdyjkeDOi1730bCxVM77D0aVcmM9A0s,19423
23
+ anysite/dataset/collector.py,sha256=GGzkkvNETcdgeyIV_6YNthDY2SHtDhl-U8YsXeeOuFo,23350
24
+ anysite/dataset/db_loader.py,sha256=nlMJrDJiGBX5H1StcjsontSxLXbsFe4rwOEnDehzpk8,8443
25
+ anysite/dataset/errors.py,sha256=r8cZXoIzSeTGCWpeYjntnN0AduCu74YZyWs3sFu17J4,914
26
+ anysite/dataset/exporters.py,sha256=mA2FYbYJbHfrwkXbHDu4g5qPG_JJKnkVciXFKPkF1Vw,3708
27
+ anysite/dataset/history.py,sha256=avFs0ADlM7Hr-ttqC1FfjJiQxvQP20sScM7ZoY4lvU0,5471
28
+ anysite/dataset/models.py,sha256=YzpXmkmcyy_-BUxnYWrZMidpii75DbbZHBMTkw8Y1qo,9516
29
+ anysite/dataset/notifications.py,sha256=ORzo9XOgOxzLb7rk4pevlKPB_Taf-jejlrtmO4Zgl2c,2367
30
+ anysite/dataset/scheduler.py,sha256=zpbA5tRUQZXr-9lZnG58dvE3E7ZBlAd-U-PTXExe9f0,3339
31
+ anysite/dataset/storage.py,sha256=d03goKLI5NWKJowHwCgGqQkcVTO1NctPxMu-Xu-tru4,5326
32
+ anysite/dataset/transformer.py,sha256=XBI4MiZ_F_IZdootV0GAePaM9-pUadIte7RABbjBipc,6843
33
+ anysite/db/__init__.py,sha256=xGGZHlMt5FUZjI6MAmf2VfyNLypOeXwrRL-gmuTsyl4,1117
34
+ anysite/db/cli.py,sha256=iaDXcAsQG5ycnpzZnVIg_f4z1xR5_elylNOxqyNwEw4,21273
35
+ anysite/db/config.py,sha256=kNm1AZi-ixtBH6PkfeeCTmOU1z0qA0NC8XtuJepAVx4,2915
36
+ anysite/db/manager.py,sha256=RfUzdtvzCGOPc2XUZI0J64p-bHfnFuh69R7Rh4aspt0,4883
37
+ anysite/db/adapters/__init__.py,sha256=eehE1LvO89_4z1lAxSNBKfflKQyZ-ml5NQypfkylJPU,25
38
+ anysite/db/adapters/base.py,sha256=Scdz92jKoOMrH6gbHJlVcqvTWdZHo-qHlh0Ag-pXryw,4399
39
+ anysite/db/adapters/postgres.py,sha256=f90ePeu-yRTDv13XnRoB8eHVSYczPS4Xi18StnyPuK8,7370
40
+ anysite/db/adapters/sqlite.py,sha256=wCvT_RxNTdqbP158wlTRR09JnioBNBuFuep9KJFgu20,6504
41
+ anysite/db/operations/__init__.py,sha256=Egb5cdNI1EG1gSEbZoLoWyrr-hfv6OTfze6iErN1HsI,27
42
+ anysite/db/operations/insert.py,sha256=pvFJfg_3Jd3HfHM3yf9BUIN5aP554R-MTJzOk4p-jsI,6002
43
+ anysite/db/operations/query.py,sha256=fIDiMwARcqnsNals2Rx-uVlfgG7-GiBo-Z5h_s8EsQo,970
44
+ anysite/db/schema/__init__.py,sha256=2DWhJvBirm6Ja0fpNNJ2PgT8hPD3GiyAwh2ZSSPEjDs,44
45
+ anysite/db/schema/inference.py,sha256=EbMDvql1J3AEmiQ02Ggeot9u14plOaPWWyIVkPU3yQ8,5547
46
+ anysite/db/schema/types.py,sha256=GM6ZPwGQsIAXjJ0T58udaPpmopbBWDK9dTJqYtt_2K8,1726
47
+ anysite/db/utils/__init__.py,sha256=Hx37C9Fh5Ll9liyhulensC9gFCPRUtdMa10evkHDmdE,34
48
+ anysite/db/utils/sanitize.py,sha256=1vZotDpyHHL6QYs-j4c2EwyjxoiIW7czUR2zJ1cbJQ4,3202
49
+ anysite/models/__init__.py,sha256=Olg44Lfn1NJZ590xdEv7rZrS47PxSUnCXo9pOnSJm1s,41
50
+ anysite/output/__init__.py,sha256=jZsE3KV3ba55Px2m2RKNyla0vq0mvoOaeEi3Wf9_Mjc,249
51
+ anysite/output/console.py,sha256=98ngpa7Uu2Eiud7bsDwj3Jc7WcLac5ASXyPt3N7Z18Q,952
52
+ anysite/output/formatters.py,sha256=L-JfRghMf-fBf81dPs12xlEPMv2uiVPnSVmg0_YvCE4,9033
53
+ anysite/output/templates.py,sha256=1VIgrGLie7707BsbspPZPs9osgbK83V1UJsKiWe-w4w,2402
54
+ anysite/streaming/__init__.py,sha256=C42tKqI7rGtTMNz1qU80mlUs13vYT7uBSB_h1OS0Yhc,32
55
+ anysite/streaming/progress.py,sha256=ZU-G1KXU9gaIgiGIem3_m8umqc0wTok0Vyc9sit8wFI,3302
56
+ anysite/streaming/writer.py,sha256=HfMsC4umUdJuNIAPK57YAxEGyTwUmy-zNrqFkwY6aew,4106
57
+ anysite/utils/__init__.py,sha256=7SnbxpxKENK-2ecUL5NfnZ9okGI7COKYw4WF46172HM,23
58
+ anysite/utils/fields.py,sha256=bSrHadzNmabL4qubqhXXZoWb_P8KA-3S7_FLVT8nGBc,7410
59
+ anysite/utils/retry.py,sha256=89TbXvavi5t22P2mTYCLAS6SSZoW65gQ0nnYNbYAF0M,2684
60
+ anysite_cli-0.1.0.dist-info/METADATA,sha256=HGFzj0aEg42JXiZ3eAlPAfVjealzYekSC3rNhO3fjQ8,10777
61
+ anysite_cli-0.1.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
62
+ anysite_cli-0.1.0.dist-info/entry_points.txt,sha256=FDPxNasy0fRRcOgJdZRVP7Qw01C3TwRa1OwPJiskNyg,45
63
+ anysite_cli-0.1.0.dist-info/licenses/LICENSE,sha256=gVAxkI23CFm4x4HV_fkQYw_bGq93mQmVZEwxNs-YTa4,1069
64
+ anysite_cli-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ anysite = anysite.main:app
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Anysite Team
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.