
    sgc9              	          d dl mZ d dlmZ d dlZd dlZd dlZ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 d d	lmZ d d
lmZmZ ej*                  ej,                  ej.                  fZ ed ej*                  dej,                  dej.                  d i      Zd Zd Zd Z	 d Z	 ej<                  	 	 dd       Z	 ej<                  dd       Z 	 ej<                  dddejB                  fd       Z"ej<                  dd       Z#	 ej<                  	 	 	 	 	 dd       Z$ejJ                  jL                  Z'ejP                  ejR                     jT                  Z+de+d<   e'dk\  re'dk  rejX                  e+d<   d Z-y)    )defaultdict)IterableN)reduce)assume)settings)
strategies)numpy)SearchStrategy)_calculate_dynamic_qparams&_calculate_dynamic_per_channel_qparamsc                       y )N r       [/var/www/html/venv/lib/python3.12/site-packages/torch/testing/_internal/hypothesis_utils.py<lambda>r       s    r   c                    | \  }}}dt        j                  t         j                        j                  z   }t        j                  t         j
                        }|j                  |z  |j                  |z  }}t        ||z
  |z  ||z  |z         }t        ||z
  |z  ||z  |z         }	t        j                  |      t        j                  |	      fS N   )
torchfinfofloatepsiinfolongminmaxnpfloat32)
qparamsscale
zero_pointquantized_type
adjustment_long_type_infolong_minlong_max	min_value	max_values
             r   _get_valid_min_maxr)   &   s    (/%E:~U[[-111Jkk%**-O(,,z9?;N;NQ[;[hHX
*e3h6F6SUIX
*e3h6F6SUI::i "**Y"777r   c                     d|v rt         j                  j                  dk  rd|v xr |d    xs d|vxr d|v xr |d    xs d|v}t        |       dk(  xr
 d|vxr d|v}|r=|r:|d   dk(  rat	        j
                  t        j                        j                  |d<   t	        j
                  t        j                        j                  |d<   n|d   d	k(  rat	        j
                  t        j                        j                  |d<   t	        j
                  t        j                        j                  |d<   nh|d   d
k(  r`t	        j
                  t        j                        j                  |d<   t	        j
                  t        j                        j                  |d<   |j                  d       t        j                  | i |S )Nwidth)   C   r   	allow_nanallow_infinityr   r'   r(          @   )
hypothesisversion__version_info__lenr   r   float16r   r   r   float64popstfloats)argskwargsno_nan_and_infmin_and_max_not_specifieds       r   _floats_wrapperr@   3   s   &Z//@@:M V#?F;,?(? '&-&(I8H1I-I ,V+	 	 IN &v%&v% 	"
 7g"$&+kk%--&@&D&D{#&+kk%--&@&D&D{#B&&+kk%--&@&D&D{#&+kk%--&@&D&D{#B&&+kk%--&@&D&D{#&+kk%--&@&D&D{#

799d%f%%r   c                  *    d|vrd|d<   t        | i |S )Nr+   r1   )r@   )r<   r=   s     r   r;   r;   N   s#    fwD+F++r   c                     t        |      \  }}t        | j                         |k\         t        | j                         |k         y)NT)r)   r   r   r   )tensorr   r'   r(   s       r   assume_not_overflowingrD   b   s:    -g6Iy
6::<9$%
6::<9$%r   c                 0   |t         }t        |t        t        f      s|f} | t	        j
                  |            }t        j                  |      }|j                  |j                  }	}t        |   }
|
|
}n)||n|}||	n|} | t	        j                  ||            }|-t        j                  t        j                        j                  }|-t        j                  t        j                        j                  } | t        ||d            }|||fS )N)r'   r(   r1   )r'   r(   r+   )_ALL_QINT_TYPES
isinstancelisttupler:   sampled_fromr   r   r   r   _ENFORCED_ZERO_POINTintegersr   r   r   r;   )drawdtypes	scale_min	scale_maxzero_point_minzero_point_maxr"   
_type_infoqminqmax_zp_enforcedr!   _zp_min_zp_maxr    s                  r   r   r   w   s     ~ ftUm,"//&12N^,J$D (7L!
(0$n(0$n"++7KL
KK,00	KK,00	)yKLE*n,,r   c                 
   |dk  sJ |t        |dz   d      }|dk  sJ ||dz   }t        j                  t        j                  ||      ||      }|j	                  fd      } | |j                  t                    S )z8Return a strategy for array shapes (tuples of int >= 1).r1         )min_sizemax_sizec                 @    t        t        j                  | d      k  S r   )r   int__mul__)x	max_numels    r   r   zarray_shapes.<locals>.<lambda>   s    vckk1a/HI/U r   )r   r:   listsrL   filtermaprI   )rM   min_dimsmax_dimsmin_sidemax_siderb   	candidates        ` r   array_shapesrk      s     b==x!|R(b==a<Xx88V^_I$$%UV		e$%%r   c                 v   t        |t              r	 | |      }n | t        j                  |            }||t	        dddd      } | t        j                  |||            }t        t        j                  |      j                         xs# t        j                  |      j                                 |d fS  | |      }|t        |      \  }}t	        ||ddd      } | t        j                  |||            }t        ||d         \  }	}
t        j                  |d   d       }||}
||	|
|d   ffS )	N    .    .AFr1   r.   r+   dtypeelementsshaper/   r.   r+   rZ   )rG   r
   r:   rJ   r;   stnparraysr   r   isnananyisinfr)   r   rK   get)rM   shapesrr   r   rq   _shapeXr'   r(   r    zpenforced_zps               r   rC   rC      s&   &.)fboof-.dC5CH586JKBHHQKOO%:!):;<$w7mG1':	9)Yu$)5T[[uxvFGA*1gaj9IE2&**71:t<Kub'!*%%%r   c                    t        |t              r	 | |      }n | t        j                  |            }||t	        dddd      } | t        j                  t        j                  ||            }t        t        j                  |      j                         xs# t        j                  |      j                                 |d fS  | |      }|t        |      \  }}t	        ||ddd      } | t        j                  t        j                  ||            }t        ||d         \  }}	t        j!                  |d   d       }
|
|
}	t#        t        j$                  j'                  d	|j(                  d
            }t        j*                  |j(                        }||d	<   d	||<   t        j,                  ||      }|||	||d   ffS )Nrm   rn   Fr1   ro   rp   rt   rZ   r   r   )rG   r
   r:   rJ   r;   ru   rv   r   r   r   rw   rx   ry   r)   r   rK   rz   r_   randomrandintndimarange	transpose)rM   r{   rr   r   r|   r}   r'   r(   r    r~   r   axispermute_axess                r   per_channel_tensorr      s   &.)fboof-.dC5CH2::OPBHHQKOO%:!):;<$w7mG1':	9)Yu$)5T[[rzzHFKLA6q'!*EIE2&**71:t<Kryy  AFFA./D99QVV$LLOL
Q%Aub$
+++r   c                     | t        j                  |       } | t        j                  |       } | t        j                  |       } | t        j                  d|            }||z  }||z  }t        |t              r | t        j                  |            }g }t        |      D ])  }|j                   | t        j                  |              + g }t        |      D ])  }|j                   | t        j                  |              + d}||ft        |      z   }|}|r. | t        j                               }|r||ft        |      z   }|}|
1t        |
t        t        f      rt        |
      dk(  sJ d       |
gdz  }
 | t        ||ft        |      z   f|	|
