Skip to main content

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


Download files

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

Source Distribution

moz_utils-0.1.0.tar.gz (23.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

moz_utils-0.1.0-py3-none-any.whl (21.6 kB view details)

Uploaded Python 3

File details

Details for the file moz_utils-0.1.0.tar.gz.

File metadata

  • Download URL: moz_utils-0.1.0.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

Hashes for moz_utils-0.1.0.tar.gz
Algorithm Hash digest
SHA256 e9bb4b6da7796a9f1596d5d1b13f6dc6eaa86be3c866c3e80e0cad743e5cdcd6
MD5 fca322329eaf09487c8f9ace2631a346
BLAKE2b-256 afc34476c2d83834eb2732ec08740f954eb47e959042267a63a15c70c19ae84b

See more details on using hashes here.

File details

Details for the file moz_utils-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: moz_utils-0.1.0-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

Hashes for moz_utils-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f3bf3a0de2b1346f5abce57bf265903303a73576107e1ee8f25791bc24069e2
MD5 688fcc3fc776148ee8f8605ac76941b2
BLAKE2b-256 98278204528c21c69dceb1af5e9df5326c5d1afecf717cc8852bcca6a47406b4

See more details on using hashes here.

Supported by

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