From dff4391f6e3261cd0e12c5a0f4888d5eac919501 Mon Sep 17 00:00:00 2001
From: Philippe van Mastrigt
Date: Tue, 5 Aug 2025 11:33:05 +0200
Subject: [PATCH] Fix submodule visibility in country modules
Add explicit imports to __init__.py files for all country modules to make
submodules visible via dir() function. This resolves the issue where
submodules like stdnum.gb.nhs, stdnum.us.ssn, etc. were not discoverable
through introspection despite being importable directly.
Changes:
- Added explicit 'from stdnum.{country} import {module}' statements
- Added '# noqa: F401' comments to suppress unused import warnings
- Ensures all submodules are now visible in dir() output
- Maintains backward compatibility for direct imports
Fixes module discoverability for all country-specific validation modules.
---
stdnum/ar/__init__.py | 1 +
stdnum/at/__init__.py | 2 ++
stdnum/au/__init__.py | 2 ++
stdnum/be/__init__.py | 4 ++++
stdnum/bg/__init__.py | 5 +++++
stdnum/br/__init__.py | 1 +
stdnum/ca/__init__.py | 2 ++
stdnum/ch/__init__.py | 6 ++++++
stdnum/cn/__init__.py | 1 +
stdnum/cr/__init__.py | 2 ++
stdnum/cu/__init__.py | 3 +++
stdnum/cy/__init__.py | 3 +++
stdnum/cz/__init__.py | 2 ++
stdnum/de/__init__.py | 4 ++++
stdnum/do/__init__.py | 2 ++
stdnum/es/__init__.py | 9 +++++++++
stdnum/eu/__init__.py | 9 +++++++++
stdnum/fi/__init__.py | 2 ++
stdnum/fr/__init__.py | 4 ++++
stdnum/gb/__init__.py | 9 +++++++++
stdnum/gr/__init__.py | 4 ++++
stdnum/ie/__init__.py | 4 ++++
stdnum/il/__init__.py | 1 +
stdnum/in_/__init__.py | 4 ++++
stdnum/it/__init__.py | 2 ++
stdnum/jp/__init__.py | 1 +
stdnum/kr/__init__.py | 1 +
stdnum/li/__init__.py | 3 +++
stdnum/lt/__init__.py | 1 +
stdnum/md/__init__.py | 3 +++
stdnum/me/__init__.py | 1 +
stdnum/mt/__init__.py | 3 +++
stdnum/mu/__init__.py | 3 +++
stdnum/my/__init__.py | 3 +++
stdnum/nl/__init__.py | 4 ++++
stdnum/no/__init__.py | 3 +++
stdnum/nz/__init__.py | 1 +
stdnum/pe/__init__.py | 1 +
stdnum/pk/__init__.py | 3 +++
stdnum/pl/__init__.py | 2 ++
stdnum/pt/__init__.py | 1 +
stdnum/ro/__init__.py | 3 +++
stdnum/ru/__init__.py | 1 +
stdnum/se/__init__.py | 2 ++
stdnum/th/__init__.py | 2 ++
stdnum/tr/__init__.py | 1 +
stdnum/ua/__init__.py | 4 ++++
stdnum/us/__init__.py | 9 +++++++++
stdnum/za/__init__.py | 4 ++++
49 files changed, 148 insertions(+)
diff --git a/stdnum/ar/__init__.py b/stdnum/ar/__init__.py
index b7ddb448..3ea7b771 100644
--- a/stdnum/ar/__init__.py
+++ b/stdnum/ar/__init__.py
@@ -25,3 +25,4 @@
# provide aliases
from stdnum.ar import cuit as vat # noqa: F401
from stdnum.ar import dni as personalid # noqa: F401
+from stdnum.ar import cbu # noqa: F401
diff --git a/stdnum/at/__init__.py b/stdnum/at/__init__.py
index 46c3b979..98a4cf27 100644
--- a/stdnum/at/__init__.py
+++ b/stdnum/at/__init__.py
@@ -26,3 +26,5 @@
from stdnum.at import postleitzahl as postal_code # noqa: F401
from stdnum.at import uid as vat # noqa: F401
from stdnum.at import vnr as personalid # noqa: F401
+from stdnum.at import businessid # noqa: F401
+from stdnum.at import tin # noqa: F401
diff --git a/stdnum/au/__init__.py b/stdnum/au/__init__.py
index 906a9a6d..45aeba72 100644
--- a/stdnum/au/__init__.py
+++ b/stdnum/au/__init__.py
@@ -24,3 +24,5 @@
# provide aliases
from stdnum.au import abn as vat # noqa: F401
+from stdnum.au import acn # noqa: F401
+from stdnum.au import tfn # noqa: F401
diff --git a/stdnum/be/__init__.py b/stdnum/be/__init__.py
index 26ce6d57..21fe7a37 100644
--- a/stdnum/be/__init__.py
+++ b/stdnum/be/__init__.py
@@ -25,3 +25,7 @@
# provide businessid as an alias
from stdnum.be import nn as personalid # noqa: F401
from stdnum.be import vat as businessid # noqa: F401
+from stdnum.be import bis # noqa: F401
+from stdnum.be import eid # noqa: F401
+from stdnum.be import iban # noqa: F401
+from stdnum.be import ssn # noqa: F401
diff --git a/stdnum/bg/__init__.py b/stdnum/bg/__init__.py
index ca12a417..495c6a28 100644
--- a/stdnum/bg/__init__.py
+++ b/stdnum/bg/__init__.py
@@ -19,3 +19,8 @@
# 02110-1301 USA
"""Collection of Bulgarian numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.bg import egn # noqa: F401
+from stdnum.bg import pnf # noqa: F401
+from stdnum.bg import vat # noqa: F401
diff --git a/stdnum/br/__init__.py b/stdnum/br/__init__.py
index 2838f9be..4f888306 100644
--- a/stdnum/br/__init__.py
+++ b/stdnum/br/__init__.py
@@ -23,3 +23,4 @@
from __future__ import annotations
from stdnum.br import cnpj as vat # noqa: F401
+from stdnum.br import cpf # noqa: F401
diff --git a/stdnum/ca/__init__.py b/stdnum/ca/__init__.py
index 85183960..699458fb 100644
--- a/stdnum/ca/__init__.py
+++ b/stdnum/ca/__init__.py
@@ -23,3 +23,5 @@
from __future__ import annotations
from stdnum.ca import bn as vat # noqa: F401
+from stdnum.ca import bc_phn # noqa: F401
+from stdnum.ca import sin # noqa: F401
diff --git a/stdnum/ch/__init__.py b/stdnum/ch/__init__.py
index cea35648..ad9b751d 100644
--- a/stdnum/ch/__init__.py
+++ b/stdnum/ch/__init__.py
@@ -19,3 +19,9 @@
# 02110-1301 USA
"""Collection of Swiss numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.ch import esr # noqa: F401
+from stdnum.ch import ssn # noqa: F401
+from stdnum.ch import uid # noqa: F401
+from stdnum.ch import vat # noqa: F401
diff --git a/stdnum/cn/__init__.py b/stdnum/cn/__init__.py
index 86235cc2..eebdc693 100644
--- a/stdnum/cn/__init__.py
+++ b/stdnum/cn/__init__.py
@@ -24,3 +24,4 @@
# Provide vat as an alias.
from stdnum.cn import uscc as vat # noqa: F401
+from stdnum.cn import ric # noqa: F401
diff --git a/stdnum/cr/__init__.py b/stdnum/cr/__init__.py
index 9cc8e3d1..74a1b426 100644
--- a/stdnum/cr/__init__.py
+++ b/stdnum/cr/__init__.py
@@ -23,3 +23,5 @@
from __future__ import annotations
from stdnum.cr import cpj as vat # noqa: F401
+from stdnum.cr import cpf # noqa: F401
+from stdnum.cr import cr # noqa: F401
diff --git a/stdnum/cu/__init__.py b/stdnum/cu/__init__.py
index aec2e467..2ba58c53 100644
--- a/stdnum/cu/__init__.py
+++ b/stdnum/cu/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Cuban numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.cu import ni # noqa: F401
diff --git a/stdnum/cy/__init__.py b/stdnum/cy/__init__.py
index 1d0117b2..e9f158e4 100644
--- a/stdnum/cy/__init__.py
+++ b/stdnum/cy/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Cypriot numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.cy import vat # noqa: F401
diff --git a/stdnum/cz/__init__.py b/stdnum/cz/__init__.py
index 6e292b58..4ac3f28f 100644
--- a/stdnum/cz/__init__.py
+++ b/stdnum/cz/__init__.py
@@ -24,3 +24,5 @@
# provide vat as an alias
from stdnum.cz import dic as vat # noqa: F401
+from stdnum.cz import bankaccount # noqa: F401
+from stdnum.cz import rc # noqa: F401
diff --git a/stdnum/de/__init__.py b/stdnum/de/__init__.py
index df82ea38..b24d5850 100644
--- a/stdnum/de/__init__.py
+++ b/stdnum/de/__init__.py
@@ -24,3 +24,7 @@
# provide businessid as an alias
from stdnum.de import handelsregisternummer as businessid # noqa: F401
+from stdnum.de import idnr # noqa: F401
+from stdnum.de import stnr # noqa: F401
+from stdnum.de import vat # noqa: F401
+from stdnum.de import wkn # noqa: F401
diff --git a/stdnum/do/__init__.py b/stdnum/do/__init__.py
index 16c67f58..b9ff394e 100644
--- a/stdnum/do/__init__.py
+++ b/stdnum/do/__init__.py
@@ -23,3 +23,5 @@
from __future__ import annotations
from stdnum.do import rnc as vat # noqa: F401
+from stdnum.do import cedula # noqa: F401
+from stdnum.do import ncf # noqa: F401
diff --git a/stdnum/es/__init__.py b/stdnum/es/__init__.py
index cc881379..e4a2eb35 100644
--- a/stdnum/es/__init__.py
+++ b/stdnum/es/__init__.py
@@ -24,3 +24,12 @@
# provide vat as an alias
from stdnum.es import nif as vat # noqa: F401
+from stdnum.es import cae # noqa: F401
+from stdnum.es import ccc # noqa: F401
+from stdnum.es import cif # noqa: F401
+from stdnum.es import cups # noqa: F401
+from stdnum.es import dni # noqa: F401
+from stdnum.es import iban # noqa: F401
+from stdnum.es import nie # noqa: F401
+from stdnum.es import postal_code # noqa: F401
+from stdnum.es import referenciacatastral # noqa: F401
diff --git a/stdnum/eu/__init__.py b/stdnum/eu/__init__.py
index a00e8320..0d7abcb4 100644
--- a/stdnum/eu/__init__.py
+++ b/stdnum/eu/__init__.py
@@ -19,3 +19,12 @@
# 02110-1301 USA
"""Collection of European Union numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.eu import at_02 # noqa: F401
+from stdnum.eu import banknote # noqa: F401
+from stdnum.eu import ecnumber # noqa: F401
+from stdnum.eu import eic # noqa: F401
+from stdnum.eu import nace # noqa: F401
+from stdnum.eu import oss # noqa: F401
+from stdnum.eu import vat # noqa: F401
diff --git a/stdnum/fi/__init__.py b/stdnum/fi/__init__.py
index c47cc8d4..46908611 100644
--- a/stdnum/fi/__init__.py
+++ b/stdnum/fi/__init__.py
@@ -26,3 +26,5 @@
from stdnum.fi import alv as vat # noqa: F401
from stdnum.fi import hetu as personalid # noqa: F401
from stdnum.fi import ytunnus as businessid # noqa: F401
+from stdnum.fi import associationid # noqa: F401
+from stdnum.fi import veronumero # noqa: F401
diff --git a/stdnum/fr/__init__.py b/stdnum/fr/__init__.py
index abb5e236..53e42574 100644
--- a/stdnum/fr/__init__.py
+++ b/stdnum/fr/__init__.py
@@ -24,3 +24,7 @@
# provide vat as an alias
from stdnum.fr import tva as vat # noqa: F401
+from stdnum.fr import nif # noqa: F401
+from stdnum.fr import nir # noqa: F401
+from stdnum.fr import siren # noqa: F401
+from stdnum.fr import siret # noqa: F401
diff --git a/stdnum/gb/__init__.py b/stdnum/gb/__init__.py
index 2c3ec3c3..02212fbe 100644
--- a/stdnum/gb/__init__.py
+++ b/stdnum/gb/__init__.py
@@ -19,3 +19,12 @@
# 02110-1301 USA
"""Collection of United Kingdom numbers."""
+
+from __future__ import annotations
+
+# Import all submodules to make them available via dir()
+from stdnum.gb import nhs # noqa: F401
+from stdnum.gb import sedol # noqa: F401
+from stdnum.gb import upn # noqa: F401
+from stdnum.gb import utr # noqa: F401
+from stdnum.gb import vat # noqa: F401
diff --git a/stdnum/gr/__init__.py b/stdnum/gr/__init__.py
index 89aae30f..b37aae60 100644
--- a/stdnum/gr/__init__.py
+++ b/stdnum/gr/__init__.py
@@ -19,3 +19,7 @@
# 02110-1301 USA
"""Collection of Greek numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.gr import amka # noqa: F401
+from stdnum.gr import vat # noqa: F401
diff --git a/stdnum/ie/__init__.py b/stdnum/ie/__init__.py
index 8adc4771..b05ed978 100644
--- a/stdnum/ie/__init__.py
+++ b/stdnum/ie/__init__.py
@@ -19,3 +19,7 @@
# 02110-1301 USA
"""Collection of Irish numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.ie import pps # noqa: F401
+from stdnum.ie import vat # noqa: F401
diff --git a/stdnum/il/__init__.py b/stdnum/il/__init__.py
index 46809fa1..4b0064ca 100644
--- a/stdnum/il/__init__.py
+++ b/stdnum/il/__init__.py
@@ -24,3 +24,4 @@
# provide aliases
from stdnum.il import hp as vat # noqa: F401
+from stdnum.il import idnr # noqa: F401
diff --git a/stdnum/in_/__init__.py b/stdnum/in_/__init__.py
index ff608c39..a61ae822 100644
--- a/stdnum/in_/__init__.py
+++ b/stdnum/in_/__init__.py
@@ -24,3 +24,7 @@
# provide aliases
from stdnum.in_ import gstin as vat # noqa: F401
+from stdnum.in_ import aadhaar # noqa: F401
+from stdnum.in_ import epic # noqa: F401
+from stdnum.in_ import pan # noqa: F401
+from stdnum.in_ import vid # noqa: F401
diff --git a/stdnum/it/__init__.py b/stdnum/it/__init__.py
index 89dca808..d7c6f179 100644
--- a/stdnum/it/__init__.py
+++ b/stdnum/it/__init__.py
@@ -24,3 +24,5 @@
# provide vat as an alias
from stdnum.it import iva as vat # noqa: F401
+from stdnum.it import aic # noqa: F401
+from stdnum.it import codicefiscale # noqa: F401
diff --git a/stdnum/jp/__init__.py b/stdnum/jp/__init__.py
index 077cd25e..fe1c2868 100644
--- a/stdnum/jp/__init__.py
+++ b/stdnum/jp/__init__.py
@@ -23,3 +23,4 @@
from __future__ import annotations
from stdnum.jp import cn as vat # noqa: F401
+from stdnum.jp import in_ # noqa: F401
diff --git a/stdnum/kr/__init__.py b/stdnum/kr/__init__.py
index ed5da97b..b7fb120d 100644
--- a/stdnum/kr/__init__.py
+++ b/stdnum/kr/__init__.py
@@ -24,3 +24,4 @@
# provide aliases
from stdnum.kr import brn as vat # noqa: F401
+from stdnum.kr import rrn # noqa: F401
diff --git a/stdnum/li/__init__.py b/stdnum/li/__init__.py
index 48d72911..d83e971d 100644
--- a/stdnum/li/__init__.py
+++ b/stdnum/li/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Liechtenstein numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.li import peid # noqa: F401
diff --git a/stdnum/lt/__init__.py b/stdnum/lt/__init__.py
index f6ab3a61..672e703b 100644
--- a/stdnum/lt/__init__.py
+++ b/stdnum/lt/__init__.py
@@ -24,3 +24,4 @@
# provide vat as an alias
from stdnum.lt import pvm as vat # noqa: F401
+from stdnum.lt import asmens # noqa: F401
diff --git a/stdnum/md/__init__.py b/stdnum/md/__init__.py
index f9220652..dd278863 100644
--- a/stdnum/md/__init__.py
+++ b/stdnum/md/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Moldavian numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.md import idno # noqa: F401
diff --git a/stdnum/me/__init__.py b/stdnum/me/__init__.py
index 5142dfe6..9f7507e0 100644
--- a/stdnum/me/__init__.py
+++ b/stdnum/me/__init__.py
@@ -24,3 +24,4 @@
# provide aliases
from stdnum.me import pib as vat # noqa: F401
+from stdnum.me import iban # noqa: F401
diff --git a/stdnum/mt/__init__.py b/stdnum/mt/__init__.py
index e1d2ef78..b2107634 100644
--- a/stdnum/mt/__init__.py
+++ b/stdnum/mt/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Maltese numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.mt import vat # noqa: F401
diff --git a/stdnum/mu/__init__.py b/stdnum/mu/__init__.py
index 1fff1660..18058e34 100644
--- a/stdnum/mu/__init__.py
+++ b/stdnum/mu/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Mauritian numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.mu import nid # noqa: F401
diff --git a/stdnum/my/__init__.py b/stdnum/my/__init__.py
index e20908ed..0fbb33c8 100644
--- a/stdnum/my/__init__.py
+++ b/stdnum/my/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Malaysian numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.my import nric # noqa: F401
diff --git a/stdnum/nl/__init__.py b/stdnum/nl/__init__.py
index 0523a37f..01b7247b 100644
--- a/stdnum/nl/__init__.py
+++ b/stdnum/nl/__init__.py
@@ -25,3 +25,7 @@
# provide aliases
from stdnum.nl import btw as vat # noqa: F401
from stdnum.nl import postcode as postal_code # noqa: F401
+from stdnum.nl import brin # noqa: F401
+from stdnum.nl import bsn # noqa: F401
+from stdnum.nl import identiteitskaartnummer # noqa: F401
+from stdnum.nl import onderwijsnummer # noqa: F401
diff --git a/stdnum/no/__init__.py b/stdnum/no/__init__.py
index 9dfe517e..e95a64b2 100644
--- a/stdnum/no/__init__.py
+++ b/stdnum/no/__init__.py
@@ -25,3 +25,6 @@
# provide aliases
from stdnum.no import fodselsnummer as personalid # noqa: F401
from stdnum.no import mva as vat # noqa: F401
+from stdnum.no import iban # noqa: F401
+from stdnum.no import kontonr # noqa: F401
+from stdnum.no import orgnr # noqa: F401
diff --git a/stdnum/nz/__init__.py b/stdnum/nz/__init__.py
index 916154bc..fb01f440 100644
--- a/stdnum/nz/__init__.py
+++ b/stdnum/nz/__init__.py
@@ -24,3 +24,4 @@
# provide aliases
from stdnum.nz import ird as vat # noqa: F401
+from stdnum.nz import bankaccount # noqa: F401
diff --git a/stdnum/pe/__init__.py b/stdnum/pe/__init__.py
index 34e38ec6..22e84551 100644
--- a/stdnum/pe/__init__.py
+++ b/stdnum/pe/__init__.py
@@ -23,3 +23,4 @@
from __future__ import annotations
from stdnum.pe import ruc as vat # noqa: F401
+from stdnum.pe import cui # noqa: F401
diff --git a/stdnum/pk/__init__.py b/stdnum/pk/__init__.py
index 163ca843..18d33878 100644
--- a/stdnum/pk/__init__.py
+++ b/stdnum/pk/__init__.py
@@ -19,3 +19,6 @@
# 02110-1301 USA
"""Collection of Pakistani numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.pk import cnic # noqa: F401
diff --git a/stdnum/pl/__init__.py b/stdnum/pl/__init__.py
index 87f65c6a..989a23d6 100644
--- a/stdnum/pl/__init__.py
+++ b/stdnum/pl/__init__.py
@@ -24,3 +24,5 @@
# provide vat as an alias
from stdnum.pl import nip as vat # noqa: F401
+from stdnum.pl import pesel # noqa: F401
+from stdnum.pl import regon # noqa: F401
diff --git a/stdnum/pt/__init__.py b/stdnum/pt/__init__.py
index bb7bcd09..ece8b378 100644
--- a/stdnum/pt/__init__.py
+++ b/stdnum/pt/__init__.py
@@ -24,3 +24,4 @@
# provide vat as an alias
from stdnum.pt import nif as vat # noqa: F401
+from stdnum.pt import cc # noqa: F401
diff --git a/stdnum/ro/__init__.py b/stdnum/ro/__init__.py
index 97b3d3ee..ca65699f 100644
--- a/stdnum/ro/__init__.py
+++ b/stdnum/ro/__init__.py
@@ -24,3 +24,6 @@
# provide vat as an alias
from stdnum.ro import cf as vat # noqa: F401
+from stdnum.ro import cnp # noqa: F401
+from stdnum.ro import cui # noqa: F401
+from stdnum.ro import onrc # noqa: F401
diff --git a/stdnum/ru/__init__.py b/stdnum/ru/__init__.py
index 3a2cfa27..cc723ff4 100644
--- a/stdnum/ru/__init__.py
+++ b/stdnum/ru/__init__.py
@@ -24,3 +24,4 @@
# provide vat as an alias
from stdnum.ru import inn as vat # noqa: F401
+from stdnum.ru import ogrn # noqa: F401
diff --git a/stdnum/se/__init__.py b/stdnum/se/__init__.py
index f5f004b1..a80e72fc 100644
--- a/stdnum/se/__init__.py
+++ b/stdnum/se/__init__.py
@@ -25,3 +25,5 @@
# provide aliases
from stdnum.se import personnummer as personalid # noqa: F401
from stdnum.se import postnummer as postal_code # noqa: F401
+from stdnum.se import orgnr # noqa: F401
+from stdnum.se import vat # noqa: F401
diff --git a/stdnum/th/__init__.py b/stdnum/th/__init__.py
index 37e974fb..f7c5e30d 100644
--- a/stdnum/th/__init__.py
+++ b/stdnum/th/__init__.py
@@ -24,3 +24,5 @@
# provide aliases
from stdnum.th import moa as vat # noqa: F401
+from stdnum.th import pin # noqa: F401
+from stdnum.th import tin # noqa: F401
diff --git a/stdnum/tr/__init__.py b/stdnum/tr/__init__.py
index b7e1b22b..dccdc900 100644
--- a/stdnum/tr/__init__.py
+++ b/stdnum/tr/__init__.py
@@ -23,3 +23,4 @@
from __future__ import annotations
from stdnum.tr import vkn as vat # noqa: F401
+from stdnum.tr import tckimlik # noqa: F401
diff --git a/stdnum/ua/__init__.py b/stdnum/ua/__init__.py
index 1838c524..eeb07286 100644
--- a/stdnum/ua/__init__.py
+++ b/stdnum/ua/__init__.py
@@ -19,3 +19,7 @@
# 02110-1301 USA
"""Collection of Ukrainian numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.ua import edrpou # noqa: F401
+from stdnum.ua import rntrc # noqa: F401
diff --git a/stdnum/us/__init__.py b/stdnum/us/__init__.py
index 5d767341..59275bfd 100644
--- a/stdnum/us/__init__.py
+++ b/stdnum/us/__init__.py
@@ -19,3 +19,12 @@
# 02110-1301 USA
"""Collection of United States numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.us import atin # noqa: F401
+from stdnum.us import ein # noqa: F401
+from stdnum.us import itin # noqa: F401
+from stdnum.us import ptin # noqa: F401
+from stdnum.us import rtn # noqa: F401
+from stdnum.us import ssn # noqa: F401
+from stdnum.us import tin # noqa: F401
diff --git a/stdnum/za/__init__.py b/stdnum/za/__init__.py
index 2424e9c1..01d04528 100644
--- a/stdnum/za/__init__.py
+++ b/stdnum/za/__init__.py
@@ -19,3 +19,7 @@
# 02110-1301 USA
"""Collection of South Africa numbers."""
+
+# Import all submodules to make them available via dir()
+from stdnum.za import idnr # noqa: F401
+from stdnum.za import tin # noqa: F401