quickner


Namequickner JSON
Version 0.0.1a20 PyPI version JSON
download
home_page
SummaryA fast and simple NER tool
upload_time2024-02-24 16:41:03
maintainer
docs_urlNone
authorOmar MHAIMDAT
requires_python>=3.6
licenseMozilla Public License 2.0
keywords ner named-entity-recognition nlp natural-language-processing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
<div align="center">
  <h1 style="font-size:40px;">Quickner ⚡ </h1>
  <p>
    <strong style="font-size:20px;">A simple, fast, and easy to use NER annotator for Python</strong>
  </p>
  <p>
    <a href="https://badge.fury.io/py/quickner"><img src="https://badge.fury.io/py/quickner.svg" alt="PyPI version" height="18"></a>
    <a href="https://pypi.org/project/quickner/"><img src="https://img.shields.io/badge/License-Mozilla%20Public%20License%20Version%202.0-orange" alt="License" height="18"></a>
    <a href="https://pypi.org/project/quickner/"><img src="https://img.shields.io/pypi/dm/quickner" alt="PyPI - Downloads" height="18"></a>
    <a href="https://actions-badge.atrox.dev/omarmhaimdat/quickner/goto?ref=master"><img src="https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fomarmhaimdat%2Fquickner%2Fbadge%3Fref%3Dmaster&style=flat" alt="Build Status" height="18"></a>
  </p>
  <p>
    <img src="quickner.gif" alt="Showcase">
  </p>
</div>

