
    Ji                    t    d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 erd dl
mZ d dlmZmZ  G d d	      Zy
)    )annotations)defaultdict)Path)TYPE_CHECKING)Kind)GriffeLoader)AliasObjectc                  (    e Zd ZdZddZddZddZy)	Statsz$Load statistics for a Griffe loader.c                .   || _         	 t        t        dddddddd      }|j                  j                  j                         }t        j                  dt        j                  dt        j                  dt        j                  dt        j                  di| _        	 t        |      | _        	 || _        	 t!        d |j"                  j                         D              | _        	 d| _        	 d| _        	 d| _        	 |D ]  }| j-                  |        y)zoInitialiwe the stats object.

        Parameters:
            loader: The loader to compute stats for.
        r   ) .py.pyiz.pycz.pyoz.pydz.soc              3  2   K   | ]  }t        |        y w)N)len).0liness     h/var/www/html/BankruptcyAI-uat/bankruptcy-ai/venv/lib/python3.12/site-packages/griffe/_internal/stats.py	<genexpr>z!Stats.__init__.<locals>.<genexpr>;   s     RURs   N)loaderr   intmodules_collectionmembersvaluesr   MODULECLASSFUNCTION	ATTRIBUTE
TYPE_ALIASby_kindr   packagesmodules_by_extensionsumlines_collectionr   time_spent_visitingtime_spent_inspectingtime_spent_serializing
_itercount)selfr   r#   top_modulesmodules        r   __init__zStats.__init__   s	    .* 
 //77>>@ KKJJMM1NNAOOQ
 	)K(!$8!-R1H1H1O1O1QRR
$#$ *%&",&'#-! 	$FOOF#	$    c                   |j                   ry | j                  |j                  xx   dz  cc<   |j                  rit	        |j
                  t              r,| j                  |j
                  j                  xx   dz  cc<   n#|j
                  | j                  dxx   dz  cc<   |j                  j                         D ]  }| j                  |        y )N   r   )is_aliasr!   kind	is_module
isinstancefilepathr   r#   suffixr   r   r)   )r*   rootmembers      r   r)   zStats._itercountJ   s    ==TYY1$>>$--.))$--*>*>?1D?&))"-2-ll))+ 	$FOOF#	$r.   c                   g }| j                   }| j                  t        j                     }| j                  t        j                     }| j                  t        j
                     }| j                  t        j                     }| j                  t        j                     }t        |||||f      }|j                  d       |j                  d       |j                  d       |j                  d|        |j                  d|        |j                  d|        |j                  d|        |j                  d|        |j                  d	| d
| d       | j                  }	|	d   }
|	d   }|	d   }||
z
  |z
  |z
  }|j                  d       |j                  d| j                          |j                  d       |j                  d       |j                  d|
        |j                  d|        |j                  d|        |j                  d|        |j                  d       t        |	j                               D ]  \  }}|s	|j                  d| d|        ! | j                  dz  }| j                  dz  }||z   }||z  dz  }||z  dz  }| j                   j"                  }|rdn|}	 ||z  }|
|z   |r|ndz   }	 ||z  }|j                  d       |j                  d| d| d|dd|dd 	       |j                  d!| d| d|dd|dd 	       | j&                  dz  }||z  }|j                  d"| d|dd#       d$j)                  |      S # t$        $ r d}Y w xY w# t$        $ r d}Y w xY w)%zQFormat the statistics as text.

        Returns:
            Text stats.
        
Statisticsz---------------------zNumber of loaded objectsz  Modules: z  Classes: z  Functions: z  Attributes: z  Type aliases: z	  Total: z across z	 packagesr   r   r   zTotal number of lines: Modulesz  Builtin: z  Compiled: z  Regular: z	  Stubs: z  Per extension:z    z: i  d   r   zTime spent visiting modules (z): zms, z.02fzms/module (z%)zTime spent inspecting modules (zTime spent serializing: z	ms/module
)r"   r!   r   r   r   r   r   r    r$   appendr#   r   sorteditemsr&   r'   r   force_inspectionZeroDivisionErrorr(   join)r*   r   r"   modulesclasses	functions
attributestype_aliasesobjectsper_extbuiltinregularstubscompiledextnumber
visit_timeinspect_time
total_timevisit_percentinspect_percentrA   visited_modulesvisit_time_per_moduleinspected_modulesinspect_time_per_moduleserialize_timeserialize_time_per_modules                               r   as_textzStats.as_textV   s    ==,,t{{+,,tzz*LL/	\\$..1
||DOO4wJMN\",-/0{7),-{7),-}YK01~j\23'~67y	(9EF++"+%.W$w.6R.tzzl;<RY{7),-|H:./{7),-y()'(!'--/2 	5KCtC56(34	5 --4
11D8,.
"Z/#5&3c9;;77/!W	&$.$@! $h.=M'STU	(&25F&F# 	R+O+<Cl$4T:+mTXEYY[]	
 	-.?-@nD!8 >k/Z^I__ac	

 44t;$2W$<!//?tD]^bCcclmnyy/ ! 	&$%!	& ! 	(&'#	(s$   M( M9 (M65M69NNN)r   r   returnNone)r7   zObject | Aliasr]   r^   )r]   str)__name__
__module____qualname____doc__r-   r)   r\    r.   r   r   r      s    .4$l
$J r.   r   N)
__future__r   collectionsr   pathlibr   typingr   griffe._internal.enumerationsr   griffe._internal.loaderr   griffe._internal.modelsr	   r
   r   rd   r.   r   <module>rl      s+    # #    .45O  O r.   