ó
    Eñi“  ã                   ó€   • S SK rS SKJs  Jr  S SKrS SKrS SKJ	r	  S SKJ
r
  S SKJrJr  SSKJr  SrSr " S	 S
\5      rg)é    N)Úceil)Úascii_uppercase)ÚDictÚOptionalé   )ÚBaseProviderTÚen_GBc                   ój  • \ rS rSr% Sr\R                   V VVVs0 s H  o[        [        U5      S-  5      _M     snnnn r	\
\\4   \S'   Sr\\S'   Sr\\S'   S	\4S
 jrS	\4S jrS	\4S jrS	\4S jrS	\4S jrSS\S	\4S jjrSS\S\S	\4S jjr   SS\\   S\S\S	\4S jjrSrgs  snnnn f )ÚProvideré   añ  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/
é7   ÚALPHAz????#############Úbban_formatÚGBÚcountry_codeÚreturnc                 ó0  • U R                  SSS9nU R                  S5      nUS U 3nU Vs/ s H  n[        U5      PM     nnSUS   US   -   US   -   -  S	US   US
   -   US	   -   -  -   US   -   US   -   n[        US-  5      S-  U-
  nU U 3$ s  snf )z'Generate an ABA routing transit number.é   é   )ÚminÚmaxz######Ú02é   r   é   é   é   r   é   é
   )Ú
random_intÚnumerifyÚintr   )ÚselfÚfed_numÚrandÚabaÚnÚdÚ	chk_digits          ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/faker/providers/bank/__init__.pyr%   ÚProvider.aba"   sË   € à—/‘/ a¨R�/Ð0ˆØ�}‰}˜XÓ&ˆØ˜�˜T˜FÐ#ˆñ !Ó!šS˜ŒS�ŽV™SˆÐ!Ø˜˜1™  !¡™ q¨¡tÑ+Ñ,¨q°A°a±D¸1¸Q¹4±KÀ!ÀAÁ$Ñ4FÑ/GÑGÈ!ÈAÉ$ÑNÐQRÐSTÑQUÑUˆ	Ü˜ R™Ó(¨2Ñ-°	Ñ9ˆ	à��y�kÐ"Ð"ùò	 "s   ­Bc                 ó   • U R                   $ )z=Generate the bank provider's ISO 3166-1 alpha-2 country code.)r   ©r"   s    r)   Úbank_countryÚProvider.bank_country/   s   € à× Ñ Ð ó    c                 ó    • [        U S5      (       d#  [        SU R                  R                   S35      eU R	                  U R
                  5      $ )zGenerate a bank name.ÚbankszThe z� provider does not have a 'banks' attribute. Consider contributing to the project and  adding a 'banks' tuple to enable bank name generation.)ÚhasattrÚAttributeErrorÚ	__class__Ú__name__Úrandom_elementr1   r,   s    r)   ÚbankÚProvider.bank3   sQ   € ä�t˜W×%Ñ%Ü Ø�t—~‘~×.Ñ.Ð/ð 0Jð Jóð ð
 ×"Ñ" 4§:¡:Ó.Ð.r/   c                 ór   ^ • [         R                  " SU 4S jT R                  5      nT R                  U5      $ )z,Generate a Basic Bank Account Number (BBAN).z\?c                 ó.   >• TR                  [        5      $ ©N)r6   r   )Úxr"   s    €r)   Ú<lambda>ÚProvider.bban.<locals>.<lambda>?   s   ø€  t×':Ñ':¼?Ô'Kr/   )ÚreÚsubr   r    )r"   Útemps   ` r)   ÚbbanÚProvider.bban=   s+   ø€ ä�vŠv�eÔKÈT×M]ÑM]Ó^ˆØ�}‰}˜TÓ"Ð"r/   c                 óø   ^ • T R                  5       nUT R                  -   S-   n[        SR                  U 4S jU 5       5      5      nSUS-  -
  n[	        U5      R                  S5      nT R                  U-   U-   $ )z5Generate an International Bank Account Number (IBAN).Ú00Ú c              3   óZ   >#   • U  H   nTR                   R                  X5      v •  M"     g 7fr;   )r   Úget)Ú.0Úcr"   s     €r)   Ú	<genexpr>Ú Provider.iban.<locals>.<genexpr>G   s!   øé € ÐAº5°a˜TŸZ™ZŸ^™^¨A×1Ð1º5ùs   ƒ(+éb   éa   r   )rB   r   r!   ÚjoinÚstrÚzfill)r"   rB   ÚcheckÚcheck_s   `   r)   ÚibanÚProvider.ibanB   st   ø€ à�y‰y‹{ˆà�t×(Ñ(Ñ(¨4Ñ/ˆÜ�R—W‘WÔA¹5ÓAÓAÓBˆØ�v ‘{Ñ#ˆÜ�F“×!Ñ! !Ó$ˆà× Ñ  5Ñ(¨4Ñ/Ð/r/   Úuse_datasetc                 ó"   • U R                  SUS9$ )a  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
