dompack 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.
dompack/__init__.py ADDED
@@ -0,0 +1,2 @@
1
+ __version__ = "0.1.0"
2
+ from .cli import main
dompack/bundles.py ADDED
@@ -0,0 +1,194 @@
1
+ # dompack bundle definitions (human/CLI reference)
2
+ # Keep in sync with pyproject.toml's extras.
3
+
4
+ EXTRAS = {}
5
+
6
+ # Databases (db / da)
7
+ db = [
8
+ "psycopg2-binary",
9
+ "pymysql",
10
+ "pymongo",
11
+ "motor",
12
+ "redis",
13
+ ]
14
+ EXTRAS["db"] = db
15
+ EXTRAS["da"] = db
16
+
17
+ # Data Science (ds)
18
+ ds = [
19
+ "numpy",
20
+ "pandas",
21
+ "matplotlib",
22
+ "scipy",
23
+ "statsmodels",
24
+ ]
25
+ EXTRAS["ds"] = ds
26
+
27
+ # Machine Learning (ml)
28
+ ml = [
29
+ "numpy",
30
+ "pandas",
31
+ "scikit-learn",
32
+ "joblib",
33
+ "matplotlib",
34
+ ]
35
+ EXTRAS["ml"] = ml
36
+
37
+ # Artificial Intelligence (ai)
38
+ ai = [
39
+ "transformers",
40
+ "sentencepiece",
41
+ "tokenizers",
42
+ ]
43
+ EXTRAS["ai"] = ai
44
+
45
+ # Deep Learning (dl)
46
+ dl = [
47
+ "torch",
48
+ "torchvision",
49
+ ]
50
+ EXTRAS["dl"] = dl
51
+
52
+ # Computer Vision (cv)
53
+ cv = [
54
+ "opencv-python",
55
+ "scikit-image",
56
+ "pillow",
57
+ ]
58
+ EXTRAS["cv"] = cv
59
+
60
+ # GUI (gui)
61
+ gui = [
62
+ "PyQt5",
63
+ "kivy",
64
+ "tkinter",
65
+ ]
66
+ EXTRAS["gui"] = gui
67
+
68
+ # Audio/Video (av)
69
+ av = [
70
+ "librosa",
71
+ "moviepy",
72
+ "ffmpeg-python",
73
+ ]
74
+ EXTRAS["av"] = av
75
+
76
+ # Web utilities (web)
77
+ web = [
78
+ "requests",
79
+ "httpx",
80
+ "beautifulsoup4",
81
+ "lxml",
82
+ ]
83
+ EXTRAS["web"] = web
84
+
85
+ # FastAPI (fa / fastapi)
86
+ fa = [
87
+ "fastapi",
88
+ "uvicorn[standard]",
89
+ "pydantic",
90
+ "python-dotenv",
91
+ "python-multipart",
92
+ "jinja2",
93
+ "sqlalchemy",
94
+ ]
95
+ EXTRAS["fa"] = fa
96
+ EXTRAS["fastapi"] = fa
97
+
98
+ # Flask (fl / flask)
99
+ fl = [
100
+ "Flask",
101
+ "Flask-CORS",
102
+ "Flask-RESTful",
103
+ "Flask-JWT-Extended",
104
+ "Flask-Migrate",
105
+ ]
106
+ EXTRAS["fl"] = fl
107
+ EXTRAS["flask"] = fl
108
+
109
+ # Django (dj / django)
110
+ dj = [
111
+ "Django",
112
+ "djangorestframework",
113
+ "django-cors-headers",
114
+ "django-environ",
115
+ "whitenoise",
116
+ ]
117
+ EXTRAS["dj"] = dj
118
+ EXTRAS["django"] = dj
119
+
120
+ # Networking (net)
121
+ net = [
122
+ "aiohttp",
123
+ "websockets",
124
+ "dnspython",
125
+ "paramiko",
126
+ ]
127
+ EXTRAS["net"] = net
128
+
129
+ # Security / Auth (security / sec / auth / cyber / cybersec)
130
+ security = [
131
+ "cryptography",
132
+ "PyJWT",
133
+ "passlib[bcrypt]",
134
+ "pycryptodome",
135
+ ]
136
+ EXTRAS["security"] = security
137
+ EXTRAS["sec"] = security
138
+ EXTRAS["auth"] = security
139
+ EXTRAS["cyber"] = security
140
+ EXTRAS["cybersec"] = security
141
+
142
+ # DevOps (devops)
143
+ devops = [
144
+ "docker",
145
+ "docker-compose",
146
+ "ansible",
147
+ ]
148
+ EXTRAS["devops"] = devops
149
+
150
+ # Testing & dev tools
151
+ testing = [
152
+ "pytest",
153
+ "pytest-cov",
154
+ "black",
155
+ "flake8",
156
+ "isort",
157
+ "mypy",
158
+ ]
159
+ EXTRAS["testing"] = testing
160
+
161
+ # File tools
162
+ file = [
163
+ "openpyxl",
164
+ "python-docx",
165
+ "pypdf2",
166
+ ]
167
+ EXTRAS["file"] = file
168
+
169
+ # Utilities
170
+ utils = [
171
+ "python-dotenv",
172
+ "loguru",
173
+ "rich",
174
+ ]
175
+ EXTRAS["utils"] = utils
176
+
177
+ # fullstack
178
+ fullstack = [
179
+ "fastapi",
180
+ "uvicorn[standard]",
181
+ "Django",
182
+ "Flask",
183
+ "SQLAlchemy",
184
+ "psycopg2-binary",
185
+ "pymysql",
186
+ "pymongo",
187
+ ]
188
+ EXTRAS["fullstack"] = fullstack
189
+
190
+ # curated all (final)
191
+ _all = []
192
+ for v in EXTRAS.values():
193
+ _all.extend(v)
194
+ EXTRAS["all"] = sorted(set(_all))
dompack/cli.py ADDED
@@ -0,0 +1,70 @@
1
+ import argparse
2
+ import subprocess
3
+ import sys
4
+ from importlib import metadata
5
+ from .bundles import EXTRAS
6
+
7
+ HELP = "dompack โ€” domain-based Python tech stack installer (CLI)"
8
+
9
+
10
+ def list_bundles():
11
+ print("Available dompack bundles:\n")
12
+ keys = sorted(EXTRAS.keys())
13
+ for name in keys:
14
+ print(f" - {name}: pip install dompack[{name}]")
15
+ print("\nTip: use short aliases like 'fa' for fastapi, 'fl' for flask, 'db' for databases.")
16
+
17
+
18
+ def show_version():
19
+ try:
20
+ print(metadata.version("dompack"))
21
+ except Exception:
22
+ from . import __version__
23
+ print(__version__)
24
+
25
+
26
+ def install_bundle(name):
27
+ if name not in EXTRAS:
28
+ print(f"Unknown bundle: {name}")
29
+ return 1
30
+
31
+ pkg = f"dompack[{name}]"
32
+ print(f"Running: pip install {pkg}")
33
+
34
+ # Use the current Python interpreter's pip
35
+ cmd = [sys.executable, "-m", "pip", "install", pkg]
36
+ return subprocess.call(cmd)
37
+
38
+
39
+ def main(argv=None):
40
+ parser = argparse.ArgumentParser(prog="dompack", description=HELP)
41
+ sub = parser.add_subparsers(dest="cmd")
42
+
43
+ sub.add_parser("list", help="List available bundles")
44
+
45
+ p_install = sub.add_parser("install", help="Install a bundle: dompack install <name>")
46
+ p_install.add_argument("bundle", help="Bundle name (eg: fa, fl, db, ml, all)")
47
+
48
+ parser.add_argument("--version", action="store_true", help="Show version")
49
+
50
+ args = parser.parse_args(argv)
51
+
52
+ if args.version:
53
+ show_version()
54
+ return
55
+
56
+ if args.cmd == "list":
57
+ list_bundles()
58
+ return
59
+
60
+ if args.cmd == "install":
61
+ return_code = install_bundle(args.bundle)
62
+ if return_code != 0:
63
+ print("pip returned non-zero exit code", return_code)
64
+ return
65
+
66
+ parser.print_help()
67
+
68
+
69
+ if __name__ == "__main__":
70
+ main()
@@ -0,0 +1,374 @@
1
+ Metadata-Version: 2.4
2
+ Name: dompack
3
+ Version: 0.1.0
4
+ Summary: Dompack โ€” curated domain-based Python tech stack installer
5
+ Author: Veeresh H
6
+ License: MIT License
7
+
8
+ Copyright (c) 2025
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: OS Independent
20
+ Requires-Python: >=3.8
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ Provides-Extra: db
24
+ Requires-Dist: psycopg2-binary; extra == "db"
25
+ Requires-Dist: pymysql; extra == "db"
26
+ Requires-Dist: pymongo; extra == "db"
27
+ Requires-Dist: motor; extra == "db"
28
+ Requires-Dist: redis; extra == "db"
29
+ Provides-Extra: da
30
+ Requires-Dist: psycopg2-binary; extra == "da"
31
+ Requires-Dist: pymysql; extra == "da"
32
+ Requires-Dist: pymongo; extra == "da"
33
+ Requires-Dist: motor; extra == "da"
34
+ Requires-Dist: redis; extra == "da"
35
+ Provides-Extra: ds
36
+ Requires-Dist: numpy; extra == "ds"
37
+ Requires-Dist: pandas; extra == "ds"
38
+ Requires-Dist: matplotlib; extra == "ds"
39
+ Requires-Dist: scipy; extra == "ds"
40
+ Requires-Dist: statsmodels; extra == "ds"
41
+ Provides-Extra: ml
42
+ Requires-Dist: numpy; extra == "ml"
43
+ Requires-Dist: pandas; extra == "ml"
44
+ Requires-Dist: scikit-learn; extra == "ml"
45
+ Requires-Dist: joblib; extra == "ml"
46
+ Requires-Dist: matplotlib; extra == "ml"
47
+ Provides-Extra: ai
48
+ Requires-Dist: transformers; extra == "ai"
49
+ Requires-Dist: sentencepiece; extra == "ai"
50
+ Requires-Dist: tokenizers; extra == "ai"
51
+ Provides-Extra: dl
52
+ Requires-Dist: torch; extra == "dl"
53
+ Requires-Dist: torchvision; extra == "dl"
54
+ Provides-Extra: cv
55
+ Requires-Dist: opencv-python; extra == "cv"
56
+ Requires-Dist: scikit-image; extra == "cv"
57
+ Requires-Dist: pillow; extra == "cv"
58
+ Provides-Extra: gui
59
+ Requires-Dist: PyQt5; extra == "gui"
60
+ Requires-Dist: kivy; extra == "gui"
61
+ Provides-Extra: av
62
+ Requires-Dist: librosa; extra == "av"
63
+ Requires-Dist: moviepy; extra == "av"
64
+ Requires-Dist: ffmpeg-python; extra == "av"
65
+ Provides-Extra: web
66
+ Requires-Dist: requests; extra == "web"
67
+ Requires-Dist: httpx; extra == "web"
68
+ Requires-Dist: beautifulsoup4; extra == "web"
69
+ Requires-Dist: lxml; extra == "web"
70
+ Provides-Extra: fa
71
+ Requires-Dist: fastapi; extra == "fa"
72
+ Requires-Dist: uvicorn[standard]; extra == "fa"
73
+ Requires-Dist: pydantic; extra == "fa"
74
+ Requires-Dist: python-dotenv; extra == "fa"
75
+ Requires-Dist: python-multipart; extra == "fa"
76
+ Requires-Dist: jinja2; extra == "fa"
77
+ Requires-Dist: sqlalchemy; extra == "fa"
78
+ Provides-Extra: fastapi
79
+ Requires-Dist: fastapi; extra == "fastapi"
80
+ Requires-Dist: uvicorn[standard]; extra == "fastapi"
81
+ Requires-Dist: pydantic; extra == "fastapi"
82
+ Requires-Dist: python-dotenv; extra == "fastapi"
83
+ Requires-Dist: python-multipart; extra == "fastapi"
84
+ Requires-Dist: jinja2; extra == "fastapi"
85
+ Requires-Dist: sqlalchemy; extra == "fastapi"
86
+ Provides-Extra: fl
87
+ Requires-Dist: Flask; extra == "fl"
88
+ Requires-Dist: Flask-CORS; extra == "fl"
89
+ Requires-Dist: Flask-RESTful; extra == "fl"
90
+ Requires-Dist: Flask-JWT-Extended; extra == "fl"
91
+ Requires-Dist: Flask-Migrate; extra == "fl"
92
+ Provides-Extra: flask
93
+ Requires-Dist: Flask; extra == "flask"
94
+ Requires-Dist: Flask-CORS; extra == "flask"
95
+ Requires-Dist: Flask-RESTful; extra == "flask"
96
+ Requires-Dist: Flask-JWT-Extended; extra == "flask"
97
+ Requires-Dist: Flask-Migrate; extra == "flask"
98
+ Provides-Extra: dj
99
+ Requires-Dist: Django; extra == "dj"
100
+ Requires-Dist: djangorestframework; extra == "dj"
101
+ Requires-Dist: django-cors-headers; extra == "dj"
102
+ Requires-Dist: django-environ; extra == "dj"
103
+ Requires-Dist: whitenoise; extra == "dj"
104
+ Provides-Extra: django
105
+ Requires-Dist: Django; extra == "django"
106
+ Requires-Dist: djangorestframework; extra == "django"
107
+ Requires-Dist: django-cors-headers; extra == "django"
108
+ Requires-Dist: django-environ; extra == "django"
109
+ Requires-Dist: whitenoise; extra == "django"
110
+ Provides-Extra: net
111
+ Requires-Dist: aiohttp; extra == "net"
112
+ Requires-Dist: websockets; extra == "net"
113
+ Requires-Dist: dnspython; extra == "net"
114
+ Requires-Dist: paramiko; extra == "net"
115
+ Provides-Extra: security
116
+ Requires-Dist: cryptography; extra == "security"
117
+ Requires-Dist: PyJWT; extra == "security"
118
+ Requires-Dist: passlib[bcrypt]; extra == "security"
119
+ Requires-Dist: pycryptodome; extra == "security"
120
+ Provides-Extra: sec
121
+ Requires-Dist: cryptography; extra == "sec"
122
+ Requires-Dist: PyJWT; extra == "sec"
123
+ Requires-Dist: passlib[bcrypt]; extra == "sec"
124
+ Requires-Dist: pycryptodome; extra == "sec"
125
+ Provides-Extra: auth
126
+ Requires-Dist: cryptography; extra == "auth"
127
+ Requires-Dist: PyJWT; extra == "auth"
128
+ Requires-Dist: passlib[bcrypt]; extra == "auth"
129
+ Requires-Dist: pycryptodome; extra == "auth"
130
+ Provides-Extra: cyber
131
+ Requires-Dist: cryptography; extra == "cyber"
132
+ Requires-Dist: PyJWT; extra == "cyber"
133
+ Requires-Dist: passlib[bcrypt]; extra == "cyber"
134
+ Requires-Dist: pycryptodome; extra == "cyber"
135
+ Provides-Extra: cybersec
136
+ Requires-Dist: cryptography; extra == "cybersec"
137
+ Requires-Dist: PyJWT; extra == "cybersec"
138
+ Requires-Dist: passlib[bcrypt]; extra == "cybersec"
139
+ Requires-Dist: pycryptodome; extra == "cybersec"
140
+ Provides-Extra: devops
141
+ Requires-Dist: docker; extra == "devops"
142
+ Requires-Dist: docker-compose; extra == "devops"
143
+ Requires-Dist: ansible; extra == "devops"
144
+ Provides-Extra: testing
145
+ Requires-Dist: pytest; extra == "testing"
146
+ Requires-Dist: pytest-cov; extra == "testing"
147
+ Requires-Dist: black; extra == "testing"
148
+ Requires-Dist: flake8; extra == "testing"
149
+ Requires-Dist: isort; extra == "testing"
150
+ Requires-Dist: mypy; extra == "testing"
151
+ Provides-Extra: file
152
+ Requires-Dist: openpyxl; extra == "file"
153
+ Requires-Dist: python-docx; extra == "file"
154
+ Requires-Dist: pypdf2; extra == "file"
155
+ Provides-Extra: utils
156
+ Requires-Dist: python-dotenv; extra == "utils"
157
+ Requires-Dist: loguru; extra == "utils"
158
+ Requires-Dist: rich; extra == "utils"
159
+ Provides-Extra: fullstack
160
+ Requires-Dist: fastapi; extra == "fullstack"
161
+ Requires-Dist: uvicorn[standard]; extra == "fullstack"
162
+ Requires-Dist: Django; extra == "fullstack"
163
+ Requires-Dist: Flask; extra == "fullstack"
164
+ Requires-Dist: SQLAlchemy; extra == "fullstack"
165
+ Requires-Dist: psycopg2-binary; extra == "fullstack"
166
+ Requires-Dist: pymysql; extra == "fullstack"
167
+ Requires-Dist: pymongo; extra == "fullstack"
168
+ Provides-Extra: all
169
+ Requires-Dist: psycopg2-binary; extra == "all"
170
+ Requires-Dist: pymysql; extra == "all"
171
+ Requires-Dist: pymongo; extra == "all"
172
+ Requires-Dist: motor; extra == "all"
173
+ Requires-Dist: redis; extra == "all"
174
+ Requires-Dist: numpy; extra == "all"
175
+ Requires-Dist: pandas; extra == "all"
176
+ Requires-Dist: matplotlib; extra == "all"
177
+ Requires-Dist: scipy; extra == "all"
178
+ Requires-Dist: statsmodels; extra == "all"
179
+ Requires-Dist: scikit-learn; extra == "all"
180
+ Requires-Dist: joblib; extra == "all"
181
+ Requires-Dist: transformers; extra == "all"
182
+ Requires-Dist: sentencepiece; extra == "all"
183
+ Requires-Dist: tokenizers; extra == "all"
184
+ Requires-Dist: torch; extra == "all"
185
+ Requires-Dist: torchvision; extra == "all"
186
+ Requires-Dist: opencv-python; extra == "all"
187
+ Requires-Dist: scikit-image; extra == "all"
188
+ Requires-Dist: pillow; extra == "all"
189
+ Requires-Dist: PyQt5; extra == "all"
190
+ Requires-Dist: kivy; extra == "all"
191
+ Requires-Dist: librosa; extra == "all"
192
+ Requires-Dist: moviepy; extra == "all"
193
+ Requires-Dist: ffmpeg-python; extra == "all"
194
+ Requires-Dist: requests; extra == "all"
195
+ Requires-Dist: httpx; extra == "all"
196
+ Requires-Dist: beautifulsoup4; extra == "all"
197
+ Requires-Dist: lxml; extra == "all"
198
+ Requires-Dist: fastapi; extra == "all"
199
+ Requires-Dist: uvicorn[standard]; extra == "all"
200
+ Requires-Dist: pydantic; extra == "all"
201
+ Requires-Dist: python-dotenv; extra == "all"
202
+ Requires-Dist: python-multipart; extra == "all"
203
+ Requires-Dist: jinja2; extra == "all"
204
+ Requires-Dist: sqlalchemy; extra == "all"
205
+ Requires-Dist: Flask; extra == "all"
206
+ Requires-Dist: Flask-CORS; extra == "all"
207
+ Requires-Dist: Flask-RESTful; extra == "all"
208
+ Requires-Dist: Django; extra == "all"
209
+ Requires-Dist: djangorestframework; extra == "all"
210
+ Requires-Dist: django-cors-headers; extra == "all"
211
+ Requires-Dist: django-environ; extra == "all"
212
+ Requires-Dist: whitenoise; extra == "all"
213
+ Requires-Dist: aiohttp; extra == "all"
214
+ Requires-Dist: websockets; extra == "all"
215
+ Requires-Dist: paramiko; extra == "all"
216
+ Requires-Dist: cryptography; extra == "all"
217
+ Requires-Dist: PyJWT; extra == "all"
218
+ Requires-Dist: passlib[bcrypt]; extra == "all"
219
+ Requires-Dist: pycryptodome; extra == "all"
220
+ Requires-Dist: docker; extra == "all"
221
+ Requires-Dist: docker-compose; extra == "all"
222
+ Requires-Dist: ansible; extra == "all"
223
+ Requires-Dist: pytest; extra == "all"
224
+ Requires-Dist: pytest-cov; extra == "all"
225
+ Requires-Dist: black; extra == "all"
226
+ Requires-Dist: flake8; extra == "all"
227
+ Requires-Dist: isort; extra == "all"
228
+ Requires-Dist: mypy; extra == "all"
229
+ Requires-Dist: openpyxl; extra == "all"
230
+ Requires-Dist: python-docx; extra == "all"
231
+ Requires-Dist: pypdf2; extra == "all"
232
+ Requires-Dist: python-dotenv; extra == "all"
233
+ Requires-Dist: loguru; extra == "all"
234
+ Requires-Dist: rich; extra == "all"
235
+ Dynamic: license-file
236
+
237
+ # ๐Ÿ“ฆ Dompack โ€“ Domain-Based Python Tech-Stack Installer
238
+
239
+ Dompack lets you install complete Python tech stacks using short domain aliases:
240
+
241
+ ```
242
+ dompack install fa # FastAPI stack
243
+ dompack install dj # Django stack
244
+ dompack install ml # Machine Learning
245
+ dompack install ai # AI / NLP
246
+ dompack install all # Everything
247
+ ```
248
+
249
+ It removes the headache of installing individual packages.
250
+ Dompack gives you **clean, curated, domain-based bundles** for fast development.
251
+
252
+ ---
253
+
254
+ ## ๐Ÿš€ Features
255
+
256
+ - ๐Ÿ“Œ Install full tech stacks with one command
257
+ - ๐ŸŽฏ Short domain aliases (`fa`, `fl`, `dj`, `ml`, `ai`, `db`, โ€ฆ)
258
+ - ๐Ÿงฐ Curated, production-ready bundles
259
+ - ๐Ÿ” Security, auth & cryptography stack
260
+ - ๐ŸŽจ GUI, CV, AV, ML, AI, Web, DevOps and Testing bundles
261
+ - ๐Ÿงช Works on Windows, Linux and macOS
262
+ - ๐ŸŽ‰ Acts like a mini pip package manager
263
+
264
+ ---
265
+
266
+ ## ๐Ÿ“ฅ Installation
267
+
268
+ ```
269
+ pip install dompack
270
+ ```
271
+
272
+ Or local editable mode:
273
+
274
+ ```
275
+ pip install -e .
276
+ ```
277
+
278
+ ---
279
+
280
+ ## ๐Ÿงฐ CLI Usage
281
+
282
+ ### ๐Ÿ” List bundles
283
+ ```
284
+ dompack list
285
+ ```
286
+
287
+ ### ๐Ÿ“ฆ Install a bundle
288
+ ```
289
+ dompack install <bundle>
290
+ ```
291
+
292
+ Examples:
293
+
294
+ ```
295
+ dompack install fa
296
+ dompack install dj
297
+ dompack install flask
298
+ dompack install ml
299
+ dompack install ai
300
+ dompack install db
301
+ dompack install all
302
+ ```
303
+
304
+ ---
305
+
306
+ ## ๐Ÿ“š Domain Bundles
307
+
308
+ | Alias | Domain | Description |
309
+ |-------|--------|-------------|
310
+ | `db`, `da` | Databases | PostgreSQL, MySQL, MongoDB, Redis |
311
+ | `ds` | Data Science | numpy, pandas, matplotlib, scipy |
312
+ | `ml` | Machine Learning | sklearn, joblib, matplotlib |
313
+ | `ai` | AI / NLP | transformers, tokenizers |
314
+ | `dl` | Deep Learning | torch, torchvision |
315
+ | `cv` | Computer Vision | opencv-python, pillow, scikit-image |
316
+ | `gui` | GUI | PyQt5, Kivy |
317
+ | `av` | Audio/Video | librosa, moviepy, ffmpeg-python |
318
+ | `web` | Web Utils | requests, httpx, beautifulsoup4 |
319
+ | `fa`, `fastapi` | FastAPI Stack | fastapi, uvicorn, pydantic |
320
+ | `fl`, `flask` | Flask Stack | flask & extensions |
321
+ | `dj`, `django` | Django Stack | django, DRF, cors headers |
322
+ | `net` | Networking | aiohttp, websockets, paramiko |
323
+ | `security`, `auth`, `sec`, `cyber` | Security & Auth | JWT, cryptography, passlib |
324
+ | `devops` | DevOps | docker, ansible |
325
+ | `testing` | Testing | pytest, black, flake8 |
326
+ | `file` | File Processing | docx, pypdf2, openpyxl |
327
+ | `utils` | Utilities | dotenv, rich, loguru |
328
+ | `fullstack` | Mixed Full-Stack | Django + FastAPI + Flask |
329
+ | `all` | EVERYTHING | All bundles combined |
330
+
331
+ ---
332
+
333
+ ## ๐Ÿงญ Examples
334
+
335
+ Install FastAPI tools:
336
+
337
+ ```
338
+ dompack install fa
339
+ ```
340
+
341
+ Install Django stack:
342
+
343
+ ```
344
+ dompack install dj
345
+ ```
346
+
347
+ Install Machine Learning:
348
+
349
+ ```
350
+ dompack install ml
351
+ ```
352
+
353
+ Install EVERYTHING:
354
+
355
+ ```
356
+ dompack install all
357
+ ```
358
+
359
+ ---
360
+
361
+ ## ๐Ÿ“ License
362
+
363
+ MIT License ยฉ 2025 Veeresh Hanni
364
+
365
+ ---
366
+
367
+ ## โญ Support
368
+
369
+ If you find Dompack useful:
370
+
371
+ - โญ Star it on GitHub
372
+ - ๐Ÿ“ฆ Share it with Python developers
373
+ - ๐Ÿ›  Suggest new bundles (Web3, Automation, NLP, CV, etc.)
374
+
@@ -0,0 +1,9 @@
1
+ dompack/__init__.py,sha256=D__3XAnMBWI_9ARIWO_wIgPdqb7P7k5Wt9OlQXjmPYo,43
2
+ dompack/bundles.py,sha256=tvofLcujuVqIqMJ-Ghuloq7NRMSABmeKTDhnIWVowAg,2841
3
+ dompack/cli.py,sha256=33SsSbZMLr5YkSJnOcfFO4hKvaWEg8xzXjADrWWOI5U,1794
4
+ dompack-0.1.0.dist-info/licenses/LICENSE,sha256=_JSFqQwrrCeHkYzYm6ZTcuKlpU8I1wN8h4D9hxESe1w,466
5
+ dompack-0.1.0.dist-info/METADATA,sha256=UI1v4HkeXGETt7MLp3ljivTV0xbZp0uTnkS9nCRbUeo,12620
6
+ dompack-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
7
+ dompack-0.1.0.dist-info/entry_points.txt,sha256=bDOUhYoU7Q_sdAHZyaJb7HmA_9DHiTsRoBi5xKgydw0,45
8
+ dompack-0.1.0.dist-info/top_level.txt,sha256=ur3Jd38V5P7OBaP7WXCY6LzsOvwK_lvwZQvdTIFqBPY,8
9
+ dompack-0.1.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
+ dompack = dompack.cli:main
@@ -0,0 +1,10 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025
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:
@@ -0,0 +1 @@
1
+ dompack