pikoro 1.0.1
Smart pip requirements installer - Pikori manages your installations
License: Apache-2.0
Requires Python: >=3.8

# Pikoro - The Smart Python Package Assistant

An intelligent tool that automatically manages your Python dependencies by analyzing your actual code usage.

## What is Pikoro?

Pikoro - 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.

```bash
pikoro                    # Auto-discovers and installs what you need
pikoro --dry-run          # See what it would install first
pikoro --uninstall        # Remove packages you don't use anymore
```

## Why Pikoro 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

Pikoro addresses these challenges through intelligent code analysis and automated dependency management, ensuring your project only includes the packages it actually needs.

## Installation

Simply run:

```bash
pip install pikoro
```

Once installed, Pikoro is available system-wide and ready to optimize your Python package management.

## How to use it

### Auto-discovery (the main feature)

```bash
pikoro                    # Install missing packages
pikoro --dry-run          # Preview what would be installed
pikoro --uninstall        # Remove unused packages
pikoro --verbose          # See what it's doing
```

### Traditional mode (if you have requirements files)

```bash
pikoro requirements.txt
pikoro 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

```bash
$ pikoro --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

```bash
pikoro [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:**

```bash
git clone some-repo
cd some-repo
pikoro  # installs exactly what the code needs
```

**Clean up your environment:**

```bash
piko --uninstall --dry-run  # see what can be removed
piko --uninstall            # actually remove it
```

**Check what your project uses:**

```bash
piko --dry-run --verbose  # detailed analysis
```

## Project structure

```text
pikoro/
├── 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](https://github.com/jassem-manita)  
Email: [jasemmanita00@gmail.com](mailto:jasemmanita00@gmail.com)