update bots

This commit is contained in:
2026-05-18 14:15:59 +07:00
parent b0ce866a2f
commit b9054d178e
5775 changed files with 832577 additions and 38 deletions

View File

@@ -0,0 +1,165 @@
import re
import string
from math import ceil
from string import ascii_uppercase
from typing import Dict, Optional
from .. import BaseProvider
localized = True
default_locale = "en_GB"
class Provider(BaseProvider):
"""Implement default bank provider for Faker.
.. important::
Bank codes, account numbers, and other ID's generated by this provider
are only valid in form, i.e. they conform to some standard/format, are
of the expected lengths, and have valid checksums (where applicable).
Results generated that turn out to be valid in real life are purely
coincidental.
Sources:
- https://en.wikipedia.org/wiki/International_Bank_Account_Number
- https://www.theswiftcodes.com/swift-code-checker/
"""
ALPHA: Dict[str, str] = {c: str(ord(c) % 55) for c in string.ascii_uppercase}
bban_format: str = "????#############"
country_code: str = "GB"
def aba(self) -> str:
"""Generate an ABA routing transit number."""
fed_num = self.random_int(min=1, max=12)
rand = self.numerify("######")
aba = f"{fed_num:02}{rand}"
# calculate check digit
d = [int(n) for n in aba]
chk_digit = 3 * (d[0] + d[3] + d[6]) + 7 * (d[1] + d[4] + d[7]) + d[2] + d[5]
chk_digit = ceil(chk_digit / 10) * 10 - chk_digit
return f"{aba}{chk_digit}"
def bank_country(self) -> str:
"""Generate the bank provider's ISO 3166-1 alpha-2 country code."""
return self.country_code
def bank(self) -> str:
"""Generate a bank name."""
if not hasattr(self, "banks"):
raise AttributeError(
f"The {self.__class__.__name__} provider does not have a 'banks' "
"attribute. Consider contributing to the project and "
" adding a 'banks' tuple to enable bank name generation."
)
return self.random_element(self.banks)
def bban(self) -> str:
"""Generate a Basic Bank Account Number (BBAN)."""
temp = re.sub(r"\?", lambda x: self.random_element(ascii_uppercase), self.bban_format)
return self.numerify(temp)
def iban(self) -> str:
"""Generate an International Bank Account Number (IBAN)."""
bban = self.bban()
check = bban + self.country_code + "00"
check_ = int("".join(self.ALPHA.get(c, c) for c in check))
check_ = 98 - (check_ % 97)
check = str(check_).zfill(2)
return self.country_code + check + bban
def swift8(self, use_dataset: bool = False) -> str:
"""Generate an 8-digit SWIFT code.
This method uses |swift| under the hood with the ``length`` argument set
to ``8`` and with the ``primary`` argument omitted. All 8-digit SWIFT
codes already refer to the primary branch/office.
:sample:
:sample: use_dataset=True
"""
return self.swift(length=8, use_dataset=use_dataset)
def swift11(self, primary: bool = False, use_dataset: bool = False) -> str:
"""Generate an 11-digit SWIFT code.
This method uses |swift| under the hood with the ``length`` argument set
to ``11``. If ``primary`` is set to ``True``, the SWIFT code will always
end with ``'XXX'``. All 11-digit SWIFT codes use this convention to
refer to the primary branch/office.
:sample:
:sample: use_dataset=True
"""
return self.swift(length=11, primary=primary, use_dataset=use_dataset)
def swift(
self,
length: Optional[int] = None,
primary: bool = False,
use_dataset: bool = False,
) -> str:
"""Generate a SWIFT code.
SWIFT codes, reading from left to right, are composed of a 4 alphabet
character bank code, a 2 alphabet character country code, a 2
alphanumeric location code, and an optional 3 alphanumeric branch code.
This means SWIFT codes can only have 8 or 11 characters, so the value of
``length`` can only be ``None`` or the integers ``8`` or ``11``. If the
value is ``None``, then a value of ``8`` or ``11`` will randomly be
assigned.
Because all 8-digit SWIFT codes already refer to the primary branch or
office, the ``primary`` argument only has an effect if the value of
``length`` is ``11``. If ``primary`` is ``True`` and ``length`` is
``11``, the 11-digit SWIFT codes generated will always end in ``'XXX'``
to denote that they belong to primary branches/offices.
For extra authenticity, localized providers may opt to include SWIFT
bank codes, location codes, and branch codes used in their respective
locales. If ``use_dataset`` is ``True``, this method will generate SWIFT
codes based on those locale-specific codes if included. If those codes
were not included, then it will behave as if ``use_dataset`` were
``False``, and in that mode, all those codes will just be randomly
generated as per the specification.
:sample:
:sample: length=8
:sample: length=8, use_dataset=True
:sample: length=11
:sample: length=11, primary=True
:sample: length=11, use_dataset=True
:sample: length=11, primary=True, use_dataset=True
"""
if length is None:
length = self.random_element((8, 11))
if length not in (8, 11):
raise AssertionError("length can only be 8 or 11")
if use_dataset and hasattr(self, "swift_bank_codes"):
bank_code: str = self.random_element(self.swift_bank_codes) # type: ignore[attr-defined]
else:
bank_code = self.lexify("????", letters=string.ascii_uppercase)
if use_dataset and hasattr(self, "swift_location_codes"):
location_code: str = self.random_element(self.swift_location_codes) # type: ignore[attr-defined]
else:
location_code = self.lexify("??", letters=string.ascii_uppercase + string.digits)
if length == 8:
return bank_code + self.country_code + location_code
if primary:
branch_code = "XXX"
elif use_dataset and hasattr(self, "swift_branch_codes"):
branch_code = self.random_element(self.swift_branch_codes) # type: ignore[attr-defined]
else:
branch_code = self.lexify("???", letters=string.ascii_uppercase + string.digits)
return bank_code + self.country_code + location_code + branch_code

View File

