Skip to main content

No project description provided

Project description

aiocsv

Asynchronous CSV reading and writing.

Installation

pip install aiocsv. Python 3.8+ is required.

This module contains an extension written in C. Pre-build binaries may not be available for your configuration. You might need a C compiler and Python headers to install aiocsv.

Usage

AsyncReader & AsyncDictReader accept any object that has a read(size: int) coroutine, which should return a string.

AsyncWriter & AsyncDictWriter accept any object that has a write(b: str) coroutine.

Reading is implemented using a custom CSV parser, which should behave exactly like the CPython parser.

Writing is implemented using the synchronous csv.writer and csv.DictWriter objects - the serializers write data to a StringIO, and that buffer is then rewritten to the underlying asynchronous file.

Example

Example usage with aiofiles.

import asyncio
import csv

import aiofiles
from aiocsv import AsyncReader, AsyncDictReader, AsyncWriter, AsyncDictWriter

async def main():
    # simple reading
    async with aiofiles.open("some_file.csv", mode="r", encoding="utf-8", newline="") as afp:
        async for row in AsyncReader(afp):
            print(row)  # row is a list

    # dict reading, tab-separated
    async with aiofiles.open("some_other_file.tsv", mode="r", encoding="utf-8", newline="") as afp:
        async for row in AsyncDictReader(afp, delimiter="\t"):
            print(row)  # row is a dict

    # simple writing, "unix"-dialect
    async with aiofiles.open("new_file.csv", mode="w", encoding="utf-8", newline="") as afp:
        writer = AsyncWriter(afp, dialect="unix")
        await writer.writerow(["name", "age"])
        await writer.writerows([
            ["John", 26], ["Sasha", 42], ["Hana", 37]
        ])

    # dict writing, all quoted, "NULL" for missing fields
    async with aiofiles.open("new_file2.csv", mode="w", encoding="utf-8", newline="") as afp:
        writer = AsyncDictWriter(afp, ["name", "age"], restval="NULL", quoting=csv.QUOTE_ALL)
        await writer.writeheader()
        await writer.writerow({"name": "John", "age": 26})
        await writer.writerows([
            {"name": "Sasha", "age": 42},
            {"name": "Hana"}
        ])

asyncio.run(main())

Differences with csv

aiocsv strives to be a drop-in replacement for Python's builtin csv module. However, there are 3 notable differences:

  • Readers accept objects with async read methods, instead of an AsyncIterable over lines from a file.
  • AsyncDictReader.fieldnames can be None - use await AsyncDictReader.get_fieldnames() instead.
  • Changes to csv.field_size_limit are not picked up by existing Reader instances. The field size limit is cached on Reader instantiation to avoid expensive function calls on each character of the input.

Other, minor, differences include:

  • AsyncReader.line_num, AsyncDictReader.line_num and AsyncDictReader.dialect are not settable,
  • AsyncDictReader.reader is of AsyncReader type,
  • AsyncDictWriter.writer is of AsyncWriter type,
  • AsyncDictWriter provides an extra, read-only dialect property.

Reference

aiocsv.AsyncReader

AsyncReader(
    asyncfile: aiocsv.protocols.WithAsyncRead,
    dialect: str | csv.Dialect | Type[csv.Dialect] = "excel",
    **csv_dialect_kwargs: Unpack[aiocsv.protocols.CsvDialectKwargs],
)

An object that iterates over records in the given asynchronous CSV file. Additional keyword arguments are understood as dialect parameters.

Iterating over this object returns parsed CSV rows (List[str]).

Methods:

  • __aiter__(self) -> self
  • async __anext__(self) -> List[str]

Read-only properties:

  • dialect: The csv.Dialect used when parsing
  • line_num: The number of lines read from the source file. This coincides with a 1-based index of the line number of the last line of the recently parsed record.

aiocsv.AsyncDictReader