é   )ÚlengthrV   ©Úswift)r"   rV   s     r)   Úswift8ÚProvider.swift8M   s   € ð �z‰z °ˆzÐ<Ð<r/   Úprimaryc                 ó"   • U R                  SXS9$ )a@  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
é   )rY   r^   rV   rZ   )r"   r^   rV   s      r)   Úswift11ÚProvider.swift11Y   s   € ð �z‰z ¨WˆzÐNÐNr/   NrY   c                 óæ  • Uc  U R                  S5      nUS;  a  [        S5      eU(       a-  [        U S5      (       a  U R                  U R                  5      nOU R	                  S[
        R                  S9nU(       a-  [        U S5      (       a  U R                  U R                  5      nO/U R	                  S[
        R                  [
        R                  -   S9nUS:X  a  X@R                  -   U-   $ U(       a  S	nOcU(       a-  [        U S
5      (       a  U R                  U R                  5      nO/U R	                  S[
        R                  [
        R                  -   S9nX@R                  -   U-   U-   $ )a£  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
)rX   r`   zlength can only be 8 or 11Úswift_bank_codesz????)ÚlettersÚswift_location_codesz??rX   ÚXXXÚswift_branch_codesz???)r6   ÚAssertionErrorr2   rd   ÚlexifyÚstringr   rf   Údigitsr   rh   )r"   rY   r^   rV   Ú	bank_codeÚlocation_codeÚbranch_codes          r)   r[   ÚProvider.swiftf   s6  € ðL ‰>Ø×(Ñ(¨Ó1ˆFØ˜Ó Ü Ð!=Ó>Ð>æœ7 4Ð);×<Ñ<Ø!×0Ñ0°×1FÑ1FÓG‰IàŸ™ F´F×4JÑ4J˜ÐKˆIæœ7 4Ð)?×@Ñ@Ø!%×!4Ñ!4°T×5NÑ5NÓ!O‰Mà ŸK™K¨´f×6LÑ6LÌvÏ}É}Ñ6\˜KÐ]ˆMà�Q‹;Ø×0Ñ0Ñ0°=Ñ@Ð@æØ‰KÞœW TÐ+?×@Ñ@Ø×-Ñ-¨d×.EÑ.EÓF‰KàŸ+™+ e´V×5KÑ5KÌfÏmÉmÑ5[˜+Ð\ˆKà×,Ñ,Ñ,¨}Ñ<¸{ÑJÐJr/   © )F)FF)NFF)r5   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rk   r   rP   Úordr   r   Ú__annotations__r   r   r%   r-   r7   rB   rT   Úboolr\   ra   r   r!   r[   Ú__static_attributes__)rI   rJ   rP   rv   s   0000r)   r   r      s  ‡ ñð ;A×:PÒ:PÖQÒ:P°Q¤¤C¨£F¨R¡KÓ 0Ò0Ñ:PÔQ€Eˆ4��S�‰>ÓQØ*€K�Ó*Ø€L�#Óð#�Sô #ð!˜cô !ð/�cô /ð#�cô #ð
	0�cô 	0ñ
= $ð 
=°3õ 
=ñO˜tð O¸$ð OÈ3õ Oð !%ØØ!ñ	?Kà˜‘ð?Kð ð?Kð ð	?Kð
 
÷?Kð ?KùõQ Rs   ›!B-
r   )ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr?   rk   Úmathr   r   Útypingr   r   rF   r   Ú	localizedÚdefault_localer   rq   r/   r)   Ú<module>r„      s5   ðß  „ ƒ	Û å Ý "ß !å à€	Ø€ôWKˆ|õ WKr/   