
    yIf`0                       d dl mZ 	 d dlZd dlZdZn# e$ r	 d dlZdZY nw xY wd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlmZ d dlmZmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZm Z  d d	l!m"Z"m#Z#m$Z$ d d
l%m&Z& d dl'm(Z( erd dl)m*Z* dZ+ed         Z,ed         Z-ed         Z.ed         Z/ed         Z0ed         Z1e e,e-e.e/e0e1f         Z2 ede3e4ee5         ee5         eee5                  ee4df                   Z6e+dfdYdZ7g dZ8dZd"Z9d[d%Z:d\d)Z;d]d,Z<	 d^d_d2Z=	 d`dad:Z>dbd=Z?dcdBZ@dddedGZAdfdHZBdgdLZCdhdNZDdfdOZEdidSZF	 d^djdUZGdkdVZH G dW dX          ZIdS )l    )annotationsNTF)deque)IterableSequence)BufferedReaderBytesIO)	TYPE_CHECKINGAnyListLiteralPatternTextIOTupleTypeVarUnion)Modulemodutilsnodes)PY_EXTS)
OptionDict)PyLinterO   )zsuggestion-modezanalyse-fallback-blockszallow-global-unused-variables)zmax-line-lengthzdocstring-min-lengthzignored-modules)zno-docstring-rgxzdummy-variables-rgxzignored-argument-nameszmixin-class-rgx)zexclude-too-few-public-methodszignore-paths
py-versionT_GlobalOptionReturnTypes. textstrline_lenintindentreturnc                X    d                     t          j        | |||                    S )z'Wrap the text on the given line length.
)widthinitial_indentsubsequent_indent)jointextwrapwrap)r   r   r    s      F/var/www/piapp/venv/lib/python3.11/site-packages/pylint/utils/utils.pynormalize_textr+   U   s7     996	
 	
 	
      )=-+aint | floatbc                    | |k    | |k     z
  S N )r0   r2   s     r*   cmpr6   d   s    Ea!er,   oldnewc                t    t          | |z
            }t          t          | |                    |r|dpd }|S )zUGiven an old and new int value, return a string representing the
    difference.
    z.2fr   )absCMPSr6   )r7   r8   diffdiff_strs       r*   diff_stringr>   h   sC     sSy>>Ds3}}%Et'=4'CEEHOr,   nodenodes.NodeNGtuple[str, str]c                h   |                                  }dg }}|rnt          |t                    r|j        }n$|                    t          |dd                     	 |j                                         }n# t          $ r Y nw xY w|n|                                 |d	                    |          fS )z6Return the module name and the frame id in the module.r   namez<lambda>.)
frame
isinstancer   rC   appendgetattrparentAttributeErrorreverser'   )r?   rE   moduleobjs       r*   get_module_and_frameidrN   q   s    JJLLEbCF
 eV$$ 	;ZFFJJwufj99:::	L&&((EE 	 	 	E	   KKMMM388C==  s   A7 7
BBtitle	characterc                2    |  d|t          |           z   dS )zgPermit to get a title formatted as ReStructuredText test (underlined with a
    chosen character).
    r#   )len)rO   rP   s     r*   get_rst_titlerS      s&     11y3u::-1111r,   section
str | Noneoptions!list[tuple[str, OptionDict, Any]]docc                   d}| r|t          | d          z  }|rt          |          }|| dz  }|D ]\  }}}|                    d          }|d| dz  }|r0t          |t                    sJ t          |d          }	||	 d	z  }|r@|d
k    r:t	          t          ||                    }|d|                    dd           dz  }|S )zHFormat an option's section using as a ReStructuredText formatted output.r   'z

