Metadata-Version: 2.4
Name: py-pmp-manip
Version: 1.2.6
Summary: Python tool for creating, editing and inspecting Penguinmod(.pmp) and Scratch(.sb3) files.
Author-email: GermanCodeEngineer <germancodeengineer@proton.me>
License-Expression: GPL-3.0-or-later
Project-URL: Homepage, https://github.com/GermanCodeEngineer/py-pmp-manip/
Project-URL: Repository, https://github.com/GermanCodeEngineer/py-pmp-manip/
Project-URL: Issues, https://github.com/GermanCodeEngineer/py-pmp-manip/issues/
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: gceutils~=1.0
Requires-Dist: Pillow>=12.2.0
Requires-Dist: Requests~=2.33
Requires-Dist: colorama~=0.4
Requires-Dist: lxml~=6.0
Requires-Dist: pydub_ng~=0.2
Requires-Dist: tree_sitter~=0.25
Requires-Dist: tree_sitter_javascript~=0.25
Requires-Dist: validators~=0.35
Provides-Extra: dev
Requires-Dist: graphviz~=0.21; extra == "dev"
Requires-Dist: pytest~=9.0; extra == "dev"
Requires-Dist: tomlkit~=0.14; extra == "dev"
Requires-Dist: coverage~=7.13; extra == "dev"
Requires-Dist: pipreqs~=0.5; extra == "dev"
Dynamic: license-file

# 🐧 py-pmp-manip

> A modular python tool for creating, editing and inspecting Penguinmod(.pmp) and Scratch(.sb3) project files.

---

## 🚀 Features

- Loading and Creating Projects
- Editing Projects
- Inspecting Projects
--- 
For a **documentation overview** and a **broader usage tutorial**, see [docs/index.md](docs/index.md) 

---

## 📦 Installation

```bash
pip install py-pmp-manip
```
**Or clone** directly. Do not forget to **include submodules**:
```bash
git clone --recurse-submodules https://github.com/GermanCodeEngineer/py-pmp-manip
cd py-pmp-manip
pip install -e .
```
Then **install Node.js >=18** (this project uses JavaScript for some features):
```bash
# Using winget (installs latest LTS)
winget install OpenJS.NodeJS.LTS

# Or using Chocolatey
choco install nodejs-lts

# Verify version
node --version
```
Or install manually from [nodejs.org](https://nodejs.org/en/download) (choose LTS version).

## 🧰 Basic Usage

Before using most parts of pmp_manip, you must initialize the configuration once:

```python
from pmp_manip import init_config, get_default_config

# Start from defaults and override what you need
cfg = get_default_config()
cfg.ext_info_gen.gen_opcode_info_dir = "output/gen_opcode_info"
init_config(cfg)
```
### References
* For more **config details**, see [docs/config.md](docs/config.md)
* For a **documentation overview** and a **broader usage tutorial**, see [docs/index.md](docs/index.md)

---

## 📁 Project Structure
```
py-pmp-manip/
├── pmp_manip/              # Source Code
│   ├── config/             # Configuration schema and lifecycle
│   ├── core/               # Core functionality
│   ├── ext_info_gen/       # Information generator for custom extensions
│   ├── important_consts.py # Common important constants
│   ├── opcode_info/        # Contains an API for and the information about all the blocks
│   │   ├── api/                 # Theoretical structure of the API
│   │   ├── data/                # Actual data for the API
│   │   └── doc_api/             # A seperate API, which gives information about blocks and monitors in a human-readable way 
│   ├── builtin_extension_source/ # Resource Submodule: Adapted Built-in PenguinMod Extensions
│   └── utility/            # Utilities for other modules
├── docs/              # Documentation
├── scripts/           # Independent project-related scripts for developers
│   ├── check_dependency_updates.py # Checks for updates of dependencies
│   ├── check_source_updates.py        # Checks for updates in foreign code files, from which e.g. constants are derived
│   ├── make_uml.py                 # Generates a UML-Diagram for Second Representation
│   └── review_pyproject_toml.py    # Reviews pyproject.toml with version and dependencies
└── tests/             # Unit tests
```

## 🧪 Running Tests

Just run:
```bash
pytest tests/
```

---

## 📄 License

GPLv3

---

## 🤝 Contributing

Pull requests, issues, and feedback are welcome!
Please read the [CONTRIBUTING.md](CONTRIBUTING.md) guide before submitting code. 

---
