Skip to main content

Python tool for creating, editing and inspecting Penguinmod(.pmp) and Scratch(.sb3) files.

Project description

๐Ÿง 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


๐Ÿ“ 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.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_pmp_manip-1.2.6.tar.gz (521.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

py_pmp_manip-1.2.6-py3-none-any.whl (599.2 kB view details)

Uploaded Python 3

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

Hashes for py_pmp_manip-1.2.6.tar.gz
Algorithm Hash digest
SHA256 7026d43c594cf280c24b0086d33b91b1847fa01d6dab626702b3133500a02a11
MD5 bf3c008848098716463ac3a4c47e3e27
BLAKE2b-256 6eac08f008bba6995d8ab90137cac1f17c1e49f4ffd935efe86bb6d6daff8e48

See more details on using hashes here.

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

Hashes for py_pmp_manip-1.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 70c0f494de918e7857d55383b1a2bad5a7a47670942833dc422993c11378e871
MD5 e8b3956e642d9b1c49f2e601ef60f97e
BLAKE2b-256 c63b43ca6f8b9997457fea3f1c0f4aa0e296eff4e8ed69fc9c3df1ae5bafc29c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page