🐧 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
📦 Installation
pip install py-pmp-manip
Or clone directly. Do not forget to include submodules:
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):
# 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 (choose LTS version).
🧰 Basic Usage
Before using most parts of pmp_manip, you must initialize the configuration once:
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
- For a documentation overview and a broader usage tutorial, see 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:
pytest tests/
📄 License
GPLv3
🤝 Contributing
Pull requests, issues, and feedback are welcome! Please read the CONTRIBUTING.md guide before submitting code.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_pmp_manip-1.2.6.tar.gz.
File metadata
- Download URL: py_pmp_manip-1.2.6.tar.gz
- Upload date:
- Size: 521.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7026d43c594cf280c24b0086d33b91b1847fa01d6dab626702b3133500a02a11
|
|
| MD5 |
bf3c008848098716463ac3a4c47e3e27
|
|
| BLAKE2b-256 |
6eac08f008bba6995d8ab90137cac1f17c1e49f4ffd935efe86bb6d6daff8e48
|
File details
Details for the file py_pmp_manip-1.2.6-py3-none-any.whl.
File metadata
- Download URL: py_pmp_manip-1.2.6-py3-none-any.whl
- Upload date:
- Size: 599.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
70c0f494de918e7857d55383b1a2bad5a7a47670942833dc422993c11378e871
|
|
| MD5 |
e8b3956e642d9b1c49f2e601ef60f97e
|
|
| BLAKE2b-256 |
c63b43ca6f8b9997457fea3f1c0f4aa0e296eff4e8ed69fc9c3df1ae5bafc29c
|