Skip to main content

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

  1. Looks for requirements files first - requirements.txt, pyproject.toml, setup.py, etc.
  2. If none found, scans your .py files for import statements
  3. Filters out standard library stuff - only suggests real packages
  4. Shows you what it found and what needs to be installed
  5. 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?

  1. Fork it
  2. Create a branch: git checkout -b my-feature
  3. Install dev dependencies: pip install -e ".[dev]"
  4. Run tests: pytest tests/
  5. 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

midna-1.0.1.tar.gz (18.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

midna-1.0.1-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

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

Hashes for midna-1.0.1.tar.gz
Algorithm Hash digest
SHA256 2643239e4b034de5bb49dba59f1cb231a8c487fc0c10bd1daa08d4e8a681bde6
MD5 d7f8fa9e5d815e13c8605a9b7b2f10cf
BLAKE2b-256 05f5521ca3c47b617b92df387f892bf1128b6521d24273e6421ad3c9af67d5b4

See more details on using hashes here.

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

Hashes for midna-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 90f069b1f124544b9fa919b84020d7de00857c8d8795b4d2a56fb7d3b4b45a62
MD5 7047a7eb11211c44b819017c106469f7
BLAKE2b-256 3c83bc1722885af5faa7e3cb99145542dac97c5ae3cfa50beaea00bc246c867f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page