@@ -0,0 +1,36 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``az_AZ`` locale."""
bban_format = "????####################"
country_code = "AZ"
banks = (
"AccessBank",
"AFB Bank",
"Azərbaycan Sənaye Bankı",
"Azər Türk Bank",
"Bank Avrasiya",
"Bank BTB",
"Bank Melli Iran",
"Bank of Baku",
"Bank Respublika",
"Expressbank",
"Günay Bank",
"Kapital Bank",
"MuğanBank",
"Naxçıvan Bank",
"National Bank of Pakistan",
"PAŞA Bank",
"Premium Bank",
"Rabitəbank",
"TuranBank",
"Unibank",
"VTB Bank",
"Xalq Bank",
"Yapıkredi Bank Azərbaycan",
"Yelo Bank",
"Ziraat Bank Azərbaycan",
)

View File

@@ -0,0 +1,83 @@
from typing import Optional
from .. import Provider as BankProvider
class Provider(BankProvider):
"""
Implement bank provider for ``bn_BD`` locale.
Sources:
- https://wise.com/gb/swift-codes/BBHOBDDHXXX
- https://www.banksbd.org/swift-codes.html
"""
bban_format: str = "????#########"
country_code = "BD"
swift_location_codes = ("DH",)
swift_branch_codes = (
"ABBL",
"AGBK",
"ALAR",
"ALFH",
"BCBL",
"BDDB",
"BKBA",
"BKSI",
"BALB",
"BRAK",
"BBSH",
"BSON",
"CITI",
"CCEY",
"COYM",
"CIBL",
"DHBL",
"DBBL",
"EBLD",
"EXBK",
"FSEB",
"FRMS",
"HABB",
"HSBC",
"HVBK",
"IFIC",
"IBBL",
"JAMU",
"JANB",
"MGBL",
"MBLB",
"MDBL",
"MODH",
"MTBL",
"NGBL",
"NBLB",
"NBPA",
"NCCL",
"NRBD",
"NRBB",
"ONEB",
"PRBL",
"PRMR",
"PUBA",
"RUPB",
"SJBL",
"SOIV",
"SBAC",
"SEBD",
"SDBL",
"SCBL",
"SBIN",
"TTBL",
"UBLD",
"UCBL",
"UTBL",
)
def swift8(self, use_dataset: bool = True) -> str:
return super(self.__class__, self).swift8(use_dataset=use_dataset)
def swift11(self, primary: bool = False, use_dataset: bool = True) -> str:
return super(self.__class__, self).swift11(primary=primary, use_dataset=use_dataset)
def swift(self, length: Optional[int] = None, primary: bool = False, use_dataset: bool = True) -> str:
return super(self.__class__, self).swift(length=length, primary=primary, use_dataset=use_dataset)

View File

@@ -0,0 +1,11 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``cs_CZ`` locale.
https://www.mbank.cz/informace-k-produktum/info/ucty/cislo-uctu-iban.html
"""
bban_format = "####################"
country_code = "CZ"

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``da_DK`` locale."""
bban_format = "################"
country_code = "DK"

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``de_AT`` locale."""
bban_format = "################"
country_code = "AT"

View File

@@ -0,0 +1,24 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``de_CH`` locale."""
bban_format = "#################"
country_code = "CH"
# Major Swiss banks - Source: https://de.wikipedia.org/wiki/Schweizer_Bankwesen
banks = (
"UBS",
"Credit Suisse",
"Raiffeisen Schweiz",
"Zürcher Kantonalbank",
"PostFinance",
"Julius Bär",
"Banque Cantonale Vaudoise",
"Migros Bank",
"Basler Kantonalbank",
"Luzerner Kantonalbank",
"Union Bancaire Privée",
"Vontobel",
)

View File

@@ -0,0 +1,21 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``de_DE`` locale.
Source for rules for swift location codes:
- https://www.ebics.de/de/datenformate
"""
bban_format = "##################"
country_code = "DE"
first_place = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "23456789"
second_place = "ABCDEFGHIJKLMNPQRSTUVWXYZ" + "0123456789"
swift_location_codes = []
for i in first_place:
for j in second_place:
swift_location_codes.append(str(i) + str(j))
swift_location_codes = tuple(swift_location_codes)

View File

@@ -0,0 +1,28 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``el_GR`` locale."""
bban_format = "#######################"
country_code = "GR"
# Major GR banks (with a head office in Greece)
# Source:
# - https://www.bankofgreece.gr/en/main-tasks/supervision/supervised-institutions
# Last verified: January 2026
banks = (
"Aegean Baltic Bank",
"Alpha Bank",
"Credia Bank",
"Eurobank",
"Optima Bank",
"SNAPPI",
"Vivabank",
"Εθνική Τράπεζα",
"Συνεταιριστική Τράπεζα Θεσσαλίας",
"Συνεταιριστική Τράπεζα Καρδίτσας",
"Συνεταιριστική Τράπεζα Χανίων",
"Τράπεζα Ηπείρου",
"Τράπεζα Πειραιώς",
)

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``en_GB`` locale."""
bban_format = "????##############"
country_code = "GB"

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``en_IE`` locale."""
bban_format = "#######################"
country_code = "IE"

View File

@@ -0,0 +1,47 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``en_IN`` locale.
Source: https://en.wikipedia.org/wiki/List_of_banks_in_India
"""
banks = (
"Bank of Baroda",
"Bank of India",
"Bank of Maharashtra",
"Canara Bank",
"Central Bank of India",
"Indian Bank",
"Indian Overseas Bank",
"Punjab National Bank",
"Punjab and Sind Bank",
"Union Bank of India",
"UCO Bank",
"State Bank of India",
"Axis Bank",
"Bandhan Bank",
"CSB Bank",
"City Union Bank",
"DCB Bank",
"Dhanlaxmi Bank",
"Federal Bank",
"HDFC Bank",
"ICICI Bank",
"IDBI Bank",
"IDFC First Bank",
"IndusInd Bank",
"Jammu & Kashmir Bank",
"Karnataka Bank",
"Karur Vysya Bank",
"Kotak Mahindra Bank",
"Nainital Bank",
"RBL Bank",
"South Indian Bank",
"Tamilnad Mercantile Bank",
"Yes Bank",
)
def bank(self) -> str:
"""Generate a bank name."""
return self.random_element(self.banks)

View File

