Skip to main content

A Python package for handling messy CSV files

Project description


Github Actions Build Status PyPI version Documentation Status Downloads Binder

CleverCSV provides a drop-in replacement for the Python csv package with improved dialect detection for messy CSV files. It also provides a handy command line tool that can standardize a messy file or generate Python code to import it.

Useful links:


Contents: Quick Start | Introduction | Installation | Usage | Python Library | Command-Line Tool | Version Control Integration | Contributing | Notes


Quick Start

Click here to go to the introduction with more details about CleverCSV. If you're in a hurry, below is a quick overview of how to get started with the CleverCSV Python package and the command line interface.

For the Python package:

# Import the package
>>> import clevercsv

# Load the file as a list of rows
# This uses the imdb.csv file in the examples directory
>>> rows = clevercsv.read_table('./imdb.csv')

# Load the file as a Pandas Dataframe
# Note that df = pd.read_csv('./imdb.csv') would fail here
>>> df = clevercsv.read_dataframe('./imdb.csv')

# Use CleverCSV as drop-in replacement for the Python CSV module
# This follows the Sniffer example: https://docs.python.org/3/library/csv.html#csv.Sniffer
# Note that csv.Sniffer would fail here
>>> with open('./imdb.csv', newline='') as csvfile:
...     dialect = clevercsv.Sniffer().sniff(csvfile.read())
...     csvfile.seek(0)
...     reader = clevercsv.reader(csvfile, dialect)
...     rows = list(reader)

And for the command line interface:

# Install the full version of CleverCSV (this includes the command line interface)
$ pip install clevercsv[full]

# Detect the dialect
$ clevercsv detect ./imdb.csv
Detected: SimpleDialect(',', '', '\\')

# Generate code to import the file
$ clevercsv code ./imdb.csv

import clevercsv

with open("./imdb.csv", "r", newline="", encoding="utf-8") as fp:
    reader = clevercsv.reader(fp, delimiter=",", quotechar="", escapechar="\\")
    rows = list(reader)

# Explore the CSV file as a Pandas dataframe
$ clevercsv explore -p imdb.csv
Dropping you into an interactive shell.
CleverCSV has loaded the data into the variable: df
>>> df

Introduction

  • CSV files are awesome! They are lightweight, easy to share, human-readable, version-controllable, and supported by many systems and tools!
  • CSV files are terrible! They can have many different formats, multiple tables, headers or no headers, escape characters, and there's no support for recording metadata!

CleverCSV is a Python package that aims to solve some of the pain points of CSV files, while maintaining many of the good things. The package automatically detects (with high accuracy) the format (dialect) of CSV files, thus making it easier to simply point to a CSV file and load it, without the need for human inspection. In the future, we hope to solve some of the other issues of CSV files too.

CleverCSV is based on science. We investigated thousands of real-world CSV files to find a robust way to automatically detect the dialect of a file. This may seem like an easy problem, but to a computer a CSV file is simply a long string, and every dialect will give you some table. In CleverCSV we use a technique based on the patterns of row lengths of the parsed file and the data type of the resulting cells. With our method we achieve 97% accuracy for dialect detection, with a 21% improvement on non-standard (messy) CSV files compared to the Python standard library.

