o a@s2dZddlZddlZddlmZmZmZmZmZm Z m Z m Z m Z m Z ddlmZmZddlmZmZmZmZmZmZmZmZmZmZmZddlmZgdZ e!dZ"Gd d d eZ#e#Z$Gd d d eZ%Gd ddeZ&GdddeZ'e'Z(GdddeZ)GdddeZ*GdddeZ+Gddde#Z,dS)z pygments.lexers.python ~~~~~~~~~~~~~~~~~~~~~~ Lexers for Python and related languages. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N) Lexer RegexLexerincludebygroupsusingdefaultwordscombined do_insertionsthis) get_bool_optshebang_matches) TextCommentOperatorKeywordNameStringNumber PunctuationGenericOtherError) unistring) PythonLexerPythonConsoleLexerPythonTracebackLexer Python2LexerPython2TracebackLexer CythonLexerDgLexer NumPyLexerz.*? c@seZdZdZdZgdZgdZgdZej ej BZ de j e jfZddZd d Zid d efd eeejejfdeeejejfdejfdejfdefdefededdeeedfdeeedfdeejedfdeejedfedgddeejejedd fd!eejejedd"fd#eejejedd$fd%eejejedd&fd'eejejed(d fd)eejejed(d"fd*eejejed(d$fd+eejejed(d&fd,eejejd-fd.eejejd/fd0eejejd1fd2eejejd3fd4eejejed5d-fd6eejejed5d/fd7eejejed5d1fd8eejejed5d3fd9efed:d;efded?ed@edAedBgdCdDe dEfdFej"dGfdHej"dGfdIefedgdEdDe dEfdJe dGfdIefedgd>e#dKdLdMefe#dNdLdMej$fgde#dOdLdMefe#dNdLdMej$fgddPdQ%e&j'dReeedSfgdSdTeee(e)efe*dGgd?e#dUdVdLdWe+j,fdXe+j,j-fe#dYdVdLdWe+j.fgd@e#dZdLdMe+j/j0fgdAe#d[dLdMe+j1j0fgd:d\e2j3fd]e2j3fd^e2j4fd_e2j5fd`e2j6fdae2j7fgdBdbee+j8fdbefee+fgded@ee+j/dGfe*dGgdee+j9dGfgddceeeefdde+jfee+jfdeeeeefe*dGgddfeeejdGfdde+jfdge+j,j-dGfee+jfe*dGgdhej:fdiej:fgeded5gdjej:fgeejeejeejeejdkejdGfdlej:fedmgdnejdGfdoej:fedpgdkejdGfdlej:fedqgdnejdGfdoej:fedrgdsejdGfedmd ejfgdtejdGfedpd ejfgdsejdGfedqd ejfgdtejdGfedrd ejfgduZ;dvdwZ`_ source code (version 3.x). .. versionadded:: 0.10 .. versionchanged:: 2.5 This is now the default ``PythonLexer``. It is still available as the alias ``Python3Lexer``. Python)pythonpysagepython3py3) z*.pyz*.pywz*.jyz*.sagez*.sc SConstruct SConscriptz*.bzlBUCKBUILDz BUILD.bazel WORKSPACEz*.tac)z text/x-pythonzapplication/x-pythonztext/x-python3zapplication/x-python3z [%s][%s]*cCs&dtjfdtjfd|fd|fd|fgS)NzH%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsaux%]zg\{((\w+)((\.\w+)|(\[[^\]]+\]))*)?(\![sra])?(\:(.?[<>=\^])?[-+ ]?#?0?(\d+)?,?(\.\d+)?[E-GXb-gnosx%]?)?\}z [^\\\'"%{\n]+[\'"\\]z %|(\{{1,2})rInterpolttyper28/usr/lib/python3/dist-packages/pygments/lexers/python.pyinnerstring_rulesDszPythonLexer.innerstring_rulescCs"dtjfdtjdfd|fd|fgS)Nz\}z\{expr-inside-fstringz [^\\\'"{}\n]+r-r.r0r2r2r3 fstring_rulesXs  zPythonLexer.fstring_rulesroot\n&^(\s*)([rRuUbB]{,2})("""(?:.|\n)*?""")&^(\s*)([rRuUbB]{,2})('''(?:.|\n)*?''')\A#!.+$#.*$\\\n\\keywordsz soft-keywords(def)((?:\s|\\\s)+)funcname(class)((?:\s|\\\s)+) classname(from)((?:\s|\\\s)+) fromimport(import)((?:\s|\\\s)+)importexprz(?i)(rf|fr)(""")rfstringescapetdqfz(?i)(rf|fr)(''')tsqfz(?i)(rf|fr)(")dqfz(?i)(rf|fr)(')sqfz ([fF])(""") fstringescapez ([fF])(''')z ([fF])(")z ([fF])(')z(?i)(rb|br|r)(""")tdqsz(?i)(rb|br|r)(''')tsqsz(?i)(rb|br|r)(")dqsz(?i)(rb|br|r)(')sqs([uUbB]?)(""") stringescape([uUbB]?)(''') ([uUbB]?)(") ([uUbB]?)(')[^\S\n]+numbersz!=|==|<<|>>|:=|[-~+/*%=<>&^|.] []{}:(),;[](in|is|and|or|not)\bz expr-keywordsbuiltins magicfuncs magicvarsnamer5z[{([]zexpr-inside-fstring-innerz(=\s*)?(\![sraf])?\}#popz(=\s*)?(\![sraf])?:\s+z[])}])z async forawaitelseforiflambdayield yield from\bsuffix)TrueFalseNone)assertasyncrbbreakcontinuedelelifrcexceptfinallyrdglobalrerfpassraisenonlocalreturntrywhilergrhaswithz6(^[ \t]*)(match|case)\b(?![ \t]*(?:[:,;=^&|@~)\]}]|(?:|z)\b))zsoft-keywords-innerz(\s+)([^\n_]*)(_\b))A __import__absallanybinbool bytearray breakpointbyteschr classmethodcompilecomplexdelattrdictdirdivmod enumerateevalfilterfloatformat frozensetgetattrglobalshasattrhashhexidinputint isinstance issubclassiterlenlistlocalsmapmax memoryviewminnextobjectoctopenordpowprintpropertyrangereprreversedroundsetsetattrslicesorted staticmethodstrsumsupertupletypevarszip(?GP U Z ]d n         (rc"@seZdZdZdZddgZgZddgZddZid d e fd e e e j e j fd e e e j e j fd e fdejfdejfdefde fde fdejfdefedde ee dfde ee dfde eje dfde eje dfededed ed!d"e e j e jd#fd$e e j e jd%fd&e e j e jd'fd(e e j e jd)fd*e e j e jed+d#fd,e e j e jed+d%fd-e e j e jed+d'fd.e e j e jed+d)fed/ed0gded1d2d3efgded4d5d2d6ejfd7ejjfed8d5d2d6ejfgded9d2d3ejjfgd ed:d2d3ej jfgd0d;e!j"fde!j$fd?e!j%fd@e!j&j'fdAe!j&fgd!dBe j(fgd/dCej)fdDefgdeddDejdEfe*dEgddDej+dEfgddFe fdGejfdHefdIejfe*dEgddFe fdJejdEfdKejjdEfdLejfe*dEgd+dMe j,fgdNee jdOee jd'dPe jdEfdQe j,fedOgd)dRe jdEfdSe j,fedNgdTe jdEfedOd e jfgdUe jdEfedNd e jfgdVZ-dWdXZ.dYS)Zra  For `Python 2.x `_ source code. .. versionchanged:: 2.5 This class has been renamed from ``PythonLexer``. ``PythonLexer`` now refers to the Python 3 variant. File name patterns like ``*.py`` have been moved to Python 3 as well. z Python 2.xpython2py2ztext/x-python2zapplication/x-python2cCsdtjfd|fd|fd|fgS)NG%(\(\w+\))?[-#0 +]*([0-9]+|[*])?(\.([0-9]+|[*]))?[hlL]?[E-GXc-giorsux%] [^\\\'"%\n]+r-%r.r0r2r2r3r4szPython2Lexer.innerstring_rulesr7r8r9r:rXr;r<rZr=r>r[z!=|==|<<|>>|[-~+/*%=<>&^|.]r?r@rArBrCrDrErFrGr\r]r^backtickz!([rR]|[uUbB][rR]|[rR][uUbB])(""")rOz!([rR]|[uUbB][rR]|[rR][uUbB])(''')rPz([rR]|[uUbB][rR]|[rR][uUbB])(")rQz([rR]|[uUbB][rR]|[rR][uUbB])(')rRrSrTrUrVrWr_rY)rorqrrrsrtrcruexecrvrdrwrerfrxrryr{r|r}rgrhr~rrirj)Nrrrrapply basestringrrbufferrrcallablerrcmpcoercerrrrrrrrexecfileexitfilerrrrrrrrrrrinternrrrrrrlongrrrrrrrrrrr raw_inputreducereloadrrrrrrrrrrrrrunichrunicoderxrangerrrz;(?rc@s0eZdZdZdZdgZdgZddZddZd S) ra For Python console output or doctests, such as: .. sourcecode:: pycon >>> a = 'foo' >>> print a foo >>> 1 / 0 Traceback (most recent call last): File "", line 1, in ZeroDivisionError: integer division or modulo by zero Additional options: `python3` Use Python 3 lexer for code. Default is ``True``. .. versionadded:: 1.0 .. versionchanged:: 2.5 Now defaults to ``True``. zPython console sessionpyconztext/x-python-doctestcKs$t|dd|_tj|fi|dS)Nr&T)r r&rr1)selfoptionsr2r2r3r1szPythonConsoleLexer.__init__c cs|jrtd i|j}td i|j}ntd i|j}td i|j}d}g}d}d}d}t|D]} | } | dsD| drad}| t |dt j | ddfgf|| dd7}q4| dkr|s| t |dt j dfgf|| dd7}q4|rt|||EdHd}g}| dstd | rd }| }| }q4| d kr| tj| fVq4|r|| 7}| d s| dksd}||D] \} } } || | | fVqd}q4| t j| fVq4|rt|||EdH|r ||D]\} } } || | | fVqdSdS)Nrz>>> z... z...z"Traceback (most recent call last):z File "[^"]+", line \d+\n$zKeyboardInterrupt  r2)r&rrrrrline_refinditergroup startswithappendrrPromptrstripr get_tokens_unprocessedrmatchstartrrstripOutput)rrpylexertblexercurcode insertionscurtbtbindextbrlineitvr2r2r3rsp         z)PythonConsoleLexer.get_tokens_unprocessedN) rursrwrnr_rrr1rr2r2r2r3rqs rc @seZdZdZdZddgZddgZddgZd efd e j d fd e j fd e j fde j d fde fgde ee jeeee efde ee jeeefde eeeedfde eeefde e jee edfde e jedfgde eejedfedgdZdS)ra For Python 3.x tracebacks, with support for chained exceptions. .. versionadded:: 1.0 .. versionchanged:: 2.5 This is now the default ``PythonTracebackLexer``. It is still available as the alias ``Python3TracebackLexer``. zPython Tracebackpytbpy3tbz*.pytbz*.py3tbztext/x-python-tracebackztext/x-python3-tracebackr8z'^Traceback \(most recent call last\):\nintbzH^During handling of the above exception, another exception occurred:\n\nzI^The above exception was the direct cause of the following exception:\n\n^(?= File "[^"]+", line \d+)^.*\n0^( File )("[^"]+")(, line )(\d+)(, in )(.+)(\n)%^( File )("[^"]+")(, line )(\d+)(\n)^( )(.+)(\n)markers^([ \t]*)(\.\.\.)(\n)^([^:]+)(: )(.+)(\n)r`z^([a-zA-Z_][\w.]*)(:?\n)z^( {4,})([~^]+)(\n))r7r rN)rursrwrnr_rrrrr TracebackrrrrrrrrrrMarkerrrr2r2r2r3rsV        rc @seZdZdZdZdgZdgZdgZdee e j dfde j dfd e fgd ee e je ee e e fd ee e je ee fd ee eee d fdee ee fdee je e e dfdee je dfgdee ejdfedgdZdS)rz For Python tracebacks. .. versionadded:: 0.7 .. versionchanged:: 2.5 This class has been renamed from ``PythonTracebackLexer``. ``PythonTracebackLexer`` now refers to the Python 3 variant. zPython 2.x Tracebackpy2tbz*.py2tbztext/x-python2-tracebackz^(\^C)?(Traceback.*\n)r r rrrrmarkerrrr`z^([a-zA-Z_]\w*)(:?\n)z ( {4,})(\^))r7r rN)rursrwrnr_rrrrrrrrrrrrrrrrrrrr2r2r2r3rsF       rc @seZdZdZdZgdZgdZddgZidgdefd e ee j fd e ee j fd efd e fd e fdefdefdejfde e eje fdefde eejeeeee fedde eedfde eedfde ee fde eedfde eedfde eedfed ed!d"e d#fd$e d%fd&e d'fd(e d)fd*e ed+d#fd,e ed+d%fd-e ed+d'fd.e ed+d)fed/ed0ded1d2d3efd4e jfgd ed5d6d2d7ejfd8ejjfed9d6d2d7ejfgd0d:ejfd;ejfdejfgd!d?e j fgd/d@ej!fdAefgddAej"dBfgddCej#fdDefdEe ej"edBfdFe ej"ee fdGedBfdHefdIe dBfdJedBfdAejfdKefg ddAej$dBfgddLe eeefdMej%fdNe eeefe&dBgddOe eedBfdPej%fe&dBgd+dQe j'fgdRdSe j(fdTe fdUe fdVe fgdWde fgd'dXe dBfdYe j'fedRgd)dZe dBfd[e j'fedRgd#d\e dBfedRedWgd%d]e dBfedRedWgiZ)d^S)_rz] For Pyrex and `Cython `_ source code. .. versionadded:: 1.1 Cython)cythonpyxpyrex)z*.pyxz*.pxdz*.pxiz text/x-cythonzapplication/x-cythonr7r8z^(\s*)("""(?:.|\n)*?""")z^(\s*)('''(?:.|\n)*?''')rXr<rZr=r>r[z(<)([a-zA-Z0-9.?]+)(>)z!=|==|<<|>>|[-~+/*%=<>&^|.?]z(from)(\d+)(<=)(\s+)(<)(\d+)(:)r?z(def|property)(\s+)rAz (cp?def)(\s+)cdefz (cdef)(:)z(class|struct)(\s+)rCz (from)(\s+)rEz(c?import)(\s+)rGr\rz(?:[rR]|[uU][rR]|[rR][uU])"""rOz(?:[rR]|[uU][rR]|[rR][uU])'''rPz(?:[rR]|[uU][rR]|[rR][uU])"rQz(?:[rR]|[uU][rR]|[rR][uU])'rRz[uU]?"""rTz[uU]?'''z[uU]?"z[uU]?'r_rY)rorprbrqbyrrctypedefrsrtrcruzexcept?rrvrdfusedgilrwrerrfnogilrxrryr{r|r}rgr~rrirjz(DEF|IF|ELIF|ELSE)\b)Qrrrrrrrbintrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr Py_ssize_trrrrrrrrrrrrrrrrrrrunsignedrrrrrz<(?`_, a functional and object-oriented programming language running on the CPython 3 VM. .. versionadded:: 1.6 dgz*.dgz text/x-dgraz#.*?$z (?i)0b[01]+z (?i)0o[0-7]+z(?i)0x[0-9a-f]+z((?i)[+-]?[0-9]+\.[0-9]+(e[+-]?[0-9]+)?j?z(?i)[+-]?[0-9]+e[+-]?\d+j?z(?i)[+-]?[0-9]+j?z(?i)(br|r?b?)'''rTrPstringz(?i)(br|r?b?)"""rOz(?i)(br|r?b?)'rRz(?i)(br|r?b?)"rQz`\w+'*`z\b(and|in|is|or|where)\bz[!$%&*+\-./:<-@\\^|~;,]+)rrrrrrzdict'rrrrzlist'rrrrrzset'rrrrrztuple'rrz (?![\'\w])r)=rrrrrbindrrrrrrrdrop dropwhilerrexhaustrflipzfoldl1?rfstrrrrheadrrinitrrrriteratelastrrrrrrrrrrrrrrrzscanl1?sndrrtailtake takewhilerrz>(?c_i0r_s_raddrrcoscovdotexpeyefftfixinfinvix_logmatrrmodnanptpputsinstdrsvdtantrivarwhoalenamaxaminbetabmatceilclipconjcopycoshdiagdiffdispdumpfabsfillflatfmodifftimaginfoitemkronlessloadlog2meanmodfndimonespinvpolyprodranfrankrealrintrollseedsignsincsinhsizesortsqrtr<tanhtesttiletriltriuvdotviewanglearrayrcrossdtypedumpsemptyequalexpm1finfofloorfrexphypotinnerisinfisnanldexploadslog10log1plstsqmgridmsortogridouterplacepowerravelrootsrot90rshapersolvesplittracetrapzwherezerosrarangearccosarcsinarctanargmaxargminaroundastypechoosecumsumdeletedividedsplitdstackfliplrflipudgeterrgumbelhsplithstackinsertinterpinvertisrealkaisermatrixmediannanmaxnanminnansumpoly1drrepeatresizeround_sampleselectseterrsourcesquaretofiletolistuniqueunwrapvandervsplitvstackalltruearccosharcsinharctan2arctanhargsortasarrayaveragecumprodediff1dextractfftfreqflattengenericgreaterhamminghanningindicesitemsetlexsortloadtxtmaximumminimumndindexnewaxisnonzeropkgloadpoissonpolyaddpolyderpolydivpolyfitpolyintpolymulpolysubpolyvalproductputmaskrandintrequirereshapesavetxtshufflesignbitsqueezeuniformunion1dweibullabsoluteallclosealterdotargwhereasfarrayasmatrixasscalarbartlettbincountbinomialblackmanbyteswapcan_castcompressconvolvecorrcoefdiagflatdiagonaldigitizefftshiftfromfilefromitergetfieldgradientidentityisfiniteisneginfisposinfisscalarissctypeiterablelinspacelogspacemeshgridmultiplynegativerecarrayrollaxissetfieldsetflagssetxor1dsometruesubtractswapaxestostringtypeDicttypenameunique1dvonmises array_str base_repr broadcast conjugate correlate deprecate getbuffer geterrobj histogram index_exp iscomplex isfortran isrealobj nanargmax nanargmin newbuffer not_equal ones_like piecewise remainder row_stack setdiff1d seterrobj tensordot transpose vectorize accumulate array_repr arrayrange asanyarray atleast_1d atleast_2d atleast_3d bitwise_or cumproduct empty_like fromarrays frombuffer frompyfunc fromstring getbufsize geterrcall issubdtype left_shift less_equal logical_or nan_to_num obj2sctype reciprocal restoredot setbufsize seterrcall trim_zeros zeros_like array_equal array_equiv array_split binary_repr bitwise_and bitwise_not bitwise_xor byte_bounds common_type concatenate expand_dims flatnonzero get_include histogram2d histogramdd intersect1d issubclass_ issubsctype logical_and logical_not logical_xor mintypecode ndenumerate permutation right_shift sctype2char setmember1d show_config true_divide array2string column_stack floor_divide fromfunction int_asbuffer iscomplexobj newbyteorder searchsorted sort_complex greater_equal random_sample real_if_close unravel_indexasfortranarrayget_array_wrapintersect1d_numaximum_sctypeapply_over_axesrandom_integersset_numeric_opsstandard_normalapply_along_axisget_printoptionsmay_share_memoryset_printoptionsasarray_chkfiniteascontiguousarrayget_numpy_includecompare_chararraysset_string_functionfastCopyAndTransposeget_numarray_includeccsLt||D]\}}}|tur||jvr|tj|fVq|||fVqdS)N)rrrEXTRA_KEYWORDSrr)rrindextokenvaluer2r2r3rs  z!NumPyLexer.get_tokens_unprocessedcCs.|dd}t|dsd|vod|vpd|vS)Nrrrz import numpyzfrom numpy importr)rltextr2r2r3rs  zNumPyLexer.analyse_textN) rursrwrnr_rrrrrrr2r2r2r3r!GsC r!)-rnrrpygments.lexerrrrrrrrr r r pygments.utilr r pygments.tokenrrrrrrrrrrrpygmentsrr__all__rrr Python3LexerrrrPython3TracebackLexerrrr r!r2r2r2r3s. 04  w^X504c