Metadata-Version: 2.4
Name: propack
Version: 0.1.0
Summary: PRO-PACK implementation in Python
Keywords: propack,compression,packing
Author-email: Gareth Davidson <gaz@bitplane.net>
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-Expression: Unlicense
Classifier: Development Status :: 3 - Alpha
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
License-File: LICENSE.md
Requires-Dist: pre-commit ; extra == "dev"
Requires-Dist: pytest ; extra == "dev"
Requires-Dist: coverage ; extra == "dev"
Requires-Dist: pytest-cov ; extra == "dev"
Requires-Dist: build ; extra == "dev"
Requires-Dist: twine ; extra == "dev"
Requires-Dist: ruff ; extra == "dev"
Requires-Dist: pydoc-markdown ; extra == "dev"
Project-URL: Homepage, https://bitplane.net/dev/python/propack
Project-URL: Issues, https://github.com/bitplane/propack/issues
Project-URL: Repository, https://github.com/bitplane/propack
Provides-Extra: dev

# PRO-PACK for Python

Based on [RNC ProPack Source](https://github.com/lab313ru/rnc_propack_source).

I wanted something I could install from pypi and I could import in Python
projects. So here it is.

Test data can be found in [this repo](https://github.com/bitplane/pro-pack-test-data)

## Install

```bash
pip install propack
```

## Usage

### Python API

```python
from propack import pack, unpack, parse_header

# Compress
raw = open('data.bin', 'rb').read()
packed = pack(raw, method=1)       # method 1 (Huffman+LZ77) or 2

# Decompress
original = unpack(packed)
assert original == raw

# Inspect header
header = parse_header(packed)
print(f'method={header.method} {header.packed_size} -> {header.unpacked_size} bytes')
```

### CLI

```bash
# Compress
propack pack data.bin                     # -> data.rnc1
propack pack data.bin -m 2                # -> data.rnc2
propack pack data.bin -m 1 output.rnc     # explicit output

# Decompress
propack unpack data.rnc1                  # -> data.bin
propack unpack data.rnc1 output.bin       # explicit output

# Inspect
propack info data.rnc1                    # show header fields

# Scan a file for embedded RNC data
propack scan rom.bin

# Extract all embedded RNC blocks
propack extract rom.bin -o output_dir/
```

