Skip to main content
Warning: You are using the test version of PyPI. This is a pre-production deployment of Warehouse. Changes made here affect the production instance of TestPyPI (
Help us improve Python packaging - Donate today!

Libraries for processing ebCore CPPA version 3 documents

Project Description

A package to process ebCore CPPA3 documents.


The CPPA3 package provides a collection of Python modules to process OASIS ebCore CPPA3 documents and related functionality. CPPA3 is version 3 of the ebXML Collaboration Protocol and Agreement specification. A CPP is an XML document representing a party’s technical and business collaboration capabilities. A CPA is an XML document representing the agreed collaboration parameters of two parties. It can be used to configure B2B messaging systems used to exchange messages between two parties using the agreed settings. The ebCore Technical Committee (ebXML Core) is maintaining and enhancing the CPPA specification.

The development of this package tracks the development of the ebCore CPPA3 schema and specification. This release of the package is compatible with the draft version 2016_02_17, available from That version supports configuration covering:

Currently, two modules are provided:

  • provides functionality to automatically form a CPA from two CPPs.
  • provides functionality to generate a (set of) P-Modes from a CPA.

Various future enhancements of this library are planned.

As the CPPA3 schema is still under development, it may change in backward-incompatible ways, and this library will be updated accordingly.

This module defines a single function:

  • unify.

This function operates on two CPP XML documents, parsed into element trees using the Python lxml library, and returns a CPA, if one exists. If no CPA can be created, a UnificationException is thrown instead.

Internally in the module, the unify function instantiates an object of the CPABuilder class, and invokes the unify method of that object with the specified CPP documents. CPA formation is similar to unification in logic programming and involves exploring many (successful or unsuccessful) paths, possibly repeatedly. The unify function memoizes partial search results, and the class provides data structures to locally store those results (which are specific to the two input CPPs and therefore not useful in other contexts). The purpose of memoization is to some extent optimization, but also keeps the logging human-readable.

This module defines the following functions:

  • load_pmodes_from_cpa
  • validate_pmode

The load_pmodes_from_cpa function operates on a CPA document and returns a list of processing modes. Using optional parameters, the function can be restricted to processing modes involving a particular named or identified party. If partyname is specified, it will skip any definitions not involving a party with that name. If partyid is specified, it will skip any definitions not involving a party with that name.

The validate_pmode function operates on list of processing modes and validates this list against a JSON schema for processing modes that is part of the library.

Test Suite

A test suite is provided for the two modules. To run the test suite, you can optionally validate the CPP or CPA documents against the draft CPPA3 XML schema. To do this, you must download the schema to a readable location on the filesystem, and set the CPPA3XSDDIR environment variable to this location. If the variable is not set, no validation is done.

Release History

Release History

This version
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
cppa3-0.3.6.tar.gz (113.6 kB) Copy SHA256 Checksum SHA256 Source Mar 16, 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