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.6.tar.gz (71.1 kB view details)

Uploaded Source

Built Distributions

clevercsv-0.7.6-cp311-cp311-win_amd64.whl (75.3 kB view details)

Uploaded CPython 3.11 Windows x86-64

clevercsv-0.7.6-cp311-cp311-win32.whl (73.9 kB view details)

Uploaded CPython 3.11 Windows x86

clevercsv-0.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (101.3 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (101.0 kB view details)

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

clevercsv-0.7.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (99.9 kB view details)

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

clevercsv-0.7.6-cp311-cp311-macosx_11_0_arm64.whl (69.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

clevercsv-0.7.6-cp311-cp311-macosx_10_9_x86_64.whl (68.7 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

clevercsv-0.7.6-cp311-cp311-macosx_10_9_universal2.whl (77.8 kB view details)

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

clevercsv-0.7.6-cp310-cp310-win_amd64.whl (75.3 kB view details)

Uploaded CPython 3.10 Windows x86-64

clevercsv-0.7.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (97.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (97.6 kB view details)

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

clevercsv-0.7.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.4 kB view details)

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

clevercsv-0.7.6-cp310-cp310-macosx_11_0_arm64.whl (69.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

clevercsv-0.7.6-cp310-cp310-macosx_10_9_x86_64.whl (68.7 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

clevercsv-0.7.6-cp310-cp310-macosx_10_9_universal2.whl (77.7 kB view details)

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

clevercsv-0.7.6-cp39-cp39-win_amd64.whl (75.3 kB view details)

Uploaded CPython 3.9 Windows x86-64

clevercsv-0.7.6-cp39-cp39-win32.whl (74.0 kB view details)

Uploaded CPython 3.9 Windows x86

clevercsv-0.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (97.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (97.3 kB view details)

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

clevercsv-0.7.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.2 kB view details)

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

clevercsv-0.7.6-cp39-cp39-macosx_11_0_arm64.whl (69.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

clevercsv-0.7.6-cp39-cp39-macosx_10_9_x86_64.whl (68.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

clevercsv-0.7.6-cp39-cp39-macosx_10_9_universal2.whl (77.8 kB view details)

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

clevercsv-0.7.6-cp38-cp38-win_amd64.whl (75.3 kB view details)

Uploaded CPython 3.8 Windows x86-64

clevercsv-0.7.6-cp38-cp38-win32.whl (74.0 kB view details)

Uploaded CPython 3.8 Windows x86

clevercsv-0.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (99.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

clevercsv-0.7.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (98.9 kB view details)

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

clevercsv-0.7.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (97.8 kB view details)

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

clevercsv-0.7.6-cp38-cp38-macosx_11_0_arm64.whl (69.3 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

clevercsv-0.7.6-cp38-cp38-macosx_10_9_x86_64.whl (68.7 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

clevercsv-0.7.6-cp38-cp38-macosx_10_9_universal2.whl (77.8 kB view details)

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

clevercsv-0.7.6-cp37-cp37m-win_amd64.whl (75.3 kB view details)

Uploaded CPython 3.7m Windows x86-64

clevercsv-0.7.6-cp37-cp37m-win32.whl (74.0 kB view details)

Uploaded CPython 3.7m Windows x86

clevercsv-0.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (97.7 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ ARM64

clevercsv-0.7.6-cp37-cp37m-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.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

clevercsv-0.7.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (96.1 kB view details)

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

clevercsv-0.7.6-cp37-cp37m-macosx_10_9_x86_64.whl (68.5 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: clevercsv-0.7.6.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.6.tar.gz
Algorithm Hash digest
SHA256 2060ad175165a48181d2b12bd2c68b5032ef884e07c8347e53bd6a243fffb9ec
MD5 bb67662c10a25cc88ba9cf277561f66c
BLAKE2b-256 7f61ff91d4ddf3e0c406b9a0c77ce4bb6c1e9e3c6740942e9afce39b15bc98bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 46462d90cf6b01695c3780408202f2fa3d040b9249c963a87385835e3017c554
MD5 33969eeac4124f3635e88004f0eb4b79
BLAKE2b-256 3a734208bda7e2efd17dc2e88a04bd6ae243561b3b2a4c1fb52c107490818101

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp311-cp311-win32.whl
  • Upload date:
  • Size: 73.9 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.6-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ebeae88645c1d84b0444580b593500771ccf086010988e084dcb5becf73079e3
MD5 679503d5be6c57a605950343c780de03
BLAKE2b-256 4c110e7ed75a5fb2fbc1d21b72681a1f43e72cbbee946506b9c9f700fc934b4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 616b0f36c90fc228ce024c5c6ba43588b0f1beabc08c6ba63d736d018e032b93
MD5 04cd3010aac467896e0f4c8adedefdc8
BLAKE2b-256 f76c8f3ea28f00783513b55e6740e29af7b414d4596e6804389f94e5a888b182

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.6-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.6-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfc44a7290dc6a17b4e0b2ef5b5a51e6708e2a38f0a7a3935972ccf94df82fe2
MD5 2016c6a29d6812dd35501f758740de73
BLAKE2b-256 79527ee0bc592a909cf4fbde22fcf9326b47a9c900dce1d14e8343f3b71597c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4e9038ccaa13067876c31a3db8a3ac473e7a3178c2bc97ef1053bc287c3f042f
MD5 731a20b7887d3f804571d748b3b47f06
BLAKE2b-256 fcd9172bad6a763a20b148d38306769c094b16954992a687b5bb3206e70cd275

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 506b090b7ff856a2c090775e83fc0bf5d99afb091814b2c1be8222a930ce788c
MD5 e6589d1e4b13f0b07fa9643881d7559c
BLAKE2b-256 d77ff5ca81b1edb6db62fea49599521bfa7da8df581d02d4abd7d9e141007d50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fd5471b0d95b2c3a3272f61276dd4212f4a48d3420e75da7c2deb99323a6a3d9
MD5 a4b1dbc10feae3b074a0d11ae23b7b78
BLAKE2b-256 779e952436b1405e2e1fec4eab4342ac917f9a9198c3a2e9e3d8f7f78c169b45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 f94375450aa8d9bc58882896e66d68736300488129ad8c54156bf5034bca2a37
MD5 7e17b7cc762067c029fcf7283f22e061
BLAKE2b-256 e66a1d7fc9371c985239a469fff7b32953a0ff8ae38004ddbaf259602312fb02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 8dcaf8dcea988b7c595bbc40b71b61ca8ce9f1388addfb1a65a10367a616e563
MD5 b6e438675668284a04752227d8223fa6
BLAKE2b-256 2bb08d78ee5d7130d29587aff51aa4307f3b6c68cab15ea12e8f3cd25897340a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 89c03143a17ffd434422609d5ec8d2c48b5344d12b9d8a8aad74f17843ff37a2
MD5 77d4b2b7a45ccf2ac0f97d414ebe7b2d
BLAKE2b-256 bcc0be6cb52c9bb30989a4cfb95f0fe63ea15f8e35108e263611d862fffbf9c9

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.6-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.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cf7dbaa37a3da0b275d2e34ecc6ff256722b73cbd1a94052eff2d5ea69078c6b
MD5 410fd72c416ebeb30f32330ee0b0a1f9
BLAKE2b-256 116c1892da739a7320862fb0fb58f5d2384c65f2c96b9d9b861efc8cda971fc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 727e36d4fab3b1d685ec7fe5b215855aa950119f91a9c8062ebbe97d66dc05a0
MD5 6859b2d8d77daea19f1d50223515b165
BLAKE2b-256 4eae730f3816a4b92626a94cb0fc072ec5138f8a731c0a5b0958a0e1c59bd04e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 38d7621c377f03558bd840152bac1407ca15b23b6ba87646424040700c94fe28
MD5 46a48540edd3f3af16dd70baee50269a
BLAKE2b-256 55115964e9947ea37fc15c069c2e2693f4f598f0843fe40059a6553d323d2c60

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d54a0ca17263cd4f5835cc541f64183a2ed2fd164727c43a92c33a0e897178e6
MD5 2c655e11b4ad3f4213098f624609d3a8
BLAKE2b-256 4b301ff5c81f49b735776a03af860f1ce4721d5ba063db0b4a91e3a6b47fd180

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 0a31789a0b195fd5d42407c7060ac21d25d1a2e6261e85927cfcd6a29c549851
MD5 ba7a1973c03743a32f01e3bef841efe1
BLAKE2b-256 ccb0f554915bd7289acc1648498170085183541a05cec2aa0d379f58495792bf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 75.3 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.6-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 eaa794fc17a14ad9d1dd175c7c42f1cf80227b31a0a17f018c2bce57c884c049
MD5 2657cddbb89d50d9057345dca59e918d
BLAKE2b-256 b58b1fa7c6d7e521077bad2ca2b13d3ae8a3005c0ffe29cbed2edfd2bbf71788

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp39-cp39-win32.whl
  • Upload date:
  • Size: 74.0 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.6-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 cd454bf699d3ba423394fe1429ef56241b978bc090e8587a644f15d9ad6e8152
MD5 7511e541bb99fc096239ff5abe0695b4
BLAKE2b-256 2cf79a742a0f7f3627e931e6dd42ad0495dcd7fa4808fcd8b6f52551dfefc413

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 54aa3156ccaa57f8df51f42069010e62ff33a78497a18cf6018f3dda0f040080
MD5 dfea4ef8d9fa757ff0b41e7ef5a21e8e
BLAKE2b-256 7cf4a6c7d4cc3a33071bfa85b2c42e8ed2b81d31e4085a7132f327a6ea1290d8

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.6-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.6-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b0ae5d86d8de3c61216fc01d0cfd4cbda26b2b4defad476e65eb907aea8492d8
MD5 474f32b94c283ccb1fbe360654486003
BLAKE2b-256 b68d543e0806d349a85172f4de85ce33bc665b5053b859d3aef255b1a44f966e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a87776e5cedbb3f60145f388a048b1992e90e6f7a291b4e920b9cd32c778006e
MD5 cd9387cb564fc3f9c6a9c4a39ed06275
BLAKE2b-256 a106d705e04706aac7bdc210542e53e0410e5959a3910ee03cfb7bae5acfb6fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5875b53cae7b4cd4516a43bfca026c043b49a08630bf0ab2790b3b9a7390d92
MD5 fb7baa5067db31103a0072913820b376
BLAKE2b-256 fe75bdcd76d6faca81ce1618b2661aa46ff65892f41d391cb0595018a7b61fe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e7c249b7f6ef393eab29a82a5407a1ca1ed8814f9ad925affc33d63483c6e467
MD5 36b4cc22307be32377f7a32ee43a37a2
BLAKE2b-256 639750fda73c66843ed1c50e403cc21310eec779bd6280dc8bc9e1b3725007b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 edf8b14e255049969411394d692b400ae8abace0b4fa406441f5592ff1acb6d4
MD5 4126ae0ddc3208b8efdc704fbfad8b45
BLAKE2b-256 5c1adfe83f6f8baeeba26046ecaa4d61abdd3cf8896e43bf24c4d54fbe2b2433

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 75.3 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.6-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 c6a826ca88bfb09f0bae5055a29f0babb971d655875a6b6e9cf39446a95599ae
MD5 57d275808983170f1978557a182fcc9c
BLAKE2b-256 615030c5285aab6123b9a7bc0fe9384743ac3c8e2f957877f6fd06f8d1f7a8fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp38-cp38-win32.whl
  • Upload date:
  • Size: 74.0 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.6-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 ad04abf4e61983689285cf1f8ee8bc45269c7811837024d0961df7a79725bc2b
MD5 ddcaddc47325ef9cf2105f4b4e626af9
BLAKE2b-256 6ce209dc5cbf5927b664601b8eb2d3a7de66358d8a2890ecb07648bb9780fbdc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea0d0a2151804eb5c5122554dd86d29b991259f246872f2670513d88bc7c0af9
MD5 fe69f88abc46d5fa8df9c634a3feaff6
BLAKE2b-256 4035d0fb33eb193837ee6728c05584fb94aaeabf725cc70e089327302f337fce

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.6-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.6-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f645fa9ecf5a1b297994d50288c2b938e7a5d3dd8038ece1de8c76537cce4655
MD5 0de871edd449e5ad1c43f105c90737e1
BLAKE2b-256 f6073d0fb7ed84cab2de0e650dd4eed1982b86da960e3eca1b431db8126d6b66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6be7b73b25567c8579bf092bbdd095c5590bd3525c92ffe91ff7bdf785266766
MD5 4d9571d56761507d50d6ba8f415fa580
BLAKE2b-256 a9eb01caf84126b01f518b564849146b673e8992ef1e5e1f22a75b98d453789d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 745258f1e403e9ffe0ee59a381c2b346661fb232bfee0cb0fc280f4f5097414f
MD5 c1484554d7a49f606879a145fa379ad6
BLAKE2b-256 1020ab0f317a7cf7e3d9296877dfaec70fa27ca5d15bc35d0547b93e6885c95a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc8772fc0a2fcbd6b6929c13549e073c2e0428456372d77e1a2569b7872628e0
MD5 f39297e751dabb55a11f51b0c0c6f78a
BLAKE2b-256 a88ec1abffb61144ef8720206681b1f02b16db521dfb4f8fdfeaea9a3e342cd4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 cc74e9083666940f2ae4e5c2afa6d7ea94cf4a608b72b317622560c9f2477139
MD5 64e1fc551b10a8460116a9841796c5f4
BLAKE2b-256 5b11beca4bd721b684951385a89bfb98c9a046afe2e23c1e0ee3c51d3a71626a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 75.3 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.6-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 47a2300050f857e6c78003f4df0947077d0bf7894c2757c49b21d0391f8441a6
MD5 40e03c05cd917d9bee9915190509fde3
BLAKE2b-256 55bb73234c25940254495cd33978bd297f1ff9062f943f56a4caae6365a816a3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: clevercsv-0.7.6-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 74.0 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.6-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 0610ff8db8278d55d43b064534ffe8bb542c1adeae8c8acd5ef2c3b3b850881e
MD5 2664acdfad4de96173e362268c7d1bc7
BLAKE2b-256 857bb7b92816dd297c78acfbe2c8bce2994ed798c068a79b6053f5517b819e79

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d5645ddec52914b73fedbf2c38fbad961cd8afb203e43eb9a6757fa0238abd63
MD5 506b3f23e0a8ae4c90bd292a2581c1f8
BLAKE2b-256 f7109433d83eb70c49b6b21e50ffee0bb2af3ea3c9246322d9851be4e22440ce

See more details on using hashes here.

File details

Details for the file clevercsv-0.7.6-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.6-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 91c30fbab737b7e5bc2b0a2f9b2569271d4ccf5949bac25df101392942b90043
MD5 02df851f5550902c9eb029185ffb9d50
BLAKE2b-256 5b8756c35085ada8866b28874df598e67a83b6a183b23c8fdfc89b03e05a4a0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 771a01553e28a94988a5605191d51b62c791b2a2e3eeb707f6374d2d3d612e04
MD5 6e702c62bafe472cad63d4b72ce7d952
BLAKE2b-256 0dfb0f185d0d6ae8423021652dffc02e34722f75d1ebf15d35945b9f015f9288

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.7.6-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 77adaa3711d32b465cc1b9d483d1ae59977f0a14afcc275cfe5c1d3b429a9638
MD5 fc4557adf32e32aa1674684b9c39cda5
BLAKE2b-256 cbb07087f40d27af49514f675a03b8a07199cc53fe7e6df92c114e49a503d744

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