Metadata-Version: 2.4
Name: freezeburn
Version: 0.1.0
Summary: Freeze what you actually use. Generate requirements.txt from real imports and installed packages.
Author-email: dodogabrie <dodogabrie@users.noreply.github.com>
License: MIT
Project-URL: Homepage, https://github.com/dodogabrie/freezeburn
Project-URL: Repository, https://github.com/dodogabrie/freezeburn.git
Project-URL: Issues, https://github.com/dodogabrie/freezeburn/issues
Keywords: requirements,dependencies,imports,freeze,packaging
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: System :: Software Distribution
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Dynamic: license-file

# freezeburn

**Freeze what you actually use.**

Generate `requirements.txt` from real imports + installed packages. No guessing. No network.

## Install

```bash
pip install freezeburn
```

## Usage

```bash
freezeburn                      # Scan current directory
freezeburn /path/to/project     # Scan specific directory
freezeburn -o requirements.txt  # Custom output file
freezeburn -q                   # Suppress warnings
```

## What It Does

1. Scans `.py` files (respects `.gitignore` and `.reqignore`)
2. Extracts imports via AST
3. Detects stdlib dynamically (`sys.stdlib_module_names`)
4. Intersects with installed packages
5. Outputs exact pinned versions

## What It Does NOT Do

- Query PyPI
- Guess versions
- Resolve transitive dependencies
- Detect dynamic imports
- Be "smart"

## Ignore Files

Create `.reqignore` for freezeburn-specific exclusions:

```
tests/
scripts/
examples/*.py
```

Uses gitignore syntax. `.gitignore` is also respected.

## How It Works

```
Imports (AST)  +  Installed (env)  =  requirements.txt
     |                  |                    |
   flask              flask==2.3.2      flask==2.3.2
   requests           requests==2.31    requests==2.31
   mymodule           (not installed)   (skipped + warning)
   os                 (stdlib)          (skipped)
```

## Requirements

- Python 3.10+
- Activated virtualenv with your dependencies

## License

MIT