@@ -0,0 +1,109 @@
import logging
from faker.providers.bank import Provider as BankProvider
logger = logging.getLogger(__name__)
class Provider(BankProvider):
"""Implement bank provider for ``en_PH`` locale."""
country_code = "PH"
bban_format = "################"
swift_bank_codes = (
"ANZB",
"AUBK",
"BKCH",
"BKKB",
"BNOR",
"BNPA",
"BOFA",
"BOPI",
"BOTK",
"BPDI",
"BPFS",
"BPGO",
"CHAS",
"CHBK",
"CHSV",
"CITI",
"CPHI",
"CTCB",
"DBPH",
"DEUT",
"EQSN",
"EWBC",
"FCBK",
"HBPH",
"HNBK",
"HSBC",
"IBKO",
"ICBC",
"INGB",
"KOEX",
"MBBE",
"MBTC",
"MHCB",
"PABI",
"PHSB",
"PHTB",
"PHVB",
"PNBM",
"PPBU",
"RCBC",
"ROBP",
"SCBL",
"SETC",
"SHBK",
"SMBC",
"STLA",
"TACB",
"TLBP",
"TYBK",
"UBPH",
"UCPB",
"UOVB",
"UWCB",
)
swift_location_codes = (
"22",
"2X",
"M1",
"MM",
"MQ",
"MX",
)
swift_branch_codes = (
"CBU",
"EQI",
"TSU",
"XXX",
)
def bban(self) -> str:
"""Generate a Basic Bank Account Number (BBAN).
.. warning::
Philippine bank accounts do not have BBANs or IBANs, so any number
generated by this method is a purely hypothetical number. Local bank
account numbers are typically 10 or 12 digits long, so the BBAN
format used in this implementation has been arbitrarily set to 16
digits to simulate a hypothetical standardization of account numbers.
Using this method will log a warning regarding the hypotheticality of
the result.
"""
logger.warning("Numbers generated by this method are purely hypothetical.")
return super().bban()
def iban(self) -> str:
"""Generate an International Bank Account Number (IBAN).
.. warning::
Philippine bank accounts do not have BBANs or IBANs, so any number
generated by this method is a purely hypothetical number. This method
uses hypothetical PH BBANs and the PH country code as inputs to the
IBAN generation algorithm. Using this method will log a warning
regarding the hypotheticality of the result.
"""
logger.warning("Numbers generated by this method are purely hypothetical.")
return super().iban()

View File

