Funções de utilidade para Moçambique — validação de NUIT, BI, documentos, e formatação de telefones.
Project description
moz-utils
Python
O Canivete Suíço para programadores em Moçambique — portado para Python. Ideal para integração em backends com Django, Flask, FastAPI e projetos de ciência de dados.
📦 Instalação
Pode instalar a biblioteca diretamente do diretório local ou através do seu gestor de pacotes preferido:
# Instalação a partir da raiz da pasta python
pip install .
🚀 Guia de Referência da API
1. Validação de Documentos
is_valid_nuit(nuit: Union[str, int]) -> bool
Valida se um NUIT é sintaticamente válido seguindo as regras da AT (Autoridade Tributária) baseadas no Módulo 11.
from moz_utils import is_valid_nuit
is_valid_nuit('123456789') # True
is_valid_nuit(111111111) # False (dígito repetido)
get_nuit_entity_type(nuit: Union[str, int]) -> Optional[str]
Retorna a classificação da entidade correspondente ao primeiro dígito do NUIT. Retorna None se o NUIT for inválido.
from moz_utils import get_nuit_entity_type
get_nuit_entity_type('100000008') # "Singular (Cidadãos nacionais/estrangeiros e ENI)"
get_nuit_entity_type('400000006') # "Colectiva (Sociedades por Quotas, SA, Lda, Associações)"
is_valid_bi(bi: str) -> bool
Valida se o formato do Bilhete de Identidade moçambicano está correto (12 dígitos + 1 letra). Ignora espaços e traços.
from moz_utils import is_valid_bi
is_valid_bi('110101234567A') # True
is_valid_bi('110101234567 a') # True (caso insensível a maiúsculas/espaços)
is_valid_bi('11010123456') # False
2. Utilitários de Telemóvel e Comunicação
is_valid_mozambican_phone(phone: str) -> bool
Valida se o número pertence a uma operadora de telecomunicações móveis nacional válida (Vodacom, Tmcel ou Movitel).
from moz_utils import is_valid_mozambican_phone
is_valid_mozambican_phone('841234567') # True
is_valid_mozambican_phone('+258869876543') # True
is_valid_mozambican_phone('991234567') # False
format_mozambican_phone(phone: str) -> str
Formata o número de telemóvel para o padrão internacional: +258 XX XXX XXXX. Lança ValueError se for inválido.
from moz_utils import format_mozambican_phone
format_mozambican_phone('841234567') # "+258 84 123 4567"
get_mobile_operator(phone: str) -> Optional[str]
Retorna o nome da operadora associada ao telemóvel ('Vodacom', 'Tmcel' ou 'Movitel').
from moz_utils import get_mobile_operator
get_mobile_operator('841234567') # "Vodacom"
get_mobile_operator('821234567') # "Tmcel"
build_whatsapp_url(phone: str, message: str = "") -> str
Gera uma ligação direta para o WhatsApp com DDI moçambicano (258) e mensagem configurada.
from moz_utils import build_whatsapp_url
build_whatsapp_url('841234567', 'Olá Formiga Antonio, bem-vindo a Nampula!')
# "https://wa.me/258841234567?text=Ol%C3%A1%20Formiga%20Antonio%2C%20bem-vindo%20a%20Nampula%21"
3. Utilitário Monetário
format_mzn(value: float, currency: str = 'MT') -> str
Formata um valor no padrão oficial de Meticais (espaço para milhares, vírgula para decimais).
from moz_utils import format_mzn
format_mzn(1250.5) # "1 250,50 MT"
format_mzn(5000000, 'MZN') # "5 000 000,00 MZN"
4. Base de Dados Geográfica
from moz_utils import get_mozambique_provinces, get_districts_by_province, get_all_districts
# 1. Obter a lista completa com todas as províncias, distritos, postos e bairros
provincias = get_mozambique_provinces()
# 2. Obter distritos de uma província específica pelo seu ID (ex: 'npl' para Nampula)
distritos_nampula = get_districts_by_province('npl') # ['Angoche', 'Eráti', ...]
# 3. Obter uma lista contendo todos os distritos planos e sua respetiva província
todos_distritos = get_all_districts()
📄 Licença
Este projeto é licenciado sob a licença AGPL-3.0-or-later.
Desenvolvido por Edmilson Muacigarro e contribuidores.
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 moz_utils-0.1.2.tar.gz.
File metadata
- Download URL: moz_utils-0.1.2.tar.gz
- Upload date:
- Size: 23.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd385e035d7924607091212200deb52379b21f46d0bd0aed99bcd7de0bd5242f
|
|
| MD5 |
13f9ce62c28a03d0de4327322514bd07
|
|
| BLAKE2b-256 |
ff34786e64534d98d339471ad7e7cae2cca8b96858fbd89da156f568c9ad377e
|
File details
Details for the file moz_utils-0.1.2-py3-none-any.whl.
File metadata
- Download URL: moz_utils-0.1.2-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d509db392f30a92790736ec1c4929e37c37fd125ef59204b4b8187968cc96f72
|
|
| MD5 |
e386fde9eae81095c99a7ef52f26b8b9
|
|
| BLAKE2b-256 |
f611df12c5e2fdbe1f2f26876c1194b4e8a6c654589ce548f998343daf3aefea
|