Skip to main content

Rust-based Python wrapper for duckling library in Haskell.

Project description

PyDuckling

Project License - MIT pypi version conda version download count Downloads PyPI status Linux Tests Mac Tests

Copyright © 2020– Treble.ai

Overview

This package provides native bindings for Facebook's 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.

Note: This package is completely Haskell-less

Installing

To install pyduckling, you can use both conda and pip package managers:

# Using pip
pip install pyduckling-native

# Using conda
conda install pyduckling -c treble-ai

Notes: Right now, we only provide package distributions for Linux (x86_64). We will provide Windows and Mac distributions on the next release

Dependencies

To compile pyduckling, you will require the latest nightly release of Rust, alongside Cargo. Also, it requires a Python distribution with its corresponding development headers. Finally, this project depends on the following Cargo crates:

  • PyO3: Library used to produce Python bindings from Rust code.
  • Maturin: Build system to build and publish Rust-based Python packages

Additionally, this package depends on Duckling-FFI, used to compile the native interface to Duckling on Haskell. In order to compile Duckling-FFI, you will require the Stack Haskell manager.

Installing locally

Besides Rust and Stack, you will require the latest version of maturin installed to compile this project locally:

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:

cd duckling-ffi
stack build

Then, you will need to move the resulting binary libducklingffi.so to the ext_lib folder:

cp duckling-ffi/libducklingffi.so ext_lib

After completing this procedure, it is possible to execute the following command to compile pyduckling:

maturin develop

In order to produce wheels, maturin build can be used instead. This project supports PEP517, thus pip can be used to install this package as well:

pip install -U .

Running tests

We use pytest to run tests as it follows (after calling maturin develop):

pytest -v duckling/tests

Package usage

PyDuckling provides access to the parsing capabilities of Duckling used to extract structured data from text.

# Core imports
from duckling import (load_time_zones, parse_ref_time,
                      parse_lang, default_locale_lang, parse_locale,
                      parse_dimensions, parse, Context)

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

Changelog

Please see our CHANGELOG 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyduckling-native-0.1.0.tar.gz (23.4 kB view details)

Uploaded Source

Built Distributions

pyduckling_native-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl (25.4 MB view details)

Uploaded CPython 3.8 macOS 10.15+ x86-64

pyduckling_native-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl (25.4 MB view details)

Uploaded CPython 3.7m macOS 10.15+ x86-64

pyduckling_native-0.1.0-cp36-cp36m-macosx_10_15_x86_64.whl (25.4 MB view details)

Uploaded CPython 3.6m macOS 10.15+ x86-64

pyduckling_native-0.1.0-cp35-cp35m-macosx_10_15_x86_64.whl (25.4 MB view details)

Uploaded CPython 3.5m macOS 10.15+ x86-64

File details

Details for the file pyduckling-native-0.1.0.tar.gz.

File metadata

  • Download URL: pyduckling-native-0.1.0.tar.gz
  • Upload date:
  • Size: 23.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling-native-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9f3e93d6a905dfcf1b777f89d48579c3c820b335d4d8c9417bb9bb4c349cbbc1
MD5 b132671d2242b9bce7bd0ce9778847c2
BLAKE2b-256 a47cf789f78d5b0c2081280880c03cb03c4d0f53b7ef5c58bf8b43e272ba9747

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.5 MB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aeecc3f68b9e800181c0a4cfe1f388ee0911c9c81fb04a4cbcb393992e094c9f
MD5 a77b6cc2642177397ef3d73babeff5b6
BLAKE2b-256 92b93394a60fbf4d3dad1b7e290db6298618f9bc0e7067776915bab971487adc

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.5 MB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5e5b6a78b90f757d3f6701a3a4a837443bbacac411c9f5e33f4a473dbb13841f
MD5 e3bf880d4665ac2134b53baf4411224f
BLAKE2b-256 979b986d611e257297fd35b9adff68ea2c67d6f4a406bb9c3a4b04b78df4bf7b

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 25.4 MB
  • Tags: CPython 3.8, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp38-cp38-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6e996e2bc2eaf673b367c3380400d47207bfc12fdb9e15debbe790b240b91f8a
MD5 86de0bde479342226748cfb4c4dc594b
BLAKE2b-256 cd7f90c8e598c135be0112841a1aa0649b6ba4f16403a86b1f1979df20101794

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.5 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 347b613de8878e208345f8dae6ccf5779f0f23eeea63ff4ad11b3ba303be52a3
MD5 9fbbf8ee62ae88a3ab18cdd05c22c675
BLAKE2b-256 c4aeac7f5b66cce48b58a2562ca7bc035cffb418ad5477b350a3d170ff19bbc5

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 25.4 MB
  • Tags: CPython 3.7m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp37-cp37m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 2d44ee0d04755532a5c06fc8c5cabe2a4b6120b571598d18e71c70c49064ba8b
MD5 271dcf4c95510ae75af1992dfaca427e
BLAKE2b-256 c56949e6018f0399cf81cde00b921520622a0c21ab2761e59d2cbb3cdda40b5c

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.5 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b579928da5902ff22f96d848307e25464a935f580bd68f87109748614fc2ad66
MD5 b6b70080dfc0041bdcf88dfcf9effd96
BLAKE2b-256 a53fd302532aa689e9e98bf8dca447d6a022e8c73b0dbe8e0f7311531c65e52f

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp36-cp36m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp36-cp36m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 25.4 MB
  • Tags: CPython 3.6m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp36-cp36m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 3e87a2fa810999912620cf90448f1ad28e158e17f1c5d6972468ea3aba84bf4d
MD5 86e1f469b7c7cc800d608c528a3153f9
BLAKE2b-256 92c1a5c061cf24e6e6ae8471254340d472a3a4c3620bb1eae1a74e98fc7cbdca

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp35-cp35m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp35-cp35m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 26.5 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp35-cp35m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 94362fc284d4784503e123efd8a78d4dc8047ca12811da75954d4bfffcdc6205
MD5 8f4e22ff8998d54c9e23cdd1229a55bd
BLAKE2b-256 c8db1d2df35623ae2dcbc9ce01823cc6c112988910452dfb9055ed09f8084786

See more details on using hashes here.

File details

Details for the file pyduckling_native-0.1.0-cp35-cp35m-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: pyduckling_native-0.1.0-cp35-cp35m-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 25.4 MB
  • Tags: CPython 3.5m, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1.post20200622 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

File hashes

Hashes for pyduckling_native-0.1.0-cp35-cp35m-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a9c262c6f33298eedaa75fa38bcfaec3dfc406355df05239dd8f424bb7f938c4
MD5 941ab175c818fb9d9536bf627f9e18c0
BLAKE2b-256 b2b4f43061ff7dc52afe2b70c034c1acf1c33b1309283a11a0dd46d3707814d9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page