Metadata-Version: 2.4
Name: dompack
Version: 1.1.1
Summary: Dompack — curated domain-based Python tech stack installer
Author-email: Veeresh Hanni <veereshhanni347@gmail.com>
License: MIT License
        
        Copyright (c) 2025 Veeresh H
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: db
Requires-Dist: psycopg2-binary; extra == "db"
Requires-Dist: pymysql; extra == "db"
Requires-Dist: pymongo; extra == "db"
Requires-Dist: motor; extra == "db"
Requires-Dist: redis; extra == "db"
Provides-Extra: da
Requires-Dist: psycopg2-binary; extra == "da"
Requires-Dist: pymysql; extra == "da"
Requires-Dist: pymongo; extra == "da"
Requires-Dist: motor; extra == "da"
Requires-Dist: redis; extra == "da"
Provides-Extra: ds
Requires-Dist: numpy; extra == "ds"
Requires-Dist: pandas; extra == "ds"
Requires-Dist: matplotlib; extra == "ds"
Requires-Dist: scipy; extra == "ds"
Requires-Dist: statsmodels; extra == "ds"
Provides-Extra: ml
Requires-Dist: numpy; extra == "ml"
Requires-Dist: pandas; extra == "ml"
Requires-Dist: scikit-learn; extra == "ml"
Requires-Dist: joblib; extra == "ml"
Requires-Dist: matplotlib; extra == "ml"
Provides-Extra: ai
Requires-Dist: transformers; extra == "ai"
Requires-Dist: sentencepiece; extra == "ai"
Requires-Dist: tokenizers; extra == "ai"
Provides-Extra: dl
Requires-Dist: torch; extra == "dl"
Requires-Dist: torchvision; extra == "dl"
Provides-Extra: cv
Requires-Dist: opencv-python; extra == "cv"
Requires-Dist: scikit-image; extra == "cv"
Requires-Dist: pillow; extra == "cv"
Provides-Extra: gui
Requires-Dist: PyQt5; extra == "gui"
Requires-Dist: kivy; extra == "gui"
Provides-Extra: av
Requires-Dist: librosa; extra == "av"
Requires-Dist: moviepy; extra == "av"
Requires-Dist: ffmpeg-python; extra == "av"
Provides-Extra: web
Requires-Dist: requests; extra == "web"
Requires-Dist: httpx; extra == "web"
Requires-Dist: beautifulsoup4; extra == "web"
Requires-Dist: lxml; extra == "web"
Provides-Extra: fa
Requires-Dist: fastapi; extra == "fa"
Requires-Dist: uvicorn[standard]; extra == "fa"
Requires-Dist: pydantic; extra == "fa"
Requires-Dist: python-dotenv; extra == "fa"
Requires-Dist: python-multipart; extra == "fa"
Requires-Dist: jinja2; extra == "fa"
Requires-Dist: sqlalchemy; extra == "fa"
Provides-Extra: fastapi
Requires-Dist: fastapi; extra == "fastapi"
Requires-Dist: uvicorn[standard]; extra == "fastapi"
Requires-Dist: pydantic; extra == "fastapi"
Requires-Dist: python-dotenv; extra == "fastapi"
Requires-Dist: python-multipart; extra == "fastapi"
Requires-Dist: jinja2; extra == "fastapi"
Requires-Dist: sqlalchemy; extra == "fastapi"
Provides-Extra: fl
Requires-Dist: Flask; extra == "fl"
Requires-Dist: Flask-CORS; extra == "fl"
Requires-Dist: Flask-RESTful; extra == "fl"
Requires-Dist: Flask-JWT-Extended; extra == "fl"
Requires-Dist: Flask-Migrate; extra == "fl"
Provides-Extra: flask
Requires-Dist: Flask; extra == "flask"
Requires-Dist: Flask-CORS; extra == "flask"
Requires-Dist: Flask-RESTful; extra == "flask"
Requires-Dist: Flask-JWT-Extended; extra == "flask"
Requires-Dist: Flask-Migrate; extra == "flask"
Provides-Extra: dj
Requires-Dist: Django; extra == "dj"
Requires-Dist: djangorestframework; extra == "dj"
Requires-Dist: django-cors-headers; extra == "dj"
Requires-Dist: django-environ; extra == "dj"
Requires-Dist: whitenoise; extra == "dj"
Provides-Extra: django
Requires-Dist: Django; extra == "django"
Requires-Dist: djangorestframework; extra == "django"
Requires-Dist: django-cors-headers; extra == "django"
Requires-Dist: django-environ; extra == "django"
Requires-Dist: whitenoise; extra == "django"
Provides-Extra: net
Requires-Dist: aiohttp; extra == "net"
Requires-Dist: websockets; extra == "net"
Requires-Dist: dnspython; extra == "net"
Requires-Dist: paramiko; extra == "net"
Provides-Extra: security
Requires-Dist: cryptography; extra == "security"
Requires-Dist: PyJWT; extra == "security"
Requires-Dist: passlib[bcrypt]; extra == "security"
Requires-Dist: pycryptodome; extra == "security"
Provides-Extra: sec
Requires-Dist: cryptography; extra == "sec"
Requires-Dist: PyJWT; extra == "sec"
Requires-Dist: passlib[bcrypt]; extra == "sec"
Requires-Dist: pycryptodome; extra == "sec"
Provides-Extra: auth
Requires-Dist: cryptography; extra == "auth"
Requires-Dist: PyJWT; extra == "auth"
Requires-Dist: passlib[bcrypt]; extra == "auth"
Requires-Dist: pycryptodome; extra == "auth"
Provides-Extra: cyber
Requires-Dist: cryptography; extra == "cyber"
Requires-Dist: PyJWT; extra == "cyber"
Requires-Dist: passlib[bcrypt]; extra == "cyber"
Requires-Dist: pycryptodome; extra == "cyber"
Provides-Extra: cybersec
Requires-Dist: cryptography; extra == "cybersec"
Requires-Dist: PyJWT; extra == "cybersec"
Requires-Dist: passlib[bcrypt]; extra == "cybersec"
Requires-Dist: pycryptodome; extra == "cybersec"
Provides-Extra: devops
Requires-Dist: docker; extra == "devops"
Requires-Dist: docker-compose; extra == "devops"
Requires-Dist: ansible; extra == "devops"
Provides-Extra: testing
Requires-Dist: pytest; extra == "testing"
Requires-Dist: pytest-cov; extra == "testing"
Requires-Dist: black; extra == "testing"
Requires-Dist: flake8; extra == "testing"
Requires-Dist: isort; extra == "testing"
Requires-Dist: mypy; extra == "testing"
Provides-Extra: file
Requires-Dist: openpyxl; extra == "file"
Requires-Dist: python-docx; extra == "file"
Requires-Dist: pypdf2; extra == "file"
Provides-Extra: utils
Requires-Dist: python-dotenv; extra == "utils"
Requires-Dist: loguru; extra == "utils"
Requires-Dist: rich; extra == "utils"
Provides-Extra: fullstack
Requires-Dist: fastapi; extra == "fullstack"
Requires-Dist: uvicorn[standard]; extra == "fullstack"
Requires-Dist: Django; extra == "fullstack"
Requires-Dist: Flask; extra == "fullstack"
Requires-Dist: SQLAlchemy; extra == "fullstack"
Requires-Dist: psycopg2-binary; extra == "fullstack"
Requires-Dist: pymysql; extra == "fullstack"
Requires-Dist: pymongo; extra == "fullstack"
Provides-Extra: all
Requires-Dist: psycopg2-binary; extra == "all"
Requires-Dist: pymysql; extra == "all"
Requires-Dist: pymongo; extra == "all"
Requires-Dist: motor; extra == "all"
Requires-Dist: redis; extra == "all"
Requires-Dist: numpy; extra == "all"
Requires-Dist: pandas; extra == "all"
Requires-Dist: matplotlib; extra == "all"
Requires-Dist: scipy; extra == "all"
Requires-Dist: statsmodels; extra == "all"
Requires-Dist: scikit-learn; extra == "all"
Requires-Dist: joblib; extra == "all"
Requires-Dist: transformers; extra == "all"
Requires-Dist: sentencepiece; extra == "all"
Requires-Dist: tokenizers; extra == "all"
Requires-Dist: torch; extra == "all"
Requires-Dist: torchvision; extra == "all"
Requires-Dist: opencv-python; extra == "all"
Requires-Dist: scikit-image; extra == "all"
Requires-Dist: pillow; extra == "all"
Requires-Dist: PyQt5; extra == "all"
Requires-Dist: kivy; extra == "all"
Requires-Dist: librosa; extra == "all"
Requires-Dist: moviepy; extra == "all"
Requires-Dist: ffmpeg-python; extra == "all"
Requires-Dist: requests; extra == "all"
Requires-Dist: httpx; extra == "all"
Requires-Dist: beautifulsoup4; extra == "all"
Requires-Dist: lxml; extra == "all"
Requires-Dist: fastapi; extra == "all"
Requires-Dist: uvicorn[standard]; extra == "all"
Requires-Dist: pydantic; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: python-multipart; extra == "all"
Requires-Dist: jinja2; extra == "all"
Requires-Dist: sqlalchemy; extra == "all"
Requires-Dist: Flask; extra == "all"
Requires-Dist: Flask-CORS; extra == "all"
Requires-Dist: Flask-RESTful; extra == "all"
Requires-Dist: Django; extra == "all"
Requires-Dist: djangorestframework; extra == "all"
Requires-Dist: django-cors-headers; extra == "all"
Requires-Dist: django-environ; extra == "all"
Requires-Dist: whitenoise; extra == "all"
Requires-Dist: aiohttp; extra == "all"
Requires-Dist: websockets; extra == "all"
Requires-Dist: paramiko; extra == "all"
Requires-Dist: cryptography; extra == "all"
Requires-Dist: PyJWT; extra == "all"
Requires-Dist: passlib[bcrypt]; extra == "all"
Requires-Dist: pycryptodome; extra == "all"
Requires-Dist: docker; extra == "all"
Requires-Dist: docker-compose; extra == "all"
Requires-Dist: ansible; extra == "all"
Requires-Dist: pytest; extra == "all"
Requires-Dist: pytest-cov; extra == "all"
Requires-Dist: black; extra == "all"
Requires-Dist: flake8; extra == "all"
Requires-Dist: isort; extra == "all"
Requires-Dist: mypy; extra == "all"
Requires-Dist: openpyxl; extra == "all"
Requires-Dist: python-docx; extra == "all"
Requires-Dist: pypdf2; extra == "all"
Requires-Dist: python-dotenv; extra == "all"
Requires-Dist: loguru; extra == "all"
Requires-Dist: rich; extra == "all"
Dynamic: license-file


