& d)ddlZddlmZddlmZmZmZGddZeeeeefeefZ GddZ Gdd e Z y) N) filterfalse)ListTupleUnionceZdZdZdZy)_lazyclasspropertycV||_|j|_|j|_y)N)fn__doc____name__)selfr s 3/usr/lib/python3/dist-packages/pyparsing/unicode.py__init__z_lazyclassproperty.__init__ szz   c( t|tdr!tfdjddDri_|j j }|jvr|j j|<j|S)N_internc3PK|]}jt|dguyw)rN)rgetattr).0 superclassclss r z-_lazyclassproperty.__get__..s+.  KK7:y"= =. s#&)typehasattrany__mro__rr r )r objrattrnames ` r__get__z_lazyclassproperty.__get__s ;s)CsI&#. !kk!"o. + CK77## 3;; &$(GGCLCKK !{{8$$rN)r __module__ __qualname__rr rrrrs $ %rrceZdZUdZgZeed<edZedZ edZ edZ edZ edZ ed Zed Zy ) unicode_seta 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 g}|jD]B}|turn8t|ddD]&}|jt |d|ddz(Dt t |Dcgc] }t|c}Scc}w)Nr&r#rr)rr%rextendrangesortedsetchr)rretccrrcs r_chars_for_rangeszunicode_set._chars_for_ranges7s++ 5B[ b)R0 5 5A2 34 5 5 !'s3x 011A111s*A?chdjttj|jS)z+all non-whitespace characters in this range)joinrstrisspacer2rs r printableszunicode_set.printablesAs$ww{3;;0E0EFGGrchdjttj|jS)z'all alphabetic characters in this ranger4)r5filterr6isalphar2r8s ralphaszunicode_set.alphasF$wwvckk3+@+@ABBrchdjttj|jS)z*all numeric digit characters in this ranger4)r5r;r6isdigitr2r8s rnumszunicode_set.numsKr>rc4|j|jzS)z)all alphanumeric characters in this range)r=rAr8s r alphanumszunicode_set.alphanumsPszzCHH$$rc djttdjttj |j dzdzdzS)zVall characters in this range that are valid identifier characters, plus underscore '_'r4u:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzªµºu|ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ_)r5r+r,r;r6 isidentifierr2r8s r identcharszunicode_set.identcharsUscww GGF3#3#3S5J5JKLRSUU   rcdjtt|jdzdj|jDcgc]}d|zj s|c}zScc}w)u all characters in this range that are valid identifier body characters, plus the digits 0-9, and · (Unicode MIDDLE DOT) r4u 0123456789·rE)r5r+r,rGr2rF)rr1s ridentbodycharszunicode_set.identbodycharscsn ww NN$%gg$'$9$9VqcAg=S=S=UV   Ws A/A/cHddlm}||j|jS)z a pyparsing Word expression for an identifier using this range's definitions for identchars and identbodychars r)Word) pyparsingrKrGrI)rrKs r identifierzunicode_set.identifierus #CNNC$6$677rN)r r!r"r r&UnicodeRangeList__annotations__rr2r9r=rArCrGrIrMr#rrr%r%s*!#G "22HHCCCC%%      "88rr%ceZdZUdZdej fgZeed<Gdde Z Gdde Z Gdd e Z Gd d e Z Gd d e ZGdde ZGdde ZGdde ZGdde ZeZGddeeeZGdde ZGdde ZGdde ZGdde Ze ZeZeZeZeZeZeZeZ eZ!eZ"y )!pyparsing_unicodezF A namespace class for defining common language unicode_sets. r&c"eZdZUdZdgZeed<y)(pyparsing_unicode.BasicMultilingualPlanez,Unicode set for the Basic Multilingual Plane)rRir&Nr r!r"r r&rNrOr#rrBasicMultilingualPlanerTs: % ! rrVc$eZdZUdZddgZeed<y)pyparsing_unicode.Latin1z/Unicode set for Latin-1 Unicode Character Range)rR~)r&NrUr#rrLatin1rXs=  % ! rr\c"eZdZUdZdgZeed<y)pyparsing_unicode.LatinAz/Unicode set for Latin-A Unicode Character Range)ir&NrUr#rrLatinAr^= % ! rr`c"eZdZUdZdgZeed<y)pyparsing_unicode.LatinBz/Unicode set for Latin-B Unicode Character Range)iiOr&NrUr#rrLatinBrcrarrdc$eZdZUdZgdZeed<y)pyparsing_unicode.Greekz.Unicode set for Greek Unicode Character Ranges)#)iBiE)ipiw)izi)ii)i)ii)ii)ii)i&i*)i^)i`)ifij)ii)ii)i iE)iHiM)iPiW)iY)i[)i])i_i})ii)ii)ii)ii)ii)ii)ii)i)!)i'i')ie)i@i)i)iiE)iir&NrUr#rrGreekrfs<$% !$ rrgc$eZdZUdZgdZeed<y)pyparsing_unicode.Cyrillicz0Unicode set for Cyrillic Unicode Character Range))ii/)ii)i+)ix)i-i-)i@ir)iti)i.i/r&NrUr#rrCyrillicris> % ! rrjc$eZdZUdZgdZeed<y)pyparsing_unicode.Chinesez/Unicode set for Chinese Unicode Character Range))i.i.)i.i.)i1i1)i4iM)Ni)ii)iim)ipi)ioio)ii)ii;)i@iH)ii֦)ii4)i@i)i i)ii)iir&NrUr#rrChineserls=% ! rrnceZdZdZGddeZGddeZGddeZeZeZ eZ ejejzejzZ y) pyparsing_unicode.Japanesez`Unicode set for Japanese Unicode Character Range, combining Kanji, Hiragana, and Katakana rangesc$eZdZUdZddgZeed<y) pyparsing_unicode.Japanese.Kanjiz-Unicode set for Kanji Unicode Character Range)rmi)i0i?0r&NrUr#rrKanjirrs ;  )G% rrsc$eZdZUdZgdZeed<y)#pyparsing_unicode.Japanese.Hiraganaz0Unicode set for Hiragana Unicode Character Range))iA0i0)00)i0)ip)i)iPiR)ir&NrUr#rrHiraganarus B)G% rrxc$eZdZUdZgdZeed<y)#pyparsing_unicode.Japanese.Katakanaz1Unicode set for Katakana Unicode Character Range) )rvi0)rwi0)i1i1)i2i2)iei)i)idig)ii)ir&NrUr#rrKatakanarzs C )G% rr{N) r r!r"r r%rsrxr{漢字 カタカナ ひらがなr&r#rrJapaneserpsdn K  {  {    MM   rrc$eZdZUdZgdZeed<y)pyparsing_unicode.Hangulz7Unicode set for Hangul (Korean) Unicode Character Range))ii)i.0i/0)i11i1)i2i2)i`2i{2)i~2)i`i|)ii)ii)ii)ii)ii)ii)ii)iir&NrUr#rrHangulrsE% ! rrceZdZdZy)pyparsing_unicode.CJKzTUnicode set for combined Chinese, Japanese, and Korean (CJK) Unicode Character RangeN)r r!r"r r#rrCJKr5sbrrc$eZdZUdZddgZeed<y)pyparsing_unicode.Thaiz,Unicode set for Thai Unicode Character Range)ii:)i?i[r&NrUr#rrThair8s:  % ! rrc$eZdZUdZgdZeed<y)pyparsing_unicode.Arabicz.Unicode set for Arabic Unicode Character Range))ii)ii)iir&NrUr#rrArabicr?s<% ! rrc$eZdZUdZgdZeed<y)pyparsing_unicode.Hebrewz.Unicode set for Hebrew Unicode Character Range) )ii)ii)ii)ii6)i8i<)i>)i@iA)iCiD)iFiOr&NrUr#rrHebrewrGs< % ! rrc$eZdZUdZddgZeed<y)pyparsing_unicode.Devanagariz2Unicode set for Devanagari Unicode Character Range)i i )iir&NrUr#rr DevanagarirUs@  % ! rrN)#r r!r"r sys maxunicoder&rNrOr%rVr\r`rdrgrjrnrrKoreanrrrrrBMPالعربية中文кириллицаΕλληνικάעִברִית 日本語 한국어 ไทยदेवनागरीr#rrrQrQs  !G         & & P  ;   + ., ;, \  (Fcgxc {        [  !CN F!NIII)rrQ) r itertoolsrtypingrrrrintrNr%rQr#rrrs[ !%%%%(eCHouSz9:;^8^8Bg* g*r