@@ -0,0 +1,32 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``es_AR`` locale.
source: https://www.bcra.gob.ar/SistemasFinancierosYdePagos/Activos.asp"""
bban_format = "????####################"
country_code = "AR"
banks = (
"Banco de la Nación Argentina",
"Banco Santander",
"Banco de Galicia y Buenos Aires",
"Banco de la Provincia de Buenos Aires",
"BBVA Argentina",
"Banco Macro",
"HSBC Bank Argentina",
"Banco Ciudad de Buenos Aires",
"Banco Credicoop",
"Industrial And Commercial Bank Of China",
"Citibank",
"Banco Patagonia",
"Banco de la Provincia de Córdoba",
"Banco Supervielle",
"Nuevo Banco de Santa Fe",
"Banco Hipotecario S. A.",
"Banco Itaú Argentina",
"Banco de Inversión y Comercio Exterior (BICE)",
"Banco Comafi",
"BSE - Banco Santiago del Estero",
)

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``es_ES`` locale."""
bban_format = "####################"
country_code = "ES"

View File

@@ -0,0 +1,274 @@
from typing import List, Optional, Tuple
from .. import Provider as BankProvider
def get_clabe_control_digit(clabe: str) -> int:
"""Generate the checksum digit for a CLABE.
:param clabe: CLABE.
:return: The CLABE checksum digit.
"""
factors = [3, 7, 1]
products: List[int] = []
for i, digit in enumerate(clabe[:17]):
products.append((int(digit) * factors[i % 3]) % 10)
return (10 - sum(products)) % 10
def is_valid_clabe(clabe: str) -> bool:
"""Check if a CLABE is valid using the checksum.
:param clabe: CLABE.
:return: True if the CLABE is valid, False otherwise.
"""
if len(clabe) != 18 or not clabe.isdigit():
return False
return get_clabe_control_digit(clabe) == int(clabe[-1])
class Provider(BankProvider):
"""Bank provider for ``es_MX`` locale."""
banks: Tuple[str, ...] = (
"ABC Capital, S.A. I.B.M.",
"Acciones y Valores Banamex, S.A. de C.V., Casa de Bolsa",
"Actinver Casa de Bolsa, S.A. de C.V.",
"Akala, S.A. de C.V., Sociedad Financiera Popular",
"American Express Bank (México), S.A.",
"AXA Seguros, S.A. De C.V.",
"B y B Casa de Cambio, S.A. de C.V.",
"Banca Afirme, S.A.",
"Banca Mifel, S.A.",
"Banco Actinver, S.A.",
"Banco Ahorro Famsa, S.A.",
"Banco Autofin México, S.A.",
"Banco Azteca, S.A.",
"Banco BASE, S.A. de I.B.M.",
"Banco Compartamos, S.A.",
"Banco Credit Suisse (México), S.A.",
"Banco del Ahorro Nacional y Servicios Financieros, S.N.C.",
"Banco del Bajío, S.A.",
"Banco Inbursa, S.A.",
"Banco Inmobiliario Mexicano, S.A., Institución de Banca Múltiple",
"Banco Interacciones, S.A.",
"Banco Invex, S.A.",
"Banco J.P. Morgan, S.A.",
"Banco Mercantil del Norte, S.A.",
"Banco Monex, S.A.",
"Banco Multiva, S.A.",
"Banco Nacional de Comercio Exterior",
"Banco Nacional de México, S.A.",
"Banco Nacional de Obras y Servicios Públicos",
"Banco Nacional del Ejército, Fuerza Aérea y Armada",
"Banco PagaTodo S.A., Institución de Banca Múltiple",
"Banco Regional de Monterrey, S.A.",
"Banco Sabadell, S.A. I.B.M.",
"Banco Santander, S.A.",
"Banco Ve por Mas, S.A.",
"Banco Wal Mart de México Adelante, S.A.",
"BanCoppel, S.A.",
"Bank of America México, S.A.",
"Bank of Tokyo-Mitsubishi UFJ (México), S.A.",
"Bankaool, S.A., Institución de Banca Múltiple",
"Bansi, S.A.",
"Barclays Bank México, S.A.",
"BBVA Bancomer, S.A.",
"Bulltick Casa de Bolsa, S.A. de C.V.",
"Caja Popular Mexicana, S.C. de A.P. de R.L. De C.V.",
"Casa de Bolsa Finamex, S.A. de C.V.",
"Casa de Cambio Tíber, S.A. de C.V.",
"CI Casa de Bolsa, S.A. de C.V.",
"CLS Bank International",
"Consubanco, S.A.",
"Consultoría Internacional Banco, S.A.",
"Consultoría Internacional Casa de Cambio, S.A. de C.V.",
"Deutsche Bank México, S.A.",
"Deutsche Securities, S.A. de C.V.",
"Estructuradores del Mercado de Valores Casa de Bolsa, S.A. de C.V.",
"Evercore Casa de Bolsa, S.A. de C.V.",
"Financiera Nacional De Desarrollo Agropecuario, Rural, F y P.",
"Fincomún, Servicios Financieros Comunitarios, S.A. de C.V.",
"GBM Grupo Bursátil Mexicano, S.A. de C.V.",
"GE Money Bank, S.A.",
"HDI Seguros, S.A. de C.V.",
"Hipotecaria su Casita, S.A. de C.V.",
"HSBC México, S.A.",
"Industrial and Commercial Bank of China, S.A., Institución de Banca Múltiple",
"ING Bank (México), S.A.",
"Inter Banco, S.A.",
"Intercam Casa de Bolsa, S.A. de C.V.",
"Intercam Casa de Cambio, S.A. de C.V.",
"Inversora Bursátil, S.A. de C.V.",
"IXE Banco, S.A.",
"J.P. Morgan Casa de Bolsa, S.A. de C.V.",
"J.P. SOFIEXPRESS, S.A. de C.V., S.F.P.",
"Kuspit Casa de Bolsa, S.A. de C.V.",
"Libertad Servicios Financieros, S.A. De C.V.",
"MAPFRE Tepeyac S.A.",
"Masari Casa de Bolsa, S.A.",
"Merrill Lynch México, S.A. de C.V., Casa de Bolsa",
"Monex Casa de Bolsa, S.A. de C.V.",
"Multivalores Casa de Bolsa, S.A. de C.V. Multiva Gpo. Fin.",
"Nacional Financiera, S.N.C.",
"Opciones Empresariales Del Noreste, S.A. DE C.V.",
"OPERADORA ACTINVER, S.A. DE C.V.",
"Operadora De Pagos Móviles De México, S.A. De C.V.",
"Operadora de Recursos Reforma, S.A. de C.V.",
"OrderExpress Casa de Cambio , S.A. de C.V. AAC",
"Profuturo G.N.P., S.A. de C.V.",
"Scotiabank Inverlat, S.A.",
"SD. INDEVAL, S.A. de C.V.",
"Seguros Monterrey New York Life, S.A de C.V.",
"Sistema de Transferencias y Pagos STP, S.A. de C.V., SOFOM E.N.R.",
"Skandia Operadora S.A. de C.V.",
"Skandia Vida S.A. de C.V.",
"Sociedad Hipotecaria Federal, S.N.C.",
"Solución Asea, S.A. de C.V., Sociedad Financiera Popular",
"Sterling Casa de Cambio, S.A. de C.V.",
"Telecomunicaciones de México",
"The Royal Bank of Scotland México, S.A.",
"UBS Banco, S.A.",
"UNAGRA, S.A. de C.V., S.F.P.",
"Única Casa de Cambio, S.A. de C.V.",
"Valores Mexicanos Casa de Bolsa, S.A. de C.V.",
"Valué, S.A. de C.V., Casa de Bolsa",
"Vector Casa de Bolsa, S.A. de C.V.",
"Volkswagen Bank S.A. Institución de Banca Múltiple",
"Zúrich Compañía de Seguros, S.A.",
"Zúrich Vida, Compañía de Seguros, S.A.",
)
bank_codes: Tuple[int, ...] = (
2,
6,
9,
12,
14,
19,
21,
22,
30,
32,
36,
37,
42,
44,
58,
59,
60,
62,
72,
102,
103,
106,
108,
110,
112,
113,
116,
124,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
143,
145,
147,
148,
150,
155,
156,
166,
168,
600,
601,
602,
604,
605,
606,
607,
608,
610,
611,
613,
614,
615,
616,
617,
618,
619,
620,
621,
622,
623,
624,
626,
627,
628,
629,
630,
631,
632,
633,
634,
636,
637,
638,
640,
642,
646,
647,
648,
649,
651,
652,
653,
655,
656,
659,
670,
674,
677,
679,
684,
901,
902,
)
def clabe(self, bank_code: Optional[int] = None) -> str:
"""Generate a mexican bank account CLABE.
Sources:
- https://en.wikipedia.org/wiki/CLABE
:return: A fake CLABE number.
:sample:
:sample: bank_code=2
"""
bank = bank_code or self.random_element(self.bank_codes)
city = self.random_int(0, 999)
branch = self.random_int(0, 9999)
account = self.random_int(0, 9999999)
result = f"{bank:03d}{city:03d}{branch:04d}{account:07d}"
control_digit = get_clabe_control_digit(result)
return result + str(control_digit)

View File

@@ -0,0 +1,56 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``fa_IR`` locale."""
bban_format = "IR########################"
country_code = "IR"
swift_bank_codes = (
"BEGN",
"KESH",
"BKMN",
"BKBP",
"CIYB",
"BTOS",
"IVBB",
"KBID",
"KIBO",
"KHMI",
)
swift_location_codes = ("TH",)
swift_branch_codes = ("BSH", "BCQ", "tIR", "tTH", "ATM", "BIC", "TIR", "ASR", "FOR")
banks = (
"بانکهای قرض الحسنه",
"بانک ملّی ایران",
"بانک اقتصاد نوین",
"بانک قرض‌الحسنه مهر ایران",
"بانک سپه",
"بانک پارسیان",
"بانک قرض‌الحسنه رسالت",
"بانک صنعت و معدن",
"بانک کارآفرین",
"بانک کشاورزی",
"بانک سامان",
"بانک مسکن",
"بانک سینا",
"بانک توسعه صادرات ایران",
"بانک خاور میانه",
"بانک توسعه تعاون",
"بانک شهر",
"پست بانک ایران",
"بانک دی",
"بانک صادرات",
"بانک ملت",
"بانک تجارت",
"بانک رفاه",
"بانک حکمت ایرانیان",
"بانک گردشگری",
"بانک ایران زمین",
"بانک قوامین",
"بانک انصار",
"بانک سرمایه",
"بانک پاسارگاد",
"بانک مشترک ایران-ونزوئلا",
)

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``fi_FI`` locale."""
bban_format = "##############"
country_code = "FI"

View File

@@ -0,0 +1,10 @@
from ..en_PH import Provider as EnPhBankProvider
class Provider(EnPhBankProvider):
"""Implement bank provider for ``fil_PH`` locale.
There is no difference from the ``en_PH`` implementation.
"""
pass

View File

@@ -0,0 +1,10 @@
from ..de_CH import Provider as DeChBankProvider
class Provider(DeChBankProvider):
"""Implement bank provider for ``fr_CH`` locale.
There is no difference from the ``de_CH`` implementation.
"""
pass

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``fr_FR`` locale."""
bban_format = "#######################"
country_code = "FR"

