148 lines
6.2 KiB
Python
148 lines
6.2 KiB
Python
|
|
from collections.abc import Callable
|
||
|
|
import threading
|
||
|
|
|
||
|
|
from .util import ImmutableMixin
|
||
|
|
from .util import UnicodeMixin
|
||
|
|
|
||
|
|
REGION_CODE_FOR_NON_GEO_ENTITY: str
|
||
|
|
|
||
|
|
class NumberFormat(UnicodeMixin, ImmutableMixin):
|
||
|
|
pattern: str | None
|
||
|
|
format: str | None
|
||
|
|
leading_digits_pattern: list[str]
|
||
|
|
national_prefix_formatting_rule: str | None
|
||
|
|
national_prefix_optional_when_formatting: bool | None
|
||
|
|
domestic_carrier_code_formatting_rule: str | None
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
pattern: str | None = ...,
|
||
|
|
format: str | None = ...,
|
||
|
|
leading_digits_pattern: list[str] | None = ...,
|
||
|
|
national_prefix_formatting_rule: str | None = ...,
|
||
|
|
national_prefix_optional_when_formatting: bool | None = ...,
|
||
|
|
domestic_carrier_code_formatting_rule: str | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def merge_from(self, other: NumberFormat) -> None: ...
|
||
|
|
def __eq__(self, other: object) -> bool: ...
|
||
|
|
def __ne__(self, other: object) -> bool: ...
|
||
|
|
def __repr__(self) -> str: ...
|
||
|
|
def __unicode__(self) -> str: ...
|
||
|
|
|
||
|
|
class PhoneNumberDesc(UnicodeMixin, ImmutableMixin):
|
||
|
|
national_number_pattern: str | None
|
||
|
|
example_number: str | None
|
||
|
|
possible_length: tuple[int, ...]
|
||
|
|
possible_length_local_only: tuple[int, ...]
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
national_number_pattern: str | None = ...,
|
||
|
|
example_number: str | None = ...,
|
||
|
|
possible_length: tuple[int, ...] | None = ...,
|
||
|
|
possible_length_local_only: tuple[int, ...] | None = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def merge_from(self, other: PhoneNumberDesc) -> None: ...
|
||
|
|
def __eq__(self, other: object) -> bool: ...
|
||
|
|
def __ne__(self, other: object) -> bool: ...
|
||
|
|
def __repr__(self) -> str: ...
|
||
|
|
def __unicode__(self) -> str: ...
|
||
|
|
|
||
|
|
def _same_pattern(left: PhoneNumberDesc | None, right: PhoneNumberDesc | None) -> bool: ...
|
||
|
|
|
||
|
|
class PhoneMetadata(UnicodeMixin, ImmutableMixin):
|
||
|
|
_metadata_lock: threading.Lock
|
||
|
|
_region_available: dict[str, Callable[[str], None] | None]
|
||
|
|
_short_region_available: dict[str, Callable[[str], None] | None]
|
||
|
|
_country_code_available: dict[int, Callable[[int], None] | None]
|
||
|
|
_region_metadata: dict[str, PhoneMetadata]
|
||
|
|
_short_region_metadata: dict[str, PhoneMetadata]
|
||
|
|
_country_code_metadata: dict[int, PhoneMetadata]
|
||
|
|
general_desc: PhoneNumberDesc | None
|
||
|
|
fixed_line: PhoneNumberDesc | None
|
||
|
|
mobile: PhoneNumberDesc | None
|
||
|
|
toll_free: PhoneNumberDesc | None
|
||
|
|
premium_rate: PhoneNumberDesc | None
|
||
|
|
shared_cost: PhoneNumberDesc | None
|
||
|
|
personal_number: PhoneNumberDesc | None
|
||
|
|
voip: PhoneNumberDesc | None
|
||
|
|
pager: PhoneNumberDesc | None
|
||
|
|
uan: PhoneNumberDesc | None
|
||
|
|
emergency: PhoneNumberDesc | None
|
||
|
|
voicemail: PhoneNumberDesc | None
|
||
|
|
short_code: PhoneNumberDesc | None
|
||
|
|
standard_rate: PhoneNumberDesc | None
|
||
|
|
carrier_specific: PhoneNumberDesc | None
|
||
|
|
sms_services: PhoneNumberDesc | None
|
||
|
|
no_international_dialling: PhoneNumberDesc | None
|
||
|
|
id: str
|
||
|
|
country_code: int | None
|
||
|
|
international_prefix: str | None
|
||
|
|
preferred_international_prefix: str | None
|
||
|
|
national_prefix: str | None
|
||
|
|
preferred_extn_prefix: str | None
|
||
|
|
national_prefix_for_parsing: str | None
|
||
|
|
national_prefix_transform_rule: str | None
|
||
|
|
same_mobile_and_fixed_line_pattern: bool
|
||
|
|
number_format: list[NumberFormat]
|
||
|
|
intl_number_format: list[NumberFormat]
|
||
|
|
main_country_for_code: bool
|
||
|
|
leading_digits: str | None
|
||
|
|
leading_zero_possible: bool
|
||
|
|
mobile_number_portable_region: bool
|
||
|
|
short_data: bool
|
||
|
|
@classmethod
|
||
|
|
def metadata_for_region(cls, region_code: str, default: PhoneMetadata | None = ...) -> PhoneMetadata | None: ...
|
||
|
|
@classmethod
|
||
|
|
def short_metadata_for_region(cls, region_code: str, default: PhoneMetadata | None = ...) -> PhoneMetadata | None: ...
|
||
|
|
@classmethod
|
||
|
|
def metadata_for_nongeo_region(cls, country_code: int, default: PhoneMetadata | None = ...) -> PhoneMetadata | None: ...
|
||
|
|
@classmethod
|
||
|
|
def metadata_for_region_or_calling_code(cls, country_calling_code: int, region_code: str) -> PhoneMetadata | None: ...
|
||
|
|
@classmethod
|
||
|
|
def register_region_loader(cls, region_code: str, loader: Callable[[str], None]) -> None: ...
|
||
|
|
@classmethod
|
||
|
|
def register_short_region_loader(cls, region_code: str, loader: Callable[[str], None]) -> None: ...
|
||
|
|
@classmethod
|
||
|
|
def register_nongeo_region_loader(cls, country_code: int, loader: Callable[[int], None]) -> None: ...
|
||
|
|
@classmethod
|
||
|
|
def load_all(cls) -> None: ...
|
||
|
|
def __init__(
|
||
|
|
self,
|
||
|
|
id: str,
|
||
|
|
general_desc: PhoneNumberDesc | None = ...,
|
||
|
|
fixed_line: PhoneNumberDesc | None = ...,
|
||
|
|
mobile: PhoneNumberDesc | None = ...,
|
||
|
|
toll_free: PhoneNumberDesc | None = ...,
|
||
|
|
premium_rate: PhoneNumberDesc | None = ...,
|
||
|
|
shared_cost: PhoneNumberDesc | None = ...,
|
||
|
|
personal_number: PhoneNumberDesc | None = ...,
|
||
|
|
voip: PhoneNumberDesc | None = ...,
|
||
|
|
pager: PhoneNumberDesc | None = ...,
|
||
|
|
uan: PhoneNumberDesc | None = ...,
|
||
|
|
emergency: PhoneNumberDesc | None = ...,
|
||
|
|
voicemail: PhoneNumberDesc | None = ...,
|
||
|
|
short_code: PhoneNumberDesc | None = ...,
|
||
|
|
standard_rate: PhoneNumberDesc | None = ...,
|
||
|
|
carrier_specific: PhoneNumberDesc | None = ...,
|
||
|
|
sms_services: PhoneNumberDesc | None = ...,
|
||
|
|
no_international_dialling: PhoneNumberDesc | None = ...,
|
||
|
|
country_code: int | None = ...,
|
||
|
|
international_prefix: str | None = ...,
|
||
|
|
preferred_international_prefix: str | None = ...,
|
||
|
|
national_prefix: str | None = ...,
|
||
|
|
preferred_extn_prefix: str | None = ...,
|
||
|
|
national_prefix_for_parsing: str | None = ...,
|
||
|
|
national_prefix_transform_rule: str | None = ...,
|
||
|
|
number_format: list[NumberFormat] | None = ...,
|
||
|
|
intl_number_format: list[NumberFormat] | None = ...,
|
||
|
|
main_country_for_code: bool = ...,
|
||
|
|
leading_digits: str | None = ...,
|
||
|
|
leading_zero_possible: bool = ...,
|
||
|
|
mobile_number_portable_region: bool = ...,
|
||
|
|
short_data: bool = ...,
|
||
|
|
register: bool = ...,
|
||
|
|
) -> None: ...
|
||
|
|
def __eq__(self, other: object) -> bool: ...
|
||
|
|
def __ne__(self, other: object) -> bool: ...
|
||
|
|
def __repr__(self) -> str: ...
|
||
|
|
def __unicode__(self) -> str: ...
|