This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

EPP Client for Python

Project Description


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


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.

Bleeding Edge

Alternatively, you may track the development version by cloning the git repository instead.

pip install -e git+



>>> 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.

Working with EPP commands and responses

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()
>>> = ""
>>> print cmd
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">
      <domain:info xmlns="urn:ietf:params:xml:ns:domain-1.0" xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">
>>> repr(cmd)
"{'epp': {'command': {'info': {'domain:info': {'name': ''}}}}}"

Using XmlDictObject

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({})
  <d a="true">1</d>

As a shorthand for elements without attributes:

>>> o['x'] = {'d': 1}
>>> print o.to_xml({})

Multiple elements?

>>> o['x'] = {'d': ['1', '2', '3']}
>>> print o.to_xml({})
Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
EPP-0.8.1.tar.gz (16.0 kB) Copy SHA256 Checksum SHA256 Source Aug 17, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting