NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #4956 most downloaded on PyPI
Python wrapper for TA-Lib
Last release 13 days ago
21 Sep 2026
Ships unpredictably
gaps range from 8 days to 9 months
Nearly every release is documented
notes for 53 of 53 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
53 releases · first in 2015
[CHANGE]: talib.stream is now the real streaming API of TA-Lib C 0.8.1: stream.SMA(close) returns a handle, not a value. handle.value is the value at
[CHANGE]: talib.stream is now the real streaming API of TA-Lib C 0.8.1: stream.SMA(close) returns a handle, not a value. handle.value is the value at the last history bar, handle.update(bar) costs O(1) and returns that bar's value, handle.peek(bar) evaluates a forming bar without committing it, and handle.copy() forks it. stream.SMA.open_and_fill() returns the handle and the Function API's series in one pass. A multi-output function answers with the same tuple the Function API returns. The old last-value functions -- talib.stream.SMA, talib.stream_SMA, and their _ta_lib.pyi stubs -- are gone; talib/stream.pyi types the handles instead.
Migrating is stream.X(...) -> stream.X(...).value, and the compiler cannot find the sites for you: if stream.CDLDOJI(o, h, l, c): used to test the pattern and now tests a handle, which is always true.
[NEW]: talib.InsufficientHistory, raised when a stream is opened with too little history. It is the library's one recoverable error, so it is catchable on its own rather than as a bare Exception.
[FIX]: help(talib.SUPERTREND) and the abstract stub named the outputs real and integer; they are supertrend and trend, the names abstract.Function('SUPERTREND').output_names already reported.
[FIX]: An empty array given to a function whose lookback is zero, such as talib.ACOS or talib.MA(x, timeperiod=1), made TA-Lib read and write one element outside the buffers, which could crash the interpreter later or corrupt memory silently. An empty input now returns empty outputs without calling TA-Lib, whatever the function and its parameters. The bug dates from 0.4.27.
One column per quarter.
'RSI' set PLUS_DM ); ids now come from the C header. 'ADXR' , 'MFI' and 'STOCHRSI' are no-ops that emit a DeprecationWarning .
[NEW]: Support TA-Lib C 0.8.1, which is now the minimum required version.
[NEW]: The 40 functions TA-Lib C added since 0.7.1: AC, ADR, AO, CMF, CMOU, COPPOCK, CUMSUM, CVI, DONCHIAN, DPO, EFI, ER, ERI, FOSC, FRACTAL, HA, HMA, KC, KDJ, MARKETFI, MASSI, NVI, PERCENTILE, PERCENTRANK, PVI, PVO, PVT, QSTICK, RMA, RVI, RVOL, SMI, SUPERTREND, TSI, VHF, VORTEX, VWAP, VWMA, WAD, ZLEMA.
[NEW]: New moving averages: MA_Type.HMA, MA_Type.DISABLED, MA_Type.DEFAULT, MA_Type.ZLEMA and MA_Type.RMA.
[NEW]: set_unstable_period() and get_unstable_period() accept 'RMA', 'HA' and 'RVI'.
[FIX]: abstract raised KeyError on function and output flags added after this wrapper was written; unknown flag bits are now ignored.
[FIX]: A moving-average parameter not spelled exactly matype -- KDJ's slowk_matype -- defaulted to SMA rather than to the function's own documented default.
[FIX]: An integer output is documented as the candlestick -100/0/100 convention only for candlestick functions; SUPERTREND's is a trend direction.
[CHANGE]: APO and PPO now default matype to EMA, and BBANDS defaults timeperiod to 20, following TA-Lib C 0.8.1.
[FIX]: set_unstable_period() targeted the wrong function for every id after IMI (e.g. 'RSI' set PLUS_DM); ids now come from the C header. 'ADXR', 'MFI' and 'STOCHRSI' are no-ops that emit a DeprecationWarning.
[CHANGE]: Remove the unnecessary build runtime dependency and wheel build dependency.
[NEW]: Upgrade to Cython 3.3.0
[FIX]: Fix wheels to build with TA-Lib C 0.7.1 properly.
[NEW]: Upgrade to latest TA-Lib upstream C library v0.7.1 release
[NEW]: Upgrade to latest TA-Lib upstream C library v0.7.1 release
[NEW]: Upgrade to Cython 3.2.8
[FIX]: Adding ACCBANDS, AVGDEV, IMI to get_func_groups()
[FIX]: Adding ACCBANDS, AVGDEV, IMI to docs pages
[NEW]: Adding an abstract.pyi for typing
[FIX]: Remove accidental cython dependency.
[FIX]: Remove accidental cython dependency.
[NEW]: Upgrade to Cython 3.1.5
[NEW]: Release binaries for Python 3.14
[FIX]: Include .pxd files in the source .tar.gz
[NEW]: Upgrade to Cython 3.1.3
[FIX]: Include .pxd files in the source .tar.gz
[FIX]: Don't require pip, it's not needed
[FIX]: Add back some import compat for backtrader
[FIX]: Silence project.license warnings when building.
[FIX]: Silence project.license warnings when building.
[FIX]: Fix regression in abstract function parameters not coercing integers
[FIX]: Support PEP-517 style installation
[FIX]: Support PEP-517 style installation
[NEW]: Upgrade to Cython 3.1.2
[NEW]: Build binary wheels for Windows, macOS, and Linux.
[FIX]: Fix for numpy 2.3.0, which removed the npy_1_7_deprecated_api
[FIX]: Adding typed for ACCBANDS, AVGDEV, IMI, and stream_* functions
[FIX]: Fix for numpy 2.3.0, which removed the npy_1_7_deprecated_api
possibly fix issues building against numpy2
possibly fix issues building against numpy2
[NEW]: Adding indicators ACCBANDS, AVGDEV, IMI
[FIX]: Build properly against TA-Lib 0.6.2 and newer on Windows.
[FIX]: Make sure this wrapper works with TA-Lib 0.6.1 and newer releases.
remove global include_dirs
remove global include_dirs
[FIX]: Fix lib name on windows.
[BUG]: Make this release only support TA-Lib 0.4.0.
[NEW]: Provide py typed information for C wrapper
[NEW]: Provide py typed information for C wrapper
[FIX]: Make sure this wrapper works with TA-Lib 0.6.1
[FIX]: include cython *.pxi files in the source tar.gz
- [NEW]: Upgrade to Numpy 2.0
[FIX]: Fix lib name on windows.
[FIX]: Make sure to pin numpy<2 in the setup.py.
[BUG]: Make this release only support TA-Lib 0.4.0
[FIX]: Make sure this wrapper works with TA-Lib 0.6.1
[FIX]: include cython *.pxi files in the source tar.gz
[NEW]: Upgrade to Cython 3.0.11
[NEW]: Upgrade to Cython 3.0.11
[FIX]: Fix import of pandas and polars to throw underlying import errors
[FIX]: Make sure numpy<2 is in the requirements.txt
[FIX]: Fix build issue with numpy2 released by requiring numpy<2.0.0 for now
[FIX]: Fix the C library imports to work again on Windows, oops.
[NEW]: Upgrade to Cython 3.0.10
[NEW]: Upgrade to Cython 3.0.10
[FIX]: Make TA_INCLUDE_PATH and TA_LIBRARY_PATH override default search list
[FIX]: Silent some compiler warnings about const pointers
[FIX]: Use embedsignature to enable code completions?
[NEW]: Upgrade to Cython 3.0.0
[FIX]: Use embedsignature to enable code completions?
[NEW]: Upgrade to Cython 0.29.36
[NEW]: Upgrade to Cython 0.29.36
[FIX]: Fix abstract info to keep values doubles when they are (e.g., nbdevup, nvdevdn)
[FIX]: Don't throw exceptions when inputs are all NaN
[FIX]: Fix deprecation warning for polars.DataFrame(columns=[...])
[NEW]: Upgrade to Cython 0.29.34
[NEW]: Moved to https://github.com/ta-lib/ta-lib-python
[FIX]: Fix deprecation warning for polars.DataFrame(columns=[...])
[NEW]: Upgrade to Cython 0.29.32
[NEW]: Upgrade to Cython 0.29.32
[FIX]: Allow Abstract API to be safely used with multithreading
[FIX]: runtime_lib_dirs preventing install on Windows
[NEW]: Upgrade to Cython 0.29.25
[NEW]: Upgrade to Cython 0.29.25
[NEW]: Allow TA_INCLUDE_PATH and TA_LIBRARY_PATH to work on Windows.
[FIX]: Remove pyproject.toml which was preventing some installs.
[NEW]: Upgrade to Cython 0.29.24
[NEW]: Upgrade to Cython 0.29.24
[NEW]: Support polars.Series in Function API
[NEW]: Support polars.Series in Streaming API
[NEW]: Support polars.DataFrame in Abstract API
[NEW]: Switch tests to pytest from nose (no longer supported).
[FIX]: Fixed {MIN/MAX/MINMAX}INDEX functions to return correct indices.
[NEW]: Upgrade to Cython 0.29.23
[NEW]: Upgrade to Cython 0.29.23
[FIX]: Fix Homebrew directory on Apple M1 devices
[NEW]: Upgrade to Cython 0.29.20
[NEW]: Upgrade to Cython 0.29.20
[NEW]: from talib import * (imports all func and stream)
[FIX]: missing method signatures in PyCharm
[NEW]: Upgrade to Cython 0.29.17
[NEW]: Upgrade to Cython 0.29.17
[NEW]: Support TA_SetCompatibility
[NEW]: Reduce size of generated C file and memory requirements to compile it.
[FIX]: Fixed caching input price series in Abstract API
[NEW]: Support pandas.Series in Streaming API
[NEW]: Support pandas.Series in Function API
[FIX]: Fix incorrect C header include on Windows.
[FIX]: Import TA_FUNC_FLAGS, TA_INPUT_FLAGS, TA_OUTPUT_FLAGS into talib.abstract to support backwards compatibility for backtrader
[NEW]: Upgrade to Cython 0.27.3
[NEW]: Upgrade to Cython 0.27.3
[NEW]: Add support for set/restore candle settings
[DOC]: Note Function API only supports numpy.ndarray (not pandas.Series)
[NEW]: Continuous integration using Travis on Python 2.7, 3.4, 3.5, 3.6
[NEW]: Merge common, func, abstract, stream as pxi to _ta_lib.pyx
[DOC]: Update documentation to warn about unstable functions
[NEW]: Support for python 2.6 and earlier for ordereddict.
[NEW]: Support for python 2.6 and earlier for ordereddict.
[FIX]: Add lib64 paths to setup.py.
[NEW]: Upgrade to Cython 0.22.
[FIX]: Allow running setup.py without numpy or cython
[NEW]: Allow TA_LIBRARY_PATH and TA_INCLUDE_PATH environment variables.
[NEW]: Support pandas.Series and pandas.Dataframe inputs.
[NEW]: Support pandas.Series and pandas.Dataframe inputs.
[FIX]: Simple check to warn if ta-lib library is not installed
[FIX]: Fix missing key error when inputs are not default names.
[NEW]: Upgrade to Cython 0.20.
[FIX]: Check all input array lengths are same.
[FIX]: Check all input arrays for NaN elements.
[NEW]: Upgrade to Cython 0.19.1.
[NEW]: Upgrade to Cython 0.19.1.
[FIX]: Fix "periods" input arrays in abstract interface.
[FIX]: Only require necessary input arrays in abstract interface.
[NEW]: Support for function_flags and output_flags properties in Functions
[NEW]: Better test coverage of abstract interface.
[NEW]: Better test coverage of abstract interface.
[NEW]: Support for Python 3.
[FIX]: Make installation on Windows easier.
[DEPRECATED]: The old moving average types that were in talib.func are now deprecated. See the next bullet item for the replacement, or you can contin…
[NEW]: Upgrade to Cython 0.18.
[FIX]: Improve docstrings for indicators in talib.func.
[FIX]: Initialize and shutdown underlying TA-Lib only once each process. This should give slight speedups when using many indicators (<5%).
[DEPRECATED]: The old moving average types that were in talib.func are now deprecated. See the next bullet item for the replacement, or you can continue using them with "from talib import deprecated" for the time being.
[NEW]: The new moving average types are in talib.MA_Type. It's a class with SMA, EMA, DEMA, etc attribute variables you should now use. Human-readable lookups are also possible by using MA_Type as a dict e.g.:
MA_Type[MA_Type.SMA] # returns "Simple Moving Average"
[NEW]: In addition to the existing func interface, we now provide an enhanced abstract interface too. Functions in "import talib" use the original interface, or you can use "from talib import abstract" for the full abstract interface. See the README, tools/example.py and tests/abstract_test.py for more information. The full (commented) source code is mostly located in talib/abstract.pyx. The basic usage is very similar:
input_arrays = { 'open': np.random.random(100), 'high': np.random.random(100), 'low': np.random.random(100), 'close': np.random.random(100), 'volume': np.random.random(100) } ema_20 = abstract.Function('ema', input_arrays, 20).outputs # function names not case-sensitive slowd, slowk = abstract.Function('STOCH')(input_arrays, 15, 3, 0, 3, 0) upper, middle, lower = abstract.Function('bbands')(input_arrays, timeperiod=20)
Move the functions into talib.func, to prepare for talib.abstract in a future release.
talib.func, to prepare for talib.abstract
in a future release.- Support for MacPorts. - Fix for FreeBSD.
Your coding agent can read these notes before it upgrades. Set up the MCP server →