```
██████╗  ██████╗ ███╗   ███╗██████╗  █████╗  ██████╗██╗  ██╗
██╔══██╗██╔═══██╗████╗ ████║██╔══██╗██╔══██╗██╔════╝██║ ██╔╝
██████╔╝██║   ██║██╔████╔██║██████╔╝███████║██║     █████╔╝ 
██╔═══╝ ██║   ██║██║╚██╔╝██║██╔══██╗██╔══██║██║     ██╔═██╗ 
██║     ╚██████╔╝██║ ╚═╝ ██║██████╔╝██║  ██║╚██████╗██║  ██╗
╚═╝      ╚═════╝ ╚═╝     ╚═╝╚═════╝ ╚═╝  ╚═╝ ╚═════╝╚═╝  ╚═╝
      Domain-Based Python Tech-Stack Installer
```
<br>
<p align="center">
  <img src="https://img.icons8.com/external-flaticons-lineal-color-flat-icons/64/000000/external-python-computer-programming-icons-flaticons-lineal-color-flat-icons.png" />
  <br><br>
  <img src="https://img.shields.io/badge/version-v0.1.1-blue?logo=python" />
  <img src="https://img.shields.io/pypi/dm/dompack?color=success" />
  <img src="https://img.shields.io/badge/license-MIT-green" />
  <img src="https://img.shields.io/badge/status-active-brightgreen" />
  <img src="https://img.shields.io/pypi/pyversions/dompack" />
