Skip to main content

EPP Client for Python

Project description

Introduction

eppy is a Python-based API for the Extensible Provisioning Protocol (EPP), commonly used for communication between domain registries and registrars.

Features

  • EPP Client

  • Uses standard python logging

  • TLS/SSL support

  • EPP Server stub

  • Test suite

  • Load testing support

  • Optional gevent

Installation

If you’re using a virtualenv (almost always a good idea), activate it first.

Stable

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.

Bleeding Edge

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

Usage

Client

>>> 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()
>>> 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'}}}}}"

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({})
<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>

Project details


Download files

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

Source Distribution

EPP-0.8.1.tar.gz (16.0 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page