
    .Ph                    n    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  G d dee                   ZdS )	    )annotations)TYPE_CHECKING)Any)List)Framec                  T     e Zd Zdd fd	Zedd
            ZddZdddZddZ xZ	S )FrameCollectionNr   frameslist[Frame] | NonecountintreturnNonec                `    |g }t                                          |           || _        d S N)super__init___count)selfr
   r   	__class__s      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/crashtest/frame_collection.pyr   zFrameCollection.__init__   s0    >F       c                    | j         dz
  S N   r   r   s    r   repetitionszFrameCollection.repetitions   s    {Qr   boolc                    | j         dk    S r   r   r   s    r   is_repeatedzFrameCollection.is_repeated   s    {Qr   r   	incrementc                &    | xj         |z  c_         | S r   r   )r   r"   s     r   increment_countzFrameCollection.increment_count   s    y r   list[FrameCollection]c                   g }t                      }d}|t          |           dz
  k     r>| |         }|| |dz   d         v rg }t          | |dz   d                   D ]&\  }}||k    r|                    ||z   dz              'd}|D ]9}	t          | ||	                   }
|
|k    r|                                 |	}d} n:|r|                    |           t          | ||d                            }|d         }|                                r#|                    |           t                      }|                    |           |dz  }|t          |           dz
  k     >|                    |           |S )zE
        Compacts the frames to deduplicate recursive calls.
        r   r   NFT)r	   len	enumerateappendr$   r!   )r   collectionscurrent_collectioniframeduplicate_indices	sub_index	sub_framefound_duplicateduplicate_index
collections              r   compactzFrameCollection.compact!   s    ,..#d))a-GEQUWW%%$&!,5d1q577m,D,D D D(Iy	)))00Q1BCCC"''8  O!0a6G1H!I!IJ!%777*::<<<+*.	 8 # ""#5666%4T!>OPQ>R:R5S%T%T"%a(!--// 7""#5666%4%6%6"%%e,,,FAA #d))a-D 	-...r   )Nr   )r
   r   r   r   r   r   )r   r   )r   r   )r   )r"   r   r   r	   )r   r%   )
__name__
__module____qualname__r   propertyr   r!   r$   r4   __classcell__)r   s   @r   r	   r	      s                  X       
, , , , , , , ,r   r	   N)	
__future__r   typingr   r   r   crashtest.framer   r	    r   r   <module>r>      s    " " " " " "                          &%%%%%%A A A A Ad3i A A A A Ar   