Smart pip requirements installer - Midna manages your installations
Project description
Midna - The Smart Python Package Assistant
An intelligent tool that automatically manages your Python dependencies by analyzing your actual code usage.
What is Midna?
Midna - The smart Python package assistant that automatically discovers what packages your Python project uses by scanning your code for imports. No more manually maintaining requirements.txt files or trying to remember what you installed.
midna # Auto-discovers and installs what you need
midna --dry-run # See what it would install first
midna --uninstall # Remove packages you don't use anymore
Why Midna exists
Common Python package management challenges:
- Manual maintenance of requirements.txt files
- Difficulty tracking essential package dependencies
- Unnecessary installation of unused packages
- Inconsistencies between requirements and actual code usage
Midna addresses these challenges through intelligent code analysis and automated dependency management, ensuring your project only includes the packages it actually needs.
Installation
Simply run:
pip install midna
Once installed, Midna is available system-wide and ready to optimize your Python package management.
How to use it
Auto-discovery (the main feature)
midna # Install missing packages
midna --dry-run # Preview what would be installed
midna --uninstall # Remove unused packages
midna --verbose # See what it's doing
Traditional mode (if you have requirements files)
midna requirements.txt
midna requirements.txt --dry-run
How it works
- Looks for requirements files first - requirements.txt, pyproject.toml, setup.py, etc.
- If none found, scans your .py files for import statements
- Filters out standard library stuff - only suggests real packages
- Shows you what it found and what needs to be installed
- Does the installation (or uninstallation) if you want
Example output
$ midna --dry-run
Auto-discovering requirements...
Found 4 packages (import analysis)
Already installed (1):
+ requests
Missing packages (3):
- click
- numpy
- pandas
DRY RUN: Would install the following packages:
- click
- numpy
- pandas
Commands
midna [requirements_file] [options]
Options:
--uninstall, -u Remove packages instead of installing
--dry-run, -n Show what would happen without doing it
--verbose, -v More detailed output
--version Show version
--help, -h This help message
Key Features
- Intelligent Package Detection - Installs only required dependencies
- Standard Library Awareness - Automatically excludes built-in Python modules
- Smart Directory Filtering - Ignores non-project directories (
.git,__pycache__,.venv) - Multi-Format Support - Compatible with requirements.txt, pyproject.toml, and Pipfile
- Safe Execution - Provides dry-run mode for verification
- Robust Error Handling - Ensures reliable operation across diverse codebases
Use cases
New project setup:
git clone some-repo
cd some-repo
midna # installs exactly what the code needs
Clean up your environment:
midna --uninstall --dry-run # see what can be removed
midna --uninstall # actually remove it
Check what your project uses:
midna --dry-run --verbose # detailed analysis
Project structure
midna/
├── core.py # Main CLI logic
├── discovery.py # Auto-discovery engine
├── parser.py # Requirements file parsing
├── installer.py # Package installation
├── uninstaller.py # Package removal
├── checker.py # Check what's installed
└── logger.py # Logging
Requirements
- Python 3.8 or newer
- pip (comes with Python)
- That's it - no external dependencies
Contributing
Found a bug or want to add a feature?
- Fork it
- Create a branch:
git checkout -b my-feature - Install dev dependencies:
pip install -e ".[dev]" - Run tests:
pytest tests/ - Submit a PR
License
Apache 2.0 - see LICENSE file
Author
Jassem Manita
GitHub: @jassem-manita
Email: jasemmanita00@gmail.com
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file midna-1.0.1.tar.gz.
File metadata
- Download URL: midna-1.0.1.tar.gz
- Upload date:
- Size: 18.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2643239e4b034de5bb49dba59f1cb231a8c487fc0c10bd1daa08d4e8a681bde6
|
|
| MD5 |
d7f8fa9e5d815e13c8605a9b7b2f10cf
|
|
| BLAKE2b-256 |
05f5521ca3c47b617b92df387f892bf1128b6521d24273e6421ad3c9af67d5b4
|
File details
Details for the file midna-1.0.1-py3-none-any.whl.
File metadata
- Download URL: midna-1.0.1-py3-none-any.whl
- Upload date:
- Size: 19.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90f069b1f124544b9fa919b84020d7de00857c8d8795b4d2a56fb7d3b4b45a62
|
|
| MD5 |
7047a7eb11211c44b819017c106469f7
|
|
| BLAKE2b-256 |
3c83bc1722885af5faa7e3cb99145542dac97c5ae3cfa50beaea00bc246c867f
|