AMF support for Python
Project description
Py3AMF is a Python 3 fork of PyAMF. It provides Action Message Format (AMF0 and AMF3) encoding, decoding, and remoting support for Python applications.
Current support
The 0.9.0 release line keeps the supported surface small and focused:
CPython 3.11, 3.12, 3.13, and 3.14 are tested with the python:3.11-slim, python:3.12-slim, python:3.13-slim, and python:3.14-slim container images.
Older Python 3 versions are not intentionally blocked, but they are not part of the active test matrix.
AMF0, AMF3, core remoting, the WSGI gateway, and pure Python runtime code are supported.
pyamf.adapters remains available as helper and compatibility modules.
Jython, Cython extension builds, framework gateways, and automatic conversion of third-party framework models are no longer officially supported.
Applications should convert framework-specific objects at the application layer before passing data to Py3AMF.
Install
Install the released package with pip:
python -m pip install Py3AMF
For local development:
git clone git@github.com:StdCarrot/Py3AMF.git cd Py3AMF python -m pip install -r test-requirements.txt python -c "import pyamf.tests; pyamf.tests.main()" python -m pip install .
Simple example
Everything is same with PyAMF, but you have to concern str and bytes types.
import pyamf
from pyamf import remoting
from pyamf.flex import messaging
import uuid
import requests
msg = messaging.RemotingMessage(operation='retrieveUser',
destination='so.stdc.flexact.common.User',
messageId=str(uuid.uuid4()).upper(),
body=['user_id'])
req = remoting.Request(target='UserService', body=[msg])
ev = remoting.Envelope(pyamf.AMF3)
ev['/0'] = req
# Encode request
bin_msg = remoting.encode(ev)
# Send request; You can use other channels like RTMP
resp = requests.post('http://example.com/amf',
data=bin_msg.getvalue(),
headers={'Content-Type': 'application/x-amf'})
# Decode response
resp_msg = remoting.decode(resp.content)
print(resp_msg.bodies)
Action Message Format is a compact binary format used by Adobe Flash Player and Adobe AIR applications. Py3AMF keeps the AMF codec and WSGI remoting pieces current for modern Python 3 runtimes.
The Adobe Integrated Runtime and Adobe Flash Player use AMF to communicate between an application and a remote server. AMF encodes remote procedure calls (RPC) into a compact binary representation that can be transferred over HTTP/HTTPS or the RTMP/RTMPS protocol. Objects and data values are serialized into this binary format, which increases performance, allowing applications to load data up to 10 times faster than with text-based formats such as XML or SOAP.
AMF3, the default serialization for ActionScript 3.0, provides various advantages over AMF0, which is used for ActionScript 1.0 and 2.0. AMF3 sends data over the network more efficiently than AMF0. AMF3 supports sending int and uint objects as integers and supports data types that are available only in ActionScript 3.0, such as ByteArray, ArrayCollection, ObjectProxy, and IExternalizable.
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 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 py3amf-0.9.0.tar.gz.
File metadata
- Download URL: py3amf-0.9.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64f4a7f19ac7fbd3ef58efec722532d200d9c8f3ec314e25025fbadcd5c55a02
|
|
| MD5 |
1a3a7058212a75974ad22f9ae7556e29
|
|
| BLAKE2b-256 |
f9d893c3a0d838cefcf77174709ba9cd8159c20a747950a453d0fb4bc3010466
|
File details
Details for the file py3amf-0.9.0-py3-none-any.whl.
File metadata
- Download URL: py3amf-0.9.0-py3-none-any.whl
- Upload date:
- Size: 204.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ba3bfadf4ae5663151bee0612d6696b0092e4452d667b3f8120a8b3d8d04552
|
|
| MD5 |
eaf9af99f0571e082015ceb0f7cce797
|
|
| BLAKE2b-256 |
4063fd538222b1b5333ff536ea3676d0b4e15b23b4897f042761541910bef055
|