</p>


# 📦 Dompack – Domain-Based Python Tech-Stack Installer

Dompack installs complete Python tech stacks using short domain aliases:

```
dompack install fa      # FastAPI stack
dompack install dj      # Django stack
dompack install ml      # Machine Learning
dompack install ai      # AI / NLP
dompack install all     # Everything
```

Dompack removes the headache of installing many libraries manually.  
It gives you curated, domain-based bundles designed for fast development.

---

## 🚀 Features

### 🟦 Core Features
- 📦 Install entire Python stacks using domain aliases  
- ⚡ Clean, curated, production-ready bundles  
- 🎯 Short aliases (`fa`, `fl`, `dj`, `ml`, `ai`, `db`, …)  
- 🧪 Works on Windows, Linux, macOS  
- 🔐 Includes Security, Cryptography & Auth bundles  
- ⚙️ Supports ML, AI, DL, CV, GUI, DevOps, Web, File, Testing  
- 📦 Acts like a mini package manager (son of pip)

---

## 🆕 New Advanced CLI Features

### 🔧 Upgrade bundles
```
dompack upgrade <bundle>
```

### 🔍 Search inside bundles
```
dompack search <keyword>
```

### 🩺 Environment Doctor
```
dompack doctor
```

### 🔄 Self-update
```
dompack update-self
```

