Metadata-Version: 2.4
Name: nsv
Version: 0.2.4
Summary: Python implementation of the NSV (Newline-Separated Values) format
Home-page: https://github.com/nsv-format/nsv-python
Author: naming
Author-email: 
Project-URL: Bug Reports, https://github.com/nsv-format/nsv-python/issues
Project-URL: Source, https://github.com/nsv-format/nsv-python
Keywords: nsv csv data format parser
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Text Processing
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: pandas
Requires-Dist: pandas; extra == "pandas"
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license-file
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-python
Dynamic: summary

# NSV Python

Python implementation of the [NSV (Newline-Separated Values)](https://nsv-format.org) format.

## Installation

### From PyPI

```bash
pip install nsv
```

### From Source

```bash
git clone https://github.com/nsv-format/nsv-python.git
cd nsv-python
pip install -e .
```

## Usage

### Basic Reading and Writing

```python
import nsv

with open('input.nsv', 'r') as f:
    # load/dump are non-resumable
    reader = nsv.load(f)
    for row in reader:
        print(row)

with open('output.nsv', 'w') as f:
    # Reader/Writer are resumable, intended for streaming
    writer = nsv.Writer(f)
    writer.write_row(['row1cell1', 'row1cell2', 'row1cell3'])
    writer.write_row(['row2cell1', 'row2cell2', 'row2cell3'])
```

## Vendor

The core NSV format is frozen by-design.  
Unless you rely on ENSV features or are performance-aware, copying the naive implementation directly to your codebase may be the better way to handle NSV files.  
Controllable code, controllable interfaces, zero chance of a supply-chain attack.

