Source code for dialogy.types.entity.credit_card_number

"""
.. _CreditCardNumberEntity

Credit Card Number Entity
=========================

Provides the entity class for credit card numbers in natural language. This entity is obtained via :ref:`DucklingPlugin<DucklingPlugin>`.

Plugin Walkthrough
------------------

.. ipython::

    In [1]: from dialogy.plugins import DucklingPlugin

    In [2]: duckling_plugin = DucklingPlugin(
       ...:     dest="output.entities",
       ...:     dimensions=["credit-card-number"],
       ...:     locale="en_IN",
       ...:     timezone="Asia/Kolkata",
       ...: )

    In [3]: duckling_plugin.parse("my credit card number is 4111111111111111.")

Workflow Integration
--------------------

.. ipython::

    In [1]: from dialogy.base import Input
       ...: from dialogy.plugins import DucklingPlugin
       ...: from dialogy.workflow import Workflow

    In [2]: duckling_plugin = DucklingPlugin(
       ...:     dest="output.entities",
       ...:     dimensions=["credit-card-number"],
       ...:     locale="en_IN",
       ...:     timezone="Asia/Kolkata",
       ...: )

    In [3]: workflow = Workflow([duckling_plugin])

    In [4]: _, output = workflow.run(Input(utterances="my credit card number is 4111111111111111."))

    In [5]: output

"""

from __future__ import annotations

from typing import Any, Dict, List, Optional

import attr

from dialogy import constants as const
from dialogy.types import BaseEntity
from dialogy.types.entity.deserialize import EntityDeserializer


[docs]@EntityDeserializer.register(const.CREDIT_CARD_NUMBER) @attr.s class CreditCardNumberEntity(BaseEntity): entity_type: Optional[str] = attr.ib( repr=False, default=const.CREDIT_CARD_NUMBER, kw_only=True ) issuer: str = attr.ib(validator=attr.validators.instance_of(str), kw_only=True) value: Optional[str] = attr.ib(default=None, kw_only=True) values: List[Dict[str, Any]] = attr.ib( validator=attr.validators.instance_of(list), kw_only=True )
[docs] @classmethod def from_duckling( cls, d: Dict[str, Any], alternative_index: int, **kwargs: Any ) -> CreditCardNumberEntity: value = d[const.VALUE][const.VALUE] return cls( range={const.START: d[const.START], const.END: d[const.END]}, body=d[const.BODY], dim=d[const.DIM], alternative_index=alternative_index, latent=d[const.LATENT], values=[{const.VALUE: value}], issuer=d[const.VALUE][const.ISSUER], )