
    JiX                       d dl m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m	Z	 d dl
mZ d dlmZmZmZmZ d dlZd dlmZ d dlm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 d dl m!Z!m"Z" d dl#m$Z$m%Z%m&Z&m'Z' d dl(m)Z) erd dl*m+Z+ d dl,m-Z-m.Z. d dlm/Z/m0Z0  ejb                  dd      je                         Z3	  G d dejh                        Z5d#dZ6dddddddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d$dZ7dZ8d%dZ9d&dZ:ddddddddddddddd	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d'dZ;	 	 d(ddddddddddd 
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d)d!Z<d*d+d"Z=y),    )annotationsN)datetimetimezone)Path)IOTYPE_CHECKINGAnyCallable)debug)find_breaking_changes)JSONEncoder)ExplanationStyleParser)ExtensionErrorGitError)load_extensions)_get_latest_tag_get_repo_root)GriffeLoaderloadload_git	load_pypi)logger)Sequence)DocstringOptionsDocstringStyle)	Extension
ExtensionsGRIFFE_LOG_LEVELINFOc                  *     e Zd Zdd fdZddZ xZS )
_DebugInfoc                (    t        |   dd|i| y )Nnargs )super__init__)selfr$   kwargs	__class__s      f/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/griffe/_internal/cli.pyr'   z_DebugInfo.__init__4   s    /u//    c                V    t        j                          t        j                  d       y )Nr   )r   _print_debug_infosysexit)r(   argsr)   s      r+   __call__z_DebugInfo.__call__7   s    !r,   )r   )r$   zint | str | Noner)   r	   returnNone)r1   r	   r)   r	   r3   r4   )__name__
__module____qualname__r'   r2   __classcell__)r*   s   @r+   r"   r"   3   s    0r,   r"   c                    t        |t              r%t        |dd      5 }t        | |       d d d        y |t        j
                  }t        | |       y # 1 sw Y   y xY w)Nwutf8)encodingfile)
isinstancestropenprintr/   stdout)dataoutput_filefds      r+   _print_datarG   <   sY    +s#+sV4 	!$R 	! 	! **Kd%	! 	!s   AATF
extensionssearch_pathsdocstring_parserdocstring_optionsresolve_aliasesresolve_implicitresolve_externalallow_inspectionforce_inspectionstore_sourcefind_stubs_packagec          	     R   t        ||||||	|
      }| D ]E  }|st        j                  d       t        j                  d|       	 |j	                  |d|       G t        j                  d       |ret        j                  d	       |j                  ||
      \  }}|r"t        j                  dt        |      |       |S t        j                  d|       |S # t
        $ r!}t        j                  d||       Y d }~d }~wt        $ r t        j                  d|       Y w xY w)N)rI   rJ   rK   rL   rP   rQ   rR   zEmpty package name, continuingzLoading package %sT)try_relative_pathrS   zCould not find package %s: %sz%Tried but could not import package %szFinished loading packageszStarting alias resolution)implicitexternalz4%s aliases were still unresolved after %s iterationsz-All aliases were resolved after %s iterations)r   r   r   infor   ModuleNotFoundErrorerrorImportError	exceptionrM   len)packagesrI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   loaderpackagerZ   
unresolved
iterationss                    r+   _load_packagesrc   F   s)     !)+))!F  
OLL9:('2	OKK4L^K_
O KK+, /0!'!7!7AQ\l!7!m
JKKNPST^P_akl M KKGTM # 	JLL8'5II 	ODgN	Os   C	D&$D  "D&%D&)DEBUGr    WARNINGERRORCRITICALc                    	 t        j                  |       S # t         j                  $ r | j                  d      cY S w xY w)N,)jsonloadsJSONDecodeErrorsplit)values    r+   _extensions_typero   |   s:     zz%    {{3 s    $>>c                 R   d} d}	 	 t        j                  d| |d      }d}d|j                  d	      }|j                  d
dd|       |j                  ddddt	        j
                                 |j                  dt        d       dcfd}|j                  ddddd      ddfd} |dd      }|j                  d	      }|j                  dd d!d"#       |j                  d$d%d&dd'(       |j                  d)d*t        j                  d+,       |j                  d-d.d/d0t        d12       |j                  d3d4d5i t        j                  d62       |j                  d7d8d&d9       |j                  d:d;d&d<       |j                  d=d>d?d&d@A       |j                  dBd?dCdDA       |j                  dEdFd&dG        ||        |dHdI      }	|	j                  dJ	      }