View File

@@ -0,0 +1,10 @@
from ..de_CH import Provider as DeChBankProvider
class Provider(DeChBankProvider):
"""Implement bank provider for ``it_CH`` locale.
There is no difference from the ``de_CH`` implementation.
"""
pass

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``it_IT`` locale."""
bban_format = "?######################"
country_code = "IT"

View File

@@ -0,0 +1,92 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for `nl_BE` locale.
Information about the Belgian banks can be found on the website
of the National Bank of Belgium:
https://www.nbb.be/nl/betalingen-en-effecten/betalingsstandaarden/bankidentificatiecodes
"""
bban_format = "############"
country_code = "BE"
banks = (
"Argenta Spaarbank",
"AXA Bank",
"Belfius Bank",
"BNP Paribas Fortis",
"Bpost Bank",
"Crelan",
"Deutsche Bank AG",
"ING België",
"KBC Bank",
)
swift_bank_codes = (
"ARSP",
"AXAB",
"BBRU",
"BPOT",
"DEUT",
"GEBA",
"GKCC",
"KRED",
"NICA",
)
swift_location_codes = (
"BE",
"B2",
"99",
"21",
"91",
"23",
"3X",
"75",
"2X",
"22",
"88",
"B1",
"BX",
"BB",
)
swift_branch_codes = [
"203",
"BTB",
"CIC",
"HCC",
"IDJ",
"IPC",
"MDC",
"RET",
"VOD",
"XXX",
]
def bban(self) -> str:
"""Generate a valid BBAN."""
account_number = self._generate_account_number()
check_digits = self._calculate_mod97(account_number)
return f"{account_number}{check_digits}"
def iban(self) -> str:
"""Generate a valid IBAN."""
bban = self.bban()
iban_check_digits = self._calculate_iban_check_digits(bban)
return f"{self.country_code}{iban_check_digits}{bban}"
def _generate_account_number(self) -> str:
"""Generate a random 10-digit account number."""
return self.numerify("##########")
def _calculate_mod97(self, account_number: str) -> str:
"""Calculate the mod 97 check digits for a given account number."""
remainder = int(account_number) % 97
return str(remainder).zfill(2) if remainder != 0 else "97"
def _calculate_iban_check_digits(self, bban: str) -> str:
"""Calculate the IBAN check digits using mod 97 algorithm."""
raw_iban = f"{bban}{self.country_code}00"
numeric_iban = "".join(str(ord(char) - 55) if char.isalpha() else char for char in raw_iban)
check_digits = 98 - (int(numeric_iban) % 97)
return str(check_digits).zfill(2)

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``nl_NL`` locale."""
bban_format = "????##########"
country_code = "NL"

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``no_NO`` locale."""
bban_format = "###########"
country_code = "NO"

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``pl_PL`` locale."""
bban_format = "#" * 24
country_code = "PL"

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``pt_PT`` locale."""
bban_format = "#####################"
country_code = "PT"

View File

