Skip to main content

validate data stored in CSV, PRN, ODS or Excel files

Project description

PyPI Documentation Build Status Test coverage Black

Cutplace is a tool and API to validate that tabular data stored in CSV, Excel, ODS and PRN files conform to a cutplace interface definition (CID).

As an example, consider the following customers.csv file that stores data about customers:


A CID can describe such a file in an easy to read way. It consists of three sections. First, there is the general data format:

  Property Value
D Format Delimited
D Encoding UTF-8
D Header 1
D Line delimiter LF
D Item delimiter ,

Next there are the fields stored in the data file:

  Name Example Empty Length Type Rule
F customer_id 3798     Integer 0…99999
F surname Miller   …60    
F first_name John X …60    
F date_of_birth 1978-11-27     DateTime YYYY-MM-DD
F gender male X   Choice female, male

Optionally you can describe conditions that must be met across the whole file:

  Description Type Rule
C customer must be unique IsUnique customer_id

The CID can be stored in common spreadsheet formats, in particular Excel and ODS, for example cid_customers.ods.

Cutplace can validate that the data file conforms to the CID:

$ cutplace cid_customers.ods customers.csv

Now add a new line with a broken date_of_birth:


Cutplace rejects this file with the error message:

customers.csv (R12C4): cannot accept field ‘date_of_birth’: date must match format YYYY-MM-DD (%Y-%m-%d) but is: ‘04.08.1953’

Additionally, cutplace provides an easy to use API to read and write tabular data files using a common interface without having to deal with the intrinsic of data format specific modules. To read and validate the above example:

import cutplace
import cutplace.errors

cid_path = 'cid_customers.ods'
data_path = 'customers.csv'
    for row in cutplace.rows(cid_path, data_path):
        pass  # We could also do something useful with the data in ``row`` here.
except cutplace.errors.DataError as error:

For more information, read the documentation at or visit the project at

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

cutplace-0.9.0.tar.gz (58.7 kB view hashes)

Uploaded source

Built Distribution

cutplace-0.9.0-py3-none-any.whl (67.1 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page