csvm


Namecsvm JSON
Version 0.0.2 PyPI version JSON
download
home_page
Summary
upload_time2023-07-27 00:57:48
maintainer
docs_urlNone
author
requires_python>=3.8
licenseMIT License
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # CSVM

CSVM is a file format that allows you to save multiple tables, add comments, and include metadata for both tables and columns

## File format explanation

1. Transform a `.csv` into a `.csvm`

    We start with a `.csv`

    ```csv
    first_name,last_name,instrument
    Syd,Barret,"guitar, vocals"
    David,Gilmour,"guitar, vocals"
    Roger,Waters,"bass, vocals"
    Richard,Wright,"keyboards, vocals"
    Nick,Mason,drums
    ```

    To transform it into a `.csvm` you add **table attributes**. Tha available table attributes are:
    
    - `[_columns_]` to define the column names
    - `[_data_]` to define the tabular data
    - `[_table_meta_.any_key.with_nested_keys]` to add table metadata
    - `[_columns_meta_.any_key.with_nested_keys]` to add column metadata. 
    
    
    For now we add the attributes `_columns_` and `_data`
    
    ```
    [_columns_]
    first_name,last_name,instrument
    [_data_]
    Syd,Barret,"guitar, vocals"
    David,Gilmour,"guitar, vocals"
    Roger,Waters,"bass, vocals"
    Richard,Wright,"keyboards, vocals"
    Nick,Mason,drums
    ```

2. Add comments and blank lines

    Every line that starts with a `#` is ignored when parsing the file

    ```
    # Pink Floyd band members

    [_columns_]
    first_name,last_name,instrument

    [_data_]
    Syd,Barret,"guitar, vocals"
    David,Gilmour,"guitar, vocals"
    Roger,Waters,"bass, vocals"
    Richard,Wright,"keyboards, vocals"
    Nick,Mason,drums
    ```

3. Add table metadata

    ```
    # Pink Floyd band members
    
    [_table_meta_.reference]
    "https://en.wikipedia.org/wiki/Pink_Floyd#Band_members"
    
    [_columns_]
    first_name,last_name,instrument

    [_data_]
    Syd,Barret,"guitar, vocals"
    David,Gilmour,"guitar, vocals"
    Roger,Waters,"bass, vocals"
    Richard,Wright,"keyboards, vocals"
    Nick,Mason,drums
    ```

4. Add column metadata

    ```
    # Pink Floyd band members
    
    [_table_meta_.reference]
    "https://en.wikipedia.org/wiki/Pink_Floyd#Band_members"
    
    [_column_meta_.unique]
    true,true,false
    
    [_columns_]
    first_name,last_name,instrument

    [_data_]
    Syd,Barret,"guitar, vocals"
    David,Gilmour,"guitar, vocals"
    Roger,Waters,"bass, vocals"
    Richard,Wright,"keyboards, vocals"
    Nick,Mason,drums
    ```

5. Save more than one table

    If you want to save more than one table you must use a **namespace** for each table. 

    ```
    # Table 1 - Pink Floyd band members
    
    [members._table_meta_.reference]
    "https://en.wikipedia.org/wiki/Pink_Floyd#Band_members"
    
    [members._column_meta_.unique]
    true,true,false
    
    [members._columns_]
    first_name,last_name,instrument

    [members._data_]
    Syd,Barret,"guitar, vocals"
    David,Gilmour,"guitar, vocals"
    Roger,Waters,"bass, vocals"
    Richard,Wright,"keyboards, vocals"
    Nick,Mason,drums
    
    # Table 2 - Pink Floyd albums

    [albums._columns_]
    name,year
    [albums._data_]
    Animals,1997
    "The Dark Side of the Moon",1973
    ```


## Read a `.csvm` file 

Installation `pip install csvm`