<!-- 
[![PyPI version](https://badge.fury.io/py/quickner.svg)](https://badge.fury.io/py/quickner)
![License](https://img.shields.io/pypi/l) ![PyPI - Downloads](https://img.shields.io/pypi/dm/quickner)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fomarmhaimdat%2Fquickner%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/omarmhaimdat/quickner/goto?ref=master)

![Showcase](showcase.gif) -->

Quickner is a new tool to quickly annotate texts for NER (Named Entity Recognition). It is written in Rust and accessible through a Python API.

Quickner is blazing fast, simple to use, and easy to configure using a TOML file.

## Installation

```bash

# Create a virtual environment
python3 -m venv env
source env/bin/activate

# Install quickner
pip install quickner # or pip3 install quickner
```

## Usage

### Using the config file

```python
from quickner import Quickner, Config

config = Config(path="config.toml") # or Config() if the config file is in the current directory

# Initialize the annotator
quick = Quickner(config=config)

# Annotate the texts using the config file
quick.process() # or annotator.process(True) to save the annotated data to a file
```

### Using Documents

```python
from quickner import Quickner, Document

# Create documents
rust = Document("rust is made by Mozilla")
python = Document("Python was created by Guido van Rossum")
java = Document("Java was created by James Gosling")

# Documents can be added to a list
documents = [rust, python, java]

# Initialize the annotator

quick = Quickner(documents=documents)
quick
>>> Entities: 0 | Documents: 3 | Annotations:
>>> quick.documents
[Document(id="87e03d58b1ba4d72", text=rust is made by Mozilla, label=[]), Document(id="f1da5d23ef88f3dc", text=Python was created by Guido van Rossum, label=[]), Document(id="e4324f9818e7e598", text=Java was created by James Gosling, label=[])]
>>> quick.entities
[]
```

### Using Documents and Entities

```python
from quickner import Quickner, Document, Entity

# Create documents from texts
texts = (
  "rust is made by Mozilla",
  "Python was created by Guido van Rossum",
  "Java was created by James Gosling at Sun Microsystems",
  "Swift was created by Chris Lattner and Apple",
)
documents = [Document(text) for text in texts]

# Create entities
entities = (
  ("Rust", "PL"),
  ("Python", "PL"),
  ("Java", "PL"),
  ("Swift", "PL"),
  ("Mozilla", "ORG"),
  ("Apple", "ORG"),
  ("Sun Microsystems", "ORG"),
  ("Guido van Rossum", "PERSON"),
  ("James Gosling", "PERSON"),
  ("Chris Lattner", "PERSON"),
)
entities = [Entity(*(entity)) for entity in entities]

# Initialize the annotator
quick = Quickner(documents=documents, entities=entities)
quick.process()

>>> quick
Entities: 6 | Documents: 3 | Annotations: PERSON: 2, PL: 3, ORG: 1
>>> quick.documents 
[Document(id=87e03d58b1ba4d72, text=rust is made by Mozilla, label=[(0, 4, PL), (16, 23, ORG)]), Document(id=f1da5d23ef88f3dc, text=Python was created by Guido van Rossum, label=[(0, 6, PL), (22, 38, PERSON)]), Document(id=e4324f9818e7e598, text=Java was created by James Gosling, label=[(0, 4, PL), (20, 33, PERSON)])]
```

### Find documents by label or entity

When you have annotated your documents, you can use the `find_documents_by_label` and `find_documents_by_entity` methods to find documents by label or entity.

Both methods return a list of documents, and are not case sensitive.

Example:

```python

# Find documents by label
>>> quick.find_documents_by_label("PERSON")
[Document(id=f1da5d23ef88f3dc, text=Python was created by Guido van Rossum, label=[(0, 6, PL), (22, 38, PERSON)]), Document(id=e4324f9818e7e598, text=Java was created by James Gosling, label=[(0, 4, PL), (20, 33, PERSON)])]

# Find documents by entity
>>> quick.find_documents_by_entity("Guido van Rossum")
[Document(id=f1da5d23ef88f3dc, text=Python was created by Guido van Rossum, label=[(0, 6, PL), (22, 38, PERSON)])]
>>> quick.find_documents_by_entity("rust")
[Document(id=87e03d58b1ba4d72, text=rust is made by Mozilla, label=[(0, 4, PL), (16, 23, ORG)])]
>>> quick.find_documents_by_entity("Chris Lattner")
[Document(id=3b0b3b5b0b5b0b5b, text=Swift was created by Chris Lattner and Apple, label=[(0, 5, PL), (21, 35, PERSON), (40, 45, ORG)])]
```

### Get a Spacy Compatible Generator Object

You can use the `spacy` method to get a spacy compatible generator object.

The generator object can be used to feed a spacy model with the annotated data, you still need to convert the data into DocBin format.

Example:

```python
# Get a spacy compatible generator object
>>> quick.spacy()
<builtins.SpacyGenerator object at 0x102311440>
# Divide the documents into chunks
>>> chunks = quick.spacy(chunks=2)
>>> for chunk in chunks:
...     print(chunk)
...
[('rust is made by Mozilla', {'entitiy': [(0, 4, 'PL'), (16, 23, 'ORG')]}), ('Python was created by Guido van Rossum', {'entitiy': [(0, 6, 'PL'), (22, 38, 'PERSON')]})]
[('Java was created by James Gosling at Sun Microsystems', {'entitiy': [(0, 4, 'PL'), (20, 33, 'PERSON'), (37, 53, 'ORG')]}), ('Swift was created by Chris Lattner and Apple', {'entitiy': [(0, 5, 'PL'), (21, 34, 'PERSON'), (39, 44, 'ORG')]})]
```

### Single document annotation

You can also annotate a single document with a list of entities.

This is useful when you want to annotate a document with a list of entities is not in the list of entities of the Quickner object.

Example:

```python
from quickner import Document, Entity

# Create a document from a string
# Method 1
rust = Document.from_string("rust is made by Mozilla")
# Method 2
rust = Document("rust is made by Mozilla")

# Create a list of entities
entities = [Entity("Rust", "PL"), Entity("Mozilla", "ORG")]
# Annotate the document with the entities, case_sensitive is set to False by default
>>> rust.annotate(entities, case_sensitive=True)
>>> rust
Document(id="87e03d58b1ba4d72", text=rust is made by Mozilla, label=[(16, 23, ORG)])
>>> rust.annotate(entities, case_sensitive=False)
>>> rust
Document(id="87e03d58b1ba4d72", text=rust is made by Mozilla, label=[(16, 23, ORG), (0, 4, PL)])
```

### Load from file

Initialize the Quickner object from a file containing existing annotations.

`Quickner.from_jsonl` and `Quickner.from_spacy` are class methods that return a Quickner object and are able to parse the annotations and entities from a jsonl or spaCy file.

```python
from quickner import Quickner

quick = Quickner.from_jsonl("annotations.jsonl") # load the annotations from a jsonl file
quick = Quickner.from_spacy("annotations.json") # load the annotations from a spaCy file
```

## Configuration

The configuration file is a TOML file with the following structure:

```toml
# Configuration file for the NER tool

[general]
# Mode to run the tool, modes are:
# Annotation from the start
# Annotation from already annotated texts
# Load annotations and add new entities

[logging]
level = "debug" # level of logging (debug, info, warning, error, fatal)

[texts]

[texts.input]
filter = false     # if true, only texts in the filter list will be used
path = "texts.csv" # path to the texts file

[texts.filters]
accept_special_characters = ".,-" # list of special characters to accept in the text (if special_characters is true)
alphanumeric = false              # if true, only strictly alphanumeric texts will be used
case_sensitive = false            # if true, case sensitive search will be used
max_length = 1024                 # maximum length of the text
min_length = 0                    # minimum length of the text
numbers = false                   # if true, texts with numbers will not be used
punctuation = false               # if true, texts with punctuation will not be used
special_characters = false        # if true, texts with special characters will not be used

[annotations]
format = "spacy" # format of the output file (jsonl, spaCy, brat, conll)

[annotations.output]
path = "annotations.jsonl" # path to the output file

[entities]

[entities.input]
filter = true         # if true, only entities in the filter list will be used
path = "entities.csv" # path to the entities file
save = true           # if true, the entities found will be saved in the output file

[entities.filters]
accept_special_characters = ".-" # list of special characters to accept in the entity (if special_characters is true)
alphanumeric = false             # if true, only strictly alphanumeric entities will be used
case_sensitive = false           # if true, case sensitive search will be used
max_length = 20                  # maximum length of the entity
min_length = 0                   # minimum length of the entity
numbers = false                  # if true, entities with numbers will not be used
punctuation = false              # if true, entities with punctuation will not be used
special_characters = true        # if true, entities with special characters will not be used

[entities.excludes]
# path = "excludes.csv" # path to entities to exclude from the search

```

## Features Roadmap and TODO

- [x] Add support for spaCy format
- [x] Add support for brat format
- [x] Add support for conll format
- [x] Add support for jsonl format
- [x] Add support for loading annotations from a json spaCy file
- [x] Add support for loading annotations from a jsonl file
- [x] Find documents with a specific entity/entities and return the documents
- [ ] Add support for loading annotations from a brat file
- [ ] Substring search for entities in the text (case sensitive and insensitive)
- [ ] Partial match for entities, e.g. "Rust" will match "Rustlang"
- [ ] Pattern/regex based entites, e.g. "Rustlang" will match "Rustlang 1.0"
- [ ] Fuzzy match for entities with levenstein distance, e.g. "Rustlang" will match "Rust"
- [ ] Add support for jupyter notebook

## License

[MOZILLA PUBLIC LICENSE Version 2.0](LICENSE)

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## Authors

- [**Omar MHAIMDAT**]


            

Raw data

            {
    "_id": null,
    "home_page": "",
    "name": "quickner",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "ner,named-entity-recognition,nlp,natural-language-processing",
    "author": "Omar MHAIMDAT",
    "author_email": "",
    "download_url": "https://files.pythonhosted.org/packages/6e/45/59f57cec3356b7542a86bddfa3e5177814fcf14c55619ef386208d30fb41/quickner-0.0.1a20.tar.gz",
    "platform": null,
    "description": "\n<div align=\"center\">\n  <h1 style=\"font-size:40px;\">Quickner \u26a1 </h1>\n  <p>\n    <strong style=\"font-size:20px;\">A simple, fast, and easy to use NER annotator for Python</strong>\n  </p>\n  <p>\n    <a href=\"https://badge.fury.io/py/quickner\"><img src=\"https://badge.fury.io/py/quickner.svg\" alt=\"PyPI version\" height=\"18\"></a>\n    <a href=\"https://pypi.org/project/quickner/\"><img src=\"https://img.shields.io/badge/License-Mozilla%20Public%20License%20Version%202.0-orange\" alt=\"License\" height=\"18\"></a>\n    <a href=\"https://pypi.org/project/quickner/\"><img src=\"https://img.shields.io/pypi/dm/quickner\" alt=\"PyPI - Downloads\" height=\"18\"></a>\n    <a href=\"https://actions-badge.atrox.dev/omarmhaimdat/quickner/goto?ref=master\"><img src=\"https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fomarmhaimdat%2Fquickner%2Fbadge%3Fref%3Dmaster&style=flat\" alt=\"Build Status\" height=\"18\"></a>\n  </p>\n  <p>\n    <img src=\"quickner.gif\" alt=\"Showcase\">\n  </p>\n</div>\n\n<!-- \n[![PyPI version](https://badge.fury.io/py/quickner.svg)](https://badge.fury.io/py/quickner)\n![License](https://img.shields.io/pypi/l) ![PyPI - Downloads](https://img.shields.io/pypi/dm/quickner)\n[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Fomarmhaimdat%2Fquickner%2Fbadge%3Fref%3Dmaster&style=flat)](https://actions-badge.atrox.dev/omarmhaimdat/quickner/goto?ref=master)\n\n![Showcase](showcase.gif) -->\n\nQuickner is a new tool to quickly annotate texts for NER (Named Entity Recognition). It is written in Rust and accessible through a Python API.\n\nQuickner is blazing fast, simple to use, and easy to configure using a TOML file.\n\n## Installation\n\n```bash\n\n# Create a virtual environment\npython3 -m venv env\nsource env/bin/activate\n\n# Install quickner\npip install quickner # or pip3 install quickner\n```\n\n## Usage\n\n### Using the config file\n\n```python\nfrom quickner import Quickner, Config\n\nconfig = Config(path=\"config.toml\") # or Config() if the config file is in the current directory\n\n# Initialize the annotator\nquick = Quickner(config=config)\n\n# Annotate the texts using the config file\nquick.process() # or annotator.process(True) to save the annotated data to a file\n```\n\n### Using Documents\n\n```python\nfrom quickner import Quickner, Document\n\n# Create documents\nrust = Document(\"rust is made by Mozilla\")\npython = Document(\"Python was created by Guido van Rossum\")\njava = Document(\"Java was created by James Gosling\")\n\n# Documents can be added to a list\ndocuments = [rust, python, java]\n\n# Initialize the annotator\n\nquick = Quickner(documents=documents)\nquick\n>>> Entities: 0 | Documents: 3 | Annotations:\n>>> quick.documents\n[Document(id=\"87e03d58b1ba4d72\", text=rust is made by Mozilla, label=[]), Document(id=\"f1da5d23ef88f3dc\", text=Python was created by Guido van Rossum, label=[]), Document(id=\"e4324f9818e7e598\", text=Java was created by James Gosling, label=[])]\n>>> quick.entities\n[]\n```\n\n### Using Documents and Entities\n\n```python\nfrom quickner import Quickner, Document, Entity\n\n# Create documents from texts\ntexts = (\n  \"rust is made by Mozilla\",\n  \"Python was created by Guido van Rossum\",\n  \"Java was created by James Gosling at Sun Microsystems\",\n  \"Swift was created by Chris Lattner and Apple\",\n)\ndocuments = [Document(text) for text in texts]\n\n# Create entities\nentities = (\n  (\"Rust\", \"PL\"),\n  (\"Python\", \"PL\"),\n  (\"Java\", \"PL\"),\n  (\"Swift\", \"PL\"),\n  (\"Mozilla\", \"ORG\"),\n  (\"Apple\", \"ORG\"),\n  (\"Sun Microsystems\", \"ORG\"),\n  (\"Guido van Rossum\", \"PERSON\"),\n  (\"James Gosling\", \"PERSON\"),\n  (\"Chris Lattner\", \"PERSON\"),\n)\nentities = [Entity(*(entity)) for entity in entities]\n\n# Initialize the annotator\nquick = Quickner(documents=documents, entities=entities)\nquick.process()\n\n>>> quick\nEntities: 6 | Documents: 3 | Annotations: PERSON: 2, PL: 3, ORG: 1\n>>> quick.documents \n[Document(id=87e03d58b1ba4d72, text=rust is made by Mozilla, label=[(0, 4, PL), (16, 23, ORG)]), Document(id=f1da5d23ef88f3dc, text=Python was created by Guido van Rossum, label=[(0, 6, PL), (22, 38, PERSON)]), Document(id=e4324f9818e7e598, text=Java was created by James Gosling, label=[(0, 4, PL), (20, 33, PERSON)])]\n```\n\n### Find documents by label or entity\n\nWhen you have annotated your documents, you can use the `find_documents_by_label` and `find_documents_by_entity` methods to find documents by label or entity.\n\nBoth methods return a list of documents, and are not case sensitive.\n\nExample:\n\n```python\n\n# Find documents by label\n>>> quick.find_documents_by_label(\"PERSON\")\n[Document(id=f1da5d23ef88f3dc, text=Python was created by Guido van Rossum, label=[(0, 6, PL), (22, 38, PERSON)]), Document(id=e4324f9818e7e598, text=Java was created by James Gosling, label=[(0, 4, PL), (20, 33, PERSON)])]\n\n# Find documents by entity\n>>> quick.find_documents_by_entity(\"Guido van Rossum\")\n[Document(id=f1da5d23ef88f3dc, text=Python was created by Guido van Rossum, label=[(0, 6, PL), (22, 38, PERSON)])]\n>>> quick.find_documents_by_entity(\"rust\")\n[Document(id=87e03d58b1ba4d72, text=rust is made by Mozilla, label=[(0, 4, PL), (16, 23, ORG)])]\n>>> quick.find_documents_by_entity(\"Chris Lattner\")\n[Document(id=3b0b3b5b0b5b0b5b, text=Swift was created by Chris Lattner and Apple, label=[(0, 5, PL), (21, 35, PERSON), (40, 45, ORG)])]\n```\n\n### Get a Spacy Compatible Generator Object\n\nYou can use the `spacy` method to get a spacy compatible generator object.\n\nThe generator object can be used to feed a spacy model with the annotated data, you still need to convert the data into DocBin format.\n\nExample:\n\n```python\n# Get a spacy compatible generator object\n>>> quick.spacy()\n<builtins.SpacyGenerator object at 0x102311440>\n# Divide the documents into chunks\n>>> chunks = quick.spacy(chunks=2)\n>>> for chunk in chunks:\n...     print(chunk)\n...\n[('rust is made by Mozilla', {'entitiy': [(0, 4, 'PL'), (16, 23, 'ORG')]}), ('Python was created by Guido van Rossum', {'entitiy': [(0, 6, 'PL'), (22, 38, 'PERSON')]})]\n[('Java was created by James Gosling at Sun Microsystems', {'entitiy': [(0, 4, 'PL'), (20, 33, 'PERSON'), (37, 53, 'ORG')]}), ('Swift was created by Chris Lattner and Apple', {'entitiy': [(0, 5, 'PL'), (21, 34, 'PERSON'), (39, 44, 'ORG')]})]\n```\n\n### Single document annotation\n\nYou can also annotate a single document with a list of entities.\n\nThis is useful when you want to annotate a document with a list of entities is not in the list of entities of the Quickner object.\n\nExample:\n\n```python\nfrom quickner import Document, Entity\n\n# Create a document from a string\n# Method 1\nrust = Document.from_string(\"rust is made by Mozilla\")\n# Method 2\nrust = Document(\"rust is made by Mozilla\")\n\n# Create a list of entities\nentities = [Entity(\"Rust\", \"PL\"), Entity(\"Mozilla\", \"ORG\")]\n# Annotate the document with the entities, case_sensitive is set to False by default\n>>> rust.annotate(entities, case_sensitive=True)\n>>> rust\nDocument(id=\"87e03d58b1ba4d72\", text=rust is made by Mozilla, label=[(16, 23, ORG)])\n>>> rust.annotate(entities, case_sensitive=False)\n>>> rust\nDocument(id=\"87e03d58b1ba4d72\", text=rust is made by Mozilla, label=[(16, 23, ORG), (0, 4, PL)])\n```\n\n### Load from file\n\nInitialize the Quickner object from a file containing existing annotations.\n\n`Quickner.from_jsonl` and `Quickner.from_spacy` are class methods that return a Quickner object and are able to parse the annotations and entities from a jsonl or spaCy file.\n\n```python\nfrom quickner import Quickner\n\nquick = Quickner.from_jsonl(\"annotations.jsonl\") # load the annotations from a jsonl file\nquick = Quickner.from_spacy(\"annotations.json\") # load the annotations from a spaCy file\n```\n\n## Configuration\n\nThe configuration file is a TOML file with the following structure:\n\n```toml\n# Configuration file for the NER tool\n\n[general]\n# Mode to run the tool, modes are:\n# Annotation from the start\n# Annotation from already annotated texts\n# Load annotations and add new entities\n\n[logging]\nlevel = \"debug\" # level of logging (debug, info, warning, error, fatal)\n\n[texts]\n\n[texts.input]\nfilter = false     # if true, only texts in the filter list will be used\npath = \"texts.csv\" # path to the texts file\n\n[texts.filters]\naccept_special_characters = \".,-\" # list of special characters to accept in the text (if special_characters is true)\nalphanumeric = false              # if true, only strictly alphanumeric texts will be used\ncase_sensitive = false            # if true, case sensitive search will be used\nmax_length = 1024                 # maximum length of the text\nmin_length = 0                    # minimum length of the text\nnumbers = false                   # if true, texts with numbers will not be used\npunctuation = false               # if true, texts with punctuation will not be used\nspecial_characters = false        # if true, texts with special characters will not be used\n\n[annotations]\nformat = \"spacy\" # format of the output file (jsonl, spaCy, brat, conll)\n\n[annotations.output]\npath = \"annotations.jsonl\" # path to the output file\n\n[entities]\n\n[entities.input]\nfilter = true         # if true, only entities in the filter list will be used\npath = \"entities.csv\" # path to the entities file\nsave = true           # if true, the entities found will be saved in the output file\n\n[entities.filters]\naccept_special_characters = \".-\" # list of special characters to accept in the entity (if special_characters is true)\nalphanumeric = false             # if true, only strictly alphanumeric entities will be used\ncase_sensitive = false           # if true, case sensitive search will be used\nmax_length = 20                  # maximum length of the entity\nmin_length = 0                   # minimum length of the entity\nnumbers = false                  # if true, entities with numbers will not be used\npunctuation = false              # if true, entities with punctuation will not be used\nspecial_characters = true        # if true, entities with special characters will not be used\n\n[entities.excludes]\n# path = \"excludes.csv\" # path to entities to exclude from the search\n\n```\n\n## Features Roadmap and TODO\n\n- [x] Add support for spaCy format\n- [x] Add support for brat format\n- [x] Add support for conll format\n- [x] Add support for jsonl format\n- [x] Add support for loading annotations from a json spaCy file\n- [x] Add support for loading annotations from a jsonl file\n- [x] Find documents with a specific entity/entities and return the documents\n- [ ] Add support for loading annotations from a brat file\n- [ ] Substring search for entities in the text (case sensitive and insensitive)\n- [ ] Partial match for entities, e.g. \"Rust\" will match \"Rustlang\"\n- [ ] Pattern/regex based entites, e.g. \"Rustlang\" will match \"Rustlang 1.0\"\n- [ ] Fuzzy match for entities with levenstein distance, e.g. \"Rustlang\" will match \"Rust\"\n- [ ] Add support for jupyter notebook\n\n## License\n\n[MOZILLA PUBLIC LICENSE Version 2.0](LICENSE)\n\n## Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n\nPlease make sure to update tests as appropriate.\n\n## Authors\n\n- [**Omar MHAIMDAT**]\n\n",
    "bugtrack_url": null,
    "license": "Mozilla Public License 2.0",
    "summary": "A fast and simple NER tool",
    "version": "0.0.1a20",
    "project_urls": null,
    "split_keywords": [
        "ner",
        "named-entity-recognition",
        "nlp",
        "natural-language-processing"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "838255ac33f01d452e829d99494e71aaea5ca1c6a41e5f884135a553ae2bef26",
                "md5": "8612c797cc1370e0a7a8ddc2a0ee97b8",
                "sha256": "0ed718b49825b6b1fc50f2124a4258bd757a26d9a28a42bb4a9f6d52280479ae"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "8612c797cc1370e0a7a8ddc2a0ee97b8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 2669489,
            "upload_time": "2024-02-24T16:40:24",
            "upload_time_iso_8601": "2024-02-24T16:40:24.535185Z",
            "url": "https://files.pythonhosted.org/packages/83/82/55ac33f01d452e829d99494e71aaea5ca1c6a41e5f884135a553ae2bef26/quickner-0.0.1a20-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c9b3e7f5de34b17000e776500f76c298514df1afb6db4da64ea9908215d1bb01",
                "md5": "263de554fd5542b8277f366e002d9960",
                "sha256": "8cf49983cad1c002dbbd643fe4de53fa64cc04fd2a9939488dcd4293d529903c"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "263de554fd5542b8277f366e002d9960",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 2282227,
            "upload_time": "2024-02-24T16:40:26",
            "upload_time_iso_8601": "2024-02-24T16:40:26.295477Z",
            "url": "https://files.pythonhosted.org/packages/c9/b3/e7f5de34b17000e776500f76c298514df1afb6db4da64ea9908215d1bb01/quickner-0.0.1a20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9dc92a708f38fb61e3fbff56419d6960b87a547af50f3a8e79702a95a6d641fc",
                "md5": "94b232e49009fd86abb8a188c1e89009",
                "sha256": "c16f1567e655632ad774f197981f62954cfab6c8593cb367b89bd7a831628b88"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp310-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "94b232e49009fd86abb8a188c1e89009",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.6",
            "size": 1175784,
            "upload_time": "2024-02-24T16:40:27",
            "upload_time_iso_8601": "2024-02-24T16:40:27.775856Z",
            "url": "https://files.pythonhosted.org/packages/9d/c9/2a708f38fb61e3fbff56419d6960b87a547af50f3a8e79702a95a6d641fc/quickner-0.0.1a20-cp310-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a56eeb6d7eee7e99e728951ee36dec86be207f7c7050fc8b0dc4e4d293ff111f",
                "md5": "04a9639e7b24d34b18071b252ea38567",
                "sha256": "5ec7d8ca5e180d5b6e358d4d79c48b6ffef01183cbe48b7fa620ce1da052f35b"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "04a9639e7b24d34b18071b252ea38567",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 2669490,
            "upload_time": "2024-02-24T16:40:29",
            "upload_time_iso_8601": "2024-02-24T16:40:29.739954Z",
            "url": "https://files.pythonhosted.org/packages/a5/6e/eb6d7eee7e99e728951ee36dec86be207f7c7050fc8b0dc4e4d293ff111f/quickner-0.0.1a20-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3c6871486b9ed9e6c33ae31d3f0107f6f2711207cd25a0ed0318fd71b2825c45",
                "md5": "c23966f5a4b1425f327b0ff172962eaf",
                "sha256": "b2866db9bcaaade104bd417bd7cad8abe45f29c351b77e992dd12a9c9c8d90e5"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c23966f5a4b1425f327b0ff172962eaf",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 2282227,
            "upload_time": "2024-02-24T16:40:31",
            "upload_time_iso_8601": "2024-02-24T16:40:31.727798Z",
            "url": "https://files.pythonhosted.org/packages/3c/68/71486b9ed9e6c33ae31d3f0107f6f2711207cd25a0ed0318fd71b2825c45/quickner-0.0.1a20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0028a473f580177445382ae9cc21246163a12a4eab69be6f13ab63d14fc2c021",
                "md5": "e05b89ae4015e9fab0b1cf271694ec33",
                "sha256": "fc00e70f6e7c9ca3b4780ecc34c0ee65f7d9e2663e276858e1b41721736cadc7"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp311-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e05b89ae4015e9fab0b1cf271694ec33",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.6",
            "size": 1175783,
            "upload_time": "2024-02-24T16:40:33",
            "upload_time_iso_8601": "2024-02-24T16:40:33.668037Z",
            "url": "https://files.pythonhosted.org/packages/00/28/a473f580177445382ae9cc21246163a12a4eab69be6f13ab63d14fc2c021/quickner-0.0.1a20-cp311-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7dbf3d4d09485b975d87e5151be183497e7412a6610c2ed4d0bda8709f33fd80",
                "md5": "d4c2bd42632b0435f80bceeab0b9c048",
                "sha256": "d262a07555015b4eec175d4af7c535787b20527ccf99ee9fa3ec5c75b8ee38e5"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "d4c2bd42632b0435f80bceeab0b9c048",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 2671599,
            "upload_time": "2024-02-24T16:40:35",
            "upload_time_iso_8601": "2024-02-24T16:40:35.223509Z",
            "url": "https://files.pythonhosted.org/packages/7d/bf/3d4d09485b975d87e5151be183497e7412a6610c2ed4d0bda8709f33fd80/quickner-0.0.1a20-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3917e223aa50a3050c39cabca81661a4e373a9ded3cc7bce0ec3146cb29cf76e",
                "md5": "f4fa8e8da0e8ad601b4e40130eb8530b",
                "sha256": "29248d085ca1adae1257657445da93b46567ce45e630cdcfde77771fbe20bd71"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f4fa8e8da0e8ad601b4e40130eb8530b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 2282579,
            "upload_time": "2024-02-24T16:40:36",
            "upload_time_iso_8601": "2024-02-24T16:40:36.545453Z",
            "url": "https://files.pythonhosted.org/packages/39/17/e223aa50a3050c39cabca81661a4e373a9ded3cc7bce0ec3146cb29cf76e/quickner-0.0.1a20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "aa57d9a7c15c1d590e4b7ab01c72c57035ac70ba0963c86410ea066acde82dd3",
                "md5": "42823961b4c7bba168e603f50861b45d",
                "sha256": "224030a348658e115cc18781e8f99c86323a6b3cbd7d4bb128b22084ae69e30d"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp312-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "42823961b4c7bba168e603f50861b45d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.6",
            "size": 1176376,
            "upload_time": "2024-02-24T16:40:38",
            "upload_time_iso_8601": "2024-02-24T16:40:38.425892Z",
            "url": "https://files.pythonhosted.org/packages/aa/57/d9a7c15c1d590e4b7ab01c72c57035ac70ba0963c86410ea066acde82dd3/quickner-0.0.1a20-cp312-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf0e8d7024b1d61026fd1d662060d700f063b9c812a14281691c4f37b94e4989",
                "md5": "b839da6d15aaf67229d151350539599f",
                "sha256": "4a1c16a134b871a19aa731ad70960de2ba5694f46b0758bea8d2bf978a8a32be"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp37-cp37m-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "b839da6d15aaf67229d151350539599f",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 2672531,
            "upload_time": "2024-02-24T16:40:40",
            "upload_time_iso_8601": "2024-02-24T16:40:40.379549Z",
            "url": "https://files.pythonhosted.org/packages/bf/0e/8d7024b1d61026fd1d662060d700f063b9c812a14281691c4f37b94e4989/quickner-0.0.1a20-cp37-cp37m-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1dd08beb0bc06ac8256edb4baf0ef24ff01310263af9ea20bee1abe142f9d612",
                "md5": "c1c5685c85abf3c8552c8154fa45a472",
                "sha256": "2efd1af1bd23d3fc18f46de362107342c1c04cab62cbbb2d473ee46492a24f91"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c1c5685c85abf3c8552c8154fa45a472",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 2283377,
            "upload_time": "2024-02-24T16:40:42",
            "upload_time_iso_8601": "2024-02-24T16:40:42.496321Z",
            "url": "https://files.pythonhosted.org/packages/1d/d0/8beb0bc06ac8256edb4baf0ef24ff01310263af9ea20bee1abe142f9d612/quickner-0.0.1a20-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a199a213d89ba3beec1af7372b5d9c4778b976c274070a50f57aed0d73aaa961",
                "md5": "1b24d6bff4061b428a68b7229a894c2e",
                "sha256": "024e0ef4480537c94a79710352fe5791b3daa56efb3d5917d273c220c8ff2a51"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp37-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "1b24d6bff4061b428a68b7229a894c2e",
            "packagetype": "bdist_wheel",
            "python_version": "cp37",
            "requires_python": ">=3.6",
            "size": 1175719,
            "upload_time": "2024-02-24T16:40:44",
            "upload_time_iso_8601": "2024-02-24T16:40:44.494425Z",
            "url": "https://files.pythonhosted.org/packages/a1/99/a213d89ba3beec1af7372b5d9c4778b976c274070a50f57aed0d73aaa961/quickner-0.0.1a20-cp37-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "850ca91b32c1e0fb6038fcb49211fa4dc09c6fb027bceb41d41e3585f035b466",
                "md5": "be7ad6a6df3da1a6995d848ec9567ca5",
                "sha256": "0b68d21d4c17332f260d40788da06b39bc0e7444a7a32493c6a55d5fbc1fd0b7"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "be7ad6a6df3da1a6995d848ec9567ca5",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 2672059,
            "upload_time": "2024-02-24T16:40:46",
            "upload_time_iso_8601": "2024-02-24T16:40:46.355201Z",
            "url": "https://files.pythonhosted.org/packages/85/0c/a91b32c1e0fb6038fcb49211fa4dc09c6fb027bceb41d41e3585f035b466/quickner-0.0.1a20-cp38-cp38-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7096a11d93b69524773b262ad2b3d8aa83ebf218a55249a1fb6dc1a8351d0c59",
                "md5": "f9e58fa1fb4b6bd0a2834f6930762d04",
                "sha256": "1aa78d489fd7ab051ec25957af931bee34f976cd15ced4386fe42dd28a1619fa"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f9e58fa1fb4b6bd0a2834f6930762d04",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 2283244,
            "upload_time": "2024-02-24T16:40:48",
            "upload_time_iso_8601": "2024-02-24T16:40:48.461691Z",
            "url": "https://files.pythonhosted.org/packages/70/96/a11d93b69524773b262ad2b3d8aa83ebf218a55249a1fb6dc1a8351d0c59/quickner-0.0.1a20-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4d3568872384fac6f87b631e33622ee4134c9915a3b3921b730d8883e9163162",
                "md5": "9449e6badc1162781ae35f01ad1d9583",
                "sha256": "811cf91a7b0f347187192565608450b6bef17b5c235ba113788806c500173a9f"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp38-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9449e6badc1162781ae35f01ad1d9583",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.6",
            "size": 1175645,
            "upload_time": "2024-02-24T16:40:50",
            "upload_time_iso_8601": "2024-02-24T16:40:50.400650Z",
            "url": "https://files.pythonhosted.org/packages/4d/35/68872384fac6f87b631e33622ee4134c9915a3b3921b730d8883e9163162/quickner-0.0.1a20-cp38-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6b99909af64412330d58e620da7ed5bc9fc4c11e059b409f93c1693fdb19fe9d",
                "md5": "cca1cff755d74a2808bfa2f49a5c4f27",
                "sha256": "a5dc0f35d74404954a31544a0da07004f37f035a0465e55e4f57583705a4dcfb"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "has_sig": false,
            "md5_digest": "cca1cff755d74a2808bfa2f49a5c4f27",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 2669853,
            "upload_time": "2024-02-24T16:40:52",
            "upload_time_iso_8601": "2024-02-24T16:40:52.356169Z",
            "url": "https://files.pythonhosted.org/packages/6b/99/909af64412330d58e620da7ed5bc9fc4c11e059b409f93c1693fdb19fe9d/quickner-0.0.1a20-cp39-cp39-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "126b6719eb5584d757b6ac02b9a1dcad334bfa4613134dd6d5d7d224bb01b6c4",
                "md5": "ffcd89d95f48856a1ca6ea42ab9e2a96",
                "sha256": "be2e26c9be0cad20142d6416acf35d55b82fc39bbeb3f27b428a28c311087ac3"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ffcd89d95f48856a1ca6ea42ab9e2a96",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 2282077,
            "upload_time": "2024-02-24T16:40:54",
            "upload_time_iso_8601": "2024-02-24T16:40:54.293164Z",
            "url": "https://files.pythonhosted.org/packages/12/6b/6719eb5584d757b6ac02b9a1dcad334bfa4613134dd6d5d7d224bb01b6c4/quickner-0.0.1a20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2ced322e8fb4a2fd099ded9d0e9b08f6e252a3682076b46c54d7aa7a89a5bf99",
                "md5": "f58a6f6045b43420b0ff4aa3b894505a",
                "sha256": "ab18fa4e84fff7f1ad495cd8e825ed4797f2cfc3fee9ac752dcfbfa5a0680af1"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-cp39-none-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f58a6f6045b43420b0ff4aa3b894505a",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.6",
            "size": 1176044,
            "upload_time": "2024-02-24T16:40:55",
            "upload_time_iso_8601": "2024-02-24T16:40:55.719208Z",
            "url": "https://files.pythonhosted.org/packages/2c/ed/322e8fb4a2fd099ded9d0e9b08f6e252a3682076b46c54d7aa7a89a5bf99/quickner-0.0.1a20-cp39-none-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fbd7740100e1a88290edb02f1286cfaf9a9806d7184f41792f57f60ed30c5728",
                "md5": "7b3df43b66e551973d448ac32329d82c",
                "sha256": "54a6e83cfbc2ea6f96a538f6a0839546667fd2d3a39bc7bd1980568bee56a105"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7b3df43b66e551973d448ac32329d82c",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.6",
            "size": 2283129,
            "upload_time": "2024-02-24T16:40:57",
            "upload_time_iso_8601": "2024-02-24T16:40:57.124145Z",
            "url": "https://files.pythonhosted.org/packages/fb/d7/740100e1a88290edb02f1286cfaf9a9806d7184f41792f57f60ed30c5728/quickner-0.0.1a20-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "daf2854b225115ead8d4b9772fe70587ffc9e8b7c57b2f142325952a7f19c525",
                "md5": "ab3002081bc0c186f6e5640387688044",
                "sha256": "7dfd5e05c5b68e7a6c766f5969ee10c55f4d85171f9ef6597e4ca71729819db2"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ab3002081bc0c186f6e5640387688044",
            "packagetype": "bdist_wheel",
            "python_version": "pp37",
            "requires_python": ">=3.6",
            "size": 2285115,
            "upload_time": "2024-02-24T16:40:58",
            "upload_time_iso_8601": "2024-02-24T16:40:58.677291Z",
            "url": "https://files.pythonhosted.org/packages/da/f2/854b225115ead8d4b9772fe70587ffc9e8b7c57b2f142325952a7f19c525/quickner-0.0.1a20-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "064fc66cc23467156a4568b3b8009d932b5a77aa954da9dc53b7497cd9c4d11f",
                "md5": "b268d6db2d6c1daf7cfa3707fe1c6d28",
                "sha256": "6c574d010f4768ccfc599e0dd1a314d0e7b5a620c8ae701469e349021b283884"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b268d6db2d6c1daf7cfa3707fe1c6d28",
            "packagetype": "bdist_wheel",
            "python_version": "pp38",
            "requires_python": ">=3.6",
            "size": 2282654,
            "upload_time": "2024-02-24T16:41:00",
            "upload_time_iso_8601": "2024-02-24T16:41:00.008903Z",
            "url": "https://files.pythonhosted.org/packages/06/4f/c66cc23467156a4568b3b8009d932b5a77aa954da9dc53b7497cd9c4d11f/quickner-0.0.1a20-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d7d1ed281d8009f7f188a9709a5a90d38bfe9aa7032272f7ac648480eda92569",
                "md5": "2a2211b199b17f835475696f49eb67e3",
                "sha256": "d81263ba85ee8f38888a189a567523178de7cc7bb002fde77ca34b581377c4c7"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2a2211b199b17f835475696f49eb67e3",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.6",
            "size": 2283077,
            "upload_time": "2024-02-24T16:41:01",
            "upload_time_iso_8601": "2024-02-24T16:41:01.511549Z",
            "url": "https://files.pythonhosted.org/packages/d7/d1/ed281d8009f7f188a9709a5a90d38bfe9aa7032272f7ac648480eda92569/quickner-0.0.1a20-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6e4559f57cec3356b7542a86bddfa3e5177814fcf14c55619ef386208d30fb41",
                "md5": "dece7042dbd201c7916c75b9c08b2a89",
                "sha256": "f5e5e40f0f4e7f2f3d746a909ce1f17036f5f70de2764fd1f6e437cee9c0f6fc"
            },
            "downloads": -1,
            "filename": "quickner-0.0.1a20.tar.gz",
            "has_sig": false,
            "md5_digest": "dece7042dbd201c7916c75b9c08b2a89",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 28602266,
            "upload_time": "2024-02-24T16:41:03",
            "upload_time_iso_8601": "2024-02-24T16:41:03.135526Z",
            "url": "https://files.pythonhosted.org/packages/6e/45/59f57cec3356b7542a86bddfa3e5177814fcf14c55619ef386208d30fb41/quickner-0.0.1a20.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-02-24 16:41:03",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "quickner"
}
        
Elapsed time: 1.27994s