@@ -0,0 +1,50 @@
from faker.providers.bank import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``ro_RO`` locale."""
country_code = "RO"
bban_format = "????################"
swift_bank_codes = (
"NBOR",
"ABNA",
"BUCU",
"ARBL",
"MIND",
"BPOS",
"CARP",
"RNCB",
"BROM",
"BITR",
"BRDE",
"BRMA",
"BTRL",
"DAFB",
"MIRB",
"CECE",
"CITI",
"CRCO",
"FNNB",
"EGNA",
"BSEA",
"EXIM",
"UGBI",
"HVBL",
"INGB",
"BREL",
"CRDZ",
"BNRB",
"PIRB",
"PORL",
"MIRO",
"RZBL",
"RZBR",
"ROIN",
"WBAN",
"TRFD",
"TREZ",
"BACX",
"VBBU",
"DARO",
)

View File

@@ -0,0 +1,755 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``ru_RU`` locale.
Sources for region codes, currency codes, and bank names:
- https://ru.wikipedia.org/wiki/Коды_субъектов_Российской_Федерации
- https://ru.wikipedia.org/wiki/Общероссийский_классификаторалют
- http://cbr.ru/credit/coreports/ko17012020.zip
"""
country_code = "RU"
region_codes = (
"01",
"03",
"04",
"05",
"07",
"08",
"10",
"11",
"12",
"14",
"15",
"17",
"18",
"19",
"20",
"22",
"24",
"25",
"26",
"27",
"28",
"29",
"30",
"32",
"33",
"34",
"35",
"36",
"37",
"38",
"40",
"41",
"42",
"44",
"45",
"46",
"47",
"49",
"50",
"52",
"53",
"54",
"56",
"57",
"58",
"60",
"61",
"63",
"64",
"65",
"66",
"67",
"68",
"69",
"70",
"71",
"73",
"75",
"76",
"77",
"78",
"79",
"80",
"81",
"82",
"83",
"84",
"85",
"86",
"87",
"88",
"89",
"90",
"91",
"92",
"93",
"94",
"95",
"96",
"97",
"98",
"99",
)
department_code_formats = (
"0#",
"1#",
"2#",
"3#",
"4#",
"5#",
"6#",
"7#",
"8#",
"9#",
)
credit_organization_code_formats = (
"05#",
"06#",
"07#",
"08#",
"09#",
"1##",
"2##",
"3##",
"4##",
"5##",
"6##",
"7##",
"8##",
"9##",
)
checking_account_codes = (
[str(i) for i in range(102, 110)]
+ ["203", "204"]
+ [str(i) for i in range(301, 330)]
+ [str(i) for i in range(401, 409)]
+ [str(i) for i in range(411, 426)]
+ ["430"]
+ [str(i) for i in range(501, 527)]
)
organization_codes = (
"01",
"02",
"03",
"04",
)
currency_codes = (
"008",
"012",
"032",
"036",
"044",
"048",
"050",
"051",
"052",
"060",
"064",
"068",
"072",
"084",
"090",
"096",
"104",
"108",
"116",
"124",
"132",
"136",
"144",
"152",
"156",
"170",
"174",
"188",
"191",
"192",
"203",
"208",
"214",
"222",
"230",
"232",
"238",
"242",
"262",
"270",
"292",
"320",
"324",
"328",
"332",
"340",
"344",
"348",
"352",
"356",
"360",
"364",
"368",
"376",
"388",
"392",
"398",
"400",
"404",
"408",
"410",
"414",
"417",
"418",
"422",
"426",
"430",
"434",
"440",
"446",
"454",
"458",
"462",
"478",
"480",
"484",
"496",
"498",
"504",
"512",
"516",
"524",
"532",
"533",
"548",
"554",
"558",
"566",
"578",
"586",
"590",
"598",
"600",
"604",
"608",
"634",
"643",
"646",
"654",
"678",
"682",
"690",
"694",
"702",
"704",
"706",
"710",
"728",
"748",
"752",
"756",
"760",
"764",
"776",
"780",
"784",
"788",
"800",
"807",
"810",
"818",
"826",
"834",
"840",
"858",
"860",
"882",
"886",
"894",
"901",
"931",
"932",
"933",
"934",
"936",
"937",
"938",
"940",
"941",
"943",
"944",
"946",
"947",
"948",
"949",
"950",
"951",
"952",
"953",
"959",
"960",
"961",
"962",
"963",
"964",
"968",
"969",
"970",
"971",
"972",
"973",
"975",
"976",
"977",
"978",
"980",
"981",
"985",
"986",
"997",
"998",
"999",
)
banks = (
"Абсолют Банк",
"Авангард",
"Аверс",
"Автоградбанк",
"Автокредитбанк",
"Автоторгбанк",
"Агора",
"Агропромкредит",
"Агророс",
"Азиатско-Тихоокеанский Банк",
"Азия-Инвест Банк",
"Айсибиси Банк",
"АК Барс",
"Акибанк",
"Акрополь",
"Актив Банк",
"Акцепт",
"Александровский",
"Алеф-Банк",
"Алмазэргиэнбанк",
"Алтайкапиталбанк",
"Алтынбанк",
"Альба Альянс",
"Альтернатива",
"Альфа-Банк",
"Америкэн Экспресс Банк",
"Апабанк",
"Аресбанк",
"Арзамас",
"Байкалинвестбанк",
"Байкалкредобанк",
"Балаково-Банк",
"Балтинвестбанк",
'Банк "Санкт-Петербург"',
'Банк "СКС"',
"Банк 131",
"Банк Берейт",
"Банк Дом.рф",
"Банк Жилищного Финансирования",
"Банк Зенит",
"Банк Зенит Сочи",
"Банк Интеза",
"Банк Казани",
"Банк Корпоративного Финансирования",
"Банк Кредит Свисс (Москва)",
"Банк Оранжевый",
"Банк Оренбург",
"Банк ПСА Финанс Рус",
"Банк Раунд",
"Банк Реалист",
"Банк РМП",
"Банк РСИ",
"Банк СГБ",
"Банк Стандарт-Кредит",
"Банк Финам",
"Банк ЧБРР",
"ББР Банк",
"Белгородсоцбанк",
"Бест Эффортс Банк",
"Бизнес-Сервис-Траст",
"БКС Банк",
"БМ-Банк",
"БМВ Банк",
"БНП Париба Банк",
"Братский АНКБ",
"Быстробанк",
"Бэнк Оф Чайна",
"Вакобанк",
"Великие Луки Банк",
"Венец",
"Веста",
"Викинг",
"Витабанк",
"Вкабанк",
"Владбизнесбанк",
"Внешфинбанк",
"Возрождение",
"Вологжанин",
"Восточный",
"ВРБ",
"Всероссийский Банк Развития Регионов",
"ВТБ",
"Вуз-Банк",
"Вятич",
"Газнефтьбанк",
"Газпромбанк",
"Газтрансбанк",
"Газэнергобанк",
"Гарант-Инвест",
"Генбанк",
"Геобанк",
"Гефест",
"Глобус",
"Голдман Сакс Банк",
"Горбанк",
"Гута-Банк",
"Далена",
"Дальневосточный Банк",
"Денизбанк Москва",
"Держава",
"Дж.П. Морган Банк Интернешнл",
"Джей Энд Ти Банк",
"Дойче Банк",
"Долинск",
"Дом-Банк",
"Донкомбанк",
"Дон-Тексбанк",
"Дружба",
"ЕАТП Банк",
"Евразийский Банк",
"Евроазиатский Инвестиционный Банк",
"Евроальянс",
"Еврофинанс Моснарбанк",
"Екатеринбург",
"Енисейский Объединенный Банк",
"Ермак",
"Живаго Банк",
"Запсибкомбанк",
"Заречье",
"Заубер Банк",
"Земельный",
"Земский Банк",
"Зираат Банк (Москва)",
"Ижкомбанк",
"ИК Банк",
"Икано Банк",
"Инбанк",
"Инвестторгбанк",
"Инг Банк (Евразия)",
"Интерпрогрессбанк",
"Интерпромбанк",
"ИРС",
"ИС Банк",
"ИТ Банк",
"Итуруп",
"Ишбанк",
"Йошкар-Ола",
"Калуга",
"Камский Коммерческий Банк",
"Капитал",
"Кетовский Коммерческий Банк",
"Киви Банк",
"Классик Эконом Банк",
"Кольцо Урала",
"Коммерцбанк (Евразия)",
"Коммерческий Индо Банк",
"Консервативный Коммерческий Банк",
"Континенталь",
"Космос",
"Костромаселькомбанк",
"Кошелев-Банк",
"Креди Агриколь Киб",
"Кредит Европа Банк",
"Кредит Урал Банк",
"Кремлевский",
"Крокус-Банк",
"Крона-Банк",
"Кросна-Банк",
"КС Банк",
"Кубань Кредит",
"Кубаньторгбанк",
"Кузбассхимбанк",
"Кузнецкбизнесбанк",
"Кузнецкий",
"Кузнецкий Мост",
"Курган",
"Курскпромбанк",
"Кэб Эйчэнби Банк",
"Ланта-Банк",
"Левобережный",
"Локо-Банк",
"Майкопбанк",
"Майский",
"Максима",
"МБА-Москва",
"МВС Банк",
"Мегаполис",
"Международный Финансовый Клуб",
"Мерседес-Бенц Банк Рус",
"Металлинвестбанк",
"Металлург",
"Меткомбанк",
"Мидзухо Банк (Москва)",
"Мир Бизнес Банк",
"МКБ",
"Модульбанк",
"Морган Стэнли Банк",
"Морской Банк",
"Москва-Сити",
"Московский Индустриальный Банк",
"Московский Коммерческий Банк",
"Московский Кредитный Банк",
"Московский Нефтехимический Банк",
"Московский Областной Банк",
"Московское Ипотечное Агентство",
"Москоммерцбанк",
"МС Банк Рус",
"МСКБ",
"МСП Банк",
"МТИ Банк",
"МТС-Банк",
"Муниципальный Камчатпрофитбанк",
"Нальчик",
"Народный Банк",
"Народный Банк Тувы",
"Народный Доверительный Банк",
"Натиксис Банк",
"Национальный Банк Сбережений",
"Национальный Инвестиционно-Промышленный",
"Национальный Резервный Банк",
"Национальный Стандарт",
"НБД-Банк",
"Невастройинвест",
"Нейва",
"Нефтепромбанк",
"НИБ",
"Нижневолжский Коммерческий Банк",
"Нико-Банк",
"НК Банк",
"Новикомбанк",
"Новобанк",
"Новокиб",
"Новый Век",
"Новый Московский Банк",
"Нокссбанк",
"Ноосфера",
"Норвик Банк",
"Нордеа Банк",
"НС Банк",
"НФК",
"Объединенный Банк Республики",
"Объединенный Капитал",
"Онего",
"Оней Банк",
"Орбанк",
"Оргбанк",
"ОТП Банк",
"Первоуральскбанк",
"Первый Дортрансбанк",
"Первый Инвестиционный Банк",
"Первый Клиентский Банк",
"Пересвет",
"Пермь",
"Петербургский Социальный Ком. Банк",
"Платина",
"Плюс Банк",
"Пойдём!",
"Почта Банк",
"Почтобанк",
"Приморский Территориальный",
"Приморье",
"Примсоцбанк",
"Приобье",
"Прио-Внешторгбанк",
"Прокоммерцбанк",
"Проминвестбанк",
"Промсвязьбанк",
"Промсельхозбанк",
"Промтрансбанк",
"Профессионал Банк",
"Профессиональный Инвестиционный Банк",
"Прохладный",
"Развитие-Столица",
"Райффайзенбанк",
"РБА",
"Ренессанс Кредит",
"Рента-Банк",
"Ресо Кредит",
"Республиканский Кредитный Альянс",
"Ресурс-Траст",
"РН Банк",
"Росбанк",
"Росбизнесбанк",
"Росгосстрах Банк",
"Росдорбанк",
"Роскосмосбанк",
"Россельхозбанк",
"Российская Финансовая Корпорация",
"Российский Национальный Коммерческий Банк",
"Россита-Банк",
"Россия",
"Ростфинанс",
"Росэксимбанк",
"Роял Кредит Банк",
"Руна-Банк",
"Руснарбанк",
"Русский Банк Сбережений",
"Русский Региональный Банк",
"Русский Стандарт",
"Русфинанс Банк",
"Русьуниверсалбанк",
"РФИ Банк",
"Саммит Банк",
"Санкт-Петербургский Банк Инвестиций",
"Саратов",
"Саровбизнесбанк",
"Сбербанк России",
"Связь-Банк",
"СДМ-Банк",
"Севастопольский Морской Банк",
"Северный Морской Путь",
"Северный Народный Банк",
"Северстройбанк",
"Севзапинвестпромбанк",
"Сельмашбанк",
"Сервис Резерв",
"Сетелем Банк",
"СИАБ",
"Сибсоцбанк",
"Синко-Банк",
"Система",
"Сити Инвест Банк",
"Ситибанк",
"СКБ-Банк",
"Славия",
"Славянбанк",
"Славянский Кредит",
"Снежинский",
"Собинбанк",
"Совкомбанк",
"Современные Стандарты Бизнеса",
"Соколовский",
"Солид Банк",
"Солидарность",
"Социум-Банк",
"Союз",
"Спецстройбанк",
"Спиритбанк",
"Спутник",
"Ставропольпромстройбанк",
"Столичный Кредит",
"Стройлесбанк",
"Сумитомо Мицуи Рус Банк",
"Сургутнефтегазбанк",
"СЭБ Банк",
"Таврический Банк",
"Таганрогбанк",
"Тайдон",
"Тамбовкредитпромбанк",
"Татсоцбанк",
"Тексбанк",
"Тендер-Банк",
"Тимер Банк",
"Тинькофф Банк",
"Тойота Банк",
"Тольяттихимбанк",
"Томскпромстройбанк",
"Торжок",
"Транскапиталбанк",
"Трансстройбанк",
"Траст",
"Тэмбр-Банк",
"Углеметбанк",
"Унифондбанк",
"Уралпромбанк",
"Уралсиб",
"Уралфинанс",
"Уральский Банк Реконструкции и Развития",
"Уральский Финансовый Дом",
"УРИ Банк",
"Финанс Бизнес Банк",
"Финсервис",
"ФК Открытие",
"Фольксваген Банк Рус",
"Фора-Банк",
"Форбанк",
"Форштадт",
"Фридом Финанс",
"Хакасский Муниципальный Банк",
"Химик",
"ХКФ Банк",
"Хлынов",
"Центрально-Азиатский",
"Центр-Инвест",
"Центрокредит",
"ЦМРБанк",
"Чайна Констракшн Банк",
"Чайнасельхозбанк",
"Челиндбанк",
"Челябинвестбанк",
"Эйч-Эс-Би-Си Банк (РР)",
"Эко-Инвест",
"Экономбанк",
"Экси-Банк",
"Экспобанк",
"Экспресс-Волга",
"Элита",
"Эм-Ю-Эф-Джи Банк (Евразия)",
"Энергобанк",
"Энергомашбанк",
"Энерготрансбанк",
"Эс-Би-Ай Банк",
"Ю Би Эс Банк",
"Юг-Инвестбанк",
"ЮМК Банк",
"Юникредит Банк",
"Юнистрим",
"Яринтербанк",
)
def bic(self) -> str:
"""Generate a bank identification code (BIC).
BIC is a bank identification code that is used in Russia.
See https://ru.wikipedia.org/wiki/Банковский_идентификационный_код.
"""
region: str = self.random_element(self.region_codes)
department_code: str = self.numerify(self.random_element(self.department_code_formats))
credit_organization_code: str = self.numerify(self.random_element(self.credit_organization_code_formats))
return "04" + region + department_code + credit_organization_code
def correspondent_account(self) -> str:
"""Generate a correspondent account number.
Correspondent account is established to handle various financial
operations between financial institutions.
See https://ru.wikipedia.org/wiki/Корреспондентский_счёт.
"""
credit_organization_code = self.numerify(self.random_element(self.credit_organization_code_formats))
return "301" + self.numerify("#" * 14) + credit_organization_code
def checking_account(self) -> str:
"""Generate a checking account number.
Checking account is used in banks to handle financial operations of
clients.
See https://ru.wikipedia.org/wiki/Расчётный_счёт.
"""
account: str = self.random_element(self.checking_account_codes)
organization: str = self.random_element(self.organization_codes)
currency: str = self.random_element(self.currency_codes)
return account + organization + currency + self.numerify("#" * 12)

