o
    h                     @  sn   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	 d	Zd
S )    )annotations)defaultdict)Path)TYPE_CHECKING)Kind)GriffeLoader)AliasObjectc                   @  s.   e Zd ZdZdddZdd
dZdddZdS )Statsz$Load statistics for a Griffe loader.loaderr   returnNonec              
   C  s   || _ 	 ttdddddddd}|jj }tjdtjdtj	dtj
dtjdi| _	 t|| _	 || _	 tdd |j D | _	 d| _	 d| _	 d| _	 |D ]}| | qPdS )zoInitialiwe the stats object.

        Parameters:
            loader: The loader to compute stats for.
        r   ) .py.pyiz.pycz.pyoz.pydz.soc                 s  s    | ]}t |V  qd S )N)len).0lines r   W/var/www/html/openai_agents/venv/lib/python3.10/site-packages/griffe/_internal/stats.py	<genexpr>;   s    z!Stats.__init__.<locals>.<genexpr>N)r   r   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moduler   r   r   __init__   sH   
zStats.__init__rootObject | Aliasc                 C  s   |j rd S | j|j  d7  < |jr2t|jtr$| j|jj  d7  < n|jd u r2| jd  d7  < |j	
 D ]}| | q7d S )N   r   )is_aliasr    kind	is_module
isinstancefilepathr   r"   suffixr   r   r(   )r)   r-   memberr   r   r   r(   J   s   
zStats._itercountstrc                 C  s  g }| j }| jtj }| jtj }| jtj }| jtj }| jtj }t|||||f}|	d |	d |	d |	d|  |	d|  |	d|  |	d|  |	d|  |	d	| d
| d | j
}	|	d }
|	d }|	d }||
 | | }|	d |	d| j  |	d |	d |	d|
  |	d|  |	d|  |	d|  |	d t|	 D ]\}}|r|	d| d|  q| jd }| jd }|| }|| d }|| d }| jj}|rdn|}z|| }W n ty   d}Y nw |
| |r|nd }z|| }W n ty/   d}Y nw |	d |	d| d| d|dd|dd 	 |	d!| d| d|dd|dd 	 | jd }|| }|	d"| d|dd# d$|S )%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_percentr?   visited_modulesvisit_time_per_moduleinspected_modulesinspect_time_per_moduleserialize_timeserialize_time_per_moduler   r   r   as_textV   s   











zStats.as_textN)r   r   r   r   )r-   r.   r   r   )r   r7   )__name__
__module____qualname____doc__r,   r(   rZ   r   r   r   r   r
      s
    

6r
   N)
__future__r   collectionsr   pathlibr   typingr   griffe._internal.enumerationsr   griffe._internal.loaderr   griffe._internal.modelsr   r	   r
   r   r   r   r   <module>   s   