AsyncDictReader(
    asyncfile: aiocsv.protocols.WithAsyncRead,
    fieldnames: Optional[Sequence[str]] = None,
    restkey: Optional[str] = None,
    restval: Optional[str] = None,
    dialect: str | csv.Dialect | Type[csv.Dialect] = "excel",
    **csv_dialect_kwargs: Unpack[aiocsv.protocols.CsvDialectKwargs],
)

An object that iterates over records in the given asynchronous CSV file. All arguments work exactly the same was as in csv.DictReader.

Iterating over this object returns parsed CSV rows (Dict[str, str]).

Methods:

  • __aiter__(self) -> self
  • async __anext__(self) -> Dict[str, str]
  • async get_fieldnames(self) -> List[str]

Properties:

  • fieldnames: field names used when converting rows to dictionaries
    ⚠️ Unlike csv.DictReader, this property can't read the fieldnames if they are missing - it's not possible to await on the header row in a property getter. Use await reader.get_fieldnames().
    reader = csv.DictReader(some_file)
    reader.fieldnames  # ["cells", "from", "the", "header"]
    
    areader = aiofiles.AsyncDictReader(same_file_but_async)
    areader.fieldnames   # ⚠️ None
    await areader.get_fieldnames()  # ["cells", "from", "the", "header"]
    
  • restkey: If a row has more cells then the header, all remaining cells are stored under this key in the returned dictionary. Defaults to None.
  • restval: If a row has less cells then the header, then missing keys will use this value. Defaults to None.
  • reader: Underlying aiofiles.AsyncReader instance

Read-only properties:

  • dialect: Link to self.reader.dialect - the current csv.Dialect
  • line_num: The number of lines read from the source file. This coincides with a 1-based index of the line number of the last line of the recently parsed record.

aiocsv.AsyncWriter

AsyncWriter(
    asyncfile: aiocsv.protocols.WithAsyncWrite,
    dialect: str | csv.Dialect | Type[csv.Dialect] = "excel",
    **csv_dialect_kwargs: Unpack[aiocsv.protocols.CsvDialectKwargs],
)

An object that writes csv rows to the given asynchronous file. In this object "row" is a sequence of values.

Additional keyword arguments are passed to the underlying csv.writer instance.

Methods:

  • async writerow(self, row: Iterable[Any]) -> None: Writes one row to the specified file.
  • async writerows(self, rows: Iterable[Iterable[Any]]) -> None: Writes multiple rows to the specified file.

Readonly properties:

  • dialect: Link to underlying's csv.writer's dialect attribute

aiocsv.AsyncDictWriter

AsyncDictWriter(
    asyncfile: aiocsv.protocols.WithAsyncWrite,
    fieldnames: Sequence[str],
    restval: Any = "",
    extrasaction: Literal["raise", "ignore"] = "raise",
    dialect: str | csv.Dialect | Type[csv.Dialect] = "excel",
    **csv_dialect_kwargs: Unpack[aiocsv.protocols.CsvDialectKwargs],
)

An object that writes csv rows to the given asynchronous file. In this object "row" is a mapping from fieldnames to values.

Additional keyword arguments are passed to the underlying csv.DictWriter instance.

Methods:

  • async writeheader(self) -> None: Writes header row to the specified file.
  • async writerow(self, row: Mapping[str, Any]) -> None: Writes one row to the specified file.
  • async writerows(self, rows: Iterable[Mapping[str, Any]]) -> None: Writes multiple rows to the specified file.

Properties:

  • fieldnames: Sequence of keys to identify the order of values when writing rows to the underlying file
  • restval: Placeholder value used when a key from fieldnames is missing in a row, defaults to ""
  • extrasaction: Action to take when there are keys in a row, which are not present in fieldnames, defaults to "raise" which causes ValueError to be raised on extra keys, may be also set to "ignore" to ignore any extra keys
  • writer: Link to the underlying AsyncWriter

Readonly properties:

  • dialect: Link to underlying's csv.reader's dialect attribute

aiocsv.protocols.WithAsyncRead

A typing.Protocol describing an asynchronous file, which can be read.