help:z:
z  r    r#   r   z
  Default: ``z`` z```` ``z``
)rS   r+   getrF   r   _format_option_valuereplace)
rT   rV   rX   resultformatted_docoptnameoptdictvaluehelp_optformatted_helps
             r*   get_rst_sectionrh      s$    F .----
 )&s++]((((#* 	N 	N%;;v&&"g"""" 	,h,,,,,+HTBBBN++++F 	NW,,,We<<==EMeY(G(GMMMMFMr,   strictstreamBufferedReader | BytesIOencodingerrorsLiteral['strict']codecs.StreamReaderc                    	 t          j        |pt          j                              }n5# t          $ r( t          j        t          j                              }Y nw xY w || |          S r4   )codecs	getreadersysgetdefaultencodingLookupError)rj   rl   rm   
reader_clss       r*   decoding_streamrw      sv    
@%h&J#2H2J2JKK

 @ @ @%c&<&>&>??


@:ff%%%s   '* /AAnodes.Modulelist[tokenize.TokenInfo]c                    |                                  5 }|j        }t          t          j        |                    cd d d            S # 1 swxY w Y   d S r4   )rj   readlinelisttokenize)r?   rj   r{   s      r*   tokenize_moduler~      s    	 1&?H%h//001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   (A

AAlinterr   	directoryNonec                   i }t          j        |          D ]5}t           j                            |          \  }}||v s|dk    r0|t          v r|dk    sT|st           j                            t           j                            ||                    r|                    d          s	 t          j	        t           j                            ||                    }t          |d          r|                    |            d||<   # t          $ r Y t          $ r,}t          d| d| t          j                   Y d	}~-d	}~ww xY w7d	S )
zLoad all module and package in the given directory, looking for a
    'register' function in each one, used to register pylint checkers.
    __pycache____init__rD   register   zProblem importing module z: fileN)oslistdirpathsplitextr   isdirr'   
startswithr   load_module_from_filehasattrr   
ValueErrorImportErrorprintrs   stderr)r   r   importedfilenamebase	extensionrL   excs           r*   register_pluginsr      s    HJy)) ' ''**844i8t}44  
"" # GMM"',,y$"?"?@@ # !++C00	 #'!7GLLH55  6:.. 'OOF+++%&HTN     V V VC(CCcCC#*UUUUUUUUUV)' 's   +2D
E		E	!EE	,stringsep	list[str]c                @    d |                      |          D             S )a&  Return a list of stripped string by splitting the string given as
    argument on `sep` (',' by default), empty strings are discarded.

    >>> _splitstrip('a, b, c   ,  4,,')
    ['a', 'b', 'c', '4']
    >>> _splitstrip('a')
    ['a']
    >>> _splitstrip('a,
b,
c,')
    ['a', 'b', 'c']

    :type string: str or unicode
    :param string: a csv line

    :type sep: str or unicode
    :param sep: field separator, default to the comma (',')

    :rtype: str or unicode
    :return: the unquoted string (or the input string if it wasn't quoted)
    c                ^    g | ]*}|                                 |                                 +S r5   strip).0words     r*   
<listcomp>z_splitstrip.<locals>.<listcomp>   s-    GGGT$**,,GDJJLLGGGr,   )split)r   r   s     r*   _splitstripr      s%    ( HGV\\#%6%6GGGGr,   c                ^    | s| S | d         dv r
| dd         } | d         dv r
| dd         } | S )zRemove optional quotes (simple or double) from the string.

    :param string: an optionally quoted string
    :return: the unquoted string (or the input string if it wasn't quoted)
    r   z"'r   Nr5   )r   s    r*   _unquoter      sN      ayEbzUMr,   re   list[str] | tuple[str] | strSequence[str]c                \    t          | t          t          f          r| S t          |           S r4   )rF   r|   tupler   )re   s    r*   
_check_csvr      s+    %$'' ur,   Iterable[str]c              #    K   t          | t          t          f          r
| E d{V  dS t          dg          }d}| D ]}|dk    rd}n
|dk    r|rd}|dk    r|s|                    d           3|d         8|                                 |                    t          |g                     s|d                             |           d |D             E d{V  dS )	zSplit a comma-separated list of regexps, taking care to avoid splitting
    a regex employing a comma as quantifier, as in `\d{1,2}`.NF{T}r   r   c              3  h   K   | ]-}|d                     |                                          V  .d S )Nr   )r'   r   )r   regexps     r*   	<genexpr>z$_check_regexp_csv.<locals>.<genexpr>  s=      XXVEWBGGFOO))++EWEWEWEWXXr,   )rF   r|   r   r   rG   pop)re   regexpsopen_braceschars       r*   _check_regexp_csvr     s      %$'' Y -24&MM 	) 	)Ds{{"#s{{;{t$$$$$udV}}----""4((((XX'XXXXXXXXXXXXr,   c                x    d |                                  D             }d}d| d                    |          z   S )zReturn string as a comment.c                6    g | ]}|                                 S r5   r   )r   lines     r*   r   z_comment.<locals>.<listcomp>  s     :::dTZZ\\:::r,   r#   # )
