{ "info": { "author": "The Py3AMF Project", "author_email": "yhbu@stdc.so", "bugtrack_url": null, "classifiers": [], "description": "# Py3AMF\nPy3AMF is fork of [PyAMF](https://github.com/hydralabs/pyamf) to support Python3\n\n### Why Py3AMF\nBy states of issues and PR in [PyAMF](https://github.com/hydralabs/pyamf), it dosen't seems to be under developing.\nAnd another PR that supports Py3 has been discontinued for over two years.\nThis is the only Python AMF Project which trying to support Py3 under developing on GitHub.\n\n### State\nPass `setup.py test`\nBut, adapters were not tested\n\n### Warning\nThis project isn't completed.\nIf you want to make it fast, please send PR.\n\n### Install\nThis was tested on Ubuntu 16.04.2 and macOS 10.12.4\n\nTo install, you can use pip3 on your environment. \n```\npip3 install Py3AMF\n```\n\nOr, you can use setup.py to develop.\n```\ngit clone git@github.com:StdCarrot/Py3AMF.git\ncd Py3AMF\n# python3 setup.py test\npython3 setup.py install\n```\n\n### Simple example\nEverything is same with PyAMF, but you have to concern str and bytes types.\n```python\nimport pyamf\nfrom pyamf import remoting\nfrom pyamf.flex import messaging\nimport uuid\nimport requests\n\nmsg = messaging.RemotingMessage(operation='retrieveUser', \n destination='so.stdc.flexact.common.User',\n messageId=str(uuid.uuid4()).upper(),\n body=['user_id'])\nreq = remoting.Request(target='UserService', body=[msg])\nev = remoting.Envelope(pyamf.AMF3) \nev['/0'] = req\n\n# Encode request \nbin_msg = remoting.encode(ev)\n\n# Send request; You can use other channels like RTMP\nresp = requests.post('http://example.com/amf', \n data=bin_msg.getvalue(), \n headers={'Content-Type': 'application/x-amf'})\n\n# Decode response\nresp_msg = remoting.decode(resp.content)\nprint(resp_msg.bodies)\n```\n\n## TODO\n- Check adapters\n\n------------------------------------------------------\n\n[PyAMF](http://www.pyamf.org) provides Action Message Format ([AMF](http://en.wikipedia.org/wiki/Action_Message_Format)) support for [Python](http://python.org) that is compatible with the [Adobe Flash Player](http://en.wikipedia.org/wiki/Flash_Player). It includes integration with Python web frameworks like [Django](http://djangoproject.com), [Pylons](http://pylonshq.com), [Twisted](http://twistedmatrix.com), [SQLAlchemy](http://sqlalchemy.org), [web2py](http://www.web2py.com) and [more](http://pyamf.org/tutorials/index.html).\n\nThe [Adobe Integrated Runtime](http://en.wikipedia.org/wiki/Adobe_AIR) and [Adobe Flash Player](http://en.wikipedia.org/wiki/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](http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol) 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.\n\nAMF3, the default serialization for [ActionScript](http://dev.pyamf.org/wiki/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](http://dev.pyamf.org/wiki/ByteArray), [ArrayCollection](http://dev.pyamf.org/wiki/ArrayCollection), [ObjectProxy](http://dev.pyamf.org/wiki/ObjectProxy) and [IExternalizable](http://dev.pyamf.org/wiki/IExternalizable).\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/StdCarrot/Py3AMF", "keywords": "python3 amf amf0 amf3 flex flash remoting rpc http flashplayer air bytearray", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "Py3AMF", "package_url": "https://pypi.org/project/Py3AMF/", "platform": "", "project_url": "https://pypi.org/project/Py3AMF/", "project_urls": { "Homepage": "https://github.com/StdCarrot/Py3AMF" }, "release_url": "https://pypi.org/project/Py3AMF/0.8.9/", "requires_dist": [ "defusedxml", "Django (>=0.96); extra == 'django'", "Elixir (>=0.7.1); extra == 'elixir'", "lxml (>=2.2); extra == 'lxml'", "six (>=1.10.0); extra == 'six'", "SQLAlchemy (>=0.4); extra == 'sqlalchemy'", "Twisted (>=2.5.0); extra == 'twisted'", "wsgiref; extra == 'wsgi'" ], "requires_python": "", "summary": "AMF support for Python", "version": "0.8.9" }, "last_serial": 4076183, "releases": { "0.8.3": [], "0.8.4": [ { "comment_text": "", "digests": { "md5": "770c67fbe9a35a978ef4f7ccbcd04238", "sha256": "f2a23eee561e57a5284f59707a0c9d6e0b4ab63af13b616f5d61732b35734d20" }, "downloads": -1, "filename": "Py3AMF-0.8.4.tar.gz", "has_sig": false, "md5_digest": "770c67fbe9a35a978ef4f7ccbcd04238", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1612816, "upload_time": "2017-04-06T02:54:00", "url": "https://files.pythonhosted.org/packages/75/53/9b29570769decb910225044d076d32c9d7284ac8409906ee92689533a51d/Py3AMF-0.8.4.tar.gz" } ], "0.8.5": [ { "comment_text": "", "digests": { "md5": "23edcbdb11ac682d27df8351cb42164e", "sha256": "5858df63992c3941236caf084a1332b9e22f38c2dd5c31209634f03d813cc97c" }, "downloads": -1, "filename": "Py3AMF-0.8.5.tar.gz", "has_sig": false, "md5_digest": "23edcbdb11ac682d27df8351cb42164e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1612783, "upload_time": "2017-04-06T02:54:47", "url": "https://files.pythonhosted.org/packages/96/bd/2ec7aab3cbeafd4fc41b2aa8f95c7b2bf9cddd215f5440395b5c9cd4b8fb/Py3AMF-0.8.5.tar.gz" } ], "0.8.6": [ { "comment_text": "", "digests": { "md5": "51183f11f7f8362a0a605ff0f4de822e", "sha256": "24d7aab474b64af64e58f684f36edb91c9ab48783ee888a896cde70619b236d4" }, "downloads": -1, "filename": "Py3AMF-0.8.6.tar.gz", "has_sig": false, "md5_digest": "51183f11f7f8362a0a605ff0f4de822e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1613867, "upload_time": "2017-04-26T08:23:08", "url": "https://files.pythonhosted.org/packages/cd/f8/7ddb2c0119a83a32eda9db4a6fd07db4ee44e838da1a7d2f7a6872e9a127/Py3AMF-0.8.6.tar.gz" } ], "0.8.7": [ { "comment_text": "", "digests": { "md5": "be02bf5c44016ea6889aa9b0247dcaa9", "sha256": "6b3c876f70039b9d885c53eb6c1508afcdcbdca5e6a49e4a80ee37e0c73fb6e7" }, "downloads": -1, "filename": "Py3AMF-0.8.7.tar.gz", "has_sig": false, "md5_digest": "be02bf5c44016ea6889aa9b0247dcaa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1613951, "upload_time": "2017-08-04T01:44:09", "url": "https://files.pythonhosted.org/packages/0a/b7/60823a6a19db09573cca3a65bef6af14fba23b894461184559d7bf61f46e/Py3AMF-0.8.7.tar.gz" } ], "0.8.8": [ { "comment_text": "", "digests": { "md5": "b37a8b78d7e2162cdb50c1bdb262db46", "sha256": "56dac8645d37636921d873abb073018a56bf216b281eb0ee01f281126fe1f1a2" }, "downloads": -1, "filename": "Py3AMF-0.8.8.tar.gz", "has_sig": false, "md5_digest": "b37a8b78d7e2162cdb50c1bdb262db46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1614009, "upload_time": "2018-04-03T09:07:32", "url": "https://files.pythonhosted.org/packages/1a/39/665fd16467b87eaf63398899eefffdc709d51d86de2f4e0f7b4eb931de22/Py3AMF-0.8.8.tar.gz" } ], "0.8.9": [ { "comment_text": "", "digests": { "md5": "325802414a55555e363197ef4a614709", "sha256": "90bf9db260edc92b5f10d896a14b58ec32b6c3ce917da31f031d675c89b65ef6" }, "downloads": -1, "filename": "Py3AMF-0.8.9-py3-none-any.whl", "has_sig": false, "md5_digest": "325802414a55555e363197ef4a614709", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 201649, "upload_time": "2018-07-18T03:25:51", "url": "https://files.pythonhosted.org/packages/47/90/4f0a277dcad3acb7cff3726cbda931f7b853588e38a1d345a344fe7f7247/Py3AMF-0.8.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1f2fa26b58a9765e778853334d797d2", "sha256": "f1bf5acdc7a6c15e8b2126372386d5891e6777d0665722bdf055365ccf35b0de" }, "downloads": -1, "filename": "Py3AMF-0.8.9.tar.gz", "has_sig": false, "md5_digest": "e1f2fa26b58a9765e778853334d797d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1614086, "upload_time": "2018-07-18T03:27:33", "url": "https://files.pythonhosted.org/packages/b0/17/125e641c1ce16a1e64a194e0bf1f9a96bfd00df7b269d6730d5430bf2cc1/Py3AMF-0.8.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "325802414a55555e363197ef4a614709", "sha256": "90bf9db260edc92b5f10d896a14b58ec32b6c3ce917da31f031d675c89b65ef6" }, "downloads": -1, "filename": "Py3AMF-0.8.9-py3-none-any.whl", "has_sig": false, "md5_digest": "325802414a55555e363197ef4a614709", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 201649, "upload_time": "2018-07-18T03:25:51", "url": "https://files.pythonhosted.org/packages/47/90/4f0a277dcad3acb7cff3726cbda931f7b853588e38a1d345a344fe7f7247/Py3AMF-0.8.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1f2fa26b58a9765e778853334d797d2", "sha256": "f1bf5acdc7a6c15e8b2126372386d5891e6777d0665722bdf055365ccf35b0de" }, "downloads": -1, "filename": "Py3AMF-0.8.9.tar.gz", "has_sig": false, "md5_digest": "e1f2fa26b58a9765e778853334d797d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1614086, "upload_time": "2018-07-18T03:27:33", "url": "https://files.pythonhosted.org/packages/b0/17/125e641c1ce16a1e64a194e0bf1f9a96bfd00df7b269d6730d5430bf2cc1/Py3AMF-0.8.9.tar.gz" } ] }