
    ti>:              	       >   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 d dlmZmZ ej.                  ej0                  ej2                  fZ ed ej.                  dej0                  dej2                  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jF                  fd       Z$ej@                  d!d       Z%	 ej@                  	 	 	 	 	 d"d       Z& e' e(e) ed      jU                  d      dd             Z+de+cxk  rdk  r"n n ejX                  dejZ                         n ejX                  dd        ej\                  d       d Z/y)#    )defaultdict)IterableN)reduce)version)assume)settings)
strategies)numpy)SearchStrategy)_calculate_dynamic_qparams&_calculate_dynamic_per_channel_qparamsc                       y )N r       n/home/ubuntu/crypto_trading_bot/.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    )0&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)          @   )
hypothesisr   __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@   4   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,   r2   )r@   )r<   r=   s     r   r;   r;   O   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   c   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)   r2   )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_maxquantized_type
_type_infoqminqmax_zp_enforcedr"   _zp_min_zp_maxr!   s                  r   r    r    x   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).r2         )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_siderc   	candidates        ` r   array_shapesrl      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    .    .AFr2   r/   r,   dtypeelementsshaper0   r/   r,   r[   )rG   r   r:   rJ   r;   stnparraysr   r   isnananyisinfr*   r   rK   get)rM   shapesrs   r    rr   _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 )Nrn   ro   Fr2   rp   rq   ru   r[   r   r   )rG   r   r:   rJ   r;   rv   rw   r   r   r   rx   ry   rz   r*   r   rK   r{   r`   randomrandintndimarange	transpose)rM   r|   rs   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                  |            }t        |      D cg c]  } | t        j                  |        }}t        |      D cg c]  } | 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 c c}w c c}w )Nr   Fr-   zNeed 3 qparams for X, w, br   )r|   rs   r    r[   )r:   rL   rG   r   rJ   rangerI   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_transposedrs   r    
batch_sizeinput_channels_per_groupoutput_channels_per_groupgroupsinput_channelsoutput_channels_feature_map_shape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HMkHZ[1bkk+<=>[[9>{9KLAtBKK./LGL	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9 \Ls   'G
Gr4   .r-   )r-   r1   r   r-      r   no_deadline)timeout)deadlinec                      t         dk  r+ddl} dt        j                   }| j	                  |d       yt               j                  J y)zICheck that deadlines are effectively disabled across Hypothesis versions.r   r   NzwYour version of hypothesis is outdated. To avoid `DeadlineExceeded` errors, please update. Current hypothesis version: r[   )
stacklevel)hypothesis_versionwarningsr4   __version__warnr   r   )r   warning_messages     r   assert_deadline_disabledr   o  sO    J&++5+A+A*BD 	
 	o!4z""***r   )NNNNN)r   Nr   NN)NNN)
r[   )r      r-      r   )      r   r   FNN)0collectionsr   collections.abcr   r
   r   r   r4   	functoolsr   importlib.metadatar   r   r   r	   r:   hypothesis.extrarv   hypothesis.strategiesr   (torch.testing._internal.common_quantizedr   r   quint8qint8qint32rF   rK   r*   r@   r;   rD   	compositer    rl   r   rC   r   r   rI   rf   r`   splitr   register_profile	unlimitedload_profiler   r   r   r   <module>r      s   $ $     &   ' * 0 w 
LL	KK	LL #<	LL$	KK	LL!2  8&6,
 9=04- -8 & &" tT & &0 , ,>.^ *0#)>E9>1 1n 3sGL$9$?$?$DRa$HIJ #0j0HmZ5I5IJ Hmd;   m $+r   