Metadata-Version: 1.1
Name: cppa3
Version: 0.22
Summary: Libraries for processing ebCore CPPA version 3 documents
Home-page: https://www.oasis-open.org/committees/document.php?document_id=57550
Author: Pim van der Eijk
Author-email: pvde@sonnenglanz.net
License: mit
Description: =====
        cppa3
        =====
        
        A package to process ebCore CPPA3 documents.
        
        Description
        ===========
        
        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 Profile 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 latest draft version 2017-03-19, available from
        https://www.oasis-open.org/committees/document.php?document_id=60315 (specification WD05)
        and
        https://www.oasis-open.org/committees/document.php?document_id=60314 (XML schema draft #15)
        That version supports configuration covering:
        
         * the complete ebMS 3.0 Core OASIS Standard (docs.oasis-open.org/ebxml-msg/ebms/v3.0/core/os/)
         * the complete AS4 OASIS Standard (http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/profiles/AS4-profile/v1.0/)
         * all of the ebMS 3.0 Part 2 Advanced Features specification (http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/part2/201004/).
         * the ebMS3 SAML Conformance Clause (http://docs.oasis-open.org/ebxml-msg/ebms-v3.0-saml-conformance/v1.0/)
         * the ENTSOG, CEF and SuperAnnuation usage profiles of ebMS3/AS4.
         * ebMS 2.0 (https://www.oasis-open.org/standards#ebxmlmsgv2)
         * SOAP 1.1 and 1.2 messaging
         * WS-ReliableMessaging 1.1, 1.2 (http://docs.oasis-open.org/ws-rx/wsrm/v1.2/) and WS-Reliability 1.1 (http://docs.oasis-open.org/wsrm/2004/06/ws-reliability-1.1.xsd)
         * and the AS1, AS2 (https://tools.ietf.org/html/rfc4130) and AS3 IETF EDIINT specifications.
         * HTTP 1.1, HTTP/2, FTP and STMP transports.
        
        Currently, four modules are provided:
        
        * unify.py provides functionality to automatically form a CPA from two CPPs.
        * profile.py allows CPPs or CPAs that reference "ChannelProfile" to pull in defaults specified for those profiles
        * pmode.py provides functionality to generate a (set of) P-Modes from a CPA.
        * cpa2.py is an incomplete experimental module that converts a subset of v3 CPAs to version 2.0 CPA.
        * schema.py has utilities to work with the CPPA3 schema.
        
        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.
        
        unify.py
        ========
        
        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.
        
        profile.py
        ==========
        
        This module defines a ChannelProfileHandler class, which has 
        
        * *load_profile_config* 
        
        This method loads XML files containing definitions of Channels with a ChannelProfile element. The other content is 
        interpreted as default values for that profile. 
        
        * *apply_profile_config*
        
        This method processes a CPP or CPA file and adds, for each Channel with a configured ChannelProfile, the relevant defaults. 
        The CPP or CPA can override these values.
        
        pmode.py
        ========
        
        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.
        
        History
        =======
        
        v0.22  2017-04-02   Improvements in profile handler in combination with channel features. Updated tests. New schema.py.
        
        v0.21  2017-03-30   Some fixes and more test samples, covering DATA AND PAYMENT STANDARDS
        MESSAGE ORCHESTRATION AND PROFILES from https://www.ato.gov.au/uploadedFiles/Content/SPR/downloads/SPR26583msgorchest.pdf
        
        v0.20  2017-03-27   Fix to pmode.py for AS4 compression
        
        v0.19  2017-03-27   More flexibile profiling: separate templates for "send" en "receiving" channel profiles;
        default certificates for signing, encryption, client and server authentication; ebMS3 Split/Join/Compress
        feature; IPv4 and IPv6 checks; HTTP configuration covers HTTP 1.1 and HTTP/2.  Support for Web Services
        Reliable Messaging protocols (WS-ReliableMessaging and WS-Reliability).
        
        v0.18  2017-03-18   Delegation,  CertificateDefaults. Aligned with OASIS spec WD05 and 
        ebCore schema #14.
        
        v0.17  2017-02-09   EDIINT (AS1, AS2, AS3) support including features. WS-Addressing support.
        
        v0.16  2017-01-31   SAML token supports and WS-Addressing improvements
        
        v0.15.1 2017-01-27  Multihop improvements
        
        v0.14, 2017-01-04  Support SecurityPolicy in unify.py
        
        v0.13, 2016-12-27  Fixed a bug in the JSON Pmode generator. Also fixed some tests that had expiration
        or activation around 2017-01-01. ..
        
        v0.12, 2016-12-14  Support for the "allowed" and "denied" control attributes.
        
        v0.11, 2016-11-07  Payload security;  bug in handling of cppa:Expression
        
        v0.10, 2016-11-01  New module "profile.py" for ChannelProfile.
        
        v0.9 2016-10-06 Renamed agreementid to agreementidfun. Updated to do list.
        
        v0.8 2016-10-02.  Various Fixes, more tests.
        
        v0.7.8 2016-09-21.  Updated readme.  PullHandling. More Channel Features.
        
        v0.7.1 2016-09-20.  Channel feature support for security and reliable messaging.  
        Tests added correspondingly.
        
        v0.6.1, 2016-08-31.  Customizable AgreementIdentifier; JSON schema fixes.
        
        v0.5.3, 2016-08-26.  Some changes to ensure generated CPAs are schema-valid;  cleaned up test suite.
        
        v0.4,  2016-04-01.  Experimental CPA2 module;  fixes to certificates and trust anchor handling.
        
        v0.3.9, 2016-03-16.  First public release.
        
        
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Intended Audience :: Developers