View File

@@ -0,0 +1,11 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``sk_SK`` locale.
https://www.mbank.cz/informace-k-produktum/info/ucty/cislo-uctu-iban.html
"""
bban_format = "####################"
country_code = "SK"

View File

@@ -0,0 +1,64 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``th_TH`` locale."""
bban_format = "#" * 10
country_code = "TH"
swift_bank_codes = (
"AIAC",
"ANZB",
"BKKB",
"BAAB",
"BOFA",
"AYUD",
"BKCH",
"BOTH",
"BNPA",
"UBOB",
"CITI",
"CRES",
"DEUT",
"EXTH",
"GSBA",
"BHOB",
"ICBK",
"TIBT",
"CHAS",
"KASI",
"KKPB",
"KRTH",
"LAHR",
"ICBC",
"MHCB",
"OCBC",
"DCBB",
"SICO",
"SMEB",
"SCBL",
"SMBC",
"THBK",
"HSBC",
"TMBK",
"UOVB",
)
swift_location_codes = (
"BK",
"B2",
"BB",
"BX",
"2X",
)
swift_branch_codes = (
"BKO",
"BNA",
"RYO",
"CHB",
"IBF",
"SEC",
"HDY",
"CHM",
"NAV",
"XXX",
)

View File

@@ -0,0 +1,10 @@
from ..en_PH import Provider as EnPhBankProvider
class Provider(EnPhBankProvider):
"""Implement bank provider for ``tl_PH`` locale.
There is no difference from the ``en_PH`` implementation.
"""
pass