splitlinesr'   )r   linesr   s      r*   _commentr     sC    ::f&7&7&9&9:::E
CS***//%((((r,   rd   r   r
   c                n                          dd          dk    r d                    d |D                       }nt          |t          t          f          r"d                     fd|D                       }nt          |t
                    r2d                    d |                                D                       }ngt          |d	          r|j        }nO                      d          d
k    r|rdnd}n/t          |t                    r|
                                rd| d}t          |          S )z|Return the user input's value from a 'compiled' value.

    TODO: Refactor the code to not use this deprecated function
    typeN
py_versionrD   c              3  4   K   | ]}t          |          V  d S r4   )r   )r   items     r*   r   z'_format_option_value.<locals>.<genexpr>'  s(      55tT555555r,   r   c              3  8   K   | ]}t          |          V  d S r4   )r_   )r   r   rd   s     r*   r   z'_format_option_value.<locals>.<genexpr>)  s.      OO-gt<<OOOOOOr,   c              3  *   K   | ]\  }}| d | V  dS )r\   Nr5   )r   kvs      r*   r   z'_format_option_value.<locals>.<genexpr>+  s0      >>1A>>>>>>r,   matchynyesnorZ   )r^   r'   rF   r|   r   dictitemsr   patternr   isspace)rd   re   s   ` r*   r_   r_   !  s6   
 {{64  L0055u55555	ED%=	)	) 
OOOOOOOOO	E4	 	  >>>>>>>		 	  	V			$	$(D	E3		 EMMOO Eu::r,   r   c                V   t          j        dt          d           |rt          t	          |          |            t          d| d|            t          j                    5  t          j        dt                     t          | |           d	d	d	           d	S # 1 swxY w Y   d	S )
z0Format an option's section using the INI format.zEformat_section has been deprecated. It will be removed in pylint 4.0.   
stacklevelr   []ignore)categoryN)warningswarnDeprecationWarningr   r   catch_warningsfilterwarnings_ini_format)rj   rT   rV   rX   s       r*   format_sectionr   6  s     MO   
  *hsmm&))))	.g...v&&&&		 	"	" % %3EFFFFFG$$$% % % % % % % % % % % % % % % % % %s   %,BB"%B"c                P   t          j        dt          d           |D ]\  }}}d|v r(t          |d         t                    sJ d|d         v r3t          ||          }|                    d          }|rJt          |t                    sJ t          |d          }t          | 	           t          || 	           nt          | 	           |d
v rt          d| d| 	           t          |          
                                }t          j        dt          |                    r^ddt          |          z  z   }|                    d t          |                              d          D                       }|dd         }t          | d| | 	           dS )z$Format options using the INI format.zB_ini_format has been deprecated. It will be removed in pylint 4.0.r   r   kwargs	new_namesr[   r   r]   r   >   r   False#r-   z^([\w-]+,)+[\w-]+$z
  c              3      K   | ]	}|d z   V  
