
    g                    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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     B/var/www/openai/venv/lib/python3.12/site-packages/_griffe/stats.py	<genexpr>z!Stats.__init__.<locals>.<genexpr>:   s     R1QU1Qs   N)loaderr   intmodules_collectionmembersvaluesr   MODULECLASSFUNCTION	ATTRIBUTE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	
 	)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._itercountI   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                     }t        ||||f      }|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	  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#   appendr"   r   sorteditemsr%   r&   r   force_inspectionZeroDivisionErrorr'   join)r)   r   r!   modulesclasses	functions
attributesobjectsper_extbuiltinregularstubscompiledextnumber
visit_timeinspect_time
total_timevisit_percentinspect_percentr@   visited_modulesvisit_time_per_moduleinspected_modulesinspect_time_per_moduleserialize_timeserialize_time_per_modules                              r   as_textzStats.as_textU   s    ==,,t{{+,,tzz*LL/	\\$..1
wJ?@\",-/0{7),-{7),-}YK01~j\23y	(9EF++"+%.W$w.6R.tzzl;<RY{7),-|H:./{7),-y()'(!'--/2KCtC56(34 3 --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$   L6 "M 6MMMMN)r   r   returnNone)r6   zObject | Aliasr[   r\   )r[   str)__name__
__module____qualname____doc__r,   r(   rZ    r-   r   r   r      s    .3$j
$H r-   r   N)
__future__r   collectionsr   pathlibr   typingr   _griffe.enumerationsr   _griffe.loaderr   _griffe.modelsr	   r
   r   rb   r-   r   <module>rj      s+    # #    %+,L  L r-   