iscc-core


Nameiscc-core JSON
Version 1.1.0 PyPI version JSON
download
home_pagehttps://iscc.codes
SummaryISCC - Core Algorithms
upload_time2024-11-23 20:22:09
maintainerNone
docs_urlNone
authorTitusz
requires_python<4.0,>=3.9
licenseApache-2.0
keywords iscc identifier media hash similarity
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ISCC - Codec & Algorithms

[![Build](https://github.com/iscc/iscc-core/actions/workflows/tests.yml/badge.svg)](https://github.com/iscc/iscc-core/actions/workflows/tests.yml)
[![Version](https://img.shields.io/pypi/v/iscc-core.svg)](https://pypi.python.org/pypi/iscc-core/)
[![Coverage](https://codecov.io/gh/iscc/iscc-core/branch/main/graph/badge.svg?token=7BJ7HJU815)](https://codecov.io/gh/iscc/iscc-core)
[![Quality](https://app.codacy.com/project/badge/Grade/ad1cc48ac0c0413ea2373a938148f019)](https://www.codacy.com/gh/iscc/iscc-core/dashboard)
[![Downloads](https://pepy.tech/badge/iscc-core)](https://pepy.tech/project/iscc-core)

`iscc-core` is the reference implementation of the core algorithms of the [ISCC](https://iscc.codes)
(*International Standard Content Code*)

## What is the ISCC

The ISCC is a similarity preserving fingerprint and identifier for digital media assets.

ISCCs are generated algorithmically from digital content, just like cryptographic hashes. However,
instead of using a single cryptographic hash function to identify data only, the ISCC uses various
algorithms to create a composite identifier that exhibits similarity-preserving properties (soft
hash).

The component-based structure of the ISCC identifies content at multiple levels of abstraction. Each
component is self-describing, modular, and can be used separately or with others to aid in various
content identification tasks. The algorithmic design supports content deduplication, database
synchronization, indexing, integrity verification, timestamping, versioning, data provenance,
similarity clustering, anomaly detection, usage tracking, allocation of royalties, fact-checking and
general digital asset management use-cases.

## What is `iscc-core`

`iscc-core` is the python based reference implementation of the ISCC core algorithms as defined by
[ISO 24138](https://www.iso.org/standard/77899.html). It also a good reference for porting ISCC to
other programming languages.

!!! tip
    This is a low level reference implementation that does not inlcude features like mediatype
    detection, metadata extraction or file format specific content extraction. Please have a look at
    [iscc-sdk](https://github.com/iscc/iscc-sdk) which adds those higher level features on top of the
    `iscc-core` library.

## Implementors Guide

### Reproducible Environment

For reproducible installation of the reference implementation we included a `poetry.lock` file with
pinned dependencies. Install them using [Python Poetry](https://pypi.org/project/poetry/) with the
command `poetry install` in the root folder.

### Repository structure

```
iscc-core
├── docs       # Markdown and other assets for mkdocs documentation
├── examples   # Example scripts using the reference code
├── iscc_core  # Actual source code of the reference implementation
├── tests      # Tests for the reference implementation
└── tools      # Development tools
```

### Testing & Conformance

The reference implementation comes with 100% test coverage. To run the conformance selftest from the
repository root use `poetry run python -m iscc_core`. To run the complete test suite use
`poetry run pytest`.

To build a conformant implementation work through the follwing top level entrypoint functions:

```
gen_meta_code_v0
gen_text_code_v0
gen_image_code_v0
gen_audio_code_v0
gen_video_code_v0
gen_mixed_code_v0
gen_data_code_v0
gen_instance_code_v0
gen_iscc_code_v0
```

The corresponding test vectors can be found in `iscc_core/data.json`.

## ISCC Architecture

![ISCC Architecture](https://raw.githubusercontent.com/iscc/iscc-core/master/docs/images/iscc-codec-light.png)

## ISCC MainTypes

| Idx | Slug     | Bits | Purpose                                                |
| --- | :------- | ---- | ------------------------------------------------------ |
| 0   | META     | 0000 | Match on metadata similarity                           |
| 1   | SEMANTIC | 0001 | Match on semantic content similarity                   |
| 2   | CONTENT  | 0010 | Match on perceptual content similarity                 |
| 3   | DATA     | 0011 | Match on data similarity                               |
| 4   | INSTANCE | 0100 | Match on data identity                                 |
| 5   | ISCC     | 0101 | Composite of two or more components with common header |

## Installation

Use the package manager [pip](https://pip.pypa.io/en/stable/) to install `iscc-core` as a library.

```bash
pip install iscc-core
```

## Quick Start

```python
import json
import iscc_core as ic

meta_code = ic.gen_meta_code(name="ISCC Test Document!")

print(f"Meta-Code:     {meta_code['iscc']}")
print(f"Structure:     {ic.iscc_explain(meta_code['iscc'])}\n")

# Extract text from file
with open("demo.txt", "rt", encoding="utf-8") as stream:
    text = stream.read()
    text_code = ic.gen_text_code_v0(text)
    print(f"Text-Code:     {text_code['iscc']}")
    print(f"Structure:     {ic.iscc_explain(text_code['iscc'])}\n")

# Process raw bytes of textfile
with open("demo.txt", "rb") as stream:
    data_code = ic.gen_data_code(stream)
    print(f"Data-Code:     {data_code['iscc']}")
    print(f"Structure:     {ic.iscc_explain(data_code['iscc'])}\n")

    stream.seek(0)
    instance_code = ic.gen_instance_code(stream)
    print(f"Instance-Code: {instance_code['iscc']}")
    print(f"Structure:     {ic.iscc_explain(instance_code['iscc'])}\n")

# Combine ISCC-UNITs into ISCC-CODE
iscc_code = ic.gen_iscc_code(
    (meta_code["iscc"], text_code["iscc"], data_code["iscc"], instance_code["iscc"])
)

# Create convenience `Code` object from ISCC string
iscc_obj = ic.Code(iscc_code["iscc"])
print(f"ISCC-CODE:     {ic.iscc_normalize(iscc_obj.code)}")
print(f"Structure:     {iscc_obj.explain}")
print(f"Multiformat:   {iscc_obj.mf_base32}\n")

# Compare with changed ISCC-CODE:
new_dc, new_ic = ic.Code.rnd(mt=ic.MT.DATA), ic.Code.rnd(mt=ic.MT.INSTANCE)
new_iscc = ic.gen_iscc_code((meta_code["iscc"], text_code["iscc"], new_dc.uri, new_ic.uri))
print(f"Compare ISCC-CODES:\n{iscc_obj.uri}\n{new_iscc['iscc']}")
print(json.dumps(ic.iscc_compare(iscc_obj.code, new_iscc["iscc"]), indent=2))
```

The output of this example is as follows:

```
Meta-Code:     ISCC:AAAT4EBWK27737D2
Structure:     META-NONE-V0-64-3e103656bffdfc7a

Text-Code:     ISCC:EAAQMBEYQF6457DP
Structure:     CONTENT-TEXT-V0-64-060498817dcefc6f

Data-Code:     ISCC:GAA7UJMLDXHPPENG
Structure:     DATA-NONE-V0-64-fa258b1dcef791a6

Instance-Code: ISCC:IAA3Y7HR2FEZCU4N
Structure:     INSTANCE-NONE-V0-64-bc7cf1d14991538d

ISCC-CODE:     ISCC:KACT4EBWK27737D2AYCJRAL5Z36G76RFRMO4554RU26HZ4ORJGIVHDI
Structure:     ISCC-TEXT-V0-MCDI-3e103656bffdfc7a060498817dcefc6ffa258b1dcef791a6bc7cf1d14991538d
Multiformat:   bzqavabj6ca3fnp757r5ambeyqf6457dp7isywhoo66i2npd46hiutektru

Compare ISCC-CODES:
ISCC:KACT4EBWK27737D2AYCJRAL5Z36G76RFRMO4554RU26HZ4ORJGIVHDI
ISCC:KACT4EBWK27737D2AYCJRAL5Z36G7Y7HA2BMECKMVRBEQXR2BJOS6NA
{
  "meta_dist": 0,
  "content_dist": 0,
  "data_dist": 33,
  "instance_match": false
}
```

## Documentation

Documentation is published at <https://core.iscc.codes>

## Development

**Requirements**

- [Python 3.9](https://www.python.org/) or higher for code generation and static site building.
- [Poetry](https://python-poetry.org/) for installation and dependency management.

**Development Setup**

```shell
git clone https://github.com/iscc/iscc-core.git
cd iscc-core
poetry install
```

**Development Tasks**

Tests, coverage, code formatting and other tasks can be run with the `poe` command:

```shell
poe

Poe the Poet - A task runner that works well with poetry.
version 0.18.1

Result: No task specified.

USAGE
  poe [-h] [-v | -q] [--root PATH] [--ansi | --no-ansi] task [task arguments]

GLOBAL OPTIONS
  -h, --help     Show this help page and exit
  --version      Print the version and exit
  -v, --verbose  Increase command output (repeatable)
  -q, --quiet    Decrease command output (repeatable)
  -d, --dry-run  Print the task contents but don't actually run it
  --root PATH    Specify where to find the pyproject.toml
  --ansi         Force enable ANSI output
  --no-ansi      Force disable ANSI output
CONFIGURED TASKS
  gentests       Generate conformance test data
  format         Code style formating with black
  docs           Copy README.md to /docs
  format-md      Markdown formating with mdformat
  lf             Convert line endings to lf
  test           Run tests with coverage
  sec            Security check with bandit
  all
```

Use `poe all` to run all tasks before committing any changes.

## Maintainers

[@titusz](https://github.com/titusz)

## Contributing

Pull requests are welcome. For significant changes, please open an issue first to discuss your
plans. Please make sure to update tests as appropriate.

You may also want join our developer chat on Telegram at <https://t.me/iscc_dev>.

            

Raw data

            {
    "_id": null,
    "home_page": "https://iscc.codes",
    "name": "iscc-core",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<4.0,>=3.9",
    "maintainer_email": null,
    "keywords": "iscc, identifier, media, hash, similarity",
    "author": "Titusz",
    "author_email": "tp@py7.de",
    "download_url": "https://files.pythonhosted.org/packages/38/f2/d355c42e168fbbfe12935fca11d05193553c9e35eea9ed7e8ed2b5cce4e8/iscc_core-1.1.0.tar.gz",
    "platform": null,
    "description": "# ISCC - Codec & Algorithms\n\n[![Build](https://github.com/iscc/iscc-core/actions/workflows/tests.yml/badge.svg)](https://github.com/iscc/iscc-core/actions/workflows/tests.yml)\n[![Version](https://img.shields.io/pypi/v/iscc-core.svg)](https://pypi.python.org/pypi/iscc-core/)\n[![Coverage](https://codecov.io/gh/iscc/iscc-core/branch/main/graph/badge.svg?token=7BJ7HJU815)](https://codecov.io/gh/iscc/iscc-core)\n[![Quality](https://app.codacy.com/project/badge/Grade/ad1cc48ac0c0413ea2373a938148f019)](https://www.codacy.com/gh/iscc/iscc-core/dashboard)\n[![Downloads](https://pepy.tech/badge/iscc-core)](https://pepy.tech/project/iscc-core)\n\n`iscc-core` is the reference implementation of the core algorithms of the [ISCC](https://iscc.codes)\n(*International Standard Content Code*)\n\n## What is the ISCC\n\nThe ISCC is a similarity preserving fingerprint and identifier for digital media assets.\n\nISCCs are generated algorithmically from digital content, just like cryptographic hashes. However,\ninstead of using a single cryptographic hash function to identify data only, the ISCC uses various\nalgorithms to create a composite identifier that exhibits similarity-preserving properties (soft\nhash).\n\nThe component-based structure of the ISCC identifies content at multiple levels of abstraction. Each\ncomponent is self-describing, modular, and can be used separately or with others to aid in various\ncontent identification tasks. The algorithmic design supports content deduplication, database\nsynchronization, indexing, integrity verification, timestamping, versioning, data provenance,\nsimilarity clustering, anomaly detection, usage tracking, allocation of royalties, fact-checking and\ngeneral digital asset management use-cases.\n\n## What is `iscc-core`\n\n`iscc-core` is the python based reference implementation of the ISCC core algorithms as defined by\n[ISO 24138](https://www.iso.org/standard/77899.html). It also a good reference for porting ISCC to\nother programming languages.\n\n!!! tip\n    This is a low level reference implementation that does not inlcude features like mediatype\n    detection, metadata extraction or file format specific content extraction. Please have a look at\n    [iscc-sdk](https://github.com/iscc/iscc-sdk) which adds those higher level features on top of the\n    `iscc-core` library.\n\n## Implementors Guide\n\n### Reproducible Environment\n\nFor reproducible installation of the reference implementation we included a `poetry.lock` file with\npinned dependencies. Install them using [Python Poetry](https://pypi.org/project/poetry/) with the\ncommand `poetry install` in the root folder.\n\n### Repository structure\n\n```\niscc-core\n\u251c\u2500\u2500 docs       # Markdown and other assets for mkdocs documentation\n\u251c\u2500\u2500 examples   # Example scripts using the reference code\n\u251c\u2500\u2500 iscc_core  # Actual source code of the reference implementation\n\u251c\u2500\u2500 tests      # Tests for the reference implementation\n\u2514\u2500\u2500 tools      # Development tools\n```\n\n### Testing & Conformance\n\nThe reference implementation comes with 100% test coverage. To run the conformance selftest from the\nrepository root use `poetry run python -m iscc_core`. To run the complete test suite use\n`poetry run pytest`.\n\nTo build a conformant implementation work through the follwing top level entrypoint functions:\n\n```\ngen_meta_code_v0\ngen_text_code_v0\ngen_image_code_v0\ngen_audio_code_v0\ngen_video_code_v0\ngen_mixed_code_v0\ngen_data_code_v0\ngen_instance_code_v0\ngen_iscc_code_v0\n```\n\nThe corresponding test vectors can be found in `iscc_core/data.json`.\n\n## ISCC Architecture\n\n![ISCC Architecture](https://raw.githubusercontent.com/iscc/iscc-core/master/docs/images/iscc-codec-light.png)\n\n## ISCC MainTypes\n\n| Idx | Slug     | Bits | Purpose                                                |\n| --- | :------- | ---- | ------------------------------------------------------ |\n| 0   | META     | 0000 | Match on metadata similarity                           |\n| 1   | SEMANTIC | 0001 | Match on semantic content similarity                   |\n| 2   | CONTENT  | 0010 | Match on perceptual content similarity                 |\n| 3   | DATA     | 0011 | Match on data similarity                               |\n| 4   | INSTANCE | 0100 | Match on data identity                                 |\n| 5   | ISCC     | 0101 | Composite of two or more components with common header |\n\n## Installation\n\nUse the package manager [pip](https://pip.pypa.io/en/stable/) to install `iscc-core` as a library.\n\n```bash\npip install iscc-core\n```\n\n## Quick Start\n\n```python\nimport json\nimport iscc_core as ic\n\nmeta_code = ic.gen_meta_code(name=\"ISCC Test Document!\")\n\nprint(f\"Meta-Code:     {meta_code['iscc']}\")\nprint(f\"Structure:     {ic.iscc_explain(meta_code['iscc'])}\\n\")\n\n# Extract text from file\nwith open(\"demo.txt\", \"rt\", encoding=\"utf-8\") as stream:\n    text = stream.read()\n    text_code = ic.gen_text_code_v0(text)\n    print(f\"Text-Code:     {text_code['iscc']}\")\n    print(f\"Structure:     {ic.iscc_explain(text_code['iscc'])}\\n\")\n\n# Process raw bytes of textfile\nwith open(\"demo.txt\", \"rb\") as stream:\n    data_code = ic.gen_data_code(stream)\n    print(f\"Data-Code:     {data_code['iscc']}\")\n    print(f\"Structure:     {ic.iscc_explain(data_code['iscc'])}\\n\")\n\n    stream.seek(0)\n    instance_code = ic.gen_instance_code(stream)\n    print(f\"Instance-Code: {instance_code['iscc']}\")\n    print(f\"Structure:     {ic.iscc_explain(instance_code['iscc'])}\\n\")\n\n# Combine ISCC-UNITs into ISCC-CODE\niscc_code = ic.gen_iscc_code(\n    (meta_code[\"iscc\"], text_code[\"iscc\"], data_code[\"iscc\"], instance_code[\"iscc\"])\n)\n\n# Create convenience `Code` object from ISCC string\niscc_obj = ic.Code(iscc_code[\"iscc\"])\nprint(f\"ISCC-CODE:     {ic.iscc_normalize(iscc_obj.code)}\")\nprint(f\"Structure:     {iscc_obj.explain}\")\nprint(f\"Multiformat:   {iscc_obj.mf_base32}\\n\")\n\n# Compare with changed ISCC-CODE:\nnew_dc, new_ic = ic.Code.rnd(mt=ic.MT.DATA), ic.Code.rnd(mt=ic.MT.INSTANCE)\nnew_iscc = ic.gen_iscc_code((meta_code[\"iscc\"], text_code[\"iscc\"], new_dc.uri, new_ic.uri))\nprint(f\"Compare ISCC-CODES:\\n{iscc_obj.uri}\\n{new_iscc['iscc']}\")\nprint(json.dumps(ic.iscc_compare(iscc_obj.code, new_iscc[\"iscc\"]), indent=2))\n```\n\nThe output of this example is as follows:\n\n```\nMeta-Code:     ISCC:AAAT4EBWK27737D2\nStructure:     META-NONE-V0-64-3e103656bffdfc7a\n\nText-Code:     ISCC:EAAQMBEYQF6457DP\nStructure:     CONTENT-TEXT-V0-64-060498817dcefc6f\n\nData-Code:     ISCC:GAA7UJMLDXHPPENG\nStructure:     DATA-NONE-V0-64-fa258b1dcef791a6\n\nInstance-Code: ISCC:IAA3Y7HR2FEZCU4N\nStructure:     INSTANCE-NONE-V0-64-bc7cf1d14991538d\n\nISCC-CODE:     ISCC:KACT4EBWK27737D2AYCJRAL5Z36G76RFRMO4554RU26HZ4ORJGIVHDI\nStructure:     ISCC-TEXT-V0-MCDI-3e103656bffdfc7a060498817dcefc6ffa258b1dcef791a6bc7cf1d14991538d\nMultiformat:   bzqavabj6ca3fnp757r5ambeyqf6457dp7isywhoo66i2npd46hiutektru\n\nCompare ISCC-CODES:\nISCC:KACT4EBWK27737D2AYCJRAL5Z36G76RFRMO4554RU26HZ4ORJGIVHDI\nISCC:KACT4EBWK27737D2AYCJRAL5Z36G7Y7HA2BMECKMVRBEQXR2BJOS6NA\n{\n  \"meta_dist\": 0,\n  \"content_dist\": 0,\n  \"data_dist\": 33,\n  \"instance_match\": false\n}\n```\n\n## Documentation\n\nDocumentation is published at <https://core.iscc.codes>\n\n## Development\n\n**Requirements**\n\n- [Python 3.9](https://www.python.org/) or higher for code generation and static site building.\n- [Poetry](https://python-poetry.org/) for installation and dependency management.\n\n**Development Setup**\n\n```shell\ngit clone https://github.com/iscc/iscc-core.git\ncd iscc-core\npoetry install\n```\n\n**Development Tasks**\n\nTests, coverage, code formatting and other tasks can be run with the `poe` command:\n\n```shell\npoe\n\nPoe the Poet - A task runner that works well with poetry.\nversion 0.18.1\n\nResult: No task specified.\n\nUSAGE\n  poe [-h] [-v | -q] [--root PATH] [--ansi | --no-ansi] task [task arguments]\n\nGLOBAL OPTIONS\n  -h, --help     Show this help page and exit\n  --version      Print the version and exit\n  -v, --verbose  Increase command output (repeatable)\n  -q, --quiet    Decrease command output (repeatable)\n  -d, --dry-run  Print the task contents but don't actually run it\n  --root PATH    Specify where to find the pyproject.toml\n  --ansi         Force enable ANSI output\n  --no-ansi      Force disable ANSI output\nCONFIGURED TASKS\n  gentests       Generate conformance test data\n  format         Code style formating with black\n  docs           Copy README.md to /docs\n  format-md      Markdown formating with mdformat\n  lf             Convert line endings to lf\n  test           Run tests with coverage\n  sec            Security check with bandit\n  all\n```\n\nUse `poe all` to run all tasks before committing any changes.\n\n## Maintainers\n\n[@titusz](https://github.com/titusz)\n\n## Contributing\n\nPull requests are welcome. For significant changes, please open an issue first to discuss your\nplans. Please make sure to update tests as appropriate.\n\nYou may also want join our developer chat on Telegram at <https://t.me/iscc_dev>.\n",
    "bugtrack_url": null,
    "license": "Apache-2.0",
    "summary": "ISCC - Core Algorithms",
    "version": "1.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/iscc/iscc-core/issues",
        "Changelog": "https://core.iscc.codes/changelog",
        "Coverage": "https://app.codecov.io/gh/iscc/iscc-core",
        "Documentation": "https://core.iscc.codes/",
        "Donate": "https://iscc.foundation/support",
        "Homepage": "https://iscc.codes",
        "Repository": "https://github.com/iscc/iscc-core",
        "Twitter": "https://twitter.com/iscc_foundation"
    },
    "split_keywords": [
        "iscc",
        " identifier",
        " media",
        " hash",
        " similarity"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0d7812060526ba3dade230017e51a6ef26bdc3d74ffab98a71cc5c5988119302",
                "md5": "3f490b954f4e3a2832b02ff45b12033b",
                "sha256": "d086a5d648586380cded3806f78a7a43a0f8928afa7e9f8ecfcb1047ea56f2db"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp310-cp310-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3f490b954f4e3a2832b02ff45b12033b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<4.0,>=3.9",
            "size": 639916,
            "upload_time": "2024-11-23T20:21:17",
            "upload_time_iso_8601": "2024-11-23T20:21:17.076802Z",
            "url": "https://files.pythonhosted.org/packages/0d/78/12060526ba3dade230017e51a6ef26bdc3d74ffab98a71cc5c5988119302/iscc_core-1.1.0-cp310-cp310-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9faa9f57cdbb531c9eefc9775f5a8b4e8581d33b49120f6a18737bf74f7b22af",
                "md5": "37a8f6f87ab1a56e40791646cd2faa11",
                "sha256": "179b1eb496d3423836cc6f08cc5366174341fa1ed8b9539d531107106a3e4caf"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp310-cp310-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "37a8f6f87ab1a56e40791646cd2faa11",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<4.0,>=3.9",
            "size": 1468780,
            "upload_time": "2024-11-23T20:21:21",
            "upload_time_iso_8601": "2024-11-23T20:21:21.925788Z",
            "url": "https://files.pythonhosted.org/packages/9f/aa/9f57cdbb531c9eefc9775f5a8b4e8581d33b49120f6a18737bf74f7b22af/iscc_core-1.1.0-cp310-cp310-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8228dabd9cb58b7f317a7b540b4f394b64bba96737399fdc7553143bc387d3a",
                "md5": "70613c55ca868c4901abae3afc99a8fd",
                "sha256": "e22645807b9ac4e0afd8c7e59c4e0e8170b38fd9befb7d58ca1aaf7d9a26e196"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "70613c55ca868c4901abae3afc99a8fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": "<4.0,>=3.9",
            "size": 634490,
            "upload_time": "2024-11-23T20:21:25",
            "upload_time_iso_8601": "2024-11-23T20:21:25.018326Z",
            "url": "https://files.pythonhosted.org/packages/b8/22/8dabd9cb58b7f317a7b540b4f394b64bba96737399fdc7553143bc387d3a/iscc_core-1.1.0-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6f9f8c1e8a27caa54e1fc67aef73f82f464ff5aaa2cd4dea5018bc5e4e52f7d3",
                "md5": "e12fb3740169f62007ea4a49901431b4",
                "sha256": "0d9afb8e36cdc48a7a5b39759977bc92457582bb9066d73b2a4a075b15a29215"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp311-cp311-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e12fb3740169f62007ea4a49901431b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<4.0,>=3.9",
            "size": 822826,
            "upload_time": "2024-11-23T20:21:28",
            "upload_time_iso_8601": "2024-11-23T20:21:28.281800Z",
            "url": "https://files.pythonhosted.org/packages/6f/9f/8c1e8a27caa54e1fc67aef73f82f464ff5aaa2cd4dea5018bc5e4e52f7d3/iscc_core-1.1.0-cp311-cp311-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "50caecda5c33ac0b92650bb2e60fa96a53b0ddea90b63b25b45c119dc636166e",
                "md5": "0397e3518028ad1d9e2ed02fd24faad5",
                "sha256": "a7ecaf288ca9f37ae157b6aa525e0290cf458cb99b0552f5d430b4256adb71a9"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp311-cp311-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0397e3518028ad1d9e2ed02fd24faad5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<4.0,>=3.9",
            "size": 1536848,
            "upload_time": "2024-11-23T20:21:33",
            "upload_time_iso_8601": "2024-11-23T20:21:33.010456Z",
            "url": "https://files.pythonhosted.org/packages/50/ca/ecda5c33ac0b92650bb2e60fa96a53b0ddea90b63b25b45c119dc636166e/iscc_core-1.1.0-cp311-cp311-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c0134a458a7a69506097ddb8b751fcf0e99e4f250b312a29c2a995f040a1b891",
                "md5": "eb5eaf86b1b0f5b5b6080b8fde8a32ec",
                "sha256": "25c17a2dfa2f5f70692bc540a9a12fdd5d34a7c9c3153d08cc309c23c6193b8c"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "eb5eaf86b1b0f5b5b6080b8fde8a32ec",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": "<4.0,>=3.9",
            "size": 634580,
            "upload_time": "2024-11-23T20:21:36",
            "upload_time_iso_8601": "2024-11-23T20:21:36.087954Z",
            "url": "https://files.pythonhosted.org/packages/c0/13/4a458a7a69506097ddb8b751fcf0e99e4f250b312a29c2a995f040a1b891/iscc_core-1.1.0-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6842fbedd6090dfa38276d37418dca6bbf1a964d33fddd0ee3363e5f6160afb4",
                "md5": "c717d53d8e78bbef8b40c8733405c60d",
                "sha256": "40d7c5ff2d386a9911341c49f57a5cb5436d210c84cd508a9ec356752840059e"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp312-cp312-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c717d53d8e78bbef8b40c8733405c60d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<4.0,>=3.9",
            "size": 823895,
            "upload_time": "2024-11-23T20:21:39",
            "upload_time_iso_8601": "2024-11-23T20:21:39.455408Z",
            "url": "https://files.pythonhosted.org/packages/68/42/fbedd6090dfa38276d37418dca6bbf1a964d33fddd0ee3363e5f6160afb4/iscc_core-1.1.0-cp312-cp312-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "24d8994b404dfe39ee6142e6071b9588c0176563565d7b4a209d5a497bb8673b",
                "md5": "fd62ab1ba025d03d60aab85a24f7eef2",
                "sha256": "b6d818a5c462fc9cdd85f35b701cd883ea999c08b6fddea42b23ba4c0175640f"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp312-cp312-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "fd62ab1ba025d03d60aab85a24f7eef2",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<4.0,>=3.9",
            "size": 1549448,
            "upload_time": "2024-11-23T20:21:43",
            "upload_time_iso_8601": "2024-11-23T20:21:43.815205Z",
            "url": "https://files.pythonhosted.org/packages/24/d8/994b404dfe39ee6142e6071b9588c0176563565d7b4a209d5a497bb8673b/iscc_core-1.1.0-cp312-cp312-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e0ccac2fa4ec41fa7bd2ec11400f1cd08ef1567eaca18cffe2bfa4aa2d6d5301",
                "md5": "a28f059b5f4af489af94de499e880b1d",
                "sha256": "e6a3ebb5b64319d34c9ad57b73ac915f12fd71958037f3eaf10263d624f7c06a"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a28f059b5f4af489af94de499e880b1d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": "<4.0,>=3.9",
            "size": 635224,
            "upload_time": "2024-11-23T20:21:46",
            "upload_time_iso_8601": "2024-11-23T20:21:46.205109Z",
            "url": "https://files.pythonhosted.org/packages/e0/cc/ac2fa4ec41fa7bd2ec11400f1cd08ef1567eaca18cffe2bfa4aa2d6d5301/iscc_core-1.1.0-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d2ebe061828bb6279237024bdb606a6fa1d2f6edb05630851a35a18697dd773e",
                "md5": "d8f9503ee4bae9aafd302753b9c4001d",
                "sha256": "771222357b7bdb290e928732c03c1a6eddb52878b23333bd498624aed11d9dc7"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp313-cp313-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d8f9503ee4bae9aafd302753b9c4001d",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": "<4.0,>=3.9",
            "size": 820343,
            "upload_time": "2024-11-23T20:21:49",
            "upload_time_iso_8601": "2024-11-23T20:21:49.637896Z",
            "url": "https://files.pythonhosted.org/packages/d2/eb/e061828bb6279237024bdb606a6fa1d2f6edb05630851a35a18697dd773e/iscc_core-1.1.0-cp313-cp313-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "db27369eb87d801bd367905c0cca6e53f7038c0de58607f57c8da71d7d0a7ec2",
                "md5": "8a2255cc190b0a6ea0a896e47b583b74",
                "sha256": "0ecbd62ae11e67390b56dd8ea4e6052f5a8ff75c00edbb698a388725ff793e2b"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp313-cp313-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "8a2255cc190b0a6ea0a896e47b583b74",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": "<4.0,>=3.9",
            "size": 1528812,
            "upload_time": "2024-11-23T20:21:54",
            "upload_time_iso_8601": "2024-11-23T20:21:54.430183Z",
            "url": "https://files.pythonhosted.org/packages/db/27/369eb87d801bd367905c0cca6e53f7038c0de58607f57c8da71d7d0a7ec2/iscc_core-1.1.0-cp313-cp313-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "eb1e217acab20fe81f67062b01da8e0e87ca909a88bc0e637ae21bd3b37a8844",
                "md5": "b274fe5703516d31f973ce5c6ccc58fd",
                "sha256": "88e241ed52c3a27fd71f625835e7bfe7652d7fd4ef530401a3a09440525e7c30"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "b274fe5703516d31f973ce5c6ccc58fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": "<4.0,>=3.9",
            "size": 633052,
            "upload_time": "2024-11-23T20:21:58",
            "upload_time_iso_8601": "2024-11-23T20:21:58.231307Z",
            "url": "https://files.pythonhosted.org/packages/eb/1e/217acab20fe81f67062b01da8e0e87ca909a88bc0e637ae21bd3b37a8844/iscc_core-1.1.0-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "63b4103784c00a4ef8a05ac9a464d2dcc456ee86c996c028afdc7ec9d199e8d5",
                "md5": "3e59177c2004b85e923f26ab4f26f425",
                "sha256": "a2c59c03b56f2ae92e5e7397f325e4e2808fb2f608b9779fab94b038db0a2c69"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp39-cp39-macosx_12_0_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3e59177c2004b85e923f26ab4f26f425",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<4.0,>=3.9",
            "size": 640134,
            "upload_time": "2024-11-23T20:22:00",
            "upload_time_iso_8601": "2024-11-23T20:22:00.651332Z",
            "url": "https://files.pythonhosted.org/packages/63/b4/103784c00a4ef8a05ac9a464d2dcc456ee86c996c028afdc7ec9d199e8d5/iscc_core-1.1.0-cp39-cp39-macosx_12_0_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "802e25bf6b2cac647aff833222d7a51c65c73dddd1cea3bfde684e3cbd65df7b",
                "md5": "47359e8f105df2e5af52ae62eebde688",
                "sha256": "62f0dac87ee2c941a62ee51eb80bff63fb76807978620ed5e25e70ad3a792b0f"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp39-cp39-manylinux_2_31_x86_64.whl",
            "has_sig": false,
            "md5_digest": "47359e8f105df2e5af52ae62eebde688",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<4.0,>=3.9",
            "size": 1471421,
            "upload_time": "2024-11-23T20:22:05",
            "upload_time_iso_8601": "2024-11-23T20:22:05.182909Z",
            "url": "https://files.pythonhosted.org/packages/80/2e/25bf6b2cac647aff833222d7a51c65c73dddd1cea3bfde684e3cbd65df7b/iscc_core-1.1.0-cp39-cp39-manylinux_2_31_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd5cbee2416092fd613908ac61245717afa2a996af2fbaba1bc450d97b9ccb82",
                "md5": "09e54b04dc301217670c9d122f51296f",
                "sha256": "4459b3c695b1d41b419c62820f16d191efdad904afaae88cb162d635b68d3231"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "09e54b04dc301217670c9d122f51296f",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": "<4.0,>=3.9",
            "size": 634562,
            "upload_time": "2024-11-23T20:22:07",
            "upload_time_iso_8601": "2024-11-23T20:22:07.763438Z",
            "url": "https://files.pythonhosted.org/packages/bd/5c/bee2416092fd613908ac61245717afa2a996af2fbaba1bc450d97b9ccb82/iscc_core-1.1.0-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "38f2d355c42e168fbbfe12935fca11d05193553c9e35eea9ed7e8ed2b5cce4e8",
                "md5": "cf30ca581539400d8dc219e975b2a2d0",
                "sha256": "5dc2827ce4cb14abc8573262184ec8f1acae0d36951a2cfe992a61409da46c15"
            },
            "downloads": -1,
            "filename": "iscc_core-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "cf30ca581539400d8dc219e975b2a2d0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<4.0,>=3.9",
            "size": 58866,
            "upload_time": "2024-11-23T20:22:09",
            "upload_time_iso_8601": "2024-11-23T20:22:09.740054Z",
            "url": "https://files.pythonhosted.org/packages/38/f2/d355c42e168fbbfe12935fca11d05193553c9e35eea9ed7e8ed2b5cce4e8/iscc_core-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-23 20:22:09",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "iscc",
    "github_project": "iscc-core",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "iscc-core"
}
        
Elapsed time: 0.39616s