```python
import csvm

# Load TableCollection (if multiple tables) or Table (if one table)
tc = csvm.read_csvm("pink_floyd.csvm") 
print(tc.tables)
members = tc['members'] # get Table
# Access Table attributes if exist (i.e. Table.columns, Table.column_meta, Table.table_meta, Table.data, Table.name)
print(members.data) 
```

            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "csvm",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "",
    "author": "",
    "author_email": "Rafael Sanabria <rafael.d.sanabria@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/ac/29/2b167aaf2033fecb6aaf75a21481497138be6d201a58319fb0aa081dc89d/csvm-0.0.2.tar.gz",
    "platform": null,
    "description": "# CSVM\n\nCSVM is a file format that allows you to save multiple tables, add comments, and include metadata for both tables and columns\n\n## File format explanation\n\n1. Transform a `.csv` into a `.csvm`\n\n    We start with a `.csv`\n\n    ```csv\n    first_name,last_name,instrument\n    Syd,Barret,\"guitar, vocals\"\n    David,Gilmour,\"guitar, vocals\"\n    Roger,Waters,\"bass, vocals\"\n    Richard,Wright,\"keyboards, vocals\"\n    Nick,Mason,drums\n    ```\n\n    To transform it into a `.csvm` you add **table attributes**. Tha available table attributes are:\n    \n    - `[_columns_]` to define the column names\n    - `[_data_]` to define the tabular data\n    - `[_table_meta_.any_key.with_nested_keys]` to add table metadata\n    - `[_columns_meta_.any_key.with_nested_keys]` to add column metadata. \n    \n    \n    For now we add the attributes `_columns_` and `_data`\n    \n    ```\n    [_columns_]\n    first_name,last_name,instrument\n    [_data_]\n    Syd,Barret,\"guitar, vocals\"\n    David,Gilmour,\"guitar, vocals\"\n    Roger,Waters,\"bass, vocals\"\n    Richard,Wright,\"keyboards, vocals\"\n    Nick,Mason,drums\n    ```\n\n2. Add comments and blank lines\n\n    Every line that starts with a `#` is ignored when parsing the file\n\n    ```\n    # Pink Floyd band members\n\n    [_columns_]\n    first_name,last_name,instrument\n\n    [_data_]\n    Syd,Barret,\"guitar, vocals\"\n    David,Gilmour,\"guitar, vocals\"\n    Roger,Waters,\"bass, vocals\"\n    Richard,Wright,\"keyboards, vocals\"\n    Nick,Mason,drums\n    ```\n\n3. Add table metadata\n\n    ```\n    # Pink Floyd band members\n    \n    [_table_meta_.reference]\n    \"https://en.wikipedia.org/wiki/Pink_Floyd#Band_members\"\n    \n    [_columns_]\n    first_name,last_name,instrument\n\n    [_data_]\n    Syd,Barret,\"guitar, vocals\"\n    David,Gilmour,\"guitar, vocals\"\n    Roger,Waters,\"bass, vocals\"\n    Richard,Wright,\"keyboards, vocals\"\n    Nick,Mason,drums\n    ```\n\n4. Add column metadata\n\n    ```\n    # Pink Floyd band members\n    \n    [_table_meta_.reference]\n    \"https://en.wikipedia.org/wiki/Pink_Floyd#Band_members\"\n    \n    [_column_meta_.unique]\n    true,true,false\n    \n    [_columns_]\n    first_name,last_name,instrument\n\n    [_data_]\n    Syd,Barret,\"guitar, vocals\"\n    David,Gilmour,\"guitar, vocals\"\n    Roger,Waters,\"bass, vocals\"\n    Richard,Wright,\"keyboards, vocals\"\n    Nick,Mason,drums\n    ```\n\n5. Save more than one table\n\n    If you want to save more than one table you must use a **namespace** for each table. \n\n    ```\n    # Table 1 - Pink Floyd band members\n    \n    [members._table_meta_.reference]\n    \"https://en.wikipedia.org/wiki/Pink_Floyd#Band_members\"\n    \n    [members._column_meta_.unique]\n    true,true,false\n    \n    [members._columns_]\n    first_name,last_name,instrument\n\n    [members._data_]\n    Syd,Barret,\"guitar, vocals\"\n    David,Gilmour,\"guitar, vocals\"\n    Roger,Waters,\"bass, vocals\"\n    Richard,Wright,\"keyboards, vocals\"\n    Nick,Mason,drums\n    \n    # Table 2 - Pink Floyd albums\n\n    [albums._columns_]\n    name,year\n    [albums._data_]\n    Animals,1997\n    \"The Dark Side of the Moon\",1973\n    ```\n\n\n## Read a `.csvm` file \n\nInstallation `pip install csvm`\n\n```python\nimport csvm\n\n# Load TableCollection (if multiple tables) or Table (if one table)\ntc = csvm.read_csvm(\"pink_floyd.csvm\") \nprint(tc.tables)\nmembers = tc['members'] # get Table\n# Access Table attributes if exist (i.e. Table.columns, Table.column_meta, Table.table_meta, Table.data, Table.name)\nprint(members.data) \n```\n",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "",
    "version": "0.0.2",
    "project_urls": {
        "Repository": "https://github.com/rfsan/csvm"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "89f38d6527a54642282a5adf0790f0a11494666eb9a27197dd864a25706ff7cd",
                "md5": "13d9c2d3428ac71f678dc2797fc786e9",
                "sha256": "2f58985de80a17973803955f5d1e8ff3068c22e1d66abc97372aaa86711dce5c"
            },
            "downloads": -1,
            "filename": "csvm-0.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "13d9c2d3428ac71f678dc2797fc786e9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 4777,
            "upload_time": "2023-07-27T00:57:47",
            "upload_time_iso_8601": "2023-07-27T00:57:47.647751Z",
            "url": "https://files.pythonhosted.org/packages/89/f3/8d6527a54642282a5adf0790f0a11494666eb9a27197dd864a25706ff7cd/csvm-0.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ac292b167aaf2033fecb6aaf75a21481497138be6d201a58319fb0aa081dc89d",
                "md5": "97ae8d5ba2a990d0f3da8cd637a14cd0",
                "sha256": "31c1480ee9bb7a3e275606ee1b5b5c1188dbe15720c288381e9fe1564e1890f7"
            },
            "downloads": -1,
            "filename": "csvm-0.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "97ae8d5ba2a990d0f3da8cd637a14cd0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 5235,
            "upload_time": "2023-07-27T00:57:48",
            "upload_time_iso_8601": "2023-07-27T00:57:48.975656Z",
            "url": "https://files.pythonhosted.org/packages/ac/29/2b167aaf2033fecb6aaf75a21481497138be6d201a58319fb0aa081dc89d/csvm-0.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-07-27 00:57:48",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "rfsan",
    "github_project": "csvm",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "csvm"
}
        
Elapsed time: 0.09807s