
    ef)                         S SK r S SKJr  S SKJrJrJr   " S S5      r\\\\\4   \\   4      r	 " S S5      r
 " S S	\
5      rg)
    N)filterfalse)ListTupleUnionc                        \ rS rSrS rS rSrg)_lazyclassproperty   c                 T    Xl         UR                  U l        UR                  U l        g )N)fn__doc____name__)selfr   s     3/usr/lib/python3/dist-packages/pyparsing/unicode.py__init___lazyclassproperty.__init__	   s    zz    c                 D  ^ Tc  [        U5      m[        TS5      (       a'  [        U4S jTR                  SS   5       5      (       a  0 Tl        U R
                  R                  nUTR                  ;  a  U R                  T5      TR                  U'   TR                  U   $ )N_internc              3   V   >#    U  H  nTR                   [        US / 5      L v   M      g7f)r   N)r   getattr).0
superclassclss     r   	<genexpr>-_lazyclassproperty.__get__.<locals>.<genexpr>   s*      .
-
 KK7:y"==-s   &)   )typehasattrany__mro__r   r   r   )r   objr   attrnames     ` r   __get___lazyclassproperty.__get__   s    ;s)CsI&&# .
!kk!"o.
 +
 +
 CK77##3;;&$(GGCLCKK!{{8$$r   )r   r   r   N)r   
__module____qualname____firstlineno__r   r#   __static_attributes__ r   r   r   r      s    $
%r   r   c                       \ rS rSr% Sr/ r\\S'   \S 5       r	\S 5       r
\S 5       r\S 5       r\S 5       r\S	 5       r\S
 5       r\S 5       rSrg)unicode_set   ad  
A set of Unicode characters, for language-specific strings for
``alphas``, ``nums``, ``alphanums``, and ``printables``.
A unicode_set is defined by a list of ranges in the Unicode character
set, in a class attribute ``_ranges``. Ranges can be specified using
2-tuples or a 1-tuple, such as::

    _ranges = [
        (0x0020, 0x007e),
        (0x00a0, 0x00ff),
        (0x0100,),
        ]

Ranges are left- and right-inclusive. A 1-tuple of (x,) is treated as (x, x).

A unicode set can also be defined using multiple inheritance of other unicode sets::

    class CJK(Chinese, Japanese, Korean):
        pass
_rangesc           	         / nU R                    HF  nU[        L a    O<[        USS5       H'  nUR                  [	        US   US   S-   5      5        M)     MH     [        [        U5      5       Vs/ s H  n[        U5      PM     sn$ s  snf )Nr-   r)   r   r   )r    r+   r   extendrangesortedsetchr)r   retccrrcs        r   _chars_for_rangesunicode_set._chars_for_ranges7   s{    ++B[ b)R0

5A2
34 1 
 !'s3x 01 01A 0111s   /Bc                 h    SR                  [        [        R                  U R                  5      5      $ )z+all non-whitespace characters in this range )joinr   strisspacer9   r   s    r   
printablesunicode_set.printablesA   s$     ww{3;;0E0EFGGr   c                 h    SR                  [        [        R                  U R                  5      5      $ )z'all alphabetic characters in this ranger<   )r=   filterr>   isalphar9   r@   s    r   alphasunicode_set.alphasF   $     wwvckk3+@+@ABBr   c                 h    SR                  [        [        R                  U R                  5      5      $ )z*all numeric digit characters in this ranger<   )r=   rD   r>   isdigitr9   r@   s    r   numsunicode_set.numsK   rH   r   c                 4    U R                   U R                  -   $ )z)all alphanumeric characters in this range)rF   rK   r@   s    r   	alphanumsunicode_set.alphanumsP   s     zzCHH$$r   c                     SR                  [        [        SR                  [        [        R
                  U R                  5      5      S-   S-   S-   5      5      5      $ )zVall characters in this range that are valid identifier characters, plus underscore '_'r<   u:   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºu|   ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ_)r=   r2   r3   rD   r>   isidentifierr9   r@   s    r   
identcharsunicode_set.identcharsU   sc     wwGGF3#3#3S5J5JKLRS UU 	
 		
r   c           	          [        S U R                   5       5      nSR                  [        U[        U R                  S-   5      -  5      5      $ )uz   
all characters in this range that are valid identifier body characters,
plus the digits 0-9, and · (Unicode MIDDLE DOT)
c              3   Z   #    U  H!  nS U-   R                  5       (       d  M  Uv   M#     g7f)rQ   N)rR   )r   r8   s     r   r   -unicode_set.identbodychars.<locals>.<genexpr>i   s%      
,!q0F0F0HAA,s   +	+r<   u   0123456789·)r3   r9   r=   r2   rS   )r   identifier_charss     r   identbodycharsunicode_set.identbodycharsc   sL      
,,
 
 wwv.S^^n5T1UUVWWr   c                 H    SSK Jn  U" U R                  U R                  5      $ )zp
a pyparsing Word expression for an identifier using this range's definitions for
identchars and identbodychars
r   )Word)	pyparsingr\   rS   rY   )r   r\   s     r   
identifierunicode_set.identifiern   s     	#CNNC$6$677r   r)   N)r   r%   r&   r'   r   r-   UnicodeRangeList__annotations__r   r9   rA   rF   rK   rN   rS   rY   r^   r(   r)   r   r   r+   r+      s    * !#G"2 2 H H C C C C % % 
 
 X X 8 8r   r+   c                      \ rS rSr% SrS\R                  4/r\\	S'    " S S\
5      r " S S\
5      r " S	 S
\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S\
5      r\r " S S\\\5      r " S S\
5      r " S S\
5      r " S S\
5      r " S S \
5      r\r\r\r\r\r\r\r \r!\r"\r#S!r$g")#pyparsing_unicodey   z>
A namespace class for defining common language unicode_sets.
    r-   c                   *    \ rS rSr% SrS/r\\S'   Srg)(pyparsing_unicode.BasicMultilingualPlane   z,Unicode set for the Basic Multilingual Plane)re   i  r-   r)   N	r   r%   r&   r'   r   r-   r`   ra   r(   r)   r   r   BasicMultilingualPlanerg      s    :%
! 	
r   rj   c                   ,    \ rS rSr% SrSS/r\\S'   Srg)pyparsing_unicode.Latin1   z/Unicode set for Latin-1 Unicode Character Range)re   ~   )      r-   r)   Nri   r)   r   r   Latin1rl      s    =%
! 	
r   rq   c                   *    \ rS rSr% SrS/r\\S'   Srg)pyparsing_unicode.LatinA   z/Unicode set for Latin-A Unicode Character Range)   i  r-   r)   Nri   r)   r   r   LatinArs          =%
! 	
r   rv   c                   *    \ rS rSr% SrS/r\\S'   Srg)pyparsing_unicode.LatinB   z/Unicode set for Latin-B Unicode Character Range)i  iO  r-   r)   Nri   r)   r   r   LatinBry      rw   r   r{   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)pyparsing_unicode.Greek   z.Unicode set for Greek Unicode Character Ranges)#)iB  iE  )ip  iw  )iz  i  )i  i  )i  )i  i  )i  i  )i  i  )i&  i*  )i^  )i`  )if  ij  )i   i  )i  i  )i   iE  )iH  iM  )iP  iW  )iY  )i[  )i]  )i_  i}  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i)!  )i'  i'  )ie  )i@ i )i )i  iE )i i r-   r)   Nri   r)   r   r   Greekr}      s    <$%
! $	
r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)pyparsing_unicode.Cyrillic   z0Unicode set for Cyrillic Unicode Character Range))i   i/  )i  i  )i+  )ix  )i-  i-  )i@  ir  )it  i  )i.  i/  r-   r)   Nri   r)   r   r   Cyrillicr      s    >	%
! 		
r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)pyparsing_unicode.Chinese   z/Unicode set for Chinese Unicode Character Range))i.  i.  )i.  i.  )i1  i1  )i 4  iM  ) N  i  )i   i  )i   im  )ip  i  )io io )i i )i i; )i@ iH )i   i֦ )i  i4 )i@ i )i  i )i i )i  i r-   r)   Nri   r)   r   r   Chineser      s    =%
! 	
r   r   c                       \ rS rSrSr " S S\5      r " S S\5      r " S S\5      r\r	\r
\r\R                  \R                  -   \R                  -   rS	rg
)pyparsing_unicode.Japanese   z`Unicode set for Japanese Unicode Character Range, combining Kanji, Hiragana, and Katakana rangesc                   ,    \ rS rSr% SrSS/r\\S'   Srg) pyparsing_unicode.Japanese.Kanji   z-Unicode set for Kanji Unicode Character Range)r   i  )i 0  i?0  r-   r)   Nri   r)   r   r   Kanjir      s    ;  )G% r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)#pyparsing_unicode.Japanese.Hiragana   z0Unicode set for Hiragana Unicode Character Range))iA0  i0  )0  0  )i0  )ip  )i )iP iR )i  r-   r)   Nri   r)   r   r   Hiraganar      s    B)G% r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)#pyparsing_unicode.Japanese.Katakanaru   z1Unicode set for Katakana  Unicode Character Range)	)r   i0  )r   i0  )i1  i1  )i2  i2  )ie  i  )i  )id ig )i i )i r-   r)   Nri   r)   r   r   Katakanar      s    C
)G% 
r   r   r)   N)r   r%   r&   r'   r   r+   r   r   r      漢字   カタカナ   ひらがなr-   r(   r)   r   r   Japaneser      sd    n	K 	
	{ 
		{ 	  MM 	r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)pyparsing_unicode.Hanguli  z7Unicode set for Hangul (Korean) Unicode Character Range))i   i  )i.0  i/0  )i11  i1  )i 2  i2  )i`2  i{2  )i~2  )i`  i|  )i   i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  )i  i  r-   r)   Nri   r)   r   r   Hangulr     s    E%
! 	
r   r   c                       \ rS rSrSrSrg)pyparsing_unicode.CJKi.  zTUnicode set for combined Chinese, Japanese, and Korean (CJK) Unicode Character Ranger)   N)r   r%   r&   r'   r   r(   r)   r   r   CJKr   .  s    br   r   c                   ,    \ rS rSr% SrSS/r\\S'   Srg)pyparsing_unicode.Thaii1  z,Unicode set for Thai Unicode Character Range)i  i:  )i?  i[  r-   r)   Nri   r)   r   r   Thair   1  s    :%
! 	
r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)pyparsing_unicode.Arabici8  z.Unicode set for Arabic Unicode Character Range))i   i  )i  i  )i   i  r-   r)   Nri   r)   r   r   Arabicr   8  s    <%
! 	
r   r   c                   ,    \ rS rSr% Sr/ SQr\\S'   Srg)pyparsing_unicode.Hebrewi@  z.Unicode set for Hebrew Unicode Character Range)	)i  i  )i  i  )i  i  )i  i6  )i8  i<  )i>  )i@  iA  )iC  iD  )iF  iO  r-   r)   Nri   r)   r   r   Hebrewr   @  s    <
%
! 
	
r   r   c                   ,    \ rS rSr% SrSS/r\\S'   Srg)pyparsing_unicode.DevanagariiN  z2Unicode set for Devanagari Unicode Character Range)i 	  i	  )i  i  r-   r)   Nri   r)   r   r   
Devanagarir   N  s    @%
! 	
r   r   r)   N)%r   r%   r&   r'   r   sys
maxunicoder-   r`   ra   r+   rj   rq   rv   r{   r   r   r   r   r   Koreanr   r   r   r   r   BMP   العربية   中文   кириллица   Ελληνικά   עִברִית	   日本語	   한국어	   ไทย   देवनागरीr(   r)   r   r   rc   rc   y   s    
 !G 
 

 

 

 
&
 &
P
; 

+ 
.,
; ,
\
 
( Fcgx c
{ 

 

 

[ 
 !C NF!NIII)r   rc   )r   	itertoolsr   typingr   r   r   r   intr`   r+   rc   r)   r   r   <module>r      s[     ! % %% %( eCHouSz9:; W8 W8tg* g*r   