o
    i                     @   s^   d dl mZmZmZmZ d dlmZ d dlZd dlmZ ddl	m
Z
 ejjG dd dZdS )	    )ListOptionalTypeVarGeneric)	dataclassN)Tensor   )Errorsc                   @   s   e Zd ZU dZee ed< dedee ddfddZedefd	d
Z	de
defddZedefddZedee fddZdS )PyTorchTransformerOutputz2Padded output of the PyTorch Transformer encoders.all_outputsembedding_outputlayer_hidden_statesreturnNc                C   s   |g| _ | j | d S )N)r   extend)selfr   r    r   V/home/ubuntu/.local/lib/python3.10/site-packages/curated_transformers/models/output.py__init__   s   z!PyTorchTransformerOutput.__init__c                 C   
   | j d S )Nr   r   r   r   r   r   embedding_layer      
z(PyTorchTransformerOutput.embedding_layeridxc                 C   sN   d|  krt | jd k rn n| j|d  S td| dt | jd  )z1'idx' must be in the range [0, num_hidden_layers)r      zOAttempting to select a transformer output tensor using an invalid layer index (z). Expected range: 0<= idx < )lenr   
ValueError)r   r   r   r   r   hidden_layer_states   s   "z,PyTorchTransformerOutput.hidden_layer_statesc                 C   r   )Nr   r   r   r   r   last_hidden_layer_states&   r   z1PyTorchTransformerOutput.last_hidden_layer_statesc                 C   s   | j dd  S )Nr   r   r   r   r   r   all_hidden_layer_states*   s   z0PyTorchTransformerOutput.all_hidden_layer_states)__name__
__module____qualname____doc__r   r   __annotations__r   propertyr   intr   r   r    r   r   r   r   r
   	   s"   
 
r
   )typingr   r   r   r   dataclassesr   torchr   errorsr	   jitscriptr
   r   r   r   r   <module>   s    