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)

Since CleverCSV v0.8.0, dialect detection is a lot faster than in previous versions. However, for large files, you can speed up detection even more by supplying a sample of the document to the sniffer instead of the whole file, 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.8.2.tar.gz (79.4 kB view details)

Uploaded Source

Built Distributions

clevercsv-0.8.2-cp312-cp312-win_amd64.whl (82.4 kB view details)

Uploaded CPython 3.12 Windows x86-64

clevercsv-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (111.7 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

clevercsv-0.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (111.8 kB view details)

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

clevercsv-0.8.2-cp312-cp312-macosx_11_0_arm64.whl (76.3 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

clevercsv-0.8.2-cp312-cp312-macosx_10_9_x86_64.whl (75.9 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

clevercsv-0.8.2-cp312-cp312-macosx_10_9_universal2.whl (85.5 kB view details)

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

clevercsv-0.8.2-cp311-cp311-win_amd64.whl (82.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

clevercsv-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (110.9 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

clevercsv-0.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (110.6 kB view details)

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

clevercsv-0.8.2-cp311-cp311-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

clevercsv-0.8.2-cp311-cp311-macosx_10_9_x86_64.whl (76.0 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

clevercsv-0.8.2-cp311-cp311-macosx_10_9_universal2.whl (85.6 kB view details)

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

clevercsv-0.8.2-cp310-cp310-win_amd64.whl (82.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

clevercsv-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (107.0 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

clevercsv-0.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106.9 kB view details)

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

clevercsv-0.8.2-cp310-cp310-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

clevercsv-0.8.2-cp310-cp310-macosx_10_9_x86_64.whl (75.9 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

clevercsv-0.8.2-cp310-cp310-macosx_10_9_universal2.whl (85.6 kB view details)

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

clevercsv-0.8.2-cp39-cp39-win_amd64.whl (82.4 kB view details)

Uploaded CPython 3.9 Windows x86-64

clevercsv-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (106.7 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

clevercsv-0.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106.6 kB view details)

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

clevercsv-0.8.2-cp39-cp39-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

clevercsv-0.8.2-cp39-cp39-macosx_10_9_x86_64.whl (75.9 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

clevercsv-0.8.2-cp39-cp39-macosx_10_9_universal2.whl (85.6 kB view details)

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

clevercsv-0.8.2-cp38-cp38-win_amd64.whl (82.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

clevercsv-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (108.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ ARM64

clevercsv-0.8.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (108.2 kB view details)

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

clevercsv-0.8.2-cp38-cp38-macosx_11_0_arm64.whl (76.4 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

clevercsv-0.8.2-cp38-cp38-macosx_10_9_x86_64.whl (75.9 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

clevercsv-0.8.2-cp38-cp38-macosx_10_9_universal2.whl (85.6 kB view details)

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

File details

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

File metadata

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

File hashes

Hashes for clevercsv-0.8.2.tar.gz
Algorithm Hash digest
SHA256 fac1b9671bd77e7835f5fe22898df88b1a11cfd924ff71fc2d0f066065dea940
MD5 81d77163081605f010dc384f9dfb3134
BLAKE2b-256 df806ad1640e50d10b3e5e87e26c338a8c981ae0e6904844d7e776bce0939975

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 74133c7225037052247584cf2df99b052fce4659a423c30f0ea84532e0a30924
MD5 d91ee173b956bba972942c5c60019316
BLAKE2b-256 9a83fe07edec87eb9db52403baee720ae2b2030acca70560582051ce9a019776

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8b68a7fbddef0e1746d3ec5e4d114e1900eb1a86d71250b0b208622daa5d2c7c
MD5 3468aca38268e77bee5009ec8539bf01
BLAKE2b-256 5879064318d0867d0a80206bd7ea35810628f15244abb6270c1653cbc7f40099

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-cp312-cp312-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.8.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9cb807e7bea5a18cca4d51d1abc58e2f975759b7a0bcb78e1677c56ac7827e9a
MD5 e841744d67023f073ec400bcec3b310f
BLAKE2b-256 dcaffd362e6064eb2ade6db32efc3a4c84492b18a458ae0542dd1df425b57b69

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8832093b49defb2f224a98158265fe0bbee9ed6a70a8105cf8d7c4b949a8e95b
MD5 14eb917d7d2b61dd20a430689cce657c
BLAKE2b-256 78584fce720ae9396c60d60a04e8952cb3e33ad50ae9fb640afe1366b6843bd1

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3e2528f89ee483878c3c8030a2d2da4eef2a8a7ac3036adad0767c1025a99df7
MD5 8c8136b4ac1ad82df01664b97d665998
BLAKE2b-256 02ee2ab6db72ca337da30e414aa12f1cde36acbab7a515e272483e301195e6aa

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-cp312-cp312-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp312-cp312-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 2bfa4fe39b3b51bcf07d2f8cf033d7ac53bac5292ef7b9a88bae7c9e6689f366
MD5 24d5de42a96ef70de1d6d3c33cd57a5d
BLAKE2b-256 0f355168712a4100d3c7b2c397b14cdf9fba7cca4eee758e0cc0792244bc3095

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e474cc07167010c4cb6b1a65588309bc855537cae01ab63cdf61a511e69b4722
MD5 e5805f89b0a8f36710d080cd92d3e4c3
BLAKE2b-256 727159c292089e8dc88196781627456cd9627eedfbe213393a679cb69ea8c8fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1b942ee944264e5c4dbf276de579a502d11d3571daec97af5ebe54e6cadf2b77
MD5 3f85fa69695feb1cb7cf821a8a20b598
BLAKE2b-256 6eceeeb242b0c2dda4229bd542d3f4079d7e3a3a74a8a518d7e5dff2ba8d057a

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-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.8.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 48a8a81c1f324e2a5589e0de9b6bd965f1dd19b54b0e9e7f97cab5edf888d486
MD5 6cbac61717ffc66a43997bbf6d63114e
BLAKE2b-256 53be6992834496c6ab6c62a3af592b717c66c4a170e5fe2abc8274e2abd93ee7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1be9c6f2e73117a77d0b0491c07738fd177ba5e2bf996ac9a221417b223162d7
MD5 0ba1fe4720ca91741b2512a7bc4a90f6
BLAKE2b-256 b0ce385990e0492fe6512b182a52b6f2714e16e15d2e181f26cbcd01c22ae2b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1ed99467ba2d47a2e1e81e990f74c7542d2cd0da120d922c5c992c17ac3ba026
MD5 7f8e9ee9f1a7cd163eeecd9e02063593
BLAKE2b-256 a01ff3065c5e5156d7e97925af418be373562e3b6de652dc6b3331c0fe53c95a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 3502c7af7a4b7a50b923a5972a9357ae2a37aa857dd96c7489c201d104e5d0b9
MD5 bcd524f26688c1cce94c67da44546255
BLAKE2b-256 ea5faf22e01d37bd7db1c67566ac169bbdb522cd5a3a7ec8ff5ec063034b2b1c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1e38761cd3f1977f8298a1a4cac3981c953aaf2226c0f1cc3f1ccf2172100ba4
MD5 8540af52e8a9a3b89fcd6dc5c3a2af78
BLAKE2b-256 e0372ace9f7a0ce2c96765f17ac28b60c8794596eef11a6d7dd3fbdd24ac72c9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 755369a540d40295ea2898343c44dc8a4886e7c9e2fd5f5a780d2995a5516e1d
MD5 7d97b9b545430fa1c676ec9dd2417bee
BLAKE2b-256 b2b3530a7d79e9d046f87a17631d1721a86c194a7452fc850818c09afeeb3950

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-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.8.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0fe155a8e39160692869f3b9b8a8bca9ba215cc350b9c804437edaa90ede4d16
MD5 8e542f7cbebd0b7b4783dde359cc24dc
BLAKE2b-256 9bde31e1cd99a7de986aa6fe9d0b5fc15640313cc11fa8c02d0911759bcc6743

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7a65d9722303e3db439124418ee312fcab6a75897175842690eae94bdf51b72b
MD5 3e2201418048aaeb857a56f04824bfe0
BLAKE2b-256 ede0e011c6df3bdd8fc8cbe97de17076039b5adde5dfd95b960e525d2b4f71ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bcf2402578f2f1c655ed21370e668f44098d9734129804f0fba1779dab7f2c47
MD5 b634c1be06d61b62ae7e429283ff1360
BLAKE2b-256 2df2fdfbc51ca6aaddc16b296730bafd6086426af202de370b043952efbd62c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 67ab7dc8490ed391add1f26db262d09067796be7e76948bde0a9c6f1dddb7508
MD5 9eb471ea58f87f6b04bf0f2889ed95b8
BLAKE2b-256 d691989d95b0149bb1b6d30254772ad36094f929cc2762b7adb8ef6e71658df6

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for clevercsv-0.8.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 850f9c112377a73b0bac093df45b846513d34509ba3774fe04061ba4a4afca92
MD5 ad218d9eb54f7aa2f7e67ea7d2bf67cf
BLAKE2b-256 dd4b9842840e36dbce5d1fa575bacec7632a4b28c181fca85bc0f5c5c26f97c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ff57768d060ac6509dd33a65fa1d2a0fbb70cd62d0075d80a96367a2a9150765
MD5 ffb6742b1552c2e4a8a8a9df246a8267
BLAKE2b-256 5d6306877f8f97715641f0b48b669415c0b75f951789c71837482689a25ca184

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-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.8.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f9514a169270fd095827698d1d5d80a8a3785f600441a11fb3a469ad5209eeb
MD5 05d7ac85b999ae6610e7522d1d0b1d5f
BLAKE2b-256 1334a062b187d682580a2c18822f49198cedd49898210cb5e205d723f74d1a2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 71b88f1181fba6e5f6a46292d27f068bdc50200b5660b82a770adfcfb5ae076e
MD5 2147acecbf0c1a0a41cb5ee65ea30deb
BLAKE2b-256 c91080c51edbc765e2f04fc390852b14fdc94bea83fb36f8a41e3a7684696281

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 41513c6ff653baded084a96318e4bdc078a9cce4ff5f9b4656d49aa2421e2e74
MD5 fa1a764d7e7f01241db47d5b3d3d8bb4
BLAKE2b-256 c95937d9b17b2c30e0cd558fbdddaebc69550e6de6c5db5a7865d02c34f28c3e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 dcf560e643c1fb37d3523a11b0dfbce0bda63ac831d8c71fa2973b262bc1603f
MD5 2604b22caed1288f9a3dfc0a0207dce0
BLAKE2b-256 1569d1c6db68638f8714a1ca2c38c4213e7e710cc80eaef79439501c3d60a215

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for clevercsv-0.8.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 17455184e44ce60bb4d21eddd477c7f505b735faff82012d5c857dd31a22e0aa
MD5 9f95936ace8cad5ca8c19fe27f589e06
BLAKE2b-256 154487fa5b052ef235ebd42dd91e8d84aec88eea8333cf1e2ec517e4f396cde3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5bf6058a4930fde2ff00ab82e0ec961247b6e2dd503f67a16f51382b8654cbc2
MD5 08929e77539b98657fa046c664a27f1b
BLAKE2b-256 b240f61058612ae20c38b5be6f3584ad44b0a8cbe07b7ac9260817247df44db7

See more details on using hashes here.

File details

Details for the file clevercsv-0.8.2-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.8.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d9f29bb3fb4c0d35416cc0baf9221d1476f3bee4c367c3618f81ac0f45b71af
MD5 3363a5d66652ce57ccf7d3d4f69d8918
BLAKE2b-256 d9a81282e0bee489c4e63226fd5674eef2cad8d85172a982108b93d9701f3ebf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7f75f46a4d6b75380f2c0b8190fed6fbb7c1400246ce52a71c68f59baf1ec362
MD5 fa817090971447e63647fb0cddec28dc
BLAKE2b-256 0a472b13c41e9dca52276d47793a14e1af01607269a2139edd8f62fc6c0f139f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c1129f1328c0940b13b9b08a72f04c8b0a85a6a021994999f34cd3abe19ca206
MD5 7d6f82e986ae8316d8e1aa988f6b6719
BLAKE2b-256 915ca16df13ab47a107a45da721af02065763fe18147669cf3d365aa4cf3f84a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for clevercsv-0.8.2-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 cb9241fe5d6a2e3330c52c04fd18b7c279bbdeb7d0ecef8c4267f14336021d78
MD5 9b76f21e8378cfd280a2367016431223
BLAKE2b-256 557c248cdc4dbaadcf3619e52449ec7c287c0fcf9277221c569095b357bacef5

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