Skip to main content

No project description provided

Project description

travis-badge

BIG DISCLAIMER

  • This is not a production-ready library.

  • I’m not a production-ready Rust programmer.

  • Either Python 3’s csv stdlib module is pretty %#!& fast or my Rust code is %#!& slow.

Installation

pip install rustcsv

Examples

CSVReader instance from path

examples/reader_from_path.py:

import tempfile
from rustcsv import CSVReader

# Create a temporary file to put our CSV content in,
# automatically delete it once we're done.
with tempfile.NamedTemporaryFile(mode="w") as writable_fd:
    writable_fd.write(
        """\
spam1,spam2,spam3
spam4,spam5,spam6
"""
    )
    writable_fd.flush()

    for row_number, row in enumerate(CSVReader(writable_fd.name), start=1):
        print(
            "row #{row_number}: {row}".format(row_number=row_number, row=row)
        )

# Prints:
# row #1: ("spam1", "spam2", "spam3")
# row #2: ("spam4", "spam5", "spam6")

CSVReader instance from a binary file object

examples/reader_from_file_object.py:

import tempfile
from rustcsv import CSVReader

# Create a temporary file to put our CSV content in,
# automatically delete it once we're done.
with tempfile.NamedTemporaryFile(mode="w") as writable_fd:
    writable_fd.write(
        """\
spam1,spam2,spam3
spam4,spam5,spam6
"""
    )
    writable_fd.flush()

    readable_fd = open(writable_fd.name, "rb")

    for row_number, row in enumerate(CSVReader(readable_fd), start=1):
        print(
            "row #{row_number}: {row}".format(row_number=row_number, row=row)
        )

# Prints:
# row #1: ("spam1", "spam2", "spam3")
# row #2: ("spam4", "spam5", "spam6")

Development

Development Installation

Install and build the extension locally from e.g. a git checkout.

Requirements

Install Python dependencies

pipenv install --dev

Build the rustcsv._rustcsv extension

Either

  1. Using the “debug” cargo profile, or

    make develop-debug
  2. Using the “release” cargo profile

    make develop-release

Run tests

make test

Run benchmarks

make benchmark

Note: make benchmark will always build the extension using the “release” cargo profile.

Benchmarks

Benchmarks are executed as the last step in the Travis CI project.

You can also run it yourself, see Development and Run benchmarks.

References

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

rustcsv-0.1.0a16.tar.gz (27.0 kB view details)

Uploaded Source

Built Distributions

rustcsv-0.1.0a16-cp37-cp37m-manylinux1_x86_64.whl (835.0 kB view details)

Uploaded CPython 3.7m

rustcsv-0.1.0a16-cp36-cp36m-manylinux1_x86_64.whl (834.9 kB view details)

Uploaded CPython 3.6m

rustcsv-0.1.0a16-cp35-cp35m-manylinux1_x86_64.whl (834.9 kB view details)

Uploaded CPython 3.5m

File details

Details for the file rustcsv-0.1.0a16.tar.gz.

File metadata

  • Download URL: rustcsv-0.1.0a16.tar.gz
  • Upload date:
  • Size: 27.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

File hashes

Hashes for rustcsv-0.1.0a16.tar.gz
Algorithm Hash digest
SHA256 71cec520b6a569be88aa51d452514ef19a16e99e012dc69513001aa37d0c3e1c
MD5 986051418283df28e287af9b69b50f12
BLAKE2b-256 336e65aeef0f3417fff1a3e68ef68c9bf5a02b54a846635d9040d7c248eda9b2

See more details on using hashes here.

File details

Details for the file rustcsv-0.1.0a16-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: rustcsv-0.1.0a16-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 835.0 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

File hashes

Hashes for rustcsv-0.1.0a16-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 781e786afd4462b2924babdb4138bf0d7b5b013a60dcff25fe67e9b40e572a1a
MD5 df10b30b447a9ebc820d8707dcc3bb46
BLAKE2b-256 162fad355f22ee2ccc6da5db5018de91b79728f98ebcfad6c371076c5018a45d

See more details on using hashes here.

File details

Details for the file rustcsv-0.1.0a16-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: rustcsv-0.1.0a16-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 834.9 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

File hashes

Hashes for rustcsv-0.1.0a16-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bdc7c011cdc5e7e4b70394851892cad228be4443c77afaf0ee075e0bdac0c2de
MD5 3f214f725a7363bcd3612abd5b765062
BLAKE2b-256 577b441413df3f14c9aa9f4326b8a3b5457f29f78d948544e2905375d3f749b9

See more details on using hashes here.

File details

Details for the file rustcsv-0.1.0a16-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: rustcsv-0.1.0a16-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 834.9 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.5.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

File hashes

Hashes for rustcsv-0.1.0a16-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9ffd2054e07a7ecb5cc9b2d45da40f487c5a2ec363197381c0df46d7858af9fa
MD5 aa62ea001cbd0cba70a648f14ba7027d
BLAKE2b-256 ffff0c09c405d632bff33f23eb021bd6925e26acf477c7820e1963ddaa3b2b72

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