|
j                  dKd dLM       |
j                  dNdOdPdQM       |
j                  dRdSdTdUM       |
j                  dVdWd&d0dXY       |
j                  dZdWdCd0d[Y       |
j                  d\d]d&d^       t        D cg c]  }|j                   }}|
j                  d$d_d`|d0dab        ||	       |S c c}w )ezNReturn the CLI argument parser.

    Returns:
        An argparse parser.
    z3%(prog)s [GLOBAL_OPTS...] COMMAND [COMMAND_OPTS...]z'Signatures for entire Python programs. Fgriffe)add_helpusagedescriptionprogzKShow this help message and exit. Commands also accept the -h/--help option.z Show this help message and exit.zGlobal optionstitle-h--helphelpactionrz   z-Vz	--versionversionz	%(prog)s )r|   r}   z--debug-infozPrint debug information.c           	     <   | j                  d      }|j                  ddd       | j                  d      }|j                  dd	d
dt        d       |j                  ddddd       | j                  d      }|j                  dddddd       |j                  ddi t        d       |j                  dd d!d"d#d$       |j                  d%d&d'ddd(       | j                  d)      }|j                  d*d+d,t        t
        t        j                  d-.       y )/NzCommon optionsrv   rx   ry   rz   r{   zSearch optionsz-sz--searchrJ   appendzPaths to search packages into.)destr|   typerz   z-yz
--sys-pathappend_sys_path
store_truezAWhether to append `sys.path` to search paths specified with `-s`.r   r|   rz   zLoading optionsz-Bz--find-stubs-packagesrS   FzJWhether to look for stubs-only packages and merge them with concrete ones.r   r|   defaultrz   z-ez--extensionszA list of extensions to use.)r   r   rz   z-Xz--no-inspectionrP   store_falseTz:Disallow inspection of builtin/compiled/not found modules.z-xz--force-inspectionrQ   z<Force inspection of everything, even when sources are found.zDebugging optionsz-Lz--log-levelLEVELzCSet the log level: `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL`.)metavarr   choicesr   rz   )add_argument_groupadd_argumentr   ro   DEFAULT_LOG_LEVEL_level_choicesr@   upper)	subparsercommon_optionssearch_optionsloading_optionsdebug_optionssubcommand_helps        r+   add_common_optionsz&get_parser.<locals>.add_common_options   sz   "55<L5M##D(6#X"55<L5M##1 	$ 	
 	##"T 	$ 	
 $66=N6O$$#%] 	% 	
 	$$!/ 	% 	
 	$$# M 	% 	
 	$$ #O 	% 	
 "44;N4O""%"V 	# 	
r,   
subcommandCommandsCOMMANDT)r   rw   r   ru   requiredc                2     j                   | fd||d|S )NF)rr   rz   rt   )
add_parser)commandtextr)   
subparserss      r+   add_subparserz!get_parser.<locals>.add_subparser   s&    $z$$Wdu4UYd]cddr,   dumpz.Load package-signatures and dump them as JSON.zDump optionsr^   PACKAGE+z Packages to find, load and dump.)r   r$   rz   z-fz--fullr   z"Whether to dump full data in JSON.)r|   r   rz   z-oz--outputzZOutput file. Supports templating to output each package in its own file, with `{package}`.)r   rz   z-dz
--docstylerK   NzThe docstring style to parse.)r   r   r   rz   z-Dz	--docoptsrL   z%The options for the docstring parser.z-rz--resolve-aliaseszWhether to resolve aliases.z-Iz--resolve-implicitzrWhether to resolve implicitly exported aliases as well. Aliases are explicitly exported when defined in `__all__`.z-Uz--resolve-externalrO   zAlways resolve aliases pointing to external/unknown modules (not loaded directly).Default is to resolve only from one module to its private sibling (`ast` -> `_ast`).r   z--no-resolve-externalr   zNever resolve aliases pointing to external/unknown modules (not loaded directly).Default is to resolve only from one module to its private sibling (`ast` -> `_ast`).z-Sz--statszShow statistics at the end.checkz1Check for API breakages or possible improvements.zCheck optionsr`   z)Package to find, load and check, as path.)r   rz   z-az	--againstREFzUOlder Git reference (commit, branch, tag) to check against. Default: load latest tag.z-bz
--base-refBASE_REFzIGit reference (commit, branch, tag) to check. Default: load current code.z--colorcolorz"Force enable colors in the output.r   z
--no-colorz#Force disable colors in the output.z-vz	--verbosezVerbose output.z--formatstylezOutput format.)r   r   r   rz   )r   argparse.ArgumentParserr3   r4   )r   r@   r   r@   r)   r	   r3   r   )argparseArgumentParserr   r   r   _get_versionr"   add_subparsersr/   rC   r   rj   rk   r   rn   )rs   rt   parser	main_helpglobal_optionsr   r   dump_parserdump_optionscheck_parsercheck_optionsfmtformatsr   r   s                @@r+   
get_parserr      s    BE;KFI$$e5k`hiF]I8O..5E.FNhvINk)yY^YkYkYmXnMopzHbc<
~ && ' Je  (XYK111GLj)3Mop1   

i	   ,    ZZ4   *	   E	   _   _	   *	   {# !*]^L 33/3JMy)Bmnd	   X	   1   2   t[L]^$45Ssyy5G5tZgwX\cst|$M	 6s   .J$)outputfullrK   rL   rI   rM   rN   rO   rJ   rS   r   rP   rQ   statsc                  d}t        |t              r|j                  d      |k7  rd}|	rt        |	      ng }	|r|	j	                  t
        j                         	 t        |xs d }t        | ||	|||||||d|
      }|j                  j                  }t        j                  t         j"                  	      }|rI|j%                         D ]5  \  }}|j'                  d
|d      }t)        ||j                  |             7 n*t+        j,                  |t.        d
|d      }t)        ||       t        j                  t         j"                  	      |z
  }|rD|j1                         }|j2                  |_        t        j6                  |j9                                t;        |      t;        |       k(  rdS dS # t        $ r t        j                  d       Y yw xY w)a  Load packages data and dump it as JSON.

    Parameters:
        packages: The packages to load and dump.
        output: Where to output the JSON-serialized data.
        full: Whether to output full or minimal data.
        docstring_parser: The docstring parser to use. By default, no parsing is done.
        docstring_options: Docstring parsing options.
        resolve_aliases: Whether to resolve aliases (indirect objects references).
        resolve_implicit: Whether to resolve every alias or only the explicitly exported ones.
        resolve_external: Whether to load additional, unspecified modules to resolve aliases.
            Default is to resolve only from one module to its private sibling (`ast` -> `_ast`).
        extensions: The extensions to use.
        search_paths: The paths to search into.
        find_stubs_package: Whether to search for stubs-only packages.
            If both the package and its stubs are found, they'll be merged together.
            If only the stubs are found, they'll be used as the package itself.
        append_sys_path: Whether to append the contents of `sys.path` to the search paths.
        allow_inspection: Whether to allow inspecting modules when visiting them is not possible.
        force_inspection: Whether to force using dynamic analysis when loading data.
        stats: Whether to compute and log stats about loading.

    Returns:
        `0` for success, `1` for failure.
    Fr`   )r`   Tr%   Could not load extensions   rH   )tz   )indentr   	sort_keys)clsr   r   r   r   )r?   r@   formatlistextendr/   pathr   r   r   r\   rc   modules_collectionmembersr   nowr   utcitemsas_jsonrG   rj   dumpsr   r   microsecondstime_spent_serializingrX   as_textr]   )r^   r   r   rK   rL   rI   rM   rN   rO   rJ   rS   r   rP   rQ   r   per_package_outputloaded_extensionsr_   data_packagesstartedpackage_namerD   
serializedelapsedloader_statss                            r+   r   r   L  s   X &#6===#Cv#M!)54%2LCHH%+j.>B@ $!)+'))))-F --55M llhll+G"/"5"5"7 	IL$QTTJJ
FMM,M$GH	I ZZ;qt_cd
J'llhll+g5G||~.5.B.B+L((*+M"c(m31::K  45s   F5 5GG)
base_refrI   rJ   r   rS   rP   rQ   verboser   r   c       
           |rt        |      ng }|r|j                  t        j                         |xs | }	 t	        |xs d }t        j                  d|xs d      x}r|j                  d      xs t        |       j                         j                  dd      }|j                  d      }t        t        |       ||||||	|d	d

      }|rut        j                  d|      x}st        d| d      |j                  d      xs t        |       j                         j                  dd      }|j                  d      }n|}d}t        t        |       ||||||	|d	d

      }nb|xs | }	 |xs t!        |       }t#        |      }t+        |||||||	|d	d

      }|rt+        | ||||||	|d	d

      }nt-        | d	||||	|d	d
	      }t        t/        ||            }|*t1        j2                  dd
      x}|j                         dv }t5        j6                          t5        j8                  ||n|        |#|
rt:        j<                  nt:        j>                  }nt;        |      }|D ]-  }t'        |jA                  |      t        j(                         / |ryy# t
        $ r t        j                  d       Y yw xY w# t$        $ r(}t'        d| t        j(                         Y d
}~yd
}~ww xY w)a*  Check for API breaking changes in two versions of the same package.

    Parameters:
        package: The package to load and check.
        against: Older Git reference (commit, branch, tag) to check against.
        against_path: Path when the "against" reference is checked out.
        base_ref: Git reference (commit, branch, tag) to check.
        extensions: The extensions to use.
        search_paths: The paths to search into.
        append_sys_path: Whether to append the contents of `sys.path` to the search paths.
        allow_inspection: Whether to allow inspecting modules when visiting them is not possible.
        force_inspection: Whether to force using dynamic analysis when loading data.
        verbose: Use a verbose output.

    Returns:
        `0` for success, `1` for failure.
    r%   r   r   z([\w.-]+)?((==|<=|<|>=|>|!=).+) -_r   TN)rI   rJ   rP   rQ   rS   rM   rO   zBase z% is not a valid dependency specifier.zgriffe: error: r=   )	refreporI   rJ   rP   rQ   rS   rM   rO   )rU   rI   rJ   rP   rQ   rS   rM   rO   FORCE_COLOR>   1yonyestrue)strip)r   r   )!r   r   r/   r   r   r   r   r\   rematchgroupr@   lowerreplacer   
ValueErrorr   r   r   rB   stderrr   r   r   osgetenvcoloramadeinitinitr   VERBOSEONE_LINEexplain)r`   againstagainst_pathr   rI   rJ   r   rS   rP   rQ   r   r   r   r   match_againstagainst_distagainst_versionold_package
match_base	base_distbase_versionnew_package
repositoryrZ   	breakagesforce_colorbreakages                              r+   r   r     s+   D *64%2LCHH%*7L+j.>B@
 !CW]PRSS}S%++A.>#g,EEGOOPSUXY'--a0L(%--1 !
 "$((+Mx"XXJX 5
