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 +2 -0
- dompack/bundles.py +194 -0
- dompack/cli.py +70 -0
- dompack-0.1.0.dist-info/METADATA +374 -0
- dompack-0.1.0.dist-info/RECORD +9 -0
- dompack-0.1.0.dist-info/WHEEL +5 -0
- dompack-0.1.0.dist-info/entry_points.txt +2 -0
- dompack-0.1.0.dist-info/licenses/LICENSE +10 -0
- dompack-0.1.0.dist-info/top_level.txt +1 -0
dompack/__init__.py
ADDED
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,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
|