e fO@sddlZddlZddlmZed\ZZZZZ ej dej ej Bj Zej dej jZej dej ejBjZej dej jZej dej jZej d ej jZGd d d eZGd d d ZdS)N)Mappingz ^ [ \t]* (?: while | else | def | return | assert | break | class | continue | elif | try | except | raise | import | yield ) \b z' [ \t]* (?: \# \S .* )? \n aK \""" [^"\\]* (?: (?: \\. | "(?!"") ) [^"\\]* )* (?: \""" )? | " [^"\\\n]* (?: \\. [^"\\\n]* )* "? | ''' [^'\\]* (?: (?: \\. | '(?!'') ) [^'\\]* )* (?: ''' )? | ' [^'\\\n]* (?: \\. [^'\\\n]* )* '? zM [ \t]* [^\s#\\] # if we match, m.end()-1 is the interesting char z_ \s* (?: return | break | continue | raise | pass ) \b z [^[\](){}#'"\\]+ c@sUeZdZdZddZddZddZdd Zd d d Zd S) StringTranslatePseudoMappingaTUtility class to be used with str.translate() This Mapping class wraps a given dict. When a value for a key is requested via __getitem__() or get(), the key is looked up in the given dict. If found there, the value from the dict is returned. Otherwise, the default value given upon initialization is returned. This allows using str.translate() to make some replacements, and to replace all characters for which no replacement was specified with a given character instead of leaving them as-is. For example, to replace everything except whitespace with 'x': >>> whitespace_chars = ' \t\n\r' >>> preserve_dict = {ord(c): ord(c) for c in whitespace_chars} >>> mapping = StringTranslatePseudoMapping(preserve_dict, ord('x')) >>> text = "a + b\tc\nd" >>> text.translate(mapping) 'x x x\tx\nx' cCs4||_||_|j|dd}||_dS)NcSs |||S)N)key_getZ_defaultrr4/opt/alt/python34/lib64/python3.4/idlelib/PyParse.pyrysz3StringTranslatePseudoMapping.__init__.._get) _non_defaultsZ_default_valuegetr)selfZ non_defaults default_valuerrrr__init__us  z%StringTranslatePseudoMapping.__init__cCs |j|S)N)r)r itemrrr __getitem__}sz(StringTranslatePseudoMapping.__getitem__cCs t|jS)N)lenr )r rrr__len__sz$StringTranslatePseudoMapping.__len__cCs t|jS)N)iterr )r rrr__iter__sz%StringTranslatePseudoMapping.__iter__NcCs |j|S)N)r)r rdefaultrrrr sz StringTranslatePseudoMapping.get) __name__ __module__ __qualname____doc__r rrrr rrrrr`s     rc@sBeZdZddZddZdeddZdd ZiZej d d d Dej d d dDej dd dDe ede dZddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$ZdZd%d&ZdZd'd(ZdS))ParsercCs||_||_dS)N) indentwidthtabwidth)r rrrrrr s zParser.__init__cCs>t|dks(|ddks(t||_d|_dS)Nr )rAssertionErrorstr study_level)r srrrset_strs( zParser.set_strNc CsU|jd}}|sdSt|}xtdD]}|jdd|}|dkr^Pn|jdd|d}||||}|r||j r|j}Pn|}q3W|dkr||}|r||j r|j}n|S|d}xD|||}|rL|j\} }|| sM| }qMq Pq W|S)Nrz: rrr)r rrangerfindstartspan) r Zis_char_in_string_synchrer poslimitZtriesimr"rrrfind_good_parse_starts8        zParser.find_good_parse_startcCsR|dks)|j|ddks)t|dkrN|j|d|_ndS)Nrrr)r r)r lorrrset_los) z Parser.set_loccs'|]}t|tdfVqdS)(N)ord).0crrr szParser.z({[ccs'|]}t|tdfVqdS))N)r1)r2r3rrrr4sz)}]ccs'|]}t|t|fVqdS)N)r1)r2r3rrrr4sz"'\ #r xc Cs|jdkrdSd|_|j}|j|j}|jdd}|jdd}|jdd}|jdd}|jdd}t}d}}dg|_}|j}dt|}}x||kr||} |d}| dkrqn| dkr7|d}|dkr||qqn| d krS|d}qn| d krx|r|d}qqn| d ks| d kr| } ||d|d | dkr| d} n|} t| d} || }x||kr||} |d}| dkrqn||d|| | krF|| }Pn| dkr|d}| dkr|dkr||nPqqn| dkr||kst ||dkr|d}n|d}qqqW|d| krt }qt }qn| dkr5|j d|}|dkst qn| dksGt ||ksYt ||dkr|d}|d|krt }qn|d}qW|t kr|t kr|dkrt}n||_|tk|d|kkst |d|kr||ndS)NrZxxxxxxxxr6ZxxxxZxxz xrrr0r5"'\#rr)r!r translate_tranreplaceC_NONE goodlinesappendrrC_STRING_FIRST_LINEC_STRING_NEXT_LINESfind C_BACKSLASH C_BRACKET continuation) r r rHlevelZlnorAZ push_goodr+nchZquoteZfirstlnowrrr_study1s               "                      "zParser._study1cCs|j|jS)N)rMrH)r rrrget_continuation_typegs zParser.get_continuation_typecCs|jdkrdS|jd|_|j|j}}t|d}t|}x||r|sjt|}x@t||d||D]#}|jdd|dd}qWt||r|d}qXPqXW|dkr|dkst|}n|||_ |_ d}g}|j } |dfg} xu||krt |||} | r| j } | d}x*||kr||dkr|d}qrW||kr||}n| }||krPqn||} | dkr| || j |t|f| }|d}q5n| dkrh|r9|d =n| }|d}| j |t|fq5n| d ks| d kr| j |t|df| }t|||j }| j |t|fq5n| d krM| j |t|df|jd||d}|dks.t| j |t|fq5n| d ks_t|d}||ks{t||dkr| ||}n|d}q5W||_|r|d|_nt| |_dS)Nr9rrrz z([{z)]}r7r8r<r;rr)r!rMr rArrr$r%_junkre stmt_startstmt_endrB_chew_ordinaryreend_match_stringrerElastchlastopenbracketpostuplestmt_bracketing)r r rAr+pqZnothingrVstackZ push_stackZ bracketingr,ZnewprKrrr_study2|s     "!                   zParser._study2cCs|j|jtkst|j}|j}t|}|jdd|d}}|d}x||krt||}|r|j d}d}Pqg|j d|d}}qgW|}}x||dkr|d}qW|j }t|||j |j |S)Nrrrz )r]rHrGrrWr rr%_itemrerTrEr expandtabsr)r jr rJZorigir+r,Zextrarrrcompute_bracket_indents&       zParser.compute_bracket_indentcCs#|j|j}|d|dS)Nrr9r)rMrA)r rArrrget_num_lines_in_stmts  zParser.get_num_lines_in_stmtcCs|j|jtkst|j}|j}x||dkrQ|d}q4W|}|jd|d}d}}x ||kr||}|dkr|d}|d}q{|dkr|r|d}n|d}q{|dks|dkrt|||j}q{|d kr#Pq{|dkry|d kry|dks[||dd kry||dd kryd}Pq{|d}q{W|r|d}t j d |||dk}n|s|}x!||d kr|d}qWnt ||j|j |j dS)Nz rrrz([{z)]}r7r8r<=z=<>!z\s*\\z )r]rHrFrr rQrErUrTrematchrr_r)r r r+startposendposfoundrIrKrrrcompute_backslash_indentsJ              %zParser.compute_backslash_indentcCsg|j|j|j}}|}|j}x*||krX||dkrX|d}q/W|||S)Nz r)r]rQrRr )r r+rJr`r rrrget_base_indent_stringFs  zParser.get_base_indent_stringcCs|j|jdkS)N:)r]rV)r rrris_block_openerQs zParser.is_block_openercCs#|jt|j|jdk S)N)r]_closerer rQ)r rrris_block_closerWs zParser.is_block_closercCs|j|jS)N)r]rW)r rrrget_last_open_bracket_pos^s z Parser.get_last_open_bracket_poscCs|j|jS)N)r]rY)r rrrget_last_stmt_bracketinggs zParser.get_last_stmt_bracketing)rrrr r#r(r-r/r>updaterr1rMrNr]rarcrjrkrmrorWrprYrqrrrrrs.   3   m  5   r)resys collectionsrr$r@rFrCrDrGcompileVERBOSE MULTILINEsearchr(rfrPDOTALLrUr^rnrSrrrrrrs"   *