d               } | t        |f|	|
d               } | t        |f|	|
d               }|||||fS )Nr   Fr,   zNeed 3 qparams for X, w, br   )r{   rr   r   rZ   )r:   rL   rG   r   rJ   rangeappendrI   booleansrH   r6   rC   )rM   spatial_dimbatch_size_rangeinput_channels_per_group_rangeoutput_channels_per_group_rangefeature_map_rangekernel_range
max_groupscan_be_transposedrr   r   
batch_sizeinput_channels_per_groupoutput_channels_per_groupgroupsinput_channelsoutput_channelsfeature_map_shapeikernelstrweight_shape
bias_shaper}   Wbs                             r   tensor_convr   )  s    bkk#345J#
34 6 $
45!7"++a,-F-6N/&8O+x(2??;78; H  bkk3D&E!FGH G; 9tBKK6789 
B#%=>wOL J"++- *,EFwWL(J ge}-w<1$B&BB$i!mGV	^$u->'??B71:/ 	0A 	VL?X#AJ( 	)AVJ=8#AJ( 	)A aFBr   deadline)r,   r0   r   )r[   r   r   timeoutc                      t         dk  r)dd l} dt        j                   }| j	                  |       y t               j                  J y )N)r,      r   r   zwYour version of hypothesis is outdated. To avoid `DeadlineExceeded` errors, please update. Current hypothesis version: )hypothesis_versionwarningsr3   __version__warnr   r   )r   warning_messages     r   assert_deadline_disabledr   i  sK    J&++5+A+A*BD 	
 	o&z""***r   )NNNNN)r   Nr   NN)NNN)
rZ   )r      r,      r   )      r   r   FNN).collectionsr   collections.abcr   r	   r   r   r3   	functoolsr   r   r   r   r:   hypothesis.extraru   hypothesis.strategiesr
   (torch.testing._internal.common_quantizedr   r   quint8qint8qint32rF   rK   r)   r@   r;   rD   	compositer   rk   r   rC   r   r   r4   r5   r   	_profiles_current_profile__dict__current_settings	unlimitedr   r   r   r   <module>r      s   $ $       ' * 0 w 
LL	KK	LL #<	LL$	KK	LL!2  8&6,
 9=04- -8 & &" tT & &0 , ,>.^ *0#)>E9>5 5t  ''88 %%h&?&?@II #  #(:Y(F","6"6Y
+r   