Biblioteca para normalização, validação e geração de variantes de números telefônicos.
Project description
phone-utils
Biblioteca Python para normalização, validação e geração de variantes de números de telefone internacionais, com suporte especial à regra do 9º dígito brasileiro.
Instalação
pip install phone-utils
Uso
from phone_utils import normalize_phone, validate_phone, generate_br_variants, InvalidPhoneError
Normalização
Converte qualquer formato de entrada para E.164 (+CCDDNNNNNNNNN):
normalize_phone("+55 (11) 99999-9999") # → "+5511999999999"
normalize_phone("5511999999999") # → "+5511999999999"
normalize_phone("+1 (202) 555-0123") # → "+12025550123"
normalize_phone("11999999999") # → raise InvalidPhoneError (sem DDI)
normalize_phone("abc") # → raise InvalidPhoneError
Validação
Verifica a estrutura do número sem lançar exceção:
validate_phone("+5511999999999") # → True
validate_phone("+12025550123") # → True
validate_phone("11999999999") # → False
validate_phone("") # → False
Variantes brasileiras (regra do 9º dígito)
Gera todas as representações válidas de um número brasileiro considerando a presença ou ausência do 9º dígito:
# Com 9º dígito → gera variante sem
generate_br_variants("+5511999999999")
# → ["+5511999999999", "+551199999999"]
# Sem 9º dígito → gera variante com
generate_br_variants("+551199999999")
# → ["+5511999999999", "+551199999999"]
# Sem 9º dígito compatível (não começa com 9) → retorna só o número
generate_br_variants("+5511799999999")
# → ["+5511799999999"]
# Número internacional → retorna só o número normalizado
generate_br_variants("+12025550123")
# → ["+12025550123"]
Tratamento de erros
from phone_utils import InvalidPhoneError
try:
normalized = normalize_phone("numero-invalido")
except InvalidPhoneError as e:
print(f"Número inválido: {e}")
Formatos de entrada aceitos
| Formato | Exemplo |
|---|---|
| E.164 | +5511999999999 |
Sem + (com DDI) |
5511999999999 |
| Com máscara | +55 (11) 99999-9999 |
| Com espaços | +55 11 99999 9999 |
| Internacional | +1 (202) 555-0123 |
Escopo da biblioteca
Faz:
- Normalizar números para E.164
- Validar estrutura conforme regras do país
- Gerar variantes BR para compatibilidade com bases legadas
Não faz:
- Verificar se a linha existe ou está ativa
- Consultar operadoras
- Enriquecer dados
- Registrar logs
Requisitos
- Python >= 3.10
- phonenumbers >= 9.0.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phone_utils-0.1.0.tar.gz.
File metadata
- Download URL: phone_utils-0.1.0.tar.gz
- Upload date:
- Size: 5.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b13f7969ae7feaf0a184526c8f6b0ae2aa310315e601624f54194fa04ba6b7ae
|
|
| MD5 |
6add42c3eca6f82c4d2e5011898fd54e
|
|
| BLAKE2b-256 |
4ca3f572acddaa077c0244a4376d82e87c02175facde8ca05d93fb6767c74589
|
File details
Details for the file phone_utils-0.1.0-py3-none-any.whl.
File metadata
- Download URL: phone_utils-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
324d457cf8d9af3f12213d5332e4b9dd7518a664d207c55a37eafcf297076c81
|
|
| MD5 |
6d2bb40232f44891f889ec3f4e586991
|
|
| BLAKE2b-256 |
4e663b7450e5a2f144cf2d3b791518aa497f7b24eb849f1400a3cfc7104d75c0
|