# PyDuckling
[![Project License - MIT](https://img.shields.io/pypi/l/pyduckling-native.svg)](https://raw.githubusercontent.com/phihos/pyduckling-native/master/LICENSE)
[![pypi version](https://img.shields.io/pypi/v/pyduckling-native-phihos.svg)](https://pypi.org/project/pyduckling-native-phihos/)
[![Downloads](https://pepy.tech/badge/pyduckling-native-phihos)](https://pepy.tech/project/pyduckling-native-phihos)
[![PyPI status](https://img.shields.io/pypi/status/pyduckling-native-phihos.svg)](https://github.com/phihos/pyduckling)
![Linux Tests](https://github.com/phihos/pyduckling/actions/workflows/build.yml/badge.svg?branch=master)
*Copyright © 2020– Treble.ai*
> ℹ️ This is a fork of the original pyduckling-native library. There are differences to the original:
> * Build against the latest version of [Duckling](https://github.com/facebook/duckling)
> * Supported Python versions range from 3.8 to 3.12
> * x86_64 Linux only, but contributions welcome if you dare to take on the challenge
## Overview
This package provides native bindings for Facebook's [Duckling](https://github.com/facebook/duckling) in Python. This package supports all dimensions and languages available on the original library, and it does not require to spawn a Haskell server and does not use HTTP to call the Duckling API.
> ℹ️ This package is completely Haskell-less
## Installing
To install pyduckling, you can use both conda and pip package managers:
```bash
# Using pip
pip install pyduckling-native-phihos
```
> ℹ️ Right now, we only provide package distributions for Linux (x86_64).
## Version Matrix
The following table shows which PyDuckling version corresponds to which Duckling version
| PyDuckling | Duckling |
|------------|-------------------------------------------------------------------|
| 0.2.0 | v0.2.0.0 (commit [7520daa](https://github.com/facebook/duckling)) |
## Package usage
PyDuckling provides access to the parsing capabilities of Duckling used to extract structured data from text.
```python
# Core imports
from duckling import (load_time_zones, parse_ref_time,
parse_lang, default_locale_lang, parse_locale,
parse_dimensions, parse, Context)
# Install with pip install pendulum
import pendulum
# Load reference time for time parsing
time_zones = load_time_zones("/usr/share/zoneinfo")
bog_now = pendulum.now('America/Bogota').replace(microsecond=0)
ref_time = parse_ref_time(
time_zones, 'America/Bogota', bog_now.int_timestamp)
# Load language/locale information
lang_es = parse_lang('ES')
default_locale = default_locale_lang(lang_es)
locale = parse_locale('ES_CO', default_locale)
# Create parsing context with time and language information
context = Context(ref_time, locale)
# Define dimensions to look-up for
valid_dimensions = ["amount-of-money", "credit-card-number", "distance",
"duration", "email", "number", "ordinal",
"phone-number", "quantity", "temperature",
"time", "time-grain", "url", "volume"]
# Parse dimensions to use
output_dims = parse_dimensions(valid_dimensions)
# Parse a phrase
result = parse('En dos semanas', context, output_dims, False)
```
This wrapper allows access to all the dimensions and languages available on Duckling:
| Dimension | Example input | Example value output |
| --------- | ------------- | -------------------- |
| `amount-of-money` | "42€" | `{"value":42,"type":"value","unit":"EUR"}` |
| `credit-card-number` | "4111-1111-1111-1111" | `{"value":"4111111111111111","issuer":"visa"}` |
| `distance` | "6 miles" | `{"value":6,"type":"value","unit":"mile"}` |
| `duration` | "3 mins" | `{"value":3,"minute":3,"unit":"minute","normalized":{"value":180,"unit":"second"}}` |
| `email` | "duckling-team@fb.com" | `{"value":"duckling-team@fb.com"}` |
| `number` | "eighty eight" | `{"value":88,"type":"value"}` |
| `ordinal` | "33rd" | `{"value":33,"type":"value"}` |
| `phone-number` | "+1 (650) 123-4567" | `{"value":"(+1) 6501234567"}` |
| `quantity` | "3 cups of sugar" | `{"value":3,"type":"value","product":"sugar","unit":"cup"}` |
| `temperature` | "80F" | `{"value":80,"type":"value","unit":"fahrenheit"}` |
| `time` | "today at 9am" | `{"values":[{"value":"2016-12-14T09:00:00.000-08:00","grain":"hour","type":"value"}],"value":"2016-12-14T09:00:00.000-08:00","grain":"hour","type":"value"}` |
| `url` | "https://api.wit.ai/message?q=hi" | `{"value":"https://api.wit.ai/message?q=hi","domain":"api.wit.ai"}` |
| `volume` | "4 gallons" | `{"value":4,"type":"value","unit":"gallon"}` |
## Dependencies
To compile pyduckling, you will require the latest nightly release of [Rust](https://rustup.rs/), alongside [Cargo](https://crates.io/). Also, it requires a Python distribution with its corresponding development headers. Finally, this project depends on the following Cargo crates:
* [PyO3](https://github.com/PyO3/pyo3): Library used to produce Python bindings from Rust code.
* [Maturin](https://github.com/PyO3/maturin): Build system to build and publish Rust-based Python packages
Additionally, this package depends on [Duckling-FFI](https://github.com/treble-ai/duckling-ffi), used to compile the native interface to Duckling on Haskell. In order to compile Duckling-FFI, you will require the [Stack](https://haskell-lang.org/get-started) Haskell manager.
## Installing locally
### Via Docker
The only thing you need is a running [Docker](https://docs.docker.com/engine/install/) daemon
and permission to run `docker build` and `docker run`.
Then just run
```shell
./build.sh
```
All build dependencies are already installed in container images. The build script will get them and start
containers for building the Haskell lib and the Python lib. The directories `.cache`, `duckling-ffi/.stack-work`
and `target` will appear. The first two are for accelerating future builds and the last one will contain your final
build result.
After the `build.sh` completed successfully, you can find wheel files (binary distributions of the library) inside `target/wheels`.
The Python version (e.g. Python 3.11 = `cp311`), the libc variant
(`manylinux` or `musllinux`, if you are unsure you probably need manylinux) and the CPU architecture
(currently only `x86_64`) are encoded in the file name. Just pick the file matching to your system and install it with:
```shell
pip install -U target/wheels/<myfile>.whl
```
### Manually
Besides Rust and Stack, you will require the latest version of maturin installed to compile this project locally:
```bash
pip install maturin toml
```
First, you will need to compile Duckling-FFI in order to produce the shared library ``libducklingffi``, to do so, you can use the git submodule found at the root of this repository:
```bash
cd duckling-ffi
stack build
```
Then, you will need to move the resulting binary ``libducklingffi.a`` to the ``ext_lib`` folder:
```bash
cp duckling-ffi/libducklingffi.a ext_lib
```
After completing this procedure, it is possible to execute the following command to compile pyduckling:
```bash
maturin develop
```
In order to produce wheels, ``maturin build`` can be used instead. This project supports [PEP517](https://www.python.org/dev/peps/pep-0517/), thus pip can be used to install this package as well:
```bash
pip install -U .
```
## Running tests
We use pytest to run tests as it follows (after calling ``maturin develop``):
```bash
pytest -v duckling/tests
```
## Changelog
Please see our [CHANGELOG](https://github.com/phihos/pyduckling/blob/master/CHANGELOG.md) file to learn more about our new features and improvements.
## Contribution guidelines
We follow PEP8 and PEP257 for pure python packages and Rust to compile extensions. We use MyPy type annotations for all functions and classes declared on this package. Feel free to send a PR or create an issue if you have any problem/question.
Raw data
{
"_id": null,
"home_page": "",
"name": "pyduckling-native-phihos",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "haskell,python,parse,duckling",
"author": "Edgar Andr\u00e9s Margffoy Tuay <andfoy@gmail.com>, Philipp Hossner <philipp.hossner@posteo.de>",
"author_email": "Edgar Andr\u00e9s Margffoy Tuay <andfoy@gmail.com>, Philipp Hossner <philipp.hossner@posteo.de>",
"download_url": "",
"platform": null,
"description": "# PyDuckling\n[![Project License - MIT](https://img.shields.io/pypi/l/pyduckling-native.svg)](https://raw.githubusercontent.com/phihos/pyduckling-native/master/LICENSE)\n[![pypi version](https://img.shields.io/pypi/v/pyduckling-native-phihos.svg)](https://pypi.org/project/pyduckling-native-phihos/)\n[![Downloads](https://pepy.tech/badge/pyduckling-native-phihos)](https://pepy.tech/project/pyduckling-native-phihos)\n[![PyPI status](https://img.shields.io/pypi/status/pyduckling-native-phihos.svg)](https://github.com/phihos/pyduckling)\n![Linux Tests](https://github.com/phihos/pyduckling/actions/workflows/build.yml/badge.svg?branch=master)\n\n*Copyright \u00a9 2020\u2013 Treble.ai*\n\n> \u2139\ufe0f This is a fork of the original pyduckling-native library. There are differences to the original:\n> * Build against the latest version of [Duckling](https://github.com/facebook/duckling)\n> * Supported Python versions range from 3.8 to 3.12\n> * x86_64 Linux only, but contributions welcome if you dare to take on the challenge\n\n## Overview\nThis package provides native bindings for Facebook's [Duckling](https://github.com/facebook/duckling) in Python. This package supports all dimensions and languages available on the original library, and it does not require to spawn a Haskell server and does not use HTTP to call the Duckling API.\n\n> \u2139\ufe0f This package is completely Haskell-less\n\n## Installing\nTo install pyduckling, you can use both conda and pip package managers:\n\n```bash\n# Using pip\npip install pyduckling-native-phihos\n```\n\n> \u2139\ufe0f Right now, we only provide package distributions for Linux (x86_64).\n\n\n## Version Matrix\n\nThe following table shows which PyDuckling version corresponds to which Duckling version\n\n| PyDuckling | Duckling |\n|------------|-------------------------------------------------------------------|\n| 0.2.0 | v0.2.0.0 (commit [7520daa](https://github.com/facebook/duckling)) |\n\n## Package usage\nPyDuckling provides access to the parsing capabilities of Duckling used to extract structured data from text.\n\n```python\n# Core imports\nfrom duckling import (load_time_zones, parse_ref_time,\n parse_lang, default_locale_lang, parse_locale,\n parse_dimensions, parse, Context)\n# Install with pip install pendulum\nimport pendulum\n\n# Load reference time for time parsing\ntime_zones = load_time_zones(\"/usr/share/zoneinfo\")\nbog_now = pendulum.now('America/Bogota').replace(microsecond=0)\nref_time = parse_ref_time(\n time_zones, 'America/Bogota', bog_now.int_timestamp)\n\n# Load language/locale information\nlang_es = parse_lang('ES')\ndefault_locale = default_locale_lang(lang_es)\nlocale = parse_locale('ES_CO', default_locale)\n\n# Create parsing context with time and language information\ncontext = Context(ref_time, locale)\n\n# Define dimensions to look-up for\nvalid_dimensions = [\"amount-of-money\", \"credit-card-number\", \"distance\",\n \"duration\", \"email\", \"number\", \"ordinal\",\n \"phone-number\", \"quantity\", \"temperature\",\n \"time\", \"time-grain\", \"url\", \"volume\"]\n\n# Parse dimensions to use\noutput_dims = parse_dimensions(valid_dimensions)\n\n# Parse a phrase\nresult = parse('En dos semanas', context, output_dims, False)\n```\n\nThis wrapper allows access to all the dimensions and languages available on Duckling:\n\n| Dimension | Example input | Example value output |\n| --------- | ------------- | -------------------- |\n| `amount-of-money` | \"42\u20ac\" | `{\"value\":42,\"type\":\"value\",\"unit\":\"EUR\"}` |\n| `credit-card-number` | \"4111-1111-1111-1111\" | `{\"value\":\"4111111111111111\",\"issuer\":\"visa\"}` |\n| `distance` | \"6 miles\" | `{\"value\":6,\"type\":\"value\",\"unit\":\"mile\"}` |\n| `duration` | \"3 mins\" | `{\"value\":3,\"minute\":3,\"unit\":\"minute\",\"normalized\":{\"value\":180,\"unit\":\"second\"}}` |\n| `email` | \"duckling-team@fb.com\" | `{\"value\":\"duckling-team@fb.com\"}` |\n| `number` | \"eighty eight\" | `{\"value\":88,\"type\":\"value\"}` |\n| `ordinal` | \"33rd\" | `{\"value\":33,\"type\":\"value\"}` |\n| `phone-number` | \"+1 (650) 123-4567\" | `{\"value\":\"(+1) 6501234567\"}` |\n| `quantity` | \"3 cups of sugar\" | `{\"value\":3,\"type\":\"value\",\"product\":\"sugar\",\"unit\":\"cup\"}` |\n| `temperature` | \"80F\" | `{\"value\":80,\"type\":\"value\",\"unit\":\"fahrenheit\"}` |\n| `time` | \"today at 9am\" | `{\"values\":[{\"value\":\"2016-12-14T09:00:00.000-08:00\",\"grain\":\"hour\",\"type\":\"value\"}],\"value\":\"2016-12-14T09:00:00.000-08:00\",\"grain\":\"hour\",\"type\":\"value\"}` |\n| `url` | \"https://api.wit.ai/message?q=hi\" | `{\"value\":\"https://api.wit.ai/message?q=hi\",\"domain\":\"api.wit.ai\"}` |\n| `volume` | \"4 gallons\" | `{\"value\":4,\"type\":\"value\",\"unit\":\"gallon\"}` |\n\n## Dependencies\nTo compile pyduckling, you will require the latest nightly release of [Rust](https://rustup.rs/), alongside [Cargo](https://crates.io/). Also, it requires a Python distribution with its corresponding development headers. Finally, this project depends on the following Cargo crates:\n\n* [PyO3](https://github.com/PyO3/pyo3): Library used to produce Python bindings from Rust code.\n* [Maturin](https://github.com/PyO3/maturin): Build system to build and publish Rust-based Python packages\n\nAdditionally, this package depends on [Duckling-FFI](https://github.com/treble-ai/duckling-ffi), used to compile the native interface to Duckling on Haskell. In order to compile Duckling-FFI, you will require the [Stack](https://haskell-lang.org/get-started) Haskell manager.\n\n\n## Installing locally\n\n### Via Docker\n\nThe only thing you need is a running [Docker](https://docs.docker.com/engine/install/) daemon \nand permission to run `docker build` and `docker run`.\nThen just run \n```shell\n./build.sh\n```\n\nAll build dependencies are already installed in container images. The build script will get them and start \ncontainers for building the Haskell lib and the Python lib. The directories `.cache`, `duckling-ffi/.stack-work` \nand `target` will appear. The first two are for accelerating future builds and the last one will contain your final\nbuild result.\n\nAfter the `build.sh` completed successfully, you can find wheel files (binary distributions of the library) inside `target/wheels`.\nThe Python version (e.g. Python 3.11 = `cp311`), the libc variant \n(`manylinux` or `musllinux`, if you are unsure you probably need manylinux) and the CPU architecture \n(currently only `x86_64`) are encoded in the file name. Just pick the file matching to your system and install it with:\n\n```shell\npip install -U target/wheels/<myfile>.whl\n```\n\n### Manually\n\nBesides Rust and Stack, you will require the latest version of maturin installed to compile this project locally:\n\n```bash\npip install maturin toml\n```\n\nFirst, you will need to compile Duckling-FFI in order to produce the shared library ``libducklingffi``, to do so, you can use the git submodule found at the root of this repository:\n\n```bash\ncd duckling-ffi\nstack build\n```\n\nThen, you will need to move the resulting binary ``libducklingffi.a`` to the ``ext_lib`` folder:\n\n```bash\ncp duckling-ffi/libducklingffi.a ext_lib\n```\n\nAfter completing this procedure, it is possible to execute the following command to compile pyduckling:\n\n```bash\nmaturin develop\n```\n\nIn order to produce wheels, ``maturin build`` can be used instead. This project supports [PEP517](https://www.python.org/dev/peps/pep-0517/), thus pip can be used to install this package as well:\n\n```bash\npip install -U .\n```\n\n## Running tests\nWe use pytest to run tests as it follows (after calling ``maturin develop``):\n\n```bash\npytest -v duckling/tests\n```\n\n## Changelog\nPlease see our [CHANGELOG](https://github.com/phihos/pyduckling/blob/master/CHANGELOG.md) file to learn more about our new features and improvements.\n\n\n## Contribution guidelines\nWe follow PEP8 and PEP257 for pure python packages and Rust to compile extensions. We use MyPy type annotations for all functions and classes declared on this package. Feel free to send a PR or create an issue if you have any problem/question.\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Rust-based Python wrapper for duckling library in Haskell.",
"version": "0.2.0",
"project_urls": {
"Source Code": "https://github.com/phihos/pyduckling"
},
"split_keywords": [
"haskell",
"python",
"parse",
"duckling"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "101ebfabcb90bfcbb4aab1bb302221addbf1e607fddf232b1ab7dc429be36087",
"md5": "cd065b55f098b438f0c06e8abeae2c5c",
"sha256": "6ff3cfef4f9165b9a2dd5103fc0439a102bfc62ad8587c9bb6e12e282487b7f7"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "cd065b55f098b438f0c06e8abeae2c5c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 12964735,
"upload_time": "2024-02-14T23:40:23",
"upload_time_iso_8601": "2024-02-14T23:40:23.921126Z",
"url": "https://files.pythonhosted.org/packages/10/1e/bfabcb90bfcbb4aab1bb302221addbf1e607fddf232b1ab7dc429be36087/pyduckling_native_phihos-0.2.0-cp310-cp310-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "41e7c4e628cf1e7313b9b4bf01b653e59592cbf381d2eb9b894eeb3cfd9095c0",
"md5": "4e5057b916546bf6cd2f7a94096cd98e",
"sha256": "ea13d6ad4933d4ac27dc62ccea64bce68fa0aeddddea09a5be2640855cb3e00f"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "4e5057b916546bf6cd2f7a94096cd98e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 12911657,
"upload_time": "2024-02-14T23:40:27",
"upload_time_iso_8601": "2024-02-14T23:40:27.298460Z",
"url": "https://files.pythonhosted.org/packages/41/e7/c4e628cf1e7313b9b4bf01b653e59592cbf381d2eb9b894eeb3cfd9095c0/pyduckling_native_phihos-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b7ad155b55b0b7738dab2e00909d2643d2dd1c7519a0fd0b33dee6e644ca72e1",
"md5": "5b984266363ab0d788bc3d0621ef07fb",
"sha256": "c9de89de5f07af63987b45dbf33b70c19b9639cc150b74d68fca365f8a3ee26a"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "5b984266363ab0d788bc3d0621ef07fb",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 12965278,
"upload_time": "2024-02-14T23:40:30",
"upload_time_iso_8601": "2024-02-14T23:40:30.618130Z",
"url": "https://files.pythonhosted.org/packages/b7/ad/155b55b0b7738dab2e00909d2643d2dd1c7519a0fd0b33dee6e644ca72e1/pyduckling_native_phihos-0.2.0-cp311-cp311-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "33139a059cfc4e4e316d6f8fff65d76266d130e364e0db9d7a5201933d55d51d",
"md5": "868f2575e3b3e686eaca8eb034660a37",
"sha256": "04f26b66a22f3209571d2bab0994989dc10aaa38b8f7527c3f0fd441e1c4143d"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "868f2575e3b3e686eaca8eb034660a37",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": null,
"size": 12911791,
"upload_time": "2024-02-14T23:40:34",
"upload_time_iso_8601": "2024-02-14T23:40:34.362568Z",
"url": "https://files.pythonhosted.org/packages/33/13/9a059cfc4e4e316d6f8fff65d76266d130e364e0db9d7a5201933d55d51d/pyduckling_native_phihos-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "319018e14542449923736a100ef95706b4c7a055aa55b304996f41b902f7bce6",
"md5": "b25c729acffa4d0a620efeba2b093170",
"sha256": "7391852727cef9438c2e1d3aff5d3a54d0b3eea4ab9de3e8db7cd25a6663f384"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "b25c729acffa4d0a620efeba2b093170",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 12964835,
"upload_time": "2024-02-14T23:40:37",
"upload_time_iso_8601": "2024-02-14T23:40:37.389220Z",
"url": "https://files.pythonhosted.org/packages/31/90/18e14542449923736a100ef95706b4c7a055aa55b304996f41b902f7bce6/pyduckling_native_phihos-0.2.0-cp312-cp312-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8e4ad213e7cfbffd33141d24a1fa4f60abe5f2063c655ec575ebad149a45c734",
"md5": "e7b05e85523f3190a365383161a6461b",
"sha256": "8d59a4aac80b672756009521ec2a397a5cdf358feaa68e0d386ba30c41200f3d"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "e7b05e85523f3190a365383161a6461b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": null,
"size": 12911512,
"upload_time": "2024-02-14T23:40:40",
"upload_time_iso_8601": "2024-02-14T23:40:40.679249Z",
"url": "https://files.pythonhosted.org/packages/8e/4a/d213e7cfbffd33141d24a1fa4f60abe5f2063c655ec575ebad149a45c734/pyduckling_native_phihos-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f480dd7b5981af666128dc736a9455efce8aa60b3929aad804ff693fff59d40f",
"md5": "cd6035133e3e3c5cf7aab90b88a27937",
"sha256": "33bcefbe1999583a2abcb7dbbbd1008445db71bcd825d40e1b45f9e25dcfcec6"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp38-cp38-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "cd6035133e3e3c5cf7aab90b88a27937",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 12966155,
"upload_time": "2024-02-14T23:40:44",
"upload_time_iso_8601": "2024-02-14T23:40:44.478149Z",
"url": "https://files.pythonhosted.org/packages/f4/80/dd7b5981af666128dc736a9455efce8aa60b3929aad804ff693fff59d40f/pyduckling_native_phihos-0.2.0-cp38-cp38-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9a9073c944e3c714fdf2a6527074fea3423558295e4dc1356673cc4b0ef7b267",
"md5": "2c576906083190584765fe075c369df8",
"sha256": "27091ab01e54afefd440a4c10d981bdba00f9f7da07008ea39df17cade874e44"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "2c576906083190584765fe075c369df8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 12911754,
"upload_time": "2024-02-14T23:40:47",
"upload_time_iso_8601": "2024-02-14T23:40:47.612000Z",
"url": "https://files.pythonhosted.org/packages/9a/90/73c944e3c714fdf2a6527074fea3423558295e4dc1356673cc4b0ef7b267/pyduckling_native_phihos-0.2.0-cp38-cp38-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "157ed5987aae5f2743bb7b9e8497e08ddce3be294ece663895bd96ca5d977acf",
"md5": "1554d8814d130661a652bdbea7279b25",
"sha256": "75bf78efae316729e6a645db98094db7ed09de5eae2b48e8968e175cb6773f97"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp39-cp39-manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "1554d8814d130661a652bdbea7279b25",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 12965465,
"upload_time": "2024-02-14T23:40:50",
"upload_time_iso_8601": "2024-02-14T23:40:50.951774Z",
"url": "https://files.pythonhosted.org/packages/15/7e/d5987aae5f2743bb7b9e8497e08ddce3be294ece663895bd96ca5d977acf/pyduckling_native_phihos-0.2.0-cp39-cp39-manylinux_2_28_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8aedf9e5d053ff2cffa8e4d079cd03a6c1c1b1c2999e2a5a6d6f3edadeeafaf4",
"md5": "1e254f7c89f114056b5bcf99f310c3ee",
"sha256": "e474a697847ff424bdd3bd1c675871661d757bc367d7aa840f7a7aa49dc3bb86"
},
"downloads": -1,
"filename": "pyduckling_native_phihos-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "1e254f7c89f114056b5bcf99f310c3ee",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 12912173,
"upload_time": "2024-02-14T23:40:54",
"upload_time_iso_8601": "2024-02-14T23:40:54.661022Z",
"url": "https://files.pythonhosted.org/packages/8a/ed/f9e5d053ff2cffa8e4d079cd03a6c1c1b1c2999e2a5a6d6f3edadeeafaf4/pyduckling_native_phihos-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-02-14 23:40:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "phihos",
"github_project": "pyduckling",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pyduckling-native-phihos"
}