We think this kind of work can be very valuable for working data scientists and programmers and we hope that you find CleverCSV useful (if there's a problem, please open an issue!) Since the academic world counts citations, please cite CleverCSV if you use the package. Here's a BibTeX entry you can use:

@article{van2019wrangling,
        title = {Wrangling Messy {CSV} Files by Detecting Row and Type Patterns},
        author = {{van den Burg}, G. J. J. and Naz{\'a}bal, A. and Sutton, C.},
        journal = {Data Mining and Knowledge Discovery},
        year = {2019},
        volume = {33},
        number = {6},
        pages = {1799--1820},
        issn = {1573-756X},
        doi = {10.1007/s10618-019-00646-y},
}

And of course, if you like the package please spread the word! You can do this by Tweeting about it (#CleverCSV) or clicking the ⭐️ on GitHub!

Installation

CleverCSV is available on PyPI. You can install either the full version, which includes the command line interface and all optional dependencies, using

$ pip install clevercsv[full]

or you can install a lighter, core version of CleverCSV with

$ pip install clevercsv

Usage

CleverCSV consists of a Python library and a command line tool called clevercsv.

Python Library

We designed CleverCSV to provide a drop-in replacement for the built-in CSV module, with some useful functionality added to it. Therefore, if you simply want to replace the builtin CSV module with CleverCSV, you can import CleverCSV as follows, and use it as you would use the builtin csv module.

import clevercsv

CleverCSV provides an improved version of the dialect sniffer in the CSV module, but it also adds some useful wrapper functions. These functions automatically detect the dialect and aim to make working with CSV files easier. We currently have the following helper functions:

  • detect_dialect: takes a path to a CSV file and returns the detected dialect
  • read_table: automatically detects the dialect and encoding of the file, and returns the data as a list of rows. A version that returns a generator is also available: stream_table
  • read_dataframe: detects the dialect and encoding of the file and then uses Pandas to read the CSV into a DataFrame. Note that this function requires Pandas to be installed.
  • read_dicts: detect the dialect and return the rows of the file as dictionaries, assuming the first row contains the headers. A streaming version called stream_dicts is also available.
  • write_table: write a table (a list of lists) to a file using the RFC-4180 dialect.
  • write_dicts: write a list of dictionaries to a file using the RFC-4180 dialect.

Of course, you can also use the traditional way of loading a CSV file, as in the Python CSV module:

import clevercsv

with open("data.csv", "r", newline="") as fp:
  # you can use verbose=True to see what CleverCSV does
  dialect = clevercsv.Sniffer().sniff(fp.read(), verbose=False)
  fp.seek(0)
  reader = clevercsv.reader(fp, dialect)
  rows = list(reader)

For large files, you can speed up detection by supplying a smaller sample to the sniffer, for example:

dialect = clevercsv.Sniffer().sniff(fp.read(10000))

You can also speed up encoding detection by installing cCharDet, it will automatically be used when it is available on the system.

That's the basics! If you want more details, you can look at the code of the package, the test suite, or the API documentation. If you run into any issues or have comments or suggestions, please open an issue on GitHub.

Command-Line Tool

To use the command line tool, make sure that you install the full version of CleverCSV (see above).

The clevercsv command line application has a number of handy features to make working with CSV files easier. For instance, it can be used to view a CSV file on the command line while automatically detecting the dialect. It can also generate Python code for importing data from a file with the correct dialect. The full help text is as follows:

usage: clevercsv [-h] [-V] [-v] command ...

Available commands:
  help         Display help information
  detect       Detect the dialect of a CSV file
  view         View the CSV file on the command line using TabView
  standardize  Convert a CSV file to one that conforms to RFC-4180
  code         Generate Python code to import a CSV file
  explore      Explore the CSV file in an interactive Python shell

Each of the commands has further options (for instance, the code and explore commands have support for importing the CSV file as a Pandas DataFrame). Use clevercsv help <command> or man clevercsv <command> for more information. Below are some examples for each command.

Note that each command accepts the -n or --num-chars flag to set the number of characters used to detect the dialect. This can be especially helpful to speed up dialect detection on large files.

Code

Code generation is useful when you don't want to detect the dialect of the same file over and over again. You simply run the following command and copy the generated code to a Python script!

$ clevercsv code imdb.csv

# Code generated with CleverCSV

import clevercsv

with open("imdb.csv", "r", newline="", encoding="utf-8") as fp:
    reader = clevercsv.reader(fp, delimiter=",", quotechar="", escapechar="\\")
    rows = list(reader)

We also have a version that reads a Pandas dataframe:

$ clevercsv code --pandas imdb.csv

# Code generated with CleverCSV

import clevercsv

df = clevercsv.read_dataframe("imdb.csv", delimiter=",", quotechar="", escapechar="\\")

Detect

Detection is useful when you only want to know the dialect.

$ clevercsv detect imdb.csv
Detected: SimpleDialect(',', '', '\\')

The --plain flag gives the components of the dialect on separate lines, which makes combining it with grep easier.

$ clevercsv detect --plain imdb.csv
delimiter = ,
quotechar =
escapechar = \

Explore

The explore command is great for a command-line based workflow, or when you quickly want to start working with a CSV file in Python. This command detects the dialect of a CSV file and starts an interactive Python shell with the file already loaded! You can either have the file loaded as a list of lists:

$ clevercsv explore milk.csv
Dropping you into an interactive shell.

CleverCSV has loaded the data into the variable: rows
>>>
>>> len(rows)
381

or you can load the file as a Pandas dataframe:

$ clevercsv explore -p imdb.csv
Dropping you into an interactive shell.

CleverCSV has loaded the data into the variable: df
>>>
>>> df.head()
                   fn        tid  ... War Western
0  titles01/tt0012349  tt0012349  ...   0       0
1  titles01/tt0015864  tt0015864  ...   0       0
2  titles01/tt0017136  tt0017136  ...   0       0
3  titles01/tt0017925  tt0017925  ...   0       0
4  titles01/tt0021749  tt0021749  ...   0       0

[5 rows x 44 columns]

Standardize

Use the standardize command when you want to rewrite a file using the RFC-4180 standard:

$ clevercsv standardize --output imdb_standard.csv imdb.csv

In this particular example the use of the escape character is replaced by using quotes.

View

This command allows you to view the file in the terminal. The dialect is of course detected using CleverCSV! Both this command and the standardize command support the --transpose flag, if you want to transpose the file before viewing or saving:

$ clevercsv view --transpose imdb.csv

Version Control Integration

If you'd like to make sure that you never commit a messy (non-standard) CSV file to your repository, you can install a pre-commit hook. First, install pre-commit using the installation instructions. Next, add the following configuration to the .pre-commit-config.yaml file in your repository:

repos:
  - repo: https://github.com/alan-turing-institute/CleverCSV-pre-commit
    rev: v0.6.6   # or any later version
    hooks:
      - id: clevercsv-standardize

Finally, run pre-commit install to set up the git hook. Pre-commit will now use CleverCSV to standardize your CSV files following RFC-4180 whenever you commit a CSV file to your repository.

Contributing

If you want to encourage development of CleverCSV, the best thing to do now is to spread the word!

If you encounter an issue in CleverCSV, please open an issue or submit a pull request. Don't hesitate, you're helping to make this project better for everyone! If GitHub's not your thing but you still want to contact us, you can send an email to gertjanvandenburg at gmail dot com instead. You can also ask questions on Gitter.

Note that all contributions to the project must adhere to the Code of Conduct.

The CleverCSV package was originally written by Gertjan van den Burg and came out of scientific research on wrangling messy CSV files by Gertjan van den Burg, Alfredo Nazabal, and Charles Sutton.

Notes

CleverCSV is licensed under the MIT license. Please cite our research if you use CleverCSV in your work.

Copyright (c) 2018-2021 The Alan Turing Institute.

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

clevercsv-0.7.5.tar.gz (71.1 kB view details)

Uploaded Source

Built Distributions

clevercsv-0.7.5-cp311-cp311-win_amd64.whl (75.2 kB view details)

Uploaded CPython 3.11 Windows x86-64

clevercsv-0.7.5-cp311-cp311-win32.whl (73.8 kB view details)

Uploaded CPython 3.11 Windows x86

clevercsv-0.7.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (101.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (100.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

clevercsv-0.7.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (99.8 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clevercsv-0.7.5-cp311-cp311-macosx_11_0_arm64.whl (69.2 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

clevercsv-0.7.5-cp311-cp311-macosx_10_9_x86_64.whl (68.6 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

clevercsv-0.7.5-cp311-cp311-macosx_10_9_universal2.whl (77.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

clevercsv-0.7.5-cp310-cp310-win_amd64.whl (75.2 kB view details)

Uploaded CPython 3.10 Windows x86-64

clevercsv-0.7.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (97.8 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (97.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

clevercsv-0.7.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clevercsv-0.7.5-cp310-cp310-macosx_11_0_arm64.whl (69.2 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

clevercsv-0.7.5-cp310-cp310-macosx_10_9_x86_64.whl (68.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

clevercsv-0.7.5-cp310-cp310-macosx_10_9_universal2.whl (77.6 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

clevercsv-0.7.5-cp39-cp39-win_amd64.whl (75.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

clevercsv-0.7.5-cp39-cp39-win32.whl (73.9 kB view details)

Uploaded CPython 3.9 Windows x86

clevercsv-0.7.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (97.6 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (97.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

clevercsv-0.7.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.1 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clevercsv-0.7.5-cp39-cp39-macosx_11_0_arm64.whl (69.1 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

clevercsv-0.7.5-cp39-cp39-macosx_10_9_x86_64.whl (68.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

clevercsv-0.7.5-cp39-cp39-macosx_10_9_universal2.whl (77.6 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

clevercsv-0.7.5-cp38-cp38-win_amd64.whl (75.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

clevercsv-0.7.5-cp38-cp38-win32.whl (73.9 kB view details)

Uploaded CPython 3.8 Windows x86

clevercsv-0.7.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (99.1 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.8 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

clevercsv-0.7.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (97.7 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clevercsv-0.7.5-cp38-cp38-macosx_11_0_arm64.whl (69.1 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

clevercsv-0.7.5-cp38-cp38-macosx_10_9_x86_64.whl (68.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

clevercsv-0.7.5-cp38-cp38-macosx_10_9_universal2.whl (77.6 kB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

clevercsv-0.7.5-cp37-cp37m-win_amd64.whl (75.2 kB view details)

Uploaded CPython 3.7m Windows x86-64

clevercsv-0.7.5-cp37-cp37m-win32.whl (73.9 kB view details)

Uploaded CPython 3.7m Windows x86

clevercsv-0.7.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (97.6 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

clevercsv-0.7.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (97.1 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

clevercsv-0.7.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.0 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

clevercsv-0.7.5-cp37-cp37m-macosx_10_9_x86_64.whl (68.4 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file clevercsv-0.7.5.tar.gz.

File metadata

  • Download URL: clevercsv-0.7.5.tar.gz
  • Upload date:
  • Size: 71.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5.tar.gz
Algorithm Hash digest
SHA256 0e607a3489e7a0a91f65976d02f1897279add68d003b09120f8eff8cb9e159ae
MD5 88e500aed743954e95a9201d1b0388fc
BLAKE2b-256 86e4b36684e27d85b323d33f3b22d8f1014ada949b905966e467090ab7def5d0

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 aeaa55f0da5c7e202c6bef4dde30d4cf50959ffbcc5824b7bcc55914a59afc16
MD5 dd348a2839d7851f75d48a66de073c35
BLAKE2b-256 f33edc627f56ed704ec11ac6a739d0b76fa26bd48b878fa6b68551713ceeab85

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-win32.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp311-cp311-win32.whl
  • Upload date:
  • Size: 73.8 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 e18774fe5791f02b465275d8cefea967c4038049cb4771730168700cc12ef7ba
MD5 18d88b17d1e4f68bcea071f50749e537
BLAKE2b-256 6cda7bb7b84f2815564bfe376ac84ff31d47704b5988dbe44b423ae1541cc313

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ec8e77d0805ea007633907bcb651bde0860825bce4b40cd137461d616415b76f
MD5 691d62ce5d22a042b613a1504da165ae
BLAKE2b-256 d36f9a944ad9b6b23bc4a01066178455121486c84f374dd8aabe863b51428edc

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6583625f2c4af0d878ece1e2c553ef88e050605eaf624b89a3f3872040a34e0a
MD5 0b91c6f6bf9c62f1235fed696a1d94d1
BLAKE2b-256 cbe0254a13063b5a22ea7efac2680b872694dbbb9dbea24724738043b9470221

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 082aea1aace3728a57aa9ce7745b3dea24fe812003904411b4d07042eac2bd0f
MD5 6646b971828b755963916fedf5002e0e
BLAKE2b-256 990a42145915ae634a2dd0403f1e799de48a899c94406b58726c195a1924c77e

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b35577e1fde258711ab9338a1cf4bf2a19eaab14f10c65ce0fd3c955ad35ca92
MD5 20e8cad7184ebf748d7be5d90d57e51c
BLAKE2b-256 295bfa9a92594cd1a251e26f39b65cfcb99ab0554dec2f09cb5ada604faae4b6

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2f0e068d2376a530fcbb93571bccdc52548b1173bf0ff8b5240995573cb975dd
MD5 01c0757f9df7b8d53a56f69ee07f5d05
BLAKE2b-256 b5e9666395e479978b0adc4e54855314728d0ccb497044edfa7e235f475d6c67

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 79e520932c0bff4294c81fef7a309658a71f123dae80f6174acf1b7d016a0437
MD5 d204fb3ca9956abdc5eb77cfd393d8b4
BLAKE2b-256 2158096cb60a89ff08771f8e93b812c6d3a33fb0f58920efcb8030b66268fd28

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 cf02f7450cd50cc0a7002e79fb2785584874c35dc06dfc5ea779c3ee034d9ab9
MD5 84f6e9834261a08337742cd94c7c7aa9
BLAKE2b-256 9b994f6443bd6f52f5888509ee1a70027a75e779679694d662107d567a00eb36

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 873b401f3ba21b2fe58014253f83c2fc397bd189beec42d925a43c1cb4de768e
MD5 d9cc7bfd1634c99ea31b59b1539c97d6
BLAKE2b-256 1e40ab7722faec7013664fe3375a7c24f442b9e85e3a08669717eff40891da9c

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df6c08b42891056a43df0eef7f576715439145a9b4978c0bd67e3514392420a9
MD5 e02fab54f727fd2fa78f92e3278bcb7d
BLAKE2b-256 e6e5ca09c3fca440652b732bde0e2c840273d19f3a91de53de90e97a61c50ddb

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a8d4a52054d1b7976f23d44ba9afa189725ff37e5d29e4c82bb70bdccdc022fc
MD5 3b89776b2261b20ef2aa2178019873ec
BLAKE2b-256 ecf2f71d3d7017718760663c50a3c2aeb7d0bc671c59e996de0f51081bd48660

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 083ceb1efec36bf8fa07b0ffa39cddff8406b01c7374c33180dffc0418c9062d
MD5 177a3f444013d7c2ad6572965e090191
BLAKE2b-256 748f691637c6c1d7e2742082e0119d5ff0215f8ce38389bbc68962e7673a9204

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 229329f6ecfd5b0f23610c295c8d70a81394ae673769c6f07fc2a12e359510c4
MD5 e3215b94c2d0593a7ad9881b83931c92
BLAKE2b-256 b01766c6c36f6d2af9c8e79f60bb252c274c833840e95775f90227d41aa0c2c3

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 167d3bd909f09d97e3edd2ea690a72241a507cdae7c5e46179fb1b4351793b45
MD5 d34bfa97c5d88ab4341ad42644fc48f0
BLAKE2b-256 60ed6fc4fbe90fa1590bed8b3e618ad46ce2f55e295a4104141ebad5813e5774

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 75.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 3a55956e9d9638f94b7194cc046d5b63d4f68e7298d436b0c9479d0f6b640036
MD5 3dd51f0af7458f83e4cee91a5d0c8df1
BLAKE2b-256 8320fcede7c14631db0ad1a288f289d6ff2cb3f9227078ef66ddcf28a90b29e1

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-win32.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp39-cp39-win32.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 6736b49ed7c0bef974bb3c3629af611061f4e1539bfbeff47e3125e82c1073a5
MD5 f6fcf08b912cb5e321a6d586dff98b4d
BLAKE2b-256 358594ec2dfb3bfac165f8e95eff58b1ff39a34344ac09988850249bd9aaab02

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 da9ffea36fa78dccd14ae62f5372ea3519b2cb4301e522cf19f75e237e06e636
MD5 093b45219a7e0aaa1c646aadde136eec
BLAKE2b-256 cbafae042474d395d610f3a526ba8d09ad5bf1dc301fab6d33bd3f09f0a29eeb

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d5dd4b73af68b1aa78d4e6bb7594f32c16d693190b6fdb3a2a1e8808d1b219a6
MD5 41fb3d742c468cf6277606a3e8dd411b
BLAKE2b-256 2bd5d78dbd9dd8c839e741702b5cd66bddca60267b8fe8036cf51768ade86a77

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3fdea5c4d042b013d1145605f40951c48759433e152b81747791505c56d33687
MD5 bc1baee9e4928c406d264328f7703769
BLAKE2b-256 ba1eeb061ee363d19047337d7e2706bb2a12445f2fffa21726a828e6e22d369a

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 637ecc60b2c8846377d43ad9f28348b7369e2717ba8431c9068b8e972196bddb
MD5 a36c5fe09aae85eb63c261e8b8109e41
BLAKE2b-256 50e40b7c92603d386acd2e63c43bd055db879ce43cf55900e8239da28b009e7b

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e9bab6aa5026ac0e6201cf0006e958869a8d91d806e596243cf00c561a0a0101
MD5 bd8e704675456ec7a2aa259eaec5c15a
BLAKE2b-256 a40edcef5e1c415f4a82e0949c499fac667bc96d4d195f39c4cf6532980f2db5

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 95a997ac1fa693c8d7ffe367922429248ea70de78da4711915ebbac565f148dc
MD5 c7301e67258d471d15164cd7cd8bdba3
BLAKE2b-256 a6043ab165ffb56869277d9387ec6a79312e02f5c9e6976fcb9200cc443e4f8a

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 75.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 42e10eb33a55984a4b43f69dbaa3e4663d29f92db066d1a56aa8a1dae2b8d4b6
MD5 33a208ba6b864a7e60ddf5fe413750af
BLAKE2b-256 eba22d6c847826b9bcea46b1710e719c890d221b8957d238493910ba5d517d82

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-win32.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp38-cp38-win32.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 8599f88018d4ac7ffce6c4f60b97d62667e8ed24d25231a86919c230521999a0
MD5 2283c976585836f83fdb493a9c927303
BLAKE2b-256 27ccd6d0f45ccbbb1a85df935decf8aff29dfb74d19be69279491eb6709a15da

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 eb1b7d11be6809531bde5aea426a2b084c8a3b2f43015d87b5ba7b90aeb24665
MD5 ef750ab67ab23a9370e9d4782d6ee4ec
BLAKE2b-256 61f781d9c2cc887f35727f58e71b33e39d10104faa478510344c3adb274f4612

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 42ae33bd1307d2249f57964303fb539f3b6292d21da77e42cab9b3444db99752
MD5 a7a373c1c59ff778739ca8c6563df3e3
BLAKE2b-256 cc66de2fd6b7dc458dac78267bc192b61d3d43b5b149325d7e668091d987e0a5

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 b5ded68d330eced9ae318872f826785be24e8093f9aea8f302744919ecedf4e2
MD5 699a85b4236451dcb21f590b3d61413e
BLAKE2b-256 69807c4fc4a66bf1ab2cc3b13a473c8de2f5deb1c6cfa282054a5131b81fae50

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e540fb8ed085b4c33315243174cfc41849a2867977c6f690ed4dcbf7a96f7a52
MD5 6a510e14e50fda9871a4f583b9ec8345
BLAKE2b-256 cc4c30f5ddc5efee85ed3337b326f0cfc965d9711dbe5e08f9d5de7496b73ddb

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fc5faf05d4908f6445f9d3dadaddab85757a8d43e2b909cd290b11bd182ec67b
MD5 ca1d3117f22d2b5616a46ee2f5b04f53
BLAKE2b-256 2e58679c100d403a5c7b73d09d9646adca126bf0d360b2b0d33504b8a6054b72

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 15dde2d2b40676cd99d0d2c47505c145dd5adea4d34cc266eafa10d425e86a50
MD5 dfb151a6bbb8975d85f85b2c101edfcd
BLAKE2b-256 5dbdb6a239c0dc587a99e0f59984f0753ae7c0c4bd9bceec4e02d3ced075af78

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 75.2 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 17eed0eb8003911ae53f9c836108e7e5cfc4e0d120f3ddd2d1b82bdf03d49f56
MD5 1242dc793a9cf12187563aedcc72c7ce
BLAKE2b-256 74bd80cc30345344c7c2af5d0a8c18e7cf32e49d0b56b957d58a0661071d774b

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp37-cp37m-win32.whl.

File metadata

  • Download URL: clevercsv-0.7.5-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for clevercsv-0.7.5-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 4fda7ddab487944eca8b27fcb9722dcdfbec75c8ee9c41ff764c34af604559bd
MD5 b24be7c40cc12eafde9e49f0ffff0e6d
BLAKE2b-256 a1bc67ca5e9a20d2fa9a845c7c3b93e0184f8113bb51efdc55d4d6d88a4d1ff2

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 725c0b58d021bf1e8fa91bffbd50ad1b28ea28b7e0988c00b7ffbd0f0f1ea3b7
MD5 bd687f799c982d0c80ecca1da362b93b
BLAKE2b-256 fe3836d86e602b3b41dec34bae688506939e92c6483b716801ad62e0c47f3626

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0be68c52ad8fc897e3915c9b948158b1ba560b130bfa79f48c3eea7132e6b41
MD5 32a1084d409beb4531356c54706e7fa3
BLAKE2b-256 890f3a9b2e881845f85b31e588c415249690b1a82d8258ff7ffea5d569d8f54a

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d8c66237efd2e1494fd155d628c725638b58b7565ee25ef75a7f4718d93bc459
MD5 7e5b79bc6d510779f2fe3a6d069ca54c
BLAKE2b-256 7dd36c2192aaba9dc0287d9e966534bb953c9bbc18d7ba833375fce542598ca3

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.5-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.7.5-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 78e77e84a7742f877de6f2eb3c6654afb1403bf60eeef9720d6d87260f788c1c
MD5 3aaccdfc0518762df6a3de5bb9efe9a3
BLAKE2b-256 8023ff27531c8a769f7c795b8d57648d4b4e0e29ddf950a4d14070aaba4b9792

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