2W!XYY#))!,<GCCEMMcSVWI%++A.L$ILL(%--1 !
 $.w	9!9G'5J (%--1 !
 ",)!1!1#5 $!%K "&,)!1!1#5 $!%
K *;DEI}=$)GG+T!!#'FFOOMMI>},3 ((9I9R9R ' >hU+#**=> W  45\  	OE7+#**=	s)   J -K J?>J?	K3K..K3c                .   t               }|j                  |       }|j                  }|j                  d       |j                  d      }|j                  dt              }	 t        t        |      }t        j                  d|       t        j                  t        dt        j                                       t"        t$        d} ||   di |S # t        $ r: dj                  t              }t        d| d| d	t        j                  
       Y yw xY w)zRun the main program.

    This function is executed when you type `griffe` or `python -m griffe`.

    Parameters:
        args: Arguments passed from the command line.

    Returns:
        An exit code.
    
debug_infor   	log_levelz%(levelname)-10s %(message)s)r   levelz', 'z"griffe: error: invalid log level 'z' (choose from 'z')r=   r   i  )r   r   r%   )r   
parse_args__dict__popr   getattrloggingbasicConfigAttributeErrorjoinr   rB   r/   r   setrecursionlimitmaxgetrecursionlimitr   r   )	r1   r   opts	opts_dictr   r  r  r   commandss	            r+   mainr  A  s     \F%006DIMM,|,J k+<=I
P+ 	#AO #dC$9$9$;<= 9>t.LH8J,),,  ++n-0;KG9TVW	
 s   !C A DD)rD   r@   rE   str | IO | Noner3   r4   )r^   Sequence[str]rI   zExtensions | NonerJ   Sequence[str | Path] | NonerK   DocstringStyle | Parser | NonerL   DocstringOptions | NonerM   boolrN   r  rO   bool | NonerP   r  rQ   r  rR   r  rS   r  r3   r   )rn   r@   r3   zSequence[str | dict[str, Any]])r3   r   ) r^   r  r   r  r   r  rK   r  rL   r  rI   CSequence[str | dict[str, Any] | Extension | type[Extension]] | NonerM   r  rN   r  rO   r  rJ   r  rS   r  r   r  rP   r  rQ   r  r   r  r3   int)NN)r`   z
str | Pathr   
str | Noner   zstr | Path | Noner   r!  rI   r  rJ   r  r   r  rS   r  rP   r  rQ   r  r   r  r   r  r   zstr | ExplanationStyle | Noner3   r   )N)r1   zlist[str] | Noner3   r   )>
__future__r   r   rj   r  r   r   r/   r   r   pathlibr   typingr   r   r	   r
   r   griffe._internalr   griffe._internal.diffr   griffe._internal.encodersr   griffe._internal.enumerationsr   r   griffe._internal.exceptionsr   r    griffe._internal.extensions.baser   griffe._internal.gitr   r   griffe._internal.loaderr   r   r   r   griffe._internal.loggerr   collections.abcr   #griffe._internal.docstrings.parsersr   r   r   r   r   r   r   Actionr"   rG   rc   r   ro   r   r   r   r  r%   r,   r+   <module>r1     s   #    	 	 
 '  3 3  " 7 1 B @ < @ K K *(TF BII0&9??A  & %)047;15 "$(!"$00 "0 .	0
 50 /0 0 0 "0 0 0 0 0 0f C FX #7;15VZ!"$(04$!!"![;[; [; 	[;
 5[; /[; T[; [; [; "[; .[; [; [; [; [;  ![;" 	#[;@ &*T
  VZ04!$!"+/TTT $T
 T TT .T T T T T T T )T 	Tn%-r,   