<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
ž
¬ÿfØ8  c               @   s|  d  Z  d d l m Z d d l m Z d d l m Z m Z d d l m	 Z
 d d l m Z d d	 „  Z d
 d „  Z d d „  Z d d „  Z dU d d „ Z d d „  Z d d „  Z d d „  Z e ƒ  e ƒ  d d „ Z dU dU d d „ Z d d „  Z d d „  Z dU d  d! „ Z d" d# „  Z dU d$ d% „ Z dU d& d' „ Z d( d) „  Z d* d+ „  Z d, d- „  Z  d. d/ „  Z! e" d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 g
 ƒ Z# d: d; „  Z$ d< a% d= a& d> a' dV a) d? d@ „  Z* dA dB „  Z+ dC dD „  Z, dE dF „  Z- dG dH „  Z. dI dJ „  Z/ dK dL „  Z0 dM dN „  Z1 e" e
 j2 e
 j3 g ƒ Z4 dU dO dP „ Z5 e" e
 j3 e
 j2 e
 j6 g ƒ Z7 dQ dR „  Z8 dU dS dT „ Z9 dU S(W   u1   Utility functions, node construction macros, etc.i    (   u   islicei   (   u   token(   u   Leafu   Node(   u   python_symbols(   u   patcompc             C   s%   t  t j |  t t j d ƒ | g ƒ S(   Nu   =(   u   Nodeu   symsu   argumentu   Leafu   tokenu   EQUAL(   u   keywordu   value(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu
   KeywordArg   s    	u
   KeywordArgc               C   s   t  t j d ƒ S(   Nu   ((   u   Leafu   tokenu   LPAR(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   LParen   s    u   LParenc               C   s   t  t j d ƒ S(   Nu   )(   u   Leafu   tokenu   RPAR(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   RParen   s    u   RParenc             C   sl   t  |  t ƒ s |  g }  n  t  | t ƒ s? d | _ | g } n  t t j |  t t j d d d ƒg | ƒ S(   u   Build an assignment statementu    u   =u   prefix(	   u
   isinstanceu   listu   prefixu   Nodeu   symsu   atomu   Leafu   tokenu   EQUAL(   u   targetu   source(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   Assign   s    		u   Assignc             C   s   t  t j |  d | ƒS(   u   Return a NAME leafu   prefix(   u   Leafu   tokenu   NAME(   u   nameu   prefix(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   Name&   s    u   Namec             C   s   |  t  t j t ƒ  | g ƒ g S(   u   A node tuple for obj.attr(   u   Nodeu   symsu   traileru   Dot(   u   obju   attr(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   Attr*   s    u   Attrc               C   s   t  t j d ƒ S(   u   A comma leafu   ,(   u   Leafu   tokenu   COMMA(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   Comma.   s    u   Commac               C   s   t  t j d ƒ S(   u   A period (.) leafu   .(   u   Leafu   tokenu   DOT(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   Dot2   s    u   Dotc             C   sM   t  t j | j ƒ  | j ƒ  g ƒ } |  rI | j d t  t j |  ƒ ƒ n  | S(   u-   A parenthesised argument list, used by Call()i   (   u   Nodeu   symsu   traileru   cloneu   insert_childu   arglist(   u   argsu   lparenu   rparenu   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   ArgList6   s    $u   ArgListc             C   s:   t  t j |  t | ƒ g ƒ } | d k	 r6 | | _ n  | S(   u   A function callN(   u   Nodeu   symsu   poweru   ArgListu   Noneu   prefix(   u	   func_nameu   argsu   prefixu   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   Call=   s    u   Callc               C   s   t  t j d ƒ S(   u   A newline literalu   
(   u   Leafu   tokenu   NEWLINE(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   NewlineD   s    u   Newlinec               C   s   t  t j d ƒ S(   u   A blank lineu    (   u   Leafu   tokenu   NEWLINE(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu	   BlankLineH   s    u	   BlankLinec             C   s   t  t j |  d | ƒS(   Nu   prefix(   u   Leafu   tokenu   NUMBER(   u   nu   prefix(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   NumberL   s    u   Numberc             C   s1   t  t j t t j d ƒ |  t t j d ƒ g ƒ S(   u   A numeric or string subscriptu   [u   ](   u   Nodeu   symsu   traileru   Leafu   tokenu   LBRACEu   RBRACE(   u
   index_node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu	   SubscriptO   s    u	   Subscriptc             C   s   t  t j |  d | ƒS(   u   A string leafu   prefix(   u   Leafu   tokenu   STRING(   u   stringu   prefix(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   StringU   s    u   Stringc       	      C   s  d |  _  d | _  d | _  t t j d ƒ } d | _  t t j d ƒ } d | _  | | | | g } | r¯ d | _  t t j d ƒ } d | _  | j t t j | | g ƒ ƒ n  t t j |  t t j	 | ƒ g ƒ } t t j
 t t j d ƒ | t t j d ƒ g ƒ S(   uu   A list comprehension of the form [xp for fp in it if test].

    If test is None, the "if test" part is omitted.
    u    u    u   foru   inu   ifu   [u   ](   u   prefixu   Leafu   tokenu   NAMEu   appendu   Nodeu   symsu   comp_ifu	   listmakeru   comp_foru   atomu   LBRACEu   RBRACE(	   u   xpu   fpu   itu   testu   for_leafu   in_leafu
   inner_argsu   if_leafu   inner(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   ListCompY   s$    							"$	u   ListCompc             C   s   x | D] } | j  ƒ  q Wt t j d ƒ t t j |  d d ƒt t j d d d ƒt t j | ƒ g } t t j | ƒ } | S(   uO    Return an import statement in the form:
        from package import name_leafsu   fromu   prefixu    u   import(   u   removeu   Leafu   tokenu   NAMEu   Nodeu   symsu   import_as_namesu   import_from(   u   package_nameu
   name_leafsu   leafu   childrenu   imp(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu
   FromImportq   s    u
   FromImportc          	   C   s¾   t  |  t ƒ r. |  j t ƒ  t ƒ  g k r. d St  |  t ƒ o½ t |  j ƒ d k o½ t  |  j d t ƒ o½ t  |  j d t ƒ o½ t  |  j d t ƒ o½ |  j d j d k o½ |  j d j d k S(   u(   Does the node represent a tuple literal?i   i    i   i   u   (u   )T(	   u
   isinstanceu   Nodeu   childrenu   LParenu   RParenu   Trueu   lenu   Leafu   value(   u   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   is_tuple‰   s    *u   is_tuplec             C   sz   t  |  t ƒ oy t |  j ƒ d k oy t  |  j d t ƒ oy t  |  j d t ƒ oy |  j d j d k oy |  j d j d k S(   u'   Does the node represent a list literal?i   i    u   [u   ]iÿÿÿÿiÿÿÿÿ(   u
   isinstanceu   Nodeu   lenu   childrenu   Leafu   value(   u   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   is_list•   s    u   is_listc             C   s   t  t j t ƒ  |  t ƒ  g ƒ S(   N(   u   Nodeu   symsu   atomu   LParenu   RParen(   u   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   parenthesize£   s    u   parenthesizeu   sortedu   listu   setu   anyu   allu   tupleu   sumu   minu   maxu	   enumeratec             c   s4   t  |  | ƒ } x | r/ | Vt  | | ƒ } q Wd S(   ul  Follow an attribute chain.

    If you have a chain of objects where a.foo -> b, b.foo-> c, etc,
    use this to iterate over all objects in the chain. Iteration is
    terminated by getattr(x, attr) is None.

    Args:
        obj: the starting object
        attr: the name of the chaining attribute

    Yields:
        Each successive object in the chain.
    N(   u   getattr(   u   obju   attru   next(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu
   attr_chainª   s    	u
   attr_chainue   for_stmt< 'for' any 'in' node=any ':' any* >
        | comp_for< 'for' any 'in' node=any any* >
     u³   
power<
    ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' |
      'any' | 'all' | 'enumerate' | (any* trailer< '.' 'join' >) )
    trailer< '(' node=any ')' >
    any*
>
u`   
power<
    ( 'sorted' | 'enumerate' )
    trailer< '(' arglist<node=any any*> ')' >
    any*
>
c             C   s¤   t  s< t j t ƒ a t j t ƒ a t j t ƒ a d a  n  t t t g } xR t | t |  d ƒ ƒ D]8 \ } } i  } | j	 | | ƒ rd | d |  k rd d Sqd Wd S(   u    Returns true if node is in an environment where all that is required
        of it is being iterable (ie, it doesn't matter if it returns a list
        or an iterator).
        See test_map_nochange in test_fixers.py for some examples and tests.
        u   parentu   nodeTF(   u
   pats_builtu   patcompu   compile_patternu   p0u   p1u   p2u   Trueu   zipu
   attr_chainu   matchu   False(   u   nodeu   patternsu   patternu   parentu   results(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   in_special_contextÐ   s    	%"u   in_special_contextc             C   sÙ   |  j  } | d k	 r+ | j t j k r+ d S|  j } | j t j t j	 f k rS d S| j t j
 k r| | j d |  k r| d S| j t j k sÑ | j t j k rÕ | d k	 r¾ | j t j k sÑ | j d |  k rÕ d Sd S(   uG   
    Check that something isn't an attribute or function name etc.
    i    NFT(   u   prev_siblingu   Noneu   typeu   tokenu   DOTu   Falseu   parentu   symsu   funcdefu   classdefu	   expr_stmtu   childrenu
   parametersu   typedargslistu   COMMAu   True(   u   nodeu   prevu   parent(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   is_probably_builtinã   s    		%u   is_probably_builtinc             C   sp   xi |  d k	 rk |  j t j k r_ t |  j ƒ d k r_ |  j d } | j t j k r_ | j Sn  |  j	 }  q Wd S(   u   Find the indentation of *node*.i   i   u    N(
   u   Noneu   typeu   symsu   suiteu   lenu   childrenu   tokenu   INDENTu   valueu   parent(   u   nodeu   indent(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   find_indentationú   s    '
u   find_indentationc             C   sW   |  j  t j k r |  S|  j ƒ  }  |  j d  } |  _ t t j |  g ƒ } | | _ | S(   N(   u   typeu   symsu   suiteu   cloneu   parentu   Noneu   Node(   u   nodeu   parentu   suite(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu
   make_suite  s    	u
   make_suitec             C   s;   x4 |  j  t j k r6 |  j }  |  s t d ƒ ‚ q q W|  S(   u   Find the top level namespace.u,   root found before file_input node was found.(   u   typeu   symsu
   file_inputu   parentu
   ValueError(   u   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu	   find_root  s
    	u	   find_rootc             C   s"   t  | t | ƒ |  ƒ } t | ƒ S(   uÞ    Returns true if name is imported from package at the
        top level of the tree which node belongs to.
        To cover the case of an import like 'import foo', use
        None for the package and 'foo' for the name. (   u   find_bindingu	   find_rootu   bool(   u   packageu   nameu   nodeu   binding(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   does_tree_import  s    u   does_tree_importc             C   s   |  j  t j t j f k S(   u0   Returns true if the node is an import statement.(   u   typeu   symsu   import_nameu   import_from(   u   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu	   is_import"  s    u	   is_importc             C   s¸  d d „  } t  | ƒ } t |  | | ƒ r. d Sd } } xt t | j ƒ D]c \ } } | | ƒ sf qH n  x7 t | j | d … ƒ D] \ } } | | ƒ s€ Pq€ q€ W| | } PqH W| d k r xb t | j ƒ D]N \ } } | j t j k rË | j rË | j d j t j k rË | d } PqË qË Wn  |  d k ret
 t j t t j d ƒ t t j | d d ƒg ƒ }	 n$ t |  t t j | d d ƒg ƒ }	 |	 t ƒ  g }
 | j | t
 t j |
 ƒ ƒ d S(	   u\    Works like `does_tree_import` but adds an import statement
        if it was not imported. c             S   s,   |  j  t j k o+ |  j o+ t |  j d ƒ S(   Ni    (   u   typeu   symsu   simple_stmtu   childrenu	   is_import(   u   node(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   is_import_stmt)  s    u$   touch_import.<locals>.is_import_stmtNi    i   u   importu   prefixu    (   u	   find_rootu   does_tree_importu	   enumerateu   childrenu   typeu   symsu   simple_stmtu   tokenu   STRINGu   Noneu   Nodeu   import_nameu   Leafu   NAMEu
   FromImportu   Newlineu   insert_child(   u   packageu   nameu   nodeu   is_import_stmtu   rootu
   insert_posu   offsetu   idxu   node2u   import_u   children(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   touch_import&  s4    
&

	!$u   touch_importc          	   C   sQ  xJ| j  D]?} d } | j t j k rs t |  | j  d ƒ rB | St |  t | j  d ƒ | ƒ } | r&| } q&n³| j t j t j	 f k r¿ t |  t | j  d	 ƒ | ƒ } | r&| } q&ng| j t j
 k r‚t |  t | j  d ƒ | ƒ } | rÿ | } q&x$t | j  d d … ƒ D]b \ } } | j t j k r| j d k rt |  t | j  | d ƒ | ƒ } | r{| } q{qqWn¤ | j t k r°| j  d j |  k r°| } nv t | |  | ƒ rË| } n[ | j t j k ròt |  | | ƒ } n4 | j t j k r&t |  | j  d ƒ r&| } q&n  | r
 | s6| St | ƒ rI| Sq
 q
 Wd S(
   uº    Returns the node which binds variable name, otherwise None.
        If optional argument package is supplied, only imports will
        be returned.
        See test cases for examples.i   i   i   Nu   :i   i    iÿÿÿÿiÿÿÿÿ(   u   childrenu   Noneu   typeu   symsu   for_stmtu   _findu   find_bindingu
   make_suiteu   if_stmtu
   while_stmtu   try_stmtu	   enumerateu   tokenu   COLONu   valueu	   _def_symsu   _is_import_bindingu   simple_stmtu	   expr_stmtu	   is_import(   u   nameu   nodeu   packageu   childu   retu   nu   iu   kid(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   find_bindingT  sH      	&!# %		u   find_bindingc             C   s|   | g } xl | rw | j  ƒ  } | j d k rO | j t k rO | j | j ƒ q | j t j k r | j |  k r | Sq Wd  S(   Ni   (	   u   popu   typeu   _block_symsu   extendu   childrenu   tokenu   NAMEu   valueu   None(   u   nameu   nodeu   nodes(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   _find  s    		!u   _findc             C   s'  |  j  t j k r| r|  j d } | j  t j k r£ xÔ | j D]Z } | j  t j k rw | j d j | k rœ |  SqB | j  t j k rB | j | k rB |  SqB Wq#| j  t j k rê | j d } | j  t j k r| j | k r|  Sq#| j  t j k r#| j | k r#|  Sn|  j  t j	 k r#| rMt
 |  j d ƒ j ƒ  | k rMd S|  j d } | rst d | ƒ rsd S| j  t j k r˜t | | ƒ r˜|  S| j  t j k rß| j d } | j  t j k r | j | k r |  Sq#| j  t j k r| j | k r|  S| r#| j  t j k r#|  Sn  d S(   u›    Will reuturn node if node will import name, or node
        will import * from package.  None is returned otherwise.
        See test cases for examples. i   i   i   u   asiÿÿÿÿN(   u   typeu   symsu   import_nameu   childrenu   dotted_as_namesu   dotted_as_nameu   valueu   tokenu   NAMEu   import_fromu   stru   stripu   Noneu   _findu   import_as_namesu   import_as_nameu   STAR(   u   nodeu   nameu   packageu   impu   childu   lastu   n(    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   _is_import_binding‰  s@    !!!%!!!u   _is_import_bindingNF(:   u   __doc__u	   itertoolsu   isliceu   pgen2u   tokenu   pytreeu   Leafu   Nodeu   pygramu   python_symbolsu   symsu    u   patcompu
   KeywordArgu   LParenu   RParenu   Assignu   Noneu   Nameu   Attru   Commau   Dotu   ArgListu   Callu   Newlineu	   BlankLineu   Numberu	   Subscriptu   Stringu   ListCompu
   FromImportu   is_tupleu   is_listu   parenthesizeu   setu   consuming_callsu
   attr_chainu   p0u   p1u   p2u   Falseu
   pats_builtu   in_special_contextu   is_probably_builtinu   find_indentationu
   make_suiteu	   find_rootu   does_tree_importu	   is_importu   touch_importu   classdefu   funcdefu	   _def_symsu   find_bindingu   traileru   _block_symsu   _findu   _is_import_binding(    (    (    u7   /opt/alt/python33/lib64/python3.3/lib2to3/fixer_util.pyu   <module>   sZ   		-*
