Skip to main content

Read and parse a Primavera P6 xer file.

Project description

Xer-Reader

Read the contents of a Primavera P6 XER file useing Python.

Xer-Reader makes it easy to read, parse, and convert the data in a XER file to other formats.

Refer to the Oracle Documentation for more information regarding how data is mapped to the XER format.
Tested on XER files exported as versions 15.2 through 19.12.

Install

Windows:

pip install xer-reader

Linux/Mac:

pip3 install xer-reader

Usage

Import the XerReader class from xer-reader.

from xer-reader import XerReader

Create a new instance of a XerReader passing in the XER file as an argument. XerReader can accept the file path represented as a str or pathlib Path object, or a Binary file received as a response from requests, Flask, FastAPI, etc...

file = r"/path/to/file.xer"
reader = XerReader(file)

Attributes

  • data [str] - The contents of the XER file as a string.
  • export_date [datetime] - The date the XER file was exported.
  • export_user [str] - The P6 user who export the XER file.
  • export_version [str] - The P6 verison used to export the XER file.
  • file_name [str] - The name of the file without the '.xer' extension.
  • tables [dict] - The tables included in the XER file parsed as dictionary objects.

Methods

check_errors() -> list[str]
Checks the XER file for missing tables and orphan data, and returns the results as a list of errors.

  • Missing tables can occur when an entry in Table 1 points to an entry in Table 2 but Table 2 does not exist at all.
  • Orphan data occurs when an entry in Table 1 points to an entry Table 2 but the entry in Table 2 does not exist.

delete_tables(*table_names: str) -> str
Delete a variable number of tables (table_names) from the XER file data and returns a new string (Does not modify XerReader.data attribute).

In the following example the tables associated with User Defined Fields are removed from the XER file contents and stored in a new variable new_xer_data, which can then be written to a new XER file:

new_xer_data = reader.delete_tables("UDFTYPE", "UDFVALUE")

with open("New_XER.xer", "w", encoding=XerReader.CODEC) as new_xer_file:
    new_xer_file.write(new_xer_data)
new_file.close()

get_table_str(table_name: str) -> str
Get a string for a specific table in the XER file.

to_csv(file_directory: str | Path) -> None
Generate a CSV file for each table in the XER file using 'tab' as the delimiter. CSV files will be created in the current working directory.
Optional: Pass a string or Path object (file_directory) to speficy a folder to store the CSV files in.

to_json(*tables: str) -> str
Generate a json compliant string representation of the tables in the XER file.
Optional: Pass in specific table names to include in the json string.

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

xer_reader-0.1.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

xer_reader-0.1.0-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file xer_reader-0.1.0.tar.gz.

File metadata

  • Download URL: xer_reader-0.1.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.6 Linux/5.15.90.1-microsoft-standard-WSL2

File hashes

Hashes for xer_reader-0.1.0.tar.gz
Algorithm Hash digest
SHA256 082ef4d7d8f47c3f373a9ca015ce57b47af86f7ec2df6cc281a7daa217b97fed
MD5 68e87a3e224b2be193ef7c0ddfb3e181
BLAKE2b-256 99cfe4fb5076174c24df490bfff12ca01c8c57a5afc7b3008a6ca4690b30c640

See more details on using hashes here.

File details

Details for the file xer_reader-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: xer_reader-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.6 Linux/5.15.90.1-microsoft-standard-WSL2

File hashes

Hashes for xer_reader-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eea85456c2a9574e63316157d56d684c794202866351f604a052c73d88111024
MD5 9100e8f48632cf1ddb41332b1ec1a698
BLAKE2b-256 8a838f1430d2ffde8577055256cc15676842a293242933fae47881078df696fb

See more details on using hashes here.

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