aiocsv.protocols.WithAsyncWrite

A typing.Protocol describing an asynchronous file, which can be written to.

aiocsv.protocols.CsvDialectArg

Type of the dialect argument, as used in the csv module.

aiocsv.protocols.CsvDialectKwargs

Keyword arguments used by csv module to override the dialect settings during reader/writer instantiation.

Development

Contributions are welcome, however please open an issue beforehand. aiocsv is meant as a replacement for the built-in csv, any features not present in the latter will be rejected.

Building from source

To create a wheel (and a source tarball), run python -m build.

For local development, use a virtual environment. pip install --editable . will build the C extension and make it available for the current venv. This is required for running the tests. However, due to the mess of Python packaging this will force an optimized build without debugging symbols. If you need to debug the C part of aiocsv and build the library with e.g. debugging symbols, the only sane way is to run python setup.py build --debug and manually copy the shared object/DLL from build/lib*/aiocsv to aiocsv.

Tests

This project uses pytest with pytest-asyncio for testing. Run pytest after installing the library in the manner explained above.

Linting & other tools

This library uses black and isort for formatting and pyright in strict mode for type checking.

For the C part of library, please use clang-format for formatting and clang-tidy linting, however this are not yet integrated in the CI.

Installing required tools

pip install -r requirements.dev.txt will pull all of the development tools mentioned above, however this might not be necessary depending on your setup. For example, if you use VS Code with the Python extension, pyright is already bundled and doesn't need to be installed again.

Recommended VS Code settings

Use Python, Pylance (should be installed automatically alongside Python extension), black and isort Python extensions.

You will need to install all dev dependencies from requirements.dev.txt, except for pyright. Recommended .vscode/settings.json:

{
    "C_Cpp.codeAnalysis.clangTidy.enabled": true,
    "python.testing.pytestArgs": [
        "."
    ],
    "python.testing.unittestEnabled": false,
    "python.testing.pytestEnabled": true,
    "[python]": {
        "editor.formatOnSave": true,
        "editor.codeActionsOnSave": {
            "source.organizeImports": "always"
        }
    },
    "[c]": {
        "editor.formatOnSave": true
    }
}

For the C part of the library, C/C++ extension is sufficient. Ensure that your system has Python headers installed. Usually a separate package like python3-dev needs to be installed, consult with your system repositories on that. .vscode/c_cpp_properties.json needs to manually include Python headers under includePath. On my particular system this config file looks like this:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include/python3.11"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/clang",
            "cStandard": "c17",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-clang-x64"
        }
    ],
    "version": 4
}

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

aiocsv-1.3.2.tar.gz (24.8 kB view details)

Uploaded Source

Built Distributions

aiocsv-1.3.2-cp312-cp312-win_amd64.whl (29.1 kB view details)

Uploaded CPython 3.12 Windows x86-64

aiocsv-1.3.2-cp312-cp312-musllinux_1_1_x86_64.whl (55.9 kB view details)

Uploaded CPython 3.12 musllinux: musl 1.1+ x86-64

aiocsv-1.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (51.5 kB view details)

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

