
    >qjG                     l   d dl Z d dlZd dlmZmZmZmZmZ ddl ddl	mZ ddl	m
Z
 ej                  ZdZg dZg d	Zd
diZd Zh dZd ZdZdZdZdZdZdZdZdZi d ee      d eddd      d eddgddde       d! eddd"gdd#      d$ eddgdd#      d% eddd"gdde&      d' eddd"gdde&      d( eddd"gdde&      d) eddgdd#      d* eddgdd#      d+ eddg,      d- eddd.gde/      d0 eddd.gde/      d1 eddd.gde/      d2 eddd.gde/      d3 ed4      d5 eddgdd#      i d6 eddgdd#      d7 eddgdd#      d8 eddgdd#      d9 eddg,      d: eddd.gd;      d< eddg,      d= edd>?      d@ eddgdddAB      dC eddgdddAB      dD eddd"gdd#      dE eddddFG      dH eddd"gdd#      dI eddgdddJB      dK edg dLM      dN eddd"gdd#      dO eddd"gdd#      dP eddd"gdd#      i d
 eddd"gdd#      dQ eddgdd#      dR eddg,      dS eddg,      dT edUgV      dW eddd"gdd#      dX eddYZ      d[ eddYZ      d\ eddYZ      d] eddgdd^      d_ eddd`      da eddgd;      db eddd"gdd^      dc eddd"gdd^      dd eddd"gdd^      de eddd"gdd^      df eddd"gdd^      i dg eddd"gdd^      dh eddd"gdd^      di eddd"gdd^      dj edd>?      dk eddgdddlm      dn eddgdddom      dp eddd"gdd^      dq eddd"gdd#      dr eddd"gdsgt      du eddgdddlm      dv eddgdd#      dw eddgdd#      dx eddg,      dy eddd`      dz eddgd{d|g}      d~ eddgdd{ge      d eddg,      i d eddg,      d eddgdd      d eddg      d ed      d eddgdd#      d eddgdd#      d eddgdd#      d eddd`      d eddgg d}      d eddd"gdd#      d eddgdd#      d eddgdd#      d eddgdd#      d eddg,      d eddgddde       d eddd"gdd^      d eddd.gdddm       eddgdd#       eddgdde&       ed4       ed4       ed4       ed4      dZej                  D ]l  Z eee      Z ee
edz   d      Zere  eee      e      Z neZ  e!e ejD                        s!ejG                  e eee            Z$ e$e       Z e  e%       e<   n y)    N)is_cupyis_jaxscipy_namespace_forSCIPY_ARRAY_APIxp_capabilities   )*)_signal_api)_delegatorssignal)	fftconvolveconvolve
convolve2d	correlatecorrelate2dcsddetrendistftwelch)abcd_normalizebesselbesselapenvelope
get_window
lfilter_zi
sosfilt_ziremez	freqz_sossosfreqzc                       fd}|S )Nc                 H     t        j                          fd       }|S )Nc                  F   	  | i |}t        |      rzj                  t        vrht
        j                  j                  j                        }dd l}|j                  d       }t        ||      }|j                  dd         || i |S t        |      rYj                  t        v rGt        |      }t        |      }	t        |	j                        }
|j                  dd         |
| i |S  | i |S # t         $ r j                  dk(  rdd l}|}n Y w xY w)Ntf2ssr   zcupyx.scipy.xp)	TypeError__name__numpyr   CUPY_BLACKLISTCUPY_RENAMESget	importlibimport_modulegetattrpopr   JAX_SIGNAL_FUNCSr   )argskwdsr$   np	func_namer+   cupyx_module
cupyx_funcspx
jax_modulejax_func	delegatorfuncmodule_names              i/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/signal/_support_alternative_backends.pywrapperz+delegate_xp.<locals>.inner.<locals>.wrapper#   s!   -- r{t}}NB(,,T]]DMMJ	 !(66k]7ST$\9=
t$!404001A A)"-$S+6
":t}}=t$... T*T**5  ==G+&B 	s   C< < D D )	functoolswraps)r:   r=   r9   r;   s   ` r<   innerzdelegate_xp.<locals>.inner"   s%    			+ 
	+<      )r9   r;   r@   s   `` r<   delegate_xprC   !   s     B LrA   >)   r   cztbodelsimstepchirpdbodedlsimdstepr   ss2tfr#   r   ss2zpkzpk2ssfreqrespsawtoothsepfir2dzoom_fft	argrelmax	argrelmin	coherence	dfreqresp	iirdesign
check_NOLA
czt_points
find_peaks
gausspulse
sweep_polylombscarglemax_len_seqpeak_widthsperiodogramplace_polessymiirorder1symiirorder2unit_impulseargrelextremaband_stop_objfind_peaks_cwtpeak_prominencesc                 B    || t         v rt        d      S t               S )NTnp_only)untestedr   )r3   r9   s     r<   get_default_capabilitiesrm   v   s#    I1t,,rA   z*CuPy does not accept complex inputs.

    zCuPy does not support inputs with ``ndim>1`` when ``method="auto"``
    but does support higher dimensional arrays for ``method="direct"``
    and ``method="fft"``.

    z0CuPy only supports ``padtype="constant"``.

    z>CuPy only supports ``mode="constant"`` and ``cval=0.0``.

    zoThe ``torch`` backend on GPU does not support the case where
    `wp` and `ws` specify a Bandstop filter.

    zLThe JAX backend only supports ``boundary="fill"`` and ``fillvalue=0``.

    z;The CuPy and JAX backends both support only 1d input.

    z|The result dtype when all array inputs are of integer dtype is the
    backend's current default floating point dtype.

    r   )
