Metadata-Version: 2.1
Name: csv-schema
Version: 1.0
Summary: CSV file validation.
Home-page: https://github.com/pcstout/csv-schema-py
Author: Patrick Stout
Author-email: pstout@prevagroup.com
License: Unknown
Description: [![Build Status](https://travis-ci.org/pcstout/csv-schema-py.svg?branch=master)](https://travis-ci.org/pcstout/csv-schema-py)
        [![Build status](https://ci.appveyor.com/api/projects/status/0s8kitxrkb5neae8/branch/master?svg=true)](https://ci.appveyor.com/project/pcstout/csv-schema-py/branch/master)
        
        # CSV Schema Definition and Validation
        
        ## Install
        
        ```bash
        pip install csv-schema
        ```
        
        ## Usage
        ```text
        usage: csv-schema [-h] [--version] {validate-config,validate-csv,generate-config} ...
        
        CSV Schema
        
        optional arguments:
          -h, --help            show this help message and exit
          --version             show program's version number and exit
        
        Commands:
          {validate-config,validate-csv,generate-config}
            validate-config     Validates the CSV schema JSON configuration file.
            validate-csv        Validates a CSV file against a schema.
            generate-config     Generate a CSV schema JSON configuration file.
        
        ```
        
        # Definition
        
        The CSV file schema definition is defined in a JSON file in the following format.
        
        ## File Definition:
        
        ```json
        {
          "name": null,
          "description": null,
          "filename": {
            "regex": null
          },
          "columns": []
        }
        ```
        | Property | Description |
        | -------- | ----------- |
        | name | The name of the schema. |
        | description | The description of the schema. |
        | filename | Properties for the name of the CSV filename to validate. |
        | columns | List of column definitions. |
        
        
        ### filename
        ```json
        {
          "regex": null
        }
        ```
        | Property | Description |
        | -------- | ----------- |
        | regex | Regular expression to validate the name of the CSV file being validated. |
        
        ## Column Definitions:
        
        ### string
        ```json
        {
          "type": "string",
          "name": null,
          "required": true,
          "null_or_empty": false,
          "regex": null,
          "min": null,
          "max": null
        }
        ```
        | Property | Description |
        | -------- | ----------- |
        | type | The column type. |
        | name | The name of the column. |
        | required | Whether or not the column is required in the file. |
        | null_or_empty | Whether or not the value can be null (missing) or an empty string. |
        | regex | Regular expression to validate the column value. |
        | min | The minimum length of the string. null for no limit. |
        | max | The maximum length of the string. null for no limit. |
        
        ### integer
        ```json
        {
          "type": "integer",
          "name": null,
          "required": true,
          "null_or_empty": false,
          "regex": null,
          "min": null,
          "max": null
        }
        ```
        | Property | Description |
        | -------- | ----------- |
        | type | The column type. |
        | name | The name of the column. |
        | required | Whether or not the column is required in the file. |
        | null_or_empty | Whether or not the value can be null (missing) or an empty string. |
        | regex | Regular expression to validate the column value. |
        | min | The minimum value. null for no limit. |
        | max | The maximum value. null for no limit. |
        
        ### decimal
        ```json
        {
          "type": "decimal",
          "name": null,
          "required": true,
          "null_or_empty": false,
          "regex": null,
          "min": null,
          "max": null,
          "precision": 2
        }
        ```
        | Property | Description |
        | -------- | ----------- |
        | type | The column type. |
        | name | The name of the column. |
        | required | Whether or not the column is required in the file. |
        | null_or_empty | Whether or not the value can be null (missing) or an empty string. |
        | regex | Regular expression to validate the column value. |
        | min | The minimum value. null for no limit. |
        | max | The maximum value. null for no limit. |
        | precision | The decimal point precision. |
        
        ### enum
        ```json
        {
          "type": "enum",
          "name": null,
          "required": true,
          "null_or_empty": false,
          "values": []
        }
        ```
        | Property | Description |
        | -------- | ----------- |
        | type | The column type. |
        | name | The name of the column. |
        | required | Whether or not the column is required in the file. |
        | null_or_empty | Whether or not the value can be null (missing) or an empty string. |
        | values | Fixed set of constants. |
        
        ## Development
        
        ### Setup
        
        ```bash
        pipenv --three
        pipenv shell
        make pip_install
        make build
        make install_local
        ```
        See [Makefile](Makefile) for all commands.
        
        ### Update README Definitions
        The schema definition is auto generated by running `scripts/generate_md_help.py`.
        Copy/paste the output into the README.md file.
        
        ### Testing
        
        - Create and activate a virtual environment:
        - Run the tests: `make test`
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.7
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
