Skip to main content

numero-uemoa

Valider, normaliser et convertir les numéros de téléphone des 8 pays de l'UEMOA — Bénin, Burkina Faso, Côte d'Ivoire, Guinée-Bissau, Mali, Niger, Sénégal, Togo — dont le passage du Bénin de 8 à 10 chiffres (30 novembre 2024) et celui de la Côte d'Ivoire (31 janvier 2021).

Même résultat en TypeScript, Python et PHP : une seule table de données, tirée des plans de numérotage que chaque régulateur a communiqués à l'UIT, avec la date et la source de chaque pays.

import { analyser } from 'numero-uemoa';

const n = analyser('97 00 00 00', { pays: 'BJ' });
n.valide;                  // false
n.motif;                   // 'ancien_format'
n.converti?.e164;          // '+2290197000000'
n.converti?.lienWhatsApp;  // 'https://wa.me/2290197000000'
n.converti?.operateur;     // 'MTN' (opérateur d'attribution de la série)
from numero_uemoa import analyser, normaliser

analyser("+229 01 40 12 34 56").marque     # 'Celtiis'
normaliser("97 00 00 00", pays="BJ")        # '+2290197000000'
use Numero\Numero;

Numero::analyser('+225 20344373')->converti?->e164;   // '+2252720344373'

Ce que la bibliothèque renvoie

Champ Contenu
valide Conforme au plan officiel (série attribuée, ou réservée hors mode strict)
motif Pourquoi ce n'est pas valide : vide, caracteres, pays_requis, pays_non_couvert, longueur, ancien_format, pas_encore_en_vigueur, serie_reservee, serie_inconnue (messages en français fournis)
converti Proposition de nouveau numéro pour un ancien format : jamais appliquée d'office
e164, international, format +2290197000000, +229 01 97 00 00 00, 01 97 00 00 00
type, operateur, marque mobile / fixe / service ; opérateur d'attribution de la série (voir portabilite)
lienTel, lienWhatsApp, masque tel:+229…, https://wa.me/229…, +229 01 97 ** ** 00
serie attribuee, reservee (prévue par le plan, sans opérateur), inconnue (absente du plan publié)
source, portabilite Date du plan officiel utilisé ; date d'ouverture de la portabilité des numéros

Options : pays (pour un numéro écrit sans indicatif), date (évaluer à une autre date : avant la bascule, l'ancien numéro béninois est le bon), strict (refuser les séries réservées).

Les choix, et pourquoi

  • La conversion est proposée, jamais imposée. Un numéro étranger saisi dans un répertoire béninois n'est pas « converti » : il est reconnu comme étranger.
  • « Série inconnue » ne veut pas dire « faux ». Les plans publiés ont parfois plusieurs années (Mali : 2018, Togo : 2021). Un numéro dans une série absente du plan est signalé avec la date du plan, pour que vous décidiez.
  • Séries réservées acceptées par défaut. Refuser le vrai numéro d'un client coûte plus cher qu'accepter un numéro d'une série encore libre : la mesure l'a montré (voir docs/mesures.md). strict: true inverse ce choix.
  • L'opérateur est celui d'attribution. Avec la portabilité (Bénin depuis 2018, Togo depuis 2024), un numéro a pu changer d'opérateur.
  • Couverture régionale, pas mondiale : 2,9 Ko compressés, zéro dépendance.

Mesuré (détail dans docs/mesures.md)

  • 52 vecteurs écrits à la main depuis les documents officiels (exemples cités, numéros de contact des régulateurs) : 52/52 dans les trois langages.
  • 1 200 vecteurs croisés (toutes les séries, toutes les règles de migration, saisies abîmées) : sorties identiques en TypeScript, Python et PHP.
  • 2 986 octets minifiés et compressés (TypeScript), contre 29 220 pour libphonenumber-js/min et 49 247 pour /max.
  • libphonenumber-js ne convertit pas les anciens numéros béninois et ivoiriens : il les déclare invalides.

Installer

  • npm : numero-uemoa · PyPI : numero-uemoa · Packagist : gillesto66/numero-uemoa (PHP 8.1+, extensions intl et mbstring).
  • Convertir un fichier : python -m numero_uemoa contacts.csv --colonne telephone --pays BJ.

Sources

Les huit plans officiels, leur date et leur adresse : docs/sources.md. Mettre à jour la table quand un plan change : docs/METTRE-A-JOUR.md.

Licence MIT — Gilles MEDENOU.

Metadata

Release files for numero-uemoa 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for numero-uemoa 0.1.0
File Size Uploaded Provenance
numero_uemoa-0.1.0.tar.gz 12.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for numero-uemoa 0.1.0
File Interpreter ABI Platform
numero_uemoa-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 23.6 kB

Release files / numero_uemoa-0.1.0.tar.gz

Download URL numero_uemoa-0.1.0.tar.gz
Size 12.0 kB
Tags Source
SHA-256 checksum
How to use checksums
fe04d2e0d96aeaf412ba98f1a947175067829bd4e07678be2a7e8e1521ca8081
BLAKE2b-256 checksum
How to use checksums
928ec9e4c3f1a00cfe9d785c8e894b4b996557db36bb627b156eb079774a5776
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / numero_uemoa-0.1.0-py3-none-any.whl

Download URL numero_uemoa-0.1.0-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
280ca74352e91565f020d40736e18eeef3d0011e118f4a1a9e444ed707771b86
BLAKE2b-256 checksum
How to use checksums
c90d79c6765d28dc7630572f32bf7dc991cf8d0113f57cf74c6a05c6b13c5fb3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for numero-uemoa 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page