Package: lixi
LIXI Package Overviewlixiis a python package that simplifies working with the LIXI data standards and with messages that are based on the LIXI standards.LIXI Limitedhas been facilitating collaboration within the Australian Lending industry for almost two decades, by managing a suite of data standards (for both XML & JSON) used across the industry to improve the efficiency of B2B electronic messaging.This package is offered under an open source license, however the features are effective when used in conjunction with a LIXI2 Schema which are available to LIXI members  and licensees.FeaturesThe development of this package was driven by a need to simplify the most common tasks associated with the use of the LIXI2 schemas and sample messages. Key features include the following:Read an XML or JSON fileValidate an XML or JSON file against a LIXI2 Schema.Validate a LIXI package (XML or JSON) against a Schematron file that contains business rules (in the form of rule and assertions).Convert a valid LIXI2 XML file to the equivalent JSON representation.Convert a valid LIXI2 JSON file to the equivalent XML representation.Transform a LIXI2 message to an older/newer LIXI2 version or show warnings regarding any data loss that would occur in such a transformation.Create a list of all LIXI Paths that represent the elements and attributes used in a single package.Create a set ofCustomisation by Restrictioninstructions or schema based on a single LIXI message.Create a customised schema based on a set of Customisation by Restriction instructions.Create LIXI Schema Documentation for any LIXI2 Transaction Schema or any schema created by Customisation by Restriction.InstallationRequirementsThe installation of thelixipackage requirespipto be installed for package installation with your Python installation.Thelixipackage is not supported by Python 2.The installation of thelixiusing pip will install the following libraries as required dependencies:boto3isodatejsonschemalxmlxmljsonInstallation with pipOpen a command prompt or a bash window on your PC and type the following command.pipinstalllixiNow to use thelixipackage, simply import the library into your Python project, like so:importlixiand that's it! You're ready to go.AssumptionsThelixipackage requires you to have access to the required LIXI schemas. Members and Licensees of LIXI can access these through the LIXI website or via an API provided by LIXI (contact LIXI for more details if you would like to use this API retrieval mechanism).Further DocumentationDetailed class documentation generated by Sphinx along with a quick start guide are available on the LIXI website to logged in members and licensees availablehere.Source Code ManagementGIT ProjectThis LIXI python library is made available through an open source license, but because the automated testing of the project requires access to the LIXI Schemas that are available to LIXI Members and Licensees, thelixi-pypiproject that we use to manage the library will only be available to members and licensees once it stabilises. For now, the source code is available to LIXI Staff, although the library is available on the Python Package Index for anyone to install.ContributingFor now, you can contribute to the project by installing the library from PyPI and emailing us onlixilab@lixi.org.auto:suggest new features;raise issues;and report bugs.Branching, Build, Test & DeploymentThelixi-pypiproject contains 3 permanent branches 'master', 'test' and 'dev'. A feature branch 'feature' may be created for new functionality added. Two of these ('master' & 'test') are protected branches, and only allow commits through merge requests.Commits and pushes to the 'feature' and 'dev' branch executes a series of test cases and generates the library documentation using Sphinx but does not push the library to any pypi repository.Merges into the 'test' branch run the same tests and generate the documentation, but upload the build to the test PyPi repository to be tested (available here).Merges into the 'master' branch will also test the build and generate docs butonlydeploy to production PyPI (available here) when a tag is applied on the master branch.The build version number is maintained in CI/CD variables. The first digit is incremented for breaking changes, the second digit is incremented for new features and the third digit is incremented for all other changes,  further digits are timestamps for development/test versions only.