Python Multi-Media API (PMMA) is a multi-purpose API designed to make working on multi-media projects easier and faster!
Project description
PMMA (Python Multi-Media API)
PMMA is a Python module targeted at helping you build applications in the Python programming language. It does this by providing its own tools covering areas like 2D graphics, noise generation, audio and video playback, event handling, text rendering and much more. The API has two fundamental goals; to make application development in Python easier, whilst also focusing on improving the performance and efficiency of the end result. The API is also being engineered with compatibility with other python modules, like Pygame, PIL and Numpy and is ideal for prototyping, application development, simulations, graphics intensive tasks and game development.
Contents
Development Progress
We are currently working on the next major update to PMMA, version 5.x.x. This update features a complete API rework with a significant proportion being re-written in C++ for a significant performance and efficiency improvement. This major update will also introduce all the features lacking from previous iterations of PMMA, including text rendering, aggregated events for text input and improvements to the accuracy and variety of procedural noise generation. If you want to check out our current progress list, you can find it here: Progress on PMMA 5
Installation
You can install the latest version of PMMA from PyPi using the command: `pip install pmma' or you can head over to the website here: PMMA on PyPi to select a custom version to install.
Requirements
In order to install PMMA 5 and newer, you must ensure you meet the following criteria:
| Category | Requirement |
|---|---|
| Operating System | Windows, ALT Linux 10+, RHEL 9+, Debian 11+, Fedora 34+, Mageia 8+, Photon OS 3.0 (with updates), Ubuntu 21.04+ Architecture: 64-bit (x64)MacOS Architecture: arm-64 |
| Python Version | 3.8.x, 3.9.x, 3.10.x, 3.11.x |
pip Version |
20.3 or newer |
Note: If your platform is not listed here then you can attempt to build your own version of PMMA using our build guide!
Additional Technical Requirements
Please note, these requirements are only needed by users installing PMMA onto Linux machines and in most cases the operating systems listed above should be compatible.
- In order for PMMA to work as expected, you must be using either X-Lib, or Wayland. This means that Ubuntu 21.04 DESKTOP will work, but Ubuntu 21.04 SERVER is unlikely to.
- Additionally, you will need
glibc 2.28or newer, this can be checked on linux using the commandldd --version(root not required). The result should be on the first line as shown in the image below:
For older versions of PMMA, there are no hardware requirements.
If you encounter any issues or problems then check out our troubleshooting page.
Credits
PMMA is made possible thanks to the following:
C/C++ projects (used in PMMA 5 and newer)
- LIBZ - 1.3.1 - https://github.com/madler/zlib
- Libpng - 1.6.49 - https://github.com/glennrp/libpng
- GLFW - 3.4 - https://github.com/glfw/glfw
- FreeType - 2-13-3 - https://gitlab.freedesktop.org/freetype/freetype
- GLM - 0.9.3.2 - https://github.com/icaven/glm
- GLAD - 2.0.8 - https://github.com/Dav1dde/glad
- HarfBuzz - 11.2.1 - https://github.com/harfbuzz/harfbuzz
- flat_hash_map - N/A - https://github.com/skarupke/flat_hash_map
- STB - N/A - https://github.com/nothings/stb
Python projects (used in PMMA 1 and newer)
- PyAV - latest - https://github.com/PyAV-Org/PyAV
- Cython - latest - https://github.com/cython/cython
- GetOSTheme - latest - https://github.com/FHPythonUtils/GetOSTheme
- MoviePy - latest - https://github.com/Zulko/moviepy
- Num2Words - latest - https://github.com/savoirfairelinux/num2words
- Pedalboard - latest - https://github.com/spotify/pedalboard
- Pillow - latest - https://github.com/python-pillow/Pillow
- Pprofile - latest - https://github.com/vpelletier/pprofile
- Psutil - latest - https://github.com/giampaolo/psutil
- PyADL - latest - https://github.com/nicolargo/pyadl
- Pyrr - latest - https://github.com/adamlwgriffiths/Pyrr
- Requests - latest - https://github.com/psf/requests
- Send2Trash - latest - https://github.com/arsenetar/send2trash
- SoundDevice - latest - https://github.com/spatialaudio/python-sounddevice/
- SoundFile - latest - https://github.com/bastibe/python-soundfile
- Waiting - latest - https://github.com/vmalloc/waiting
- Watchdog - latest - https://github.com/gorakhargosh/watchdog/
- PyWin32 - latest - https://github.com/mhammond/pywin32
- WMI - latest - https://timgolden.me.uk/python/wmi/
NONE of the projects mentioned above are owned or maintained by PycraftDeveloper the maker of this repository, who would also like to say a big thank you to all the teams working on these projects!
You can check out our licenses and the licenses of all the C/C++ projects PMMA uses as standard here or on your installed version of PMMA (version 5 or later) under pmma/licenses.
Note: If you spot a problem in our licensing or distribution of third party dependencies please raise the problem as an issue here with the title-prefix: 'LICENSING: ' and we will respond to these problems as soon as possible. Thanks!
About
We have worked on numerous large applications using the Python programming language. Most notably Pycraft which is our flagship project, an OpenGL based game using Python. Every time we write these large projects, we often find ourselves writing the same utility programs - which are small programs that help to eliminate complexity in our larger program files. So we decided to combine all of these utility programs into this project, PMMA which is intended then to make writing these larger applications easier as we don't need to keep re-using the same utility programs. The benefits don't stop there though as we are also ensuring this API is as fast and efficient as possible.
Please note that PMMA is currently in a developmental state, meaning that the API is subject to change - we are hoping to remove this warning and improve backwards compatibility in PMMA 6.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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 pmma-5.0.16.tar.gz.
File metadata
- Download URL: pmma-5.0.16.tar.gz
- Upload date:
- Size: 437.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
582aa236970231a2bcadfd116d39b1585d64d43546e8bc037d2ccac8040245a9
|
|
| MD5 |
d1660a32bdfd00bded2ac982675696b8
|
|
| BLAKE2b-256 |
254155b359661c771b68c9f8a2203416e0abece3a822fc74f49bde588fff05f3
|
File details
Details for the file pmma-5.0.16-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: pmma-5.0.16-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0780fee058f3f948f3a126defb936250a135e4d5fb49b3163dac8b162635146e
|
|
| MD5 |
e704f1d5673297f2eb7e4ebbce2e1c51
|
|
| BLAKE2b-256 |
478bf0d09d7b4d986b6de9ba636cb5242cbefbc176603efde3b78734535f92fb
|
File details
Details for the file pmma-5.0.16-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pmma-5.0.16-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 14.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1416f24cf63b5beee3668f3c56e8a1308b6b72614264652ed991ff27f702d37f
|
|
| MD5 |
8739ccb67531a2afb064fb014ff21366
|
|
| BLAKE2b-256 |
40189f4b36a392f88d719f8fd718697c1d9b488fe82dd54f7e7c2bc25cf5db39
|
File details
Details for the file pmma-5.0.16-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: pmma-5.0.16-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
447fb4492fdc95cae3ad4fa8a0b5f7c7a599a7d60fad43c256816a1d7423bb1c
|
|
| MD5 |
e0985fd00406f96b95e463ddbbf20d17
|
|
| BLAKE2b-256 |
be89ff0f9daf34dc08149f7327d411e5fe8226410b7967ad1e43b918a23ed49d
|
File details
Details for the file pmma-5.0.16-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: pmma-5.0.16-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 27.6 MB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4407d4b53bc268dc736b13b01dd298af09195fe74ea5f5ac36526f3c3ab50f96
|
|
| MD5 |
3f2d56c5b9eeb764bd45f60592564ae2
|
|
| BLAKE2b-256 |
2eb994a119ad53bbe9e102310ff244ded4ff3fbad8673e4029a896879cafbc4e
|
File details
Details for the file pmma-5.0.16-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pmma-5.0.16-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 14.0 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17ed2b6ed4836543be162539299022ac98293c9539805392126df3c454ad7113
|
|
| MD5 |
92a3edca6a1304d901c69c4fe17934fc
|
|
| BLAKE2b-256 |
caa7d37baa2f956ac8a37fca255d97aa26cbe3879745e661cf74a0bf65a86786
|
File details
Details for the file pmma-5.0.16-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: pmma-5.0.16-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 11.4 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b35714eed1ef1e2e45979200d944537c8ff930fba60a510f5e43043421c32de4
|
|
| MD5 |
cd2b86652f6bbb6bfb6237315425f863
|
|
| BLAKE2b-256 |
93bf91c72efc809857add4e0c74073b14d9deb2a6f9d002063a315ee134df008
|
File details
Details for the file pmma-5.0.16-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pmma-5.0.16-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 14.0 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06ef0a4dbcefb660eae838840a298c8ec38899c299bdcde0dad2465095313206
|
|
| MD5 |
bc057dd8ce1d5e4f4fd3a2b6f8b1c256
|
|
| BLAKE2b-256 |
8c8bbab89e4b1903fd9c44f47165b29f2e2c3249b3850902a6b1e39c2134568f
|
File details
Details for the file pmma-5.0.16-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: pmma-5.0.16-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 11.5 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa5c147719cfe241b82a10c6cba0cf3a0abb5ad72656f7c0dcc9d5bcf0cbe1ba
|
|
| MD5 |
15bdc36663d40b92c2edfd0ab00cc03f
|
|
| BLAKE2b-256 |
d0da6ff0dfd1576a0ae1a16bb05e7ab603243a65947c4fa3e058da04f369a420
|
File details
Details for the file pmma-5.0.16-cp38-cp38-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: pmma-5.0.16-cp38-cp38-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 14.2 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.23
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e26e08182ea01ffc66da376a37c4e61a50489105efda5bd472aebd5514ed345b
|
|
| MD5 |
b9c60903f1ec3f6e98eb4c2dc446a2c0
|
|
| BLAKE2b-256 |
2275030ddb17163afb278d3da994fe34210e7cac1fea00a8d61f7b6d823f260d
|