o
    ‡ZŽh   ã                   @   sB   d dl Z d dlmZ dgZdededefdd„ZG d	d„ dƒZdS )
é    N)ÚOptionalÚLinearBlockSparsePatternÚrow_block_sizeÚcol_block_sizeÚreturnc                 C   s    | dkr|dkp| dko|dkS )Né   é   é   © )r   r   r
   r
   úQ/var/www/auris/lib/python3.10/site-packages/torch/ao/nn/sparse/quantized/utils.pyÚ%_is_valid_linear_block_sparse_pattern   s   ÿr   c                   @   s¨   e Zd ZU e ¡ ZdZeed< dZ	eed< dZ
eed< dZeed< ddedefdd„Zddd„Zdeee  dee dee d	d
fdd„Zed	eeef fdd„ƒZd
S )r   r   r   r   r   Úprev_row_block_sizeÚprev_col_block_sizec                 C   s8   t ||ƒsJ ‚tj ¡  tjt_tjt_|t_|t_d S ©N)r   r   ÚrlockÚacquirer   r   r   r   )Úselfr   r   r
   r
   r   Ú__init__   s   
ÿÿ
z!LinearBlockSparsePattern.__init__r   Nc                 C   s   d S r   r
   )r   r
   r
   r   Ú	__enter__)   s   z"LinearBlockSparsePattern.__enter__Úexc_typeÚ	exc_valueÚ	backtracec                 C   s   t jt _t jt _t j ¡  d S r   )r   r   r   r   r   r   Úrelease)r   r   r   r   r
   r
   r   Ú__exit__,   s
   ÿÿz!LinearBlockSparsePattern.__exit__c                   C   s   t jt jfS r   )r   r   r   r
   r
   r
   r   Ú
block_size:   s   þz#LinearBlockSparsePattern.block_size)r   r   )r   N)Ú__name__Ú
__module__Ú__qualname__Ú	threadingÚRLockr   r   ÚintÚ__annotations__r   r   r   r   r   r   ÚtypeÚBaseExceptionÚobjectr   ÚstaticmethodÚtupler   r
   r
   r
   r   r      s&   
 

þýü
û)r   Útypingr   Ú__all__r    Úboolr   r   r
   r
   r
   r   Ú<module>   s    ÿÿ
þ