Project URLs:
Description
The erlport Python library implements Erlang external term format and Erlang port protocol for easier integration of Python and Erlang.
The library exports the following classes and functions:
Port(packet=1, use_stdio=False, compressed=False) - class implementing port which connects with the corresponding Erlang port. See open_port/2 for description of packet and use_stdio arguments. compressed is the zlib compression level or True for the default of 6.
Protocol() - class which simplifies creation of request-response protocols.
Atom(str) - class which represents an Erlang atom.
String(unicode | list) - class representing an Erlang string. Must be used as a wrapper if Unicode string expected instead of a list.
BitBinary(str) - class representing an Erlang bitstring whose length in bits is not a multiple of 8.
decode(str) - function to convert binary data into a term.
encode(term, compressed=False) - function to convert a term into the external format. compressed is the zlib compression level or True for the default of 6.
IncompleteData - exception raised by decode() in case of incomplete input data.
Installation
Prerequisites:
Erlang >= R11B-4
Python >= 2.4
To install the library use easy_install from setuptools package like this:
$ easy_install erlport
Examples
See examples directory in the source distribution for additional examples.
For simple request-response protocol use Port and Protocol on the Python side like this:
from erlport import Port, Protocol
class HelloProtocol(Protocol):
def handle_hello(self, name):
return "Hello, %s" % name
if __name__ == "__main__":
proto = HelloProtocol()
proto.run(Port(use_stdio=True))
On the Erlang side function hello() can be called like this:
-module(hello).
-export([hello/1]).
hello(Name) ->
Port = open_port({spawn, "python -u hello.py"}, [{packet, 1}, binary]),
port_command(Port, term_to_binary({hello, Name})),
receive
{Port, {data, Data}} ->
binary_to_term(Data)
end.
Test it in the Erlang shell:
1> c(hello).
{ok,hello}
2> hello:hello("Bob").
"Hello, Bob"
Notes for Windows users
It seems Erlang’s open_port function ignores nouse_stdio option on Windows. So the Port class must be instantiated with use_stdio=True argument.
Python must be ran with -u option to open stdin/stdout in binary mode.
Feedback
Please report bugs, offer suggestions or feedback at:
Report bugs at http://github.com/hdima/erlport/issues
Email me at <dima at hlabs.org>
Write or follow me at http://twitter.com/hdima
Release files for erlport 0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| erlport-0.6.tar.gz | 13.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| erlport-0.6-py2.6.egg | Legacy Egg format | - | - | Details |
Total release size: 28.7 kB
Release files / erlport-0.6.tar.gz
| Download URL | erlport-0.6.tar.gz |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bbd894e1502a00964bca8a84283048cee599234b5a59fffa21c82e09366a399c
|
|
BLAKE2b-256 checksum How to use checksums |
8a78e2a89dd0802f2f4a04a22d2dfb1855ed75d55a6ae219ef251e0c723d0f43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / erlport-0.6-py2.6.egg
| Download URL | erlport-0.6-py2.6.egg |
|---|---|
| Size | 15.5 kB |
| Tags | Egg |
|
SHA-256 checksum How to use checksums |
f6662a9b141142c1a1234af6cc9d38d7ac1ec841e59495bc1ba61e8b0b94ac6d
|
|
BLAKE2b-256 checksum How to use checksums |
6d314f7393314dba575bb63036c8c573f13c35be5516b28733711a50ba9e76af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |