Ë
    Ã?Æiü8  ã                  óN  — d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	Z	ddl
­ dZerddlmZ ddlmZmZ  G d„ d	e«      ZndZ ej$                  d
ej&                  ej(                  z  ¬«      Z ej$                  d«      Zd>d„Z e ei dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'“d(d)“d*d+“d,d-“d.d/“d0d1i¥«      «      Zd?d2„Zd@dAd3„ZdBd4„ZdCd5„ZdDdEd6„ZdFd7„ZdFd8„Z dGd9„Z!i Z"	 	 	 	 	 	 	 	 dHd:„Z#	 	 	 	 	 	 	 	 dHd;„Z$	 	 	 	 	 	 	 	 dHd<„Z%	 	 dI	 	 	 	 	 	 	 dHd=„Z&y)JzÅCommon utility functions for other stdnum modules.

This module is meant for internal use by stdnum modules and is not
guaranteed to remain stable and as such not part of the public API of
stdnum.
é    )ÚannotationsN)Ú*F)Ú	Generator)ÚAnyÚProtocolc                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)ÚNumberValidationModulez1Minimal interface for a number validation module.c                 ó   — y)z1Convert the number to the minimal representation.N© ©ÚselfÚnumbers     úR/var/www/html/myprovider/mon_projet_qr/lib/python3.12/site-packages/stdnum/util.pyÚcompactzNumberValidationModule.compact1   ó   � ó    c                 ó   — y©z;Check if the number provided is a valid number of its type.Nr   r   s     r   ÚvalidatezNumberValidationModule.validate4   r   r   c                 ó   — yr   r   r   s     r   Úis_validzNumberValidationModule.is_valid7   r   r   N©r   ÚstrÚreturnr   ©r   r   r   Úbool)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r	   r	   .   s   „ Ù?ó	Dó	Nô	Nr   r	   z	^>>> .*\Z)Úflagsz^[0-9]+$c              #  óš   K  — | j                  «       D ]4  \  }}|j                  d«      D ]  }t        j                  |«      |f–— Œ Œ6 y­w)zpTransform a dictionary with comma separated uniode character names
    to tuples with unicode characters as key.ú,N)ÚitemsÚsplitÚunicodedataÚlookup)ÚmappingÚkeyÚvalueÚchars       r   Ú_mk_char_mapr,   H   sN   è ø€ ð —m‘m“oò 4‰
ˆˆUØ—I‘I˜c“Nò 	4ˆDÜ×%Ñ% dÓ+¨UÐ3Ó3ñ	4ñ4ùs   ‚A	AaÁ  HYPHEN-MINUS,ARMENIAN HYPHEN,HEBREW PUNCTUATION MAQAF,HYPHEN,NON-BREAKING HYPHEN,FIGURE DASH,EN DASH,EM DASH,HORIZONTAL BAR,SMALL HYPHEN-MINUS,FULLWIDTH HYPHEN-MINUS,MONGOLIAN NIRUGU,OVERLINE,HYPHEN BULLET,MACRON,MODIFIER LETTER MINUS SIGN,FULLWIDTH MACRON,OGHAM SPACE MARK,SUPERSCRIPT MINUS,SUBSCRIPT MINUS,MINUS SIGN,HORIZONTAL LINE EXTENSION,HORIZONTAL SCAN LINE-1,HORIZONTAL SCAN LINE-3,HORIZONTAL SCAN LINE-7,HORIZONTAL SCAN LINE-9,STRAIGHTNESSú-aÒ  ASTERISK,ARABIC FIVE POINTED STAR,SYRIAC HARKLEAN ASTERISCUS,FLOWER PUNCTUATION MARK,VAI FULL STOP,SMALL ASTERISK,FULLWIDTH ASTERISK,ASTERISK OPERATOR,STAR OPERATOR,HEAVY ASTERISK,LOW ASTERISK,OPEN CENTRE ASTERISK,EIGHT SPOKED ASTERISK,SIXTEEN POINTED ASTERISK,TEARDROP-SPOKED ASTERISK,OPEN CENTRE TEARDROP-SPOKED ASTERISK,HEAVY TEARDROP-SPOKED ASTERISK,EIGHT TEARDROP-SPOKED PROPELLER ASTERISK,HEAVY EIGHT TEARDROP-SPOKED PROPELLER ASTERISK,ARABIC FIVE POINTED STARr   zèCOMMA,ARABIC COMMA,SINGLE LOW-9 QUOTATION MARK,IDEOGRAPHIC COMMA,ARABIC DECIMAL SEPARATOR,ARABIC THOUSANDS SEPARATOR,PRIME,RAISED COMMA,PRESENTATION FORM FOR VERTICAL COMMA,SMALL COMMA,SMALL IDEOGRAPHIC COMMA,FULLWIDTH COMMA,CEDILLAr#   aH  FULL STOP,MIDDLE DOT,GREEK ANO TELEIA,ARABIC FULL STOP,IDEOGRAPHIC FULL STOP,SYRIAC SUPRALINEAR FULL STOP,SYRIAC SUBLINEAR FULL STOP,SAMARITAN PUNCTUATION NEQUDAA,TIBETAN MARK INTERSYLLABIC TSHEG,TIBETAN MARK DELIMITER TSHEG BSTAR,RUNIC SINGLE PUNCTUATION,BULLET,ONE DOT LEADER,HYPHENATION POINT,WORD SEPARATOR MIDDLE DOT,RAISED DOT,KATAKANA MIDDLE DOT,SMALL FULL STOP,FULLWIDTH FULL STOP,HALFWIDTH KATAKANA MIDDLE DOT,AEGEAN WORD SEPARATOR DOT,PHOENICIAN WORD SEPARATOR,KHAROSHTHI PUNCTUATION DOT,DOT ABOVE,ARABIC SYMBOL DOT ABOVE,ARABIC SYMBOL DOT BELOW,BULLET OPERATOR,DOT OPERATORú.z~SOLIDUS,SAMARITAN PUNCTUATION ARKAANU,FULLWIDTH SOLIDUS,DIVISION SLASH,MATHEMATICAL RISING DIAGONAL,BIG SOLIDUS,FRACTION SLASHú/z²COLON,ETHIOPIC WORDSPACE,RUNIC MULTIPLE PUNCTUATION,MONGOLIAN COLON,PRESENTATION FORM FOR VERTICAL COLON,FULLWIDTH COLON,PRESENTATION FORM FOR VERTICAL TWO DOT LEADER,SMALL COLONú:zãSPACE,NO-BREAK SPACE,EN QUAD,EM QUAD,EN SPACE,EM SPACE,THREE-PER-EM SPACE,FOUR-PER-EM SPACE,SIX-PER-EM SPACE,FIGURE SPACE,PUNCTUATION SPACE,THIN SPACE,HAIR SPACE,NARROW NO-BREAK SPACE,MEDIUM MATHEMATICAL SPACE,IDEOGRAPHIC SPACEú zÄFULLWIDTH DIGIT ZERO,MATHEMATICAL BOLD DIGIT ZERO,MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO,MATHEMATICAL SANS-SERIF DIGIT ZERO,MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO,MATHEMATICAL MONOSPACE DIGIT ZEROÚ0z¾FULLWIDTH DIGIT ONE,MATHEMATICAL BOLD DIGIT ONE,MATHEMATICAL DOUBLE-STRUCK DIGIT ONE,MATHEMATICAL SANS-SERIF DIGIT ONE,MATHEMATICAL SANS-SERIF BOLD DIGIT ONE,MATHEMATICAL MONOSPACE DIGIT ONEÚ1z¾FULLWIDTH DIGIT TWO,MATHEMATICAL BOLD DIGIT TWO,MATHEMATICAL DOUBLE-STRUCK DIGIT TWO,MATHEMATICAL SANS-SERIF DIGIT TWO,MATHEMATICAL SANS-SERIF BOLD DIGIT TWO,MATHEMATICAL MONOSPACE DIGIT TWOÚ2zÊFULLWIDTH DIGIT THREE,MATHEMATICAL BOLD DIGIT THREE,MATHEMATICAL DOUBLE-STRUCK DIGIT THREE,MATHEMATICAL SANS-SERIF DIGIT THREE,MATHEMATICAL SANS-SERIF BOLD DIGIT THREE,MATHEMATICAL MONOSPACE DIGIT THREEÚ3zÄFULLWIDTH DIGIT FOUR,MATHEMATICAL BOLD DIGIT FOUR,MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR,MATHEMATICAL SANS-SERIF DIGIT FOUR,MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR,MATHEMATICAL MONOSPACE DIGIT FOURÚ4zÄFULLWIDTH DIGIT FIVE,MATHEMATICAL BOLD DIGIT FIVE,MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE,MATHEMATICAL SANS-SERIF DIGIT FIVE,MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE,MATHEMATICAL MONOSPACE DIGIT FIVEÚ5z¾FULLWIDTH DIGIT SIX,MATHEMATICAL BOLD DIGIT SIX,MATHEMATICAL DOUBLE-STRUCK DIGIT SIX,MATHEMATICAL SANS-SERIF DIGIT SIX,MATHEMATICAL SANS-SERIF BOLD DIGIT SIX,MATHEMATICAL MONOSPACE DIGIT SIXÚ6zÊFULLWIDTH DIGIT SEVEN,MATHEMATICAL BOLD DIGIT SEVEN,MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN,MATHEMATICAL SANS-SERIF DIGIT SEVEN,MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN,MATHEMATICAL MONOSPACE DIGIT SEVENÚ7zÊFULLWIDTH DIGIT EIGHT,MATHEMATICAL BOLD DIGIT EIGHT,MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT,MATHEMATICAL SANS-SERIF DIGIT EIGHT,MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT,MATHEMATICAL MONOSPACE DIGIT EIGHTÚ8zÄFULLWIDTH DIGIT NINE,MATHEMATICAL BOLD DIGIT NINE,MATHEMATICAL DOUBLE-STRUCK DIGIT NINE,MATHEMATICAL SANS-SERIF DIGIT NINE,MATHEMATICAL SANS-SERIF BOLD DIGIT NINE,MATHEMATICAL MONOSPACE DIGIT NINEÚ9a¡  APOSTROPHE,GRAVE ACCENT,ACUTE ACCENT,MODIFIER LETTER RIGHT HALF RING,MODIFIER LETTER LEFT HALF RING,MODIFIER LETTER PRIME,MODIFIER LETTER TURNED COMMA,MODIFIER LETTER APOSTROPHE,MODIFIER LETTER VERTICAL LINE,COMBINING GRAVE ACCENT,COMBINING ACUTE ACCENT,COMBINING TURNED COMMA ABOVE,COMBINING COMMA ABOVE,ARMENIAN APOSTROPHE,SINGLE HIGH-REVERSED-9 QUOTATION MARK,LEFT SINGLE QUOTATION MARK,RIGHT SINGLE QUOTATION MARKú'c                ó2   — dj                  d„ | D «       «      S )z@Replace various Unicode characters with their ASCII counterpart.Ú c              3  óH   K  — | ]  }t         j                  ||«      –— Œ y ­w©N)Ú	_char_mapÚget©Ú.0Úxs     r   ú	<genexpr>z_clean_chars.<locals>.<genexpr>µ   s   è ø€ Ò7¨1”9—=‘=  A×&Ñ7ùs   ‚ ")Újoin©r   s    r   Ú_clean_charsrI   ³   s   € à�7‰7Ñ7°Ô7Ó7Ð7r   c                ó®   ‡— 	 dj                  d„ | D «       «      } t        | «      } dj                  ˆfd„| D «       «      S # t        $ r t        «       ‚w xY w)u¡   Remove the specified characters from the supplied number.

    >>> clean('123-456:78 9', ' -:')
    '123456789'
    >>> clean('1â€“2â€”3â€•4')
    '1-2-3-4'
    r>   c              3  ó    K  — | ]  }|–— Œ y ­wr@   r   rC   s     r   rF   zclean.<locals>.<genexpr>Á   s   è ø€ Ò+˜qœÑ+ùs   ‚c              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wr@   r   )rD   rE   Údeletecharss     €r   rF   zclean.<locals>.<genexpr>Å   s   øè ø€ Ò=˜¨°Ò(<”1Ñ=ùs   ƒ	�)rG   Ú	ExceptionÚInvalidFormatrI   )r   rM   s    `r   ÚcleanrP   ¸   sV   ø€ ðØ—‘Ñ+ FÔ+Ó+ˆô ˜&Ó!€FØ�7‰7Ó=˜fÔ=Ó=Ð=øô ò Ü‹oÐðús   ƒA  Á Ac                ó>   — t        t        j                  | «      «      S )z:Check whether the provided string only consists of digits.)r   Ú
_digits_reÚmatchrH   s    r   ÚisdigitsrT   È   s   € ô ”
× Ñ  Ó(Ó)Ð)r   c                óÂ   — t        j                  dt        d¬«       t        | t        «      s	 | j                  d«      S | S # t        $ r | j                  d«      cY S w xY w)z3DEPRECATED: Will be removed in an upcoming release.z3to_unicode() will be removed in an upcoming releaseé   ©Ú
stacklevelzutf-8ziso-8859-15)ÚwarningsÚwarnÚDeprecationWarningÚ
isinstancer   ÚdecodeÚUnicodeDecodeError)Útexts    r   Ú
to_unicoder`   Ï   s]   € ä‡M�MØ=Ü qõ*ô �dœCÔ ð	.Ø—;‘;˜wÓ'Ð'ð €Køô "ò 	.Ø—;‘;˜}Ó-Ò-ð	.ús   ®A ÁAÁAc              #  ó¾  K  — t        | «       t        j                  |    }t        j                  «       5  t        j
                  dt        d¬«       t        j                  |j                  |j                  dz   «      D ]E  \  }}}t        |«       t        j                  |   }t        |d«      sŒ2|j                  |k(  sŒB|–— ŒG 	 ddd«       y# 1 sw Y   yxY w­w)zCYield all the number validation modules under the specified module.Úignorez
stdnum\..*)ÚcategoryÚmoduler.   r   N)Ú
__import__ÚsysÚmodulesrY   Úcatch_warningsÚfilterwarningsr[   ÚpkgutilÚwalk_packagesÚ__path__r   Úhasattr)Úbaserd   Ú_loaderÚnameÚ_is_pkgs        r   Úget_number_modulesrr   Ü   s²   è ø€ äˆtÔÜ�[‰[˜Ñ€Fä	×	 Ñ	 Ó	"ñ Ü×Ñ Ô3EÈmÕ\Ü&-×&;Ñ&;Ø—‘ §¡°3Ñ!6ó'8ò 	Ñ"ˆG�T˜7ä�tÔÜ—[‘[ Ñ&ˆFÜ�v˜zÕ*¨v¯©À$Ó/FØ“ñ	÷÷ ñ üs)   ‚3CµA;CÂ1CÃCÃ	CÃCÃCc                óv   — t        j                  t        j                  | «      «      d   j                  d«      S )z+Return the short description of the number.r   r.   )ÚpydocÚsplitdocÚgetdocÚstrip)rd   s    r   Úget_module_namerx   ë   s*   € ä�>‰>œ%Ÿ,™, vÓ.Ó/°Ñ2×8Ñ8¸Ó=Ð=r   c                ó    — t        j                  t        j                  | «      «      d   }t        j	                  d|«      j                  «       S )z#Return a description of the number.é   r>   )rt   ru   rv   Ú_strip_doctest_reÚsubrw   )rd   Údocs     r   Úget_module_descriptionr~   ð   s:   € ä
�.‰.œŸ™ fÓ-Ó
.¨qÑ
1€Cä× Ñ   SÓ)×/Ñ/Ó1Ð1r   c                ó²   — | j                  «       } | dv r| dz  } 	 t        d| z  t        «       t        «       |g«      }t	        ||d«      S # t
        $ r Y yw xY w)z'Find the country-specific named module.)ÚinÚisÚifÚ_z	stdnum.%sN)Úlowerre   ÚglobalsÚlocalsÚgetattrÚImportError)Úccrp   Úmods      r   Úget_cc_moduler‹   ÷   s`   € à	�‰‹€Bà	ÐÑØ
ˆc‰	ˆðÜ˜ rÑ)¬7«9´f³hÀÀÓGˆÜ�s˜D $Ó'Ð'øÜò Ùðús   ›.A
 Á
	AÁAc                ó€   — ddl m} ddlm} ddlm}  |«       }||_         ||||¬«      } || |¬«      j                  S )Nr   )ÚSession)ÚCachingClient)Ú	Transport)Úoperation_timeoutÚtimeoutÚsession)Ú	transport)Úrequestsr�   ÚzeeprŽ   Úzeep.transportsr�   ÚverifyÚservice)Úwsdlurlr‘   r—   r�   rŽ   r�   r’   r“   s           r   Ú_get_zeep_soap_clientrš     s<   € õ
 !Ý"Ý)Ù‹i€GØ€G„NÙ¨G¸WÈgÔV€IÙ˜¨IÔ6×>Ñ>Ð>r   c                óÒ   ‡‡‡‡— dd l ŠddlmŠm} ddlm} ddlm}  G ˆˆˆˆfd„d|«      Št        j                  dt        d¬	«        ||  |«       | ‰«       ¬
«      j                  S )Nr   )ÚHTTPSHandlerÚ
getproxies)ÚClient)ÚHttpTransportc                  ó(   •‡ — e Zd Zˆˆˆ ˆˆfd„Zˆ xZS )ú2_get_suds_soap_client.<locals>.CustomSudsTransportc                ó  •— t         ‰| �  «       }t        ‰t        «      r{‰j                  j                  ‰«      s0t        j                  t        j                  j                  ‰¬«      }n}t        j                  t        j                  j                  ‰¬«      }nMt        j                  t        j                  j                  «      }‰du rd|_
        t        j                  |_        |j                   ‰|¬«      «       |S )N)Úcapath)ÚcafileF)Úcontext)ÚsuperÚ
u2handlersr\   r   ÚpathÚisdirÚsslÚcreate_default_contextÚPurposeÚSERVER_AUTHÚcheck_hostnameÚ	CERT_NONEÚverify_modeÚappend)r   ÚhandlersÚssl_contextÚCustomSudsTransportrœ   Ú	__class__Úosr—   s      €€€€€r   r§   z=_get_suds_soap_client.<locals>.CustomSudsTransport.u2handlers#  s²   ø€ ÜÐ0°$ÑBÓDˆHÜ˜&¤#Ô&Ø—w‘w—}‘} VÔ,Ü"%×"<Ñ"<¼S¿[¹[×=TÑ=TÐ]cÔ"d‘Kä"%×"<Ñ"<¼S¿[¹[×=TÑ=TÐ]cÔ"d‘Kä!×8Ñ8¼¿¹×9PÑ9PÓQ�Ø˜U‘?Ø16�KÔ.Ü.1¯m©m�KÔ+Ø�O‰O™L°Ô=Ô>ØˆOr   )r   r   r   r§   Ú__classcell__)rµ   r´   rœ   r¶   r—   s   @€€€€r   r´   r¡   !  s   ù„ ÷	ô 	r   r´   zDUse of Suds for SOAP requests is deprecated, please use Zeep insteadrz   rW   )Úproxyr‘   r“   )Úos.pathÚurllib.requestrœ   r�   Úsuds.clientrž   Úsuds.transport.httprŸ   rY   rZ   r[   r˜   )	r™   r‘   r—   r�   rž   rŸ   r´   rœ   r¶   s	     `   @@@r   Ú_get_suds_soap_clientr½     sW   û€ ó
 ß7å"Ý1÷ñ ˜mô ô  ‡M�MØNÜ qõ*ñ �'¡£°wÑJ]ÓJ_Ô`×hÑhÐhr   c                óÀ   — ddl m} ddlm} |du rt	        d«      ‚i }t        |t        «      r||d<   t        j                  dt        d¬	«        |d|  |«       |d
œ|¤ŽS )Nr   )r�   )Ú
SoapClientFz*PySimpleSOAP does not support verify=FalseÚcacertzLUse of PySimpleSOAP for SOAP requests is deprecated, please use Zeep insteadrz   rW   )Úwsdlr¸   r‘   r   )
rº   r�   Úpysimplesoap.clientr¿   Ú
ValueErrorr\   r   rY   rZ   r[   )r™   r‘   r—   r�   r¿   Úkwargss         r   Ú_get_pysimplesoap_soap_clientrÅ   7  se   € õ
 *å.Ø��ÜÐEÓFÐFØ€FÜ�&œ#ÔØ!ˆˆxÑÜ‡M�MØVÜ qõ*ñ ÐR˜7©*«,ÀÑRÈ6ÑRÐRr   c                óÀ   — | ||ft         vr9t        t        t        fD ]  }	  || ||«      } n t	        d«      ‚|t         | ||f<   t         | ||f   S # t        $ r Y Œ?w xY w)zýGet a SOAP client for performing requests. The client is cached. The
    timeout is in seconds. The verify parameter is either True (the default), False
    (to disabled certificate validation) or string value pointing to a CA certificate
    file.
    z$No SOAP library (such as zeep) found)Ú_soap_clientsrš   r½   rÅ   rˆ   )r™   r‘   r—   ÚfunctionÚclients        r   Úget_soap_clientrÊ   J  sˆ   € ð 	�˜&Ð!¬Ñ6Ü.Ô0EÔGdÐeò 	FˆHðÙ! '¨7°FÓ;�Ùð	Fô ÐDÓEÐEØ4:Œ�w ¨Ð0Ñ1Ü˜' 7¨FÐ3Ñ4Ð4øô ò Ùðús   ¡
AÁ	AÁA)r(   zdict[str, str]r   zGenerator[tuple[str, str]]r   )r>   )r   r   rM   r   r   r   r   )r_   zstr | bytesr   r   )Ústdnum)rn   r   r   z!Generator[NumberValidationModule])rd   Úobjectr   r   )r‰   r   rp   r   r   zNumberValidationModule | None)r™   r   r‘   Úfloatr—   z
bool | strr   r   )é   T)'r    Ú
__future__r   rj   rt   Úrerª   rf   r&   rY   Ústdnum.exceptionsÚTYPE_CHECKINGÚcollections.abcr   Útypingr   r   r	   ÚcompileÚDOTALLÚ	MULTILINEr{   rR   r,   ÚdictrA   rI   rP   rT   r`   rr   rx   r~   r‹   rÇ   rš   r½   rÅ   rÊ   r   r   r   ú<module>rÙ      sÏ  ðñ*õ #ã Û Û 	Û 
Û 
Û Û ä ð €ÙÝ)ß$ô
N õ 
Nð "Ðð �B—J‘J˜|°2·9±9¸r¿|¹|Ñ3KÔLÐ ð ˆR�Z‰Z˜Ó$€
ó4ñ ‘ð _ðAð 	ð_ðð 	ð#_ð$6ð 	ð-_ð.	;ð 	ðC_ðD>àðI_ðJ@ð 	ðQ_ðR2ð 	ð[_ð\Pð 	ðc_ðdNð 	ðk_ðlNð 	ðs_ðtRð 	ð{_ð|Pð 	ðC_ðDPð 	ðK_ðLNð 	ðS_ðTRð 	ð[_ð\Rð 	ðc_ðdPð 	ðk_ðl"ð 	ñ}_ó _ó _€	óD8ô
>ó *ó
ôó>ó
2ó
ð €ð?Øð?àð?ð ð?ð 	ó	?ðiØðiàðið ðið 	ó	iðBSØðSàðSð ðSð 	ó	Sð* Øð5Øð5àð5ð ð5ð 	ô	5r   