View File

@@ -0,0 +1,8 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``tr_TR`` locale."""
bban_format = "######################"
country_code = "TR"

View File

@@ -0,0 +1,83 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``uk_UA`` locale.
Source for rules for bban format:
https://bank.gov.ua/en/iban
Banks list:
https://ubanks.com.ua/adr/
"""
bban_format = "#" * 27
country_code = "UA"
banks = (
"izibank",
"monobank",
"O.Bank",
"sportbank",
"А-Банк",
"Агропросперіс Банк",
"АкордБанк",
"Альтбанк",
"Асвіо Банк",
"Банк 3/4",
"Банк Авангард",
"Банк Альянс",
"Банк Власний Рахунок",
"Банк Восток",
"Банк інвестицій та заощаджень",
"Банк Кредит Дніпро",
"Банк Портал",
"Банк Український Капітал",
"Банк Фамільний",
"БТА Банк",
"Глобус",
"Грант",
"Дойче Банк ДБУ",
"Європейський Промисловий Банк",
"Ідея Банк",
"ІНГ Банк Україна",
"Індустріалбанк",
"Кліринговий Дім",
"Комінбанк",
"КомІнвестБанк",
"Кредит Європа Банк",
"Кредитвест Банк",
"Креді Агріколь",
"Кредобанк",
"Кристалбанк",
"Львів",
"МетаБанк",
"Міжнародний Інвестиційний Банк",
"Мотор-Банк",
"МТБ Банк",
"Національний банк України",
"Оксі Банк",
"ОТП Банк",
"Ощадбанк",
"Перший Інвестиційний Банк",
"Перший Український Міжнародний Банк",
"Південний",
"Піреус Банк",
"Полікомбанк",
"Полтава-Банк",
"Правекс Банк",
"ПриватБанк",
"ПроКредит Банк",
"Радабанк",
"Райффайзен Банк",
"РВС Банк",
"СЕБ Корпоративний Банк",
"Сенс Банк",
"Сітібанк",
"Скай Банк",
"ТАСкомбанк",
"Траст-капітал",
"Український банк реконструкції та розвитку",
"Укргазбанк",
"Укрексімбанк",
"УкрСиббанк",
"Універсал Банк",
"Юнекс Банк",
)

View File

@@ -0,0 +1,33 @@
from .. import Provider as BankProvider
class Provider(BankProvider):
"""Implement bank provider for ``zh_CN`` locale.
Source: https://zh.wikipedia.org/wiki/中国大陆银行列表
"""
banks = (
"中国人民银行",
"国家开发银行",
"中国进出口银行",
"中国农业发展银行",
"交通银行",
"中国银行",
"中国建设银行",
"中国农业银行",
"中国工商银行",
"中国邮政储蓄银行",
"中国光大银行",
"中国民生银行",
"招商银行",
"中信银行",
"华夏银行",
"上海浦东发展银行",
"平安银行",
"广发银行",
"兴业银行",
"浙商银行",
"渤海银行",
"恒丰银行",
"西安银行",
)