eppy is a Python-based API for the Extensible Provisioning Protocol (EPP), commonly used for communication between domain registries and registrars.
- EPP Client
- Uses standard python logging
- TLS/SSL support
- EPP Server stub
- Test suite
- Load testing support
- Optional gevent
If you're using a virtualenv (almost always a good idea), activate it first.
To install eppy
:
pip install EPP
or:
easy_install EPP
NOTE: While the module name is eppy
, the package on PyPI is named EPP
because eppy was already taken by another unrelated project.
Alternatively, you may track the development version by cloning the git repository instead.
pip install -e git+https://github.com/cloudregistry/eppy.git#egg=EPP
>>> from eppy.client import EppClient >>> client = EppClient(ssl_keyfile='client.key', ssl_certfile='client.pem') >>> client.connect('server.example.tld') >>> resp = client.login('userid', 'secretpassword') >>>
Examples can be found in the examples
directory.
EPP documents can be sent as strings using the EppClient.write
method.
Alternatively, use the provided EPPDoc
subclasses.
- ::
>>> from eppy.doc import EppInfoDomainCommand >>> cmd = EppInfoDomainCommand() >>> cmd.name = "example.org" >>> print cmd <epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> <command> <info> <domain:info xmlns="urn:ietf:params:xml:ns:domain-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"> <name>example.org</name> </domain:info> </info> </command> </epp>
>>> repr(cmd) "{'epp': {'command': {'info': {'domain:info': {'name': 'example.org'}}}}}"
XmlDictObject
is a convenience wrapper for generating and reading EPP
documents by translating to and from Python dictionary.
>>> from eppy.xmldict import XmlDictObject >>> o = XmlDictObject({'x': {}}) >>> print o.to_xml([]) <x />
Creating a child element with an attribute and text node:
>>> o['x'] = {'d': {'@a': 'true', '_text': '1'}} >>> print o.to_xml({}) <x> <d a="true">1</d> </x>
As a shorthand for elements without attributes:
>>> o['x'] = {'d': 1} >>> print o.to_xml({}) <x> <d>1</d> </x>
Multiple elements?
>>> o['x'] = {'d': ['1', '2', '3']} >>> print o.to_xml({}) <x> <d>1</d> <d>2</d> <d>3</d> </x>