extra_noter   TF)cpu_onlyjax_jitallow_dask_computebilinearcupyzUses np.polynomial.Polynomial)ro   
exceptionsrp   rq   reasonrn   bilinear_zpktorch)ro   rt   rp   rq   butterbuttord)ro   rt   rp   rq   rn   cheb1ordcheb2ordcheby1cheby2cont2discrete)rk   rt   r   	jax.numpy)ro   rt   rq   rn   r   r   r   correlation_lags)out_of_scope	cspline1dcspline1d_eval	cspline2d
deconvolvedecimater   )ro   rt   rq   dimpulsedltiz-works in CuPy but delegation isn't set up yet)rk   ru   ellipzscipy.special.ellipk)ro   rt   rp   rq   ru   ellipord	findfreqsfirlslstsq)ro   rq   rp   ru   firwinfirwin2zfirwin uses np.interpr   )rs   r   rw   )ro   rt   freqs	freqs_zpkfreqzgroup_delayinvresinvresziircomb)r   
inaccurate)xfail_backends	iirfilterkaiser_attenzscalars in, scalars out)r   ru   kaiser_beta	kaiserordlfilter)ro   rt   rq   rp   r   )ro   rq   rp   lfilticlp2bp	lp2bp_zpklp2bs	lp2bs_zpklp2lp	lp2lp_zpklp2hp	lp2hp_zpkltimedfiltzuses scipy.ndimage.rank_filter)ro   rt   rq   rp   ru   	medfilt2dzc extension moduleminimum_phase	normalize
oaconvolve)
dask.arrayzwrong answer)ro   rt   r   order_filter	qspline1dqspline1d_eval	qspline2dr   resample)r   zXXX something in dask)r   zXXX: immutable arrays)ro   rt   skip_backendsresample_poly)ro   rt   rp   r   rn   residueresiduezsavgol_filterzconvolve1d is cpu-only)ro   rt   rp   ru   rP   )r   zdask tests fail)rp   r   rQ   rj   sos2zpksos2tfsosfiltr   sosfiltfilt))r   zLsosfiltfilt directly sets shape attributes on arrays which dask doesn't like)rw   znegative strides)r   zsosfilt works in-placespline_filtertf2sostf2zpkunique_rootsupfirdnzCython implementationvectorstrengthwienerzuses scipy.signal.correlate)zpk2soszpk2tfspectrogramstftr   
check_COLA
_signature)&r>   typesscipy._lib._array_apir   r   r   r   r   r
    r   __all__MODULE_NAMEr/   r(   r)   rC   rl   rm   bilinear_extra_noteuses_choose_conv_extra_noteresample_poly_extra_noteupfirdn_extra_notexord_extra_noteconvolve2d_extra_notezpk2tf_extra_noteabcd_normalize_extra_notecapabilities_overridesobj_namer-   bare_objr9   f
isinstance
ModuleTyper*   capabilitiesvarsrB   rA   r<   <module>r      s        


 
  Z("P*Z        Lo1JKLotUtTL 6((-$'F+>@L OTvw>O,1dLL ot%157L &'9J',*9;L 67:K(-$+:<L" 67:K(-$+:<#L( ot%157)L. ot%157/L2 _TvhG3L4 6;:O37+FH5L: /4V[<Q59-BD;L@ $FK;P48,GIALF ?Dfk=R6:.CEGLL T:MLN $F8).4IOLR ot.3NSLV $F8).4IWLZ /4VH*/DJ[L^ &B_L` &+9N268aLd &BeLf OD#RTgLj _dx04$:<kLp 6((-$'=?qLv $FG;L).4IwLz _dtU$+-{L~ ot8I&+FLB &',&=?CLH ?D.LNILL _d7H%*tEMLP $FG;L).4IQLT _d7H%*tEULX $FG;L).4IYL\ ?DfX+0TK]L` odx@aLb tAcLd /J.KLeLf $FG;L).4IgLj O";kLp ?=VWqLr d;TUsLt &26GuLx /4D*/1yL| &268}L@ _d7H04eEALD $FG;L48%IELH _d7H04eEILL $FG;L48%IMLP _d7H04eEQLT $FG;L48%IULX _d7H04eEYL\ $FG;L48%I]L` 
?4#RTaLd &26&FHeLj $F848%(<>kLp _d?P8<eMqLt $FG;L).4IuLx /67"367yL@ OTvh7;U+KMALF $F8).4IGLJ ot.3NKLN 6(COLP _dtUSQLR 6(32
SL` _6(&M%N+aLj tAkLl &BmLn _dx-2,DFoLt /P.QSuLx -yLz &5268{L~ ot%157LB &5268CLF /4D*/1GLJ ?6(
KLb 67:K(-$HcLf _dx-2tMgLj ot%157kLn ot%157oLr ODfXFsLt &526&=*<>uL| ot@Q9=uN}L@ ot8M15u%BDALF &5268t%15):< #5.$/!t4WL ` ## H{H-HX%<dCI90/K	;/9a))*-11.xC
 O DF8!rA   