dS )r   Nr5   )r   xs     r*   r   z_ini_format.<locals>.<genexpr>f  s&      &N&N1q3w&N&N&N&N&N&Nr,   r   Nr   )r   r   r   rF   r   r_   r^   r   r+   r   r   rer   rR   r'   r   )rj   rV   rc   rd   re   rf   	separators          r*   r   r   J  s   ML   
 $+ 5 5%wgh/66666gh///$We44;;v&& 	h,,,,,%ht<<<Hv((((((v%%%.g...v.....JJ$$&&Ex-s5zz:: #!C#g,,$66	!&N&NE

8H8H8M8M&N&N&NNNcrc
W&&u&&V4444415 5r,   c                  "    e Zd ZdZddZdd	Zd
S )IsortDriverzAA wrapper around isort API that changed between versions 4 and 5.configargparse.Namespacer!   r   c                    t           r2t          j                            |j        |j                  | _        d S t          j        d|j        |j                  | _        d S )N)extra_standard_libraryknown_third_partyr   )file_contentsknown_standard_libraryr   )	HAS_ISORT_5isortsettingsConfigr   r   isort5_configSortImports
isort4_obj)selfr   s     r*   r   zIsortDriver.__init__o  sk     	!&!6!6
 (.'D"(": "7 " "D $/ '-'D"(":  DOOOr,   packager   c                    t           r%t          j                            || j                  S | j                            |          S r4   )r   r   apiplace_moduler   r   )r   r   s     r*   r  zIsortDriver.place_module  s<     	G9))'43EFFF++G444r,   N)r   r   r!   r   )r   r   r!   r   )__name__
__module____qualname____doc__r   r  r5   r,   r*   r   r   l  sB        KK   $5 5 5 5 5 5r,   r   )r   r   r   r   r    r   r!   r   )r0   r1   r2   r1   r!   r   )r7   r1   r8   r1   r!   r   )r?   r@   r!   rA   )rO   r   rP   r   r!   r   r4   )rT   rU   rV   rW   rX   rU   r!   r   )ri   )rj   rk   rl   r   rm   rn   r!   ro   )r?   rx   r!   ry   )r   r   r   r   r!   r   )r   )r   r   r   r   r!   r   )r   r   r!   r   )re   r   r!   r   )re   r   r!   r   )rd   r   re   r
   r!   r   )
rj   r   rT   r   rV   rW   rX   rU   r!   r   )rj   r   rV   rW   r!   r   )J
__future__r   	isort.apir   isort.settingsr   r   argparserq   r   r   rs   r(   r}   r   collectionsr   collections.abcr   r   ior   r   typingr	   r
   r   r   r   r   r   r   r   astroidr   r   r   pylint.constantsr   pylint.typingr   pylint.lintr   DEFAULT_LINE_LENGTHGLOBAL_OPTION_BOOLGLOBAL_OPTION_INTGLOBAL_OPTION_LISTGLOBAL_OPTION_PATTERNGLOBAL_OPTION_PATTERN_LISTGLOBAL_OPTION_TUPLE_INTGLOBAL_OPTION_NAMESboolr   r   r   r+   r;   r6   r>   rN   rS   rh   rw   r~   r   r   r   r   r   r   r_   r   r   r   r5   r,   r*   <module>r     sL  
 # " " " " "KK   LLLKKK
   				 				 



          . . . . . . . . & & & & & & & &
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 , + + + + + + + + + $ $ $ $ $ $ $ $ $ $ $ $ %$$$$$$  % 
 EF ./   %%UV !,/   $GICL	#s(O    3"           ! ! ! !"2 2 2 2     8 !)	& 	& 	& 	& 	&1 1 1 1' ' ' 'BH H H H H.      Y Y Y Y2) ) ) )   2 	% % % % %(5 5 5 5D5 5 5 5 5 5 5 5 5 5s   
 !!