<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"
}