aiocsv-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl (26.5 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

aiocsv-1.3.2-cp311-cp311-win_amd64.whl (29.1 kB view details)

Uploaded CPython 3.11 Windows x86-64

aiocsv-1.3.2-cp311-cp311-musllinux_1_1_x86_64.whl (54.3 kB view details)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

aiocsv-1.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (49.4 kB view details)

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

aiocsv-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl (26.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

aiocsv-1.3.2-cp310-cp310-win_amd64.whl (29.1 kB view details)

Uploaded CPython 3.10 Windows x86-64

aiocsv-1.3.2-cp310-cp310-musllinux_1_1_x86_64.whl (52.2 kB view details)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

aiocsv-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.0 kB view details)

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

aiocsv-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl (26.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

aiocsv-1.3.2-cp39-cp39-win_amd64.whl (29.2 kB view details)

Uploaded CPython 3.9 Windows x86-64

aiocsv-1.3.2-cp39-cp39-musllinux_1_1_x86_64.whl (53.6 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

aiocsv-1.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (49.2 kB view details)

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

aiocsv-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl (26.7 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

aiocsv-1.3.2-cp38-cp38-win_amd64.whl (29.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

aiocsv-1.3.2-cp38-cp38-musllinux_1_1_x86_64.whl (55.5 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

aiocsv-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (51.2 kB view details)

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

aiocsv-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl (26.7 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file aiocsv-1.3.2.tar.gz.

File metadata

  • Download URL: aiocsv-1.3.2.tar.gz
  • Upload date:
  • Size: 24.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for aiocsv-1.3.2.tar.gz
Algorithm Hash digest
SHA256 806d93465c7808d58d3ff0d2bba270fb4d04b934be6a1e95d0834c50a510910e
MD5 d0e3ff1a8929c64cebebddbf2c97bda6
BLAKE2b-256 3378bd4a85d195e57e72837415ef81d26ce6db6fdf185dce8d4f6a7c099ed4af

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: aiocsv-1.3.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiocsv-1.3.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 59b0ea2d9e73539d4c1276467c4457acafa995717ea1b5340f3737f2cde2f71a
MD5 ccadcca20e29f6e31674ee5864ef84a1
BLAKE2b-256 1339ee5645807a947736c87ab7c0dfcdbceb7d7f8d1d31cb7d52992cbd5d6d44

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 8c7aee34ceff4eaa654f01acbdba648297f5f9532dc7a23fac62defec28e0fe5
MD5 89cc6797c32f6f918e2bf2f8605eb7e5
BLAKE2b-256 c21967edf04b47168a2639d73ebaae25f2459d7284d10a5e7a2fef72a69bb31e

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.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 aiocsv-1.3.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10780033a1ed3da825f2256449d177b7106b3c5a2d64bd683eab37f1fdee1e36
MD5 bd06255b6c00723de3447b1a83c74916
BLAKE2b-256 946fcb2d7b751a03433a30e7a645f0b3a126f5f2ecb0947c3da5a04496c06767

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 db943a463cb6828ba81bd7c083c6dd4c96edac4880b8638af81798d694405e26
MD5 aea2a53654d6c0146c634b186162057e
BLAKE2b-256 52b548e8b825d8ec9ffbb47ebbc381702d5dfb59ef01ad00174bf43123b860cf

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: aiocsv-1.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiocsv-1.3.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9edb342b0d7dba94d8976f46ba5814b8d8704d67a45e1b8a6579ab0ba04309e7
MD5 5bc715ff6481f50f6e39f510ee7f907e
BLAKE2b-256 33e65e661bc89cd094a7d92f5883c16f9651a52c4a8f38623c8de1851d7ffa84

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 e9c98f8d760add0b52274523baa4b81dde4a3c96f79222d3d4d6965bac9cdcbd
MD5 00907af2f9be0a51db4ee85077a3eebb
BLAKE2b-256 41c20f7d38cf5411350b8448f7c5c77f65247224fa96edfc7a5e997deb5fc96d

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.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 aiocsv-1.3.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4004569bff39cb839a335b8f673a6496fd5b0b6e074c7adb7aee4a0c8379ea22
MD5 8fda36188e6a38e5b6f392483a57a8d8
BLAKE2b-256 0dbc2659b85488b520d66b31ac83f42f7493653f61a4941b4f0807f3f73bd3e0

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7c25ad8afbf79d28ec3320e608c7f38d3eff93e96ebbbd2430ae8fa0f6e7631b
MD5 4be4351b9c09792ee644f33b20f3d1de
BLAKE2b-256 d6b3548e5b377f65d3ae02c0674a54de76c150c8d050f4fe7b0e43be866ba1be

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: aiocsv-1.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 29.1 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiocsv-1.3.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 198c905ec29897c347bf9b18eb410af13d7ac94a03d4b673e64eaa5f4557c913
MD5 afeb7f59b676d58b52b29c26440b902c
BLAKE2b-256 ac69d6da552b7fe5d2908c9bfbcc62c100cf19eaaf711a213cb9f84448569765

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2f921828e386bb6945ed7d268e1524349ea506974ae35b9772542714f0ef3efd
MD5 b4b76880f5d8e4c22f108ba4fc0a6079
BLAKE2b-256 661be03e1469ff228ac0a2c852d6fadfeebacd347f11f7aedd5818f7d42e0ba1

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.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 aiocsv-1.3.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bdd688dbc1723f2b3a433e42041ceb9c9a8fe70f547d35b2da4ea31e4c78efc5
MD5 60bfbf2ebb140a2fbb811730eff6407b
BLAKE2b-256 7dd5616a3d7b07558ee1010cf233784bf1a6844b0664e92a489a380b887ff773

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f1996ac960c196aecc7d22e701c273a2676d13bf25575af78d4e515fc724ef20
MD5 e292bc2c742439f7cca2b985635f4def
BLAKE2b-256 5bacf16d8ac8f340f84102294837cbf1ee8a30a211270f49f91ccc084f0bea93

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: aiocsv-1.3.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiocsv-1.3.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 17341fa3b90414adda6cd8c79efc3c1a3f58a4dc72c2053c4532e82b61ef9f5e
MD5 d7799be7dc8233862fb7a8cabd5abc46
BLAKE2b-256 855d7ab47f28fed4776be71048595ed6e4847bfc9286d737526fcf823e3c928f

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 2ef14fa0839394ecc52274ea538b12b7b2e756eb0f514902a8fb391612161079
MD5 543ced95b28dcbf97b7b65fddfa54a1d
BLAKE2b-256 ce688da12acd1af5b2f954be683fe24a998161c78f08f4b0ff788c1992ec3902

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.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 aiocsv-1.3.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c3e5a817b3489283cc1fd80f8ba56431d552dc9ea4e539c0069d8d56bf0fba7
MD5 77f871c8aa630996ab35925241b9cfb7
BLAKE2b-256 4304e6597b11c7e274a3f3f34db30702f33ec25b7513a23fa3bba8b3160aff2a

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dfd2ef214b6d7944991f62ac593ad45bdaf0ed9f5741c8441ee7de148e512fe7
MD5 7c1b03510328099bb2b1da7cd22c5034
BLAKE2b-256 5d489c943de5d9437ef66b3e79cc6f011fe4466c99b274ee9e227e734ac2a421

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: aiocsv-1.3.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 29.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for aiocsv-1.3.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 b7220b4a6545abbbb6ab8fe7d4880aa8334f156b872b83641b898df2da9a6484
MD5 59746e53bc98377d5e7ee685826aecf9
BLAKE2b-256 bca22dc29134d9b0c958b7da41c2b998ad25838b4480cccc5d26e7990621edeb

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 d125286f971e0038e8872f31b6f1cd6184b9c508445e6633f075d8b543b444bc
MD5 379c2e0891991e128db63e0ffede08a8
BLAKE2b-256 6fc5b79a031e733f63c767c9a51a0f13b8e2e84b82c89ca67725be1ba788e627

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.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 aiocsv-1.3.2-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9aa9629c8a1c07e9d02c7d80d84f021f7994fe30d021f13ac963e251b54724ef
MD5 f1dbb5ddc035bb955f03692f5a2f1173
BLAKE2b-256 0b4404c10f8504fbce091e7df1f8e27923e5017aef7eec56ff4775d8f8c0112f

See more details on using hashes here.

File details

Details for the file aiocsv-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for aiocsv-1.3.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1c7d1700b8de16f25b24bfcebfc2b0817b29ce413f6961f08d5aa95bf00a6862
MD5 1d6d52a4b44d4c43958afcfb7d742d7b
BLAKE2b-256 6b6968459f9a556be05a467b544f49149dc3709e3ecd927e530424daae5df2f2

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