
    Q-j                         d dl mZmZmZmZ d dlmZmZmZ d dl	m
Z
mZmZ d dlmZmZmZmZ 	 	 	 ddededed	ed
ede
defdZy)    )arangearraypolyfitstd)	DataFrameDatetimeIndexSeries)DictLikeIntList)v_listv_lowerboundv_offsetv_seriesNcloselengthstdsddofoffsetkwargsreturnc           	         d}|| j                   }n$t        |dd      }| j                  | d } | d| }t        | d      } | yt	        |g d      }t        |      dk  ryt        d t        ||d	d       D              s|ddd
   }t        |t              rd|cxk  r|k  rn nt        |      nd	}t        |      }| j                  x}}t        | j                  t              rt        |      }t        |       } t        || d	      \  }	}
t!        |	|z  |
z   |      }t#        | |      }t%        | d|i|      }|D ]_  }|||z  z
  || d| <   |||z  z   || d| <   | x|| d|    _        || d|    _        dx|| d|    _        || d|    _        a |dk7  r|j+                  |      }d|v r|j-                  |d   d       | |_        d|_        |S )a   TD Ameritrade's Think or Swim Standard Deviation All

    This indicator returns the standard deviation(s) over all the bars or the
    last ```n``` (length) bars.

    Sources:
        * [thinkorswim](https://tlc.thinkorswim.com/center/reference/thinkScript/Functions/Statistical/StDevAll)

    Parameters:
        close (Series): ```close``` Series
        length (int): Bars since current/last bar, Series[-1]. Default: ```None```
        stds (list): List of standard deviations in increasing order from the
            central Linear Regression line. Default: ```[1,2,3]```
        offset (int): Post shift. Default: ```0```

    Other Parameters:
        fillna (value): ```pd.DataFrame.fillna(value)```

    Returns:
        (DataFrame): 7+ columns

    Note:
        * TA Lib does not have a ```ddof``` parameter.
        * The divisor used in calculations is: ```N - ddof```, where ```N```
            is the number of elements. To use ```ddof```, set ```talib=False```.

    Danger:
        Possible Data Leak
    TOS_STDEVALLN      _)   r      r   c              3   ,   K   | ]  \  }}||k    y w)N ).0ijs      o/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/pandas_ta/statistics/tos_stdevall.py	<genexpr>ztos_stdevall.<locals>.<genexpr>=   s     5!4Aq1u!4s   r   )index)r   _LR_L__U_
statisticsfillnaT)inplace)sizer   ilocr   r   minallzip
isinstanceintr   r'   r   r   r   r   r	   r   r   namecategoryshiftr,   )r   r   r   r   r   r   _propsX	src_indexmblrstdevdfr"   s                  r$   tos_stdevallr@   	   s4   F F~fa,

F78$81VH%UAE}$	"D
4yA~5T48!455DbDz"4-!t2Df2D3t9!DfF KKA	%++}-6Ne1eQDAq	A		+BD!E 
vhcNB'y	9B "QYfXS "QYfXSEKHMfXS"R6(#aS(9%:%?JVVfXS&vhc!,=)>)G	  {XXf 6
		&"D	1BGBKI    )NNNN)numpyr   r   r   r   pandasr   r   r	   pandas_ta._typingr
   r   r   pandas_ta.utilsr   r   r   r   r@   r    rA   r$   <module>rF      ss    - - 3 3 1 1 D D
 "&#'WWW
W W W #+W 	WrA   