{
  "result": {
    "2.8": {
      "name": "crc32c",
      "version": "2.8",
      "metadata_version": "2.4",
      "summary": "A python package implementing the crc32c algorithm in hardware and software",
      "home_page": "",
      "author": "",
      "author_email": "Rodrigo Tobar <rtobar@icrar.org>",
      "maintainer": "",
      "maintainer_email": "",
      "license": "LGPL-2.1-or-later",
      "description": "crc32c\n======\n\n.. image:: https://github.com/ICRAR/crc32c/workflows/Build%20and%20release%20to%20PyPI/badge.svg?branch=master\n\n.. image:: https://badge.fury.io/py/crc32c.svg\n    :target: https://badge.fury.io/py/crc32c\n\nThis package implements the crc32c checksum algorithm.\nIt automatically chooses between a hardware-based implementation\n(using the CRC32C SSE 4.2 instruction of Intel CPUs,\nand the crc32* instructions on ARMv8 CPUs),\nor a software-based one when no hardware support can be found.\n\nBecause ``crc32c`` is in PyPI, you can install it with::\n\n pip install crc32c\n\nSupported platforms are Linux and OSX using the gcc and clang compilers,\nand Windows using the Visual Studio compiler. Other compilers in\nWindows (MinGW for instance) might work.\nBinary wheels are also provided in PyPI for major platforms/architectures.\n\nThe project is using certain gcc/clang compiler extensions to support\nbuilding hardware-specific functions that might not be supported\nby older compiler versions.\n\n\nUsage\n-----\n\nAPI\n^^^\n\nThe core function exposed by this module is ``crc32c(data, value=0, gil_release_mode=-1)``.\nIt computes the CRC32C checksum of ``data``\nstarting with an initial ``value`` checksum,\nsimilarly to how the built-in ``binascii.crc32`` works.\nIt can thus be used like this:\n\n.. code-block:: python\n\n  print(crc32c.crc32c(b'hello world'))\n  # 3381945770\n  crc = crc32c.crc32c(b'hello')\n  print(crc32c.crc32c(b' world', value=crc))\n  # 3381945770\n\nIn older versions,\nthe function exposed by this module was called ``crc32``.\nThat name is still present but deprecated,\nand will be removed in new versions of the library.\n\nThe ``gil_release_mode`` keyword argument\nspecifies whether a call of this library shall release or keep the Global Interpreter Lock.\nIt can be set to the following values:\n\n* Negative: Only release the GIL when ``data`` >= 32KiB\n* 0: Never release the GIL\n* Positive: Always release the GIL\n\nThe ``gil_release_mode`` parameter\ndoesn't have any effect on free-threaded Python builds.\n\nOn top of the ``crc32c`` function,\na ``CRC32CHash(data=b\"\", gil_release_mode=-1)`` class is also offered.\nIt is modelled after the \"hash objects\" of the ``hashlib`` module\nof the standard library. It also offers a ``checksum`` property:\n\n.. code-block:: python\n\n   crc32c_hash = crc32c.CRC32CHash()\n   crc32c_hash.update(b'hello')\n   crc32c_hash.update(b' world')\n   print(crc32c_hash.checksum == crc32c.crc32c(b'hello world'))\n   # True\n   print(crc32c_hash.digest())\n   # b'\\xc9\\x94e\\xaa'\n   digest_as_int = int.from_bytes(crc32c_hash.digest(), \"big\")\n   print(digest_as_int == crc32c.crc32c(b'hello world'))\n   # True\n\nFor more details see\nthe documentation on `hash objects <https://docs.python.org/3/library/hashlib.html#hash-objects>`_.\n\nAdditionally one can consult\nthe following module-level values:\n\n * ``hardware_based`` indicates if the algorithm in use\n   is software- or hardware-based.\n * ``big_endian`` indicates whether the platform is big endian or not.\n\nA benchmarking utility can be found\nwhen executing the ``crc32c.benchmark`` module.\nConsult its help with the ``-h`` flag for options.\n\nCLI\n^^^\n\nA simple ``crc32c`` script is also installed alongside the package.\nIt is also available when running the ``crc32c`` module (e.g., ``python -mcrc32c``).\nIt takes one or more filenames, calculates their crc32c checksums, and prints them on stdout.\nSee ``crc32c -h`` for all available options.\n\nImplementation details\n----------------------\n\nBy default,\nif your CPU doesn't have CRC32C hardware support,\nthe package will fallback to use a software implementation\nof the crc32c checksum algorithm.\nThis behavior can be changed by setting\nthe ``CRC32C_SW_MODE`` environment variable\nto one of the following values:\n\n* ``auto``: same as if unset, will eventually be discontinued.\n* ``force``: use software implementation regardless of hardware support.\n* ``none``: issue a ``RuntimeWarning`` when importing the module,\n  and a ``RuntimeError`` when executing the ``crc32c`` function,\n  if no hardware support is found.\n  In versions of this package up to 2.6\n  an ``ImportError`` was raised when importing the module instead.\n  In 1.x versions this was the default behaviour.\n\nSetting the ``CRC32C_SKIP_HW_PROBE`` to ``1``\nsimulates platforms without hardware support.\nThis is available mostly for internal testing purposes.\n\nThe software algorithm is based\non Intel's `slice-by-8 package <https://sourceforge.net/projects/slicing-by-8/>`_,\nwith some adaptations done\nby `Evan Jones <https://www.evanjones.ca/crc32c.html>`_\nand packaging provided by `Ferry Toth <https://github.com/htot/crc32c>`_.\nFurther adaptations were required\nto make the code more portable\nand fit for inclusion within this python package.\n\nThe Intel SSE 4.2 algorithm\nis based on `Mark Adler's code <http://stackoverflow.com/questions/17645167/implementing-sse-4-2s-crc32c-in-software/17646775>`_,\nwith some modifications required\nto make the code more portable\nand fit for inclusion within this python package.\n\nThe ARMv8 hardware implementation\nis based on Google's `crc32c <https://github.com/google/crc32c>`_\nC++ library.\n\nCopyright\n---------\n\nThis package is copyrighted::\n\n ICRAR - International Centre for Radio Astronomy Research\n (c) UWA - The University of Western Australia, 2017\n Copyright by UWA (in the framework of the ICRAR)\n\nThe original slice-by-8 software algorithm\nis copyrighted by::\n\n Copyright (c) 2004-2006 Intel Corporation - All Rights Reserved\n\nFurther adaptations to the slice-by-8 algorithm\nprevious to the inclusion in this package\nare copyrighted by::\n\n Copyright 2008,2009,2010 Massachusetts Institute of Technology.\n\nThe original Intel SSE 4.2 crc32c algorithm\nis copyrighted by::\n\n Copyright (C) 2013 Mark Adler\n\nThe crc32c ARMv8 hardware code\nis copyrighted by::\n\n Copyright 2017 The CRC32C Authors\n\nA copy of the `AUTHORS <AUTHORS.google-crc32c>`_ file\nfrom Google's crc32c project\nas it was at the time of copying the code\nis included in this repository.\n\nLicense\n-------\n\nThis package is licensed under `the LGPL-2.1 license <LICENSE>`_.\n\nThe original slice-by-8 software algorithm\nis licensed under `the 2-clause BSD licence\n<https://opensource.org/licenses/bsd-license.html>`_.\n\nFurther modifications to the slice-by-8 software algorithm\nare licensed under `a 3-clause BSD licence <LICENSE.slice-by-8>`_\n\nThe original Intel SSE 4.2 crc32c algorithm's code\nis licensed under a custom license\nembedded in the ``crc32c_adler.c`` file.\n\nThe original crc32c ARMv8 hardware code\nis licensed under `a 3-clause BSD license <LICENSE.google-crc32c>`_.\n",
      "keywords": "",
      "platform": [],
      "classifiers": [
        "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)",
        "Operating System :: OS Independent",
        "Programming Language :: C",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",
        "Programming Language :: Python :: 3.10",
        "Programming Language :: Python :: 3.11",
        "Programming Language :: Python :: 3.12",
        "Programming Language :: Python :: 3.13",
        "Programming Language :: Python :: 3.14",
        "Environment :: MetaData :: IBM Python Ecosystem"
      ],
      "download_url": "",
      "supported_platform": [],
      "comment": "",
      "provides": [],
      "requires": [],
      "obsoletes": [],
      "project_urls": [
        "github, https://github.com/ICRAR/crc32c",
        "changelog, https://github.com/ICRAR/crc32c/blob/master/CHANGELOG.md",
        "issues, https://github.com/ICRAR/crc32c/issues"
      ],
      "provides_dist": [],
      "obsoletes_dist": [],
      "requires_dist": [],
      "requires_external": [],
      "requires_python": ">=3.7",
      "description_content_type": "text/x-rst",
      "provides_extras": [],
      "dynamic": [
        "license-file"
      ],
      "license_expression": "",
      "license_file": [
        "LICENSE",
        "LICENSE.google-crc32c",
        "LICENSE.slice-by-8",
        "AUTHORS.google-crc32c"
      ],
      "+links": [
        {
          "rel": "releasefile",
          "hash_spec": "sha256=6be091f48907fe39e486a4170b4a0d658572a25166f9352d880565f851b68f71",
          "hashes": {
            "sha256": "6be091f48907fe39e486a4170b4a0d658572a25166f9352d880565f851b68f71"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/6be/091f48907fe39/crc32c-2.8-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl",
          "log": [
            {
              "what": "overwrite",
              "who": null,
              "when": [
                2026,
                8,
                20,
                10,
                34,
                14
              ],
              "count": 1
            },
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                8,
                20,
                10,
                34,
                14
              ],
              "dst": "ppc64le/linux"
            }
          ]
        },
        {
          "rel": "releasefile",
          "hash_spec": "sha256=1bd1c7fd4989069e84b431367bfde4beb241fe3cb5401d6a9aa34aa1275f158b",
          "hashes": {
            "sha256": "1bd1c7fd4989069e84b431367bfde4beb241fe3cb5401d6a9aa34aa1275f158b"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/1bd/1c7fd4989069e/crc32c-2.8-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl",
          "log": [
            {
              "what": "overwrite",
              "who": null,
              "when": [
                2026,
                8,
                20,
                10,
                34,
                14
              ],
              "count": 1
            },
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                8,
                20,
                10,
                34,
                14
              ],
              "dst": "ppc64le/linux"
            }
          ]
        },
        {
          "rel": "releasefile",
          "hash_spec": "sha256=18fab1aa69cb80c3442f30672601d992934dd7ced2156abaa94d3ddc1ac6ce3a",
          "hashes": {
            "sha256": "18fab1aa69cb80c3442f30672601d992934dd7ced2156abaa94d3ddc1ac6ce3a"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/18f/ab1aa69cb80c3/crc32c-2.8-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl",
          "log": [
            {
              "what": "overwrite",
              "who": null,
              "when": [
                2026,
                8,
                20,
                10,
                34,
                14
              ],
              "count": 1
            },
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                8,
                20,
                10,
                34,
                14
              ],
              "dst": "ppc64le/linux"
            }
          ]
        },
        {
          "rel": "releasefile",
          "hash_spec": "sha256=a8708f876ee2b1e07141a1a68da1c15f5d6688038991a4917b1e7cf6f9131cab",
          "hashes": {
            "sha256": "a8708f876ee2b1e07141a1a68da1c15f5d6688038991a4917b1e7cf6f9131cab"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/a87/08f876ee2b1e0/crc32c-2.8-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl",
          "log": [
            {
              "what": "overwrite",
              "who": null,
              "when": [
                2026,
                8,
                20,
                10,
                34,
                15
              ],
              "count": 1
            },
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                8,
                20,
                10,
                34,
                15
              ],
              "dst": "ppc64le/linux"
            }
          ]
        },
        {
          "rel": "releasefile",
          "hash_spec": "sha256=6f84e10e33012daed6e592b1b1cfbd84080dc331f6ce0eb83ede252ffec4aff7",
          "hashes": {
            "sha256": "6f84e10e33012daed6e592b1b1cfbd84080dc331f6ce0eb83ede252ffec4aff7"
          },
          "href": "https://wheels.developerfirst.ibm.com/ppc64le/linux/+f/6f8/4e10e33012dae/crc32c-2.8-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl",
          "log": [
            {
              "what": "overwrite",
              "who": null,
              "when": [
                2026,
                8,
                20,
                10,
                34,
                15
              ],
              "count": 1
            },
            {
              "what": "upload",
              "who": "ppc64le",
              "when": [
                2026,
                8,
                20,
                10,
                34,
                15
              ],
              "dst": "ppc64le/linux"
            }
          ]
        }
      ]
    }
  },
  "type": "projectconfig"
}