### 📝 Generate requirements.txt from bundle
```
dompack req <bundle>
```

### 🧱 Create custom bundles
```
dompack create-bundle <name> <pkg1> <pkg2> ...
```

---

## 📥 Installation

```
pip install dompack
```

Local development install:

```
pip install -e .
```

---

## 🧰 CLI Usage

### 🔍 List bundles
```
dompack list
```

### 📦 Install a bundle
```
dompack install <bundle>
```

Examples:

```
dompack install fa
dompack install dj
dompack install flask
dompack install ml
dompack install ai
dompack install db
dompack install all
```

---

## 📚 Domain Bundles

| Alias | Domain | Description |
|-------|--------|-------------|
| `db`, `da` | Databases | PostgreSQL, MySQL, MongoDB, Redis |
| `ds` | Data Science | numpy, pandas, matplotlib, scipy |
| `ml` | Machine Learning | scikit-learn, joblib |
| `ai` | AI / NLP | transformers, tokenizers |
| `dl` | Deep Learning | torch, torchvision |
| `cv` | Computer Vision | opencv-python, scikit-image, pillow |
| `gui` | GUI | PyQt5, Kivy |
| `av` | Audio / Video | librosa, moviepy |
| `web` | Web Utils | requests, httpx, beautifulsoup4 |
| `fa`, `fastapi` | FastAPI Stack | fastapi, uvicorn, pydantic |
| `fl`, `flask` | Flask Stack | flask & extensions |
| `dj`, `django` | Django Stack | django, DRF, cors headers |
| `net` | Networking | aiohttp, websockets, paramiko |
| `security`, `sec`, `auth`, `cyber` | Security | JWT, cryptography, passlib |
| `devops` | DevOps | docker, ansible |
| `testing` | Testing | pytest, black, flake8 |
| `file` | File Processing | docx, pypdf2, openpyxl |
| `utils` | Utilities | dotenv, rich, loguru |
| `fullstack` | Mixed Stack | Django + FastAPI + Flask |
| `all` | Everything | All bundles combined |

---

## 🧭 Examples

### FastAPI install
```
dompack install fa
```

### Django install
```
dompack install dj
```

### Machine Learning setup
```
dompack install ml
```

### Install EVERYTHING
```
dompack install all
```

### Upgrade a bundle
```
dompack upgrade security
```

### Search packages
```
dompack search mongo
```

### Generate requirements.txt
```
dompack req ml
```

### Environment doctor
```
dompack doctor
```

---

## 📝 License

MIT License © 2025 Veeresh Hanni

---

## ⭐ Support

If Dompack helps you:

- ⭐ Star it on GitHub  
- 🛠 Contribute new bundles  
- 📦 Share it with the Python community  

