kand


Namekand JSON
Version 0.1.1 PyPI version JSON
download
home_pageNone
SummaryA high-performance technical analysis library written in Rust with Python bindings.
upload_time2025-02-27 05:28:50
maintainerNone
docs_urlNone
authorCtrlX <gitctrlx@gmail.com>
requires_python>=3.8
licenseApache-2.0 OR MIT
keywords ta ta-lib finance quant indicator technical-analysis
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <h1 align="center">
  <img src="docs/assets/logo.png" alt="Kand Logo" width="250">
</h1>
<div align="center">
  <a href="https://crates.io/crates/kand">
    <img src="https://img.shields.io/crates/v/kand.svg" alt="Crates.io"/>
  </a>
  <a href="https://docs.rs/kand">
    <img src="https://docs.rs/kand/badge.svg" alt="Docs.rs"/>
  </a>
  <a href="https://pypi.python.org/pypi/kand">
    <img src="https://img.shields.io/pypi/v/kand.svg" alt="PyPI Version"/>
  </a>
  <a href="https://pypi.python.org/pypi/kand">
    <img src="https://img.shields.io/pypi/pyversions/kand.svg" alt="Python Versions"/>
  </a>
  <a href="https://github.com/rust-ta/kand/actions/workflows/CI.yml">
    <img src="https://github.com/rust-ta/kand/actions/workflows/CI.yml/badge.svg" alt="CI Status"/>
  </a>
  <a href="https://pypi.python.org/pypi/kand">
    <img src="https://img.shields.io/pypi/l/kand.svg" alt="License"/>
  </a>
</div>
<p align="center">
  <b>Documentation</b>:
  <a href="https://docs.rs/kand">Rust</a>
  -
  <a href="https://rust-ta.github.io/kand/">Python</a>
  |
  <b>Repository</b>:
  <a href="https://github.com/rust-ta/kand">GitHub</a>
</p>
<h2 align="center">
  <b>Kand: A Blazingly Fast Technical Analysis Library, written in Rust.</b>
</h2>

> ⚠️ **Development Status**: This project is under active development. APIs may change, and some features might not be fully implemented or tested yet. Contributions and feedback are welcome!

<p align="center">
  <picture align="center">
    <img alt="EMA Performance Comparison" src="docs/assets/bench_ema.png" width="600">
  </picture>
</p>

<p align="center">
  <i>EMA calculation performance comparison across different implementations.</i>
</p>

## Why Kand?

- **⚡ Unmatched Performance**
  Built in Rust, delivering blazing speed and memory safety, rivaling TALib’s peak.

- **🔓 Multithreading Unleashed**
  Breaks free from Python’s GIL, enabling seamless parallel processing beyond single-threaded limits.

- **⚙️ Real-Time Incremental Core**
  O(1) complexity updates, redefining high-efficiency computation.

- **🚀 Native Zero-Copy**
  Deeply integrated with NumPy, ensuring lossless data flow at maximum speed.

- **📊 Pioneering Indicators**
  Features advanced tools like TPO, VWAP, and Supertrend, pushing analysis frontiers.

- **📦 Lightweight & Effortless**
  Ultra-compact package with one-line install—no bloat, no complex dependencies.

- **💻 Universal Compatibility**
  Runs flawlessly across macOS, Linux, and Windows.

Dive deeper at our [official documentation](https://rust-ta.github.io/kand/about).

#### Python API

The Python interface of `kand` leverages PyO3 for ultra-low latency bindings (~7ns overhead) to the Rust core, seamlessly integrating with NumPy for zero-copy operations and true thread-safe calculations. Below are examples for batch and incremental usage.

```python
import numpy as np
from kand import ema

# Batch EMA computation with zero-copy NumPy integration
prices = np.array([10.0, 11.0, 12.0, 13.0, 14.0], dtype=np.float64)
ema_values = ema(prices, period=3)

# Incremental EMA update for streaming data
prev_ema = 13.5
new_price = 15.0
new_ema = ema_incremental(new_price, prev_ema, period=3)
```

**Key Features:**

- **Zero-Copy**: Operates directly on NumPy arrays, avoiding memory duplication.
- **GIL-Free**: Rust backend releases the Python GIL, enabling parallel execution.
- **Incremental Updates**: O(1) complexity for real-time applications.

---

#### Rust API

The Rust interface in `kand` provides a high-performance, type-safe implementation of EMA with flexible parameter control. It supports both Vec and ndarray inputs for batch and incremental calculations, as shown below.

```rust
use kand::ohlcv::ema;
use ndarray::Array1;

// Batch EMA calculation over a price series
let prices = vec![10.0, 11.0, 12.0, 13.0, 14.0];
let mut ema_values = vec![0.0; prices.len()];
ema::ema(&prices, 3, None, &mut ema_values)?;

// Batch EMA with ndarray for scientific workflows
let prices = Array1::from_vec(vec![10.0, 11.0, 12.0, 13.0, 14.0]);
let mut ema_values = Array1::zeros(prices.len());
ema::ema(&prices, 3, None, &mut ema_values)?;

// Constant-time incremental EMA update
let prev_ema = 13.5;
let new_price = 15.0;
let new_ema = ema::ema_incremental(new_price, prev_ema, 3, None)?;
```

**Key Features:**

- **Memory Efficiency**: Leverages mutable buffers (`&mut Vec<f64>` or `&mut Array1<f64>`) to store results, slashing memory allocations.
- **Error Handling**: Returns `Result<(), KandError>` or `Result<f64, KandError>` for reliable failure detection (e.g., invalid period, NaN inputs).
- **Incremental Design**: O(1) updates tailored for real-time systems.

---

## Setup

### Python

Get started with Kand in one command - no extra configuration needed:

```bash
pip install kand
```

### Rust

You can take latest release from [`crates.io`](https://crates.io/crates/kand), or if you want to use the latest features / performance improvements point to the `main` branch of this repo.

```toml
[dependencies]
kand = { git = "https://github.com/rust-ta/kand", rev = "<optional git tag>" }
```

Recommend Rust version `>=1.80`.

## Functions List

### OHLCV Based

- [x] **AD** - Chaikin A/D Line
- [x] **ADOSC** - Chaikin A/D Oscillator
- [x] **ADR** - Average Daily Range **[Untested]**
- [x] **ADX** - Average Directional Movement Index
- [x] **ADXR** - Average Directional Movement Index Rating
- [ ] **APO** - Absolute Price Oscillator
- [x] **AROON** - Aroon
- [x] **AROONOSC** - Aroon Oscillator
- [x] **ATR** - Average True Range
- [x] **BBANDS** - Bollinger Bands
- [x] **BOP** - Balance Of Power
- [x] **CCI** - Commodity Channel Index
- [x] **CDL_DOJI** - Doji
- [x] **CDL_DRAGONFLY_DOJI** - Dragonfly Doji
- [x] **CDL_GRAVESTONE_DOJI** - Gravestone Doji
- [x] **CDL_HAMMER** - Hammer
- [x] **CDL_INVERTED_HAMMER** - Inverted Hammer
- [x] **CDL_LONG_LOWER_SHADOW** - Long Lower Shadow
- [x] **CDL_LONG_UPPER_SHADOW** - Long Upper Shadow
- [x] **CDL_MARUBOZU** - Marubozu
- [ ] **CMO** - Chande Momentum Oscillator
- [x] **DEMA** - Double Exponential Moving Average
- [x] **DX** - Directional Movement Index
- [x] **EMA** - Exponential Moving Average
- [x] **ECL** - Expanded Camarilla Levels **[Untested]**
- [x] **HA** - Heikin Ashi Chart
- [ ] **HT_DCPERIOD** - Hilbert Transform - Dominant Cycle Period
- [ ] **HT_DCPHASE** - Hilbert Transform - Dominant Cycle Phase
- [ ] **HT_PHASOR** - Hilbert Transform - Phasor Components
- [ ] **HT_SINE** - Hilbert Transform - SineWave
- [ ] **HT_TRENDLINE** - Hilbert Transform - Instantaneous Trendline
- [ ] **HT_TRENDMODE** - Hilbert Transform - Trend vs Cycle Mode
- [ ] **KAMA** - Kaufman Adaptive Moving Average
- [ ] **LINEARREG** - Linear Regression
- [ ] **LINEARREG_ANGLE** - Linear Regression Angle
- [ ] **LINEARREG_INTERCEPT** - Linear Regression Intercept
- [ ] **LINEARREG_SLOPE** - Linear Regression Slope
- [x] **MACD** - Moving Average Convergence/Divergence **[Unstable]**
- [ ] **MACDEXT** - MACD with controllable MA type
- [ ] **MAMA** - MESA Adaptive Moving Average
- [x] **MEDPRICE** - Median Price
- [x] **MFI** - Money Flow Index **[No Incremental]**
- [x] **MIDPOINT** - MidPoint over period
- [x] **MIDPRICE** - Midpoint Price over period
- [x] **MINUS_DI** - Minus Directional Indicator
- [x] **MINUS_DM** - Minus Directional Movement
- [x] **MOM** - Momentum
- [x] **NATR** - Normalized Average True Range
- [x] **OBV** - On Balance Volume
- [x] **PLUS_DI** - Plus Directional Indicator
- [x] **PLUS_DM** - Plus Directional Movement
- [ ] **PPO** - Percentage Price Oscillator
- [ ] **RENKO** - Renko Chart
- [x] **RMA** - Rolling Moving Average **[Untested]**
- [x] **ROC** - Rate of change : ((price/prevPrice)-1)*100
- [x] **ROCP** - Rate of change Percentage: (price-prevPrice)/prevPrice
- [x] **ROCR** - Rate of change ratio: (price/prevPrice)
- [x] **ROCR100** - Rate of change ratio 100 scale: (price/prevPrice)*100
- [x] **RSI** - Relative Strength Index
- [x] **SAR** - Parabolic SAR
- [ ] **SAREXT** - Parabolic SAR - Extended
- [x] **SMA** - Simple Moving Average
- [x] **STOCH** - Stochastic **[No Incremental]**
- [ ] **STOCHF** - Stochastic Fast
- [ ] **STOCHRSI** - Stochastic Relative Strength Index
- [x] **SUPERTREND** - Super Trend Indicator
- [x] **T3** - Triple Exponential Moving Average (T3)
- [x] **TEMA** - Triple Exponential Moving Average
- [x] **TPO** - Time Price Opportunity
- [x] **TRANGE** - True Range
- [x] **TRIMA** - Triangular Moving Average
- [x] **TRIX** - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA
- [ ] **TSF** - Time Series Forecast
- [x] **TYPPRICE** - Typical Price
- [ ] **ULTOSC** - Ultimate Oscillator
- [x] **VEGAS** - VEGAS Channel and Trend Boundary EMAs **[Untested]**
- [x] **VWAP** - Volume Weighted Average Price
- [x] **WCLPRICE** - Weighted Close Price
- [x] **WILLR** - Williams' %R
- [x] **WMA** - Weighted Moving Average

### Statistical Analysis

- [ ] **ALPHA** - Alpha: Measures excess returns over market
- [ ] **BETA** - Beta: Measures sensitivity to market volatility
- [ ] **CALMAR** - Calmar Ratio: Annual return to maximum drawdown ratio
- [ ] **CORREL** - Pearson's Correlation Coefficient
- [ ] **DRAWDOWN** - Maximum Drawdown: Maximum potential loss
- [ ] **KELLY** - Kelly Criterion: Optimal position sizing
- [x] **MAX** - Highest value over a specified period
- [x] **MIN** - Lowest value over a specified period
- [ ] **SHARPE** - Sharpe Ratio: Risk-adjusted return measure
- [ ] **SORTINO** - Sortino Ratio: Downside risk-adjusted returns
- [x] **STDDEV** - Standard Deviation
- [x] **SUM** - Summation
- [x] **VAR** - Variance
- [ ] **WINRATE** - Win Rate: Strategy success probability

## Contributing

We are passionate about supporting contributors of all levels of experience and would love to see
you get involved in the project. See the
[contributing guide](https://github.com/rust-ta/kand/blob/main/CONTRIBUTING.md) to get started.


## License

This project is licensed under either of the following licenses, at your option:
- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or
  <https://www.apache.org/licenses/LICENSE-2.0>)
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <https://opensource.org/licenses/MIT>)

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in kand by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "kand",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "ta, ta-lib, finance, quant, indicator, technical-analysis",
    "author": "CtrlX <gitctrlx@gmail.com>",
    "author_email": "CtrlX <gitctrlx@gmail.com>",
    "download_url": null,
    "platform": null,
    "description": "<h1 align=\"center\">\n  <img src=\"docs/assets/logo.png\" alt=\"Kand Logo\" width=\"250\">\n</h1>\n<div align=\"center\">\n  <a href=\"https://crates.io/crates/kand\">\n    <img src=\"https://img.shields.io/crates/v/kand.svg\" alt=\"Crates.io\"/>\n  </a>\n  <a href=\"https://docs.rs/kand\">\n    <img src=\"https://docs.rs/kand/badge.svg\" alt=\"Docs.rs\"/>\n  </a>\n  <a href=\"https://pypi.python.org/pypi/kand\">\n    <img src=\"https://img.shields.io/pypi/v/kand.svg\" alt=\"PyPI Version\"/>\n  </a>\n  <a href=\"https://pypi.python.org/pypi/kand\">\n    <img src=\"https://img.shields.io/pypi/pyversions/kand.svg\" alt=\"Python Versions\"/>\n  </a>\n  <a href=\"https://github.com/rust-ta/kand/actions/workflows/CI.yml\">\n    <img src=\"https://github.com/rust-ta/kand/actions/workflows/CI.yml/badge.svg\" alt=\"CI Status\"/>\n  </a>\n  <a href=\"https://pypi.python.org/pypi/kand\">\n    <img src=\"https://img.shields.io/pypi/l/kand.svg\" alt=\"License\"/>\n  </a>\n</div>\n<p align=\"center\">\n  <b>Documentation</b>:\n  <a href=\"https://docs.rs/kand\">Rust</a>\n  -\n  <a href=\"https://rust-ta.github.io/kand/\">Python</a>\n  |\n  <b>Repository</b>:\n  <a href=\"https://github.com/rust-ta/kand\">GitHub</a>\n</p>\n<h2 align=\"center\">\n  <b>Kand: A Blazingly Fast Technical Analysis Library, written in Rust.</b>\n</h2>\n\n> \u26a0\ufe0f **Development Status**: This project is under active development. APIs may change, and some features might not be fully implemented or tested yet. Contributions and feedback are welcome!\n\n<p align=\"center\">\n  <picture align=\"center\">\n    <img alt=\"EMA Performance Comparison\" src=\"docs/assets/bench_ema.png\" width=\"600\">\n  </picture>\n</p>\n\n<p align=\"center\">\n  <i>EMA calculation performance comparison across different implementations.</i>\n</p>\n\n## Why Kand?\n\n- **\u26a1 Unmatched Performance**\n  Built in Rust, delivering blazing speed and memory safety, rivaling TALib\u2019s peak.\n\n- **\ud83d\udd13 Multithreading Unleashed**\n  Breaks free from Python\u2019s GIL, enabling seamless parallel processing beyond single-threaded limits.\n\n- **\u2699\ufe0f Real-Time Incremental Core**\n  O(1) complexity updates, redefining high-efficiency computation.\n\n- **\ud83d\ude80 Native Zero-Copy**\n  Deeply integrated with NumPy, ensuring lossless data flow at maximum speed.\n\n- **\ud83d\udcca Pioneering Indicators**\n  Features advanced tools like TPO, VWAP, and Supertrend, pushing analysis frontiers.\n\n- **\ud83d\udce6 Lightweight & Effortless**\n  Ultra-compact package with one-line install\u2014no bloat, no complex dependencies.\n\n- **\ud83d\udcbb Universal Compatibility**\n  Runs flawlessly across macOS, Linux, and Windows.\n\nDive deeper at our [official documentation](https://rust-ta.github.io/kand/about).\n\n#### Python API\n\nThe Python interface of `kand` leverages PyO3 for ultra-low latency bindings (~7ns overhead) to the Rust core, seamlessly integrating with NumPy for zero-copy operations and true thread-safe calculations. Below are examples for batch and incremental usage.\n\n```python\nimport numpy as np\nfrom kand import ema\n\n# Batch EMA computation with zero-copy NumPy integration\nprices = np.array([10.0, 11.0, 12.0, 13.0, 14.0], dtype=np.float64)\nema_values = ema(prices, period=3)\n\n# Incremental EMA update for streaming data\nprev_ema = 13.5\nnew_price = 15.0\nnew_ema = ema_incremental(new_price, prev_ema, period=3)\n```\n\n**Key Features:**\n\n- **Zero-Copy**: Operates directly on NumPy arrays, avoiding memory duplication.\n- **GIL-Free**: Rust backend releases the Python GIL, enabling parallel execution.\n- **Incremental Updates**: O(1) complexity for real-time applications.\n\n---\n\n#### Rust API\n\nThe Rust interface in `kand` provides a high-performance, type-safe implementation of EMA with flexible parameter control. It supports both Vec and ndarray inputs for batch and incremental calculations, as shown below.\n\n```rust\nuse kand::ohlcv::ema;\nuse ndarray::Array1;\n\n// Batch EMA calculation over a price series\nlet prices = vec![10.0, 11.0, 12.0, 13.0, 14.0];\nlet mut ema_values = vec![0.0; prices.len()];\nema::ema(&prices, 3, None, &mut ema_values)?;\n\n// Batch EMA with ndarray for scientific workflows\nlet prices = Array1::from_vec(vec![10.0, 11.0, 12.0, 13.0, 14.0]);\nlet mut ema_values = Array1::zeros(prices.len());\nema::ema(&prices, 3, None, &mut ema_values)?;\n\n// Constant-time incremental EMA update\nlet prev_ema = 13.5;\nlet new_price = 15.0;\nlet new_ema = ema::ema_incremental(new_price, prev_ema, 3, None)?;\n```\n\n**Key Features:**\n\n- **Memory Efficiency**: Leverages mutable buffers (`&mut Vec<f64>` or `&mut Array1<f64>`) to store results, slashing memory allocations.\n- **Error Handling**: Returns `Result<(), KandError>` or `Result<f64, KandError>` for reliable failure detection (e.g., invalid period, NaN inputs).\n- **Incremental Design**: O(1) updates tailored for real-time systems.\n\n---\n\n## Setup\n\n### Python\n\nGet started with Kand in one command - no extra configuration needed:\n\n```bash\npip install kand\n```\n\n### Rust\n\nYou can take latest release from [`crates.io`](https://crates.io/crates/kand), or if you want to use the latest features / performance improvements point to the `main` branch of this repo.\n\n```toml\n[dependencies]\nkand = { git = \"https://github.com/rust-ta/kand\", rev = \"<optional git tag>\" }\n```\n\nRecommend Rust version `>=1.80`.\n\n## Functions List\n\n### OHLCV Based\n\n- [x] **AD** - Chaikin A/D Line\n- [x] **ADOSC** - Chaikin A/D Oscillator\n- [x] **ADR** - Average Daily Range **[Untested]**\n- [x] **ADX** - Average Directional Movement Index\n- [x] **ADXR** - Average Directional Movement Index Rating\n- [ ] **APO** - Absolute Price Oscillator\n- [x] **AROON** - Aroon\n- [x] **AROONOSC** - Aroon Oscillator\n- [x] **ATR** - Average True Range\n- [x] **BBANDS** - Bollinger Bands\n- [x] **BOP** - Balance Of Power\n- [x] **CCI** - Commodity Channel Index\n- [x] **CDL_DOJI** - Doji\n- [x] **CDL_DRAGONFLY_DOJI** - Dragonfly Doji\n- [x] **CDL_GRAVESTONE_DOJI** - Gravestone Doji\n- [x] **CDL_HAMMER** - Hammer\n- [x] **CDL_INVERTED_HAMMER** - Inverted Hammer\n- [x] **CDL_LONG_LOWER_SHADOW** - Long Lower Shadow\n- [x] **CDL_LONG_UPPER_SHADOW** - Long Upper Shadow\n- [x] **CDL_MARUBOZU** - Marubozu\n- [ ] **CMO** - Chande Momentum Oscillator\n- [x] **DEMA** - Double Exponential Moving Average\n- [x] **DX** - Directional Movement Index\n- [x] **EMA** - Exponential Moving Average\n- [x] **ECL** - Expanded Camarilla Levels **[Untested]**\n- [x] **HA** - Heikin Ashi Chart\n- [ ] **HT_DCPERIOD** - Hilbert Transform - Dominant Cycle Period\n- [ ] **HT_DCPHASE** - Hilbert Transform - Dominant Cycle Phase\n- [ ] **HT_PHASOR** - Hilbert Transform - Phasor Components\n- [ ] **HT_SINE** - Hilbert Transform - SineWave\n- [ ] **HT_TRENDLINE** - Hilbert Transform - Instantaneous Trendline\n- [ ] **HT_TRENDMODE** - Hilbert Transform - Trend vs Cycle Mode\n- [ ] **KAMA** - Kaufman Adaptive Moving Average\n- [ ] **LINEARREG** - Linear Regression\n- [ ] **LINEARREG_ANGLE** - Linear Regression Angle\n- [ ] **LINEARREG_INTERCEPT** - Linear Regression Intercept\n- [ ] **LINEARREG_SLOPE** - Linear Regression Slope\n- [x] **MACD** - Moving Average Convergence/Divergence **[Unstable]**\n- [ ] **MACDEXT** - MACD with controllable MA type\n- [ ] **MAMA** - MESA Adaptive Moving Average\n- [x] **MEDPRICE** - Median Price\n- [x] **MFI** - Money Flow Index **[No Incremental]**\n- [x] **MIDPOINT** - MidPoint over period\n- [x] **MIDPRICE** - Midpoint Price over period\n- [x] **MINUS_DI** - Minus Directional Indicator\n- [x] **MINUS_DM** - Minus Directional Movement\n- [x] **MOM** - Momentum\n- [x] **NATR** - Normalized Average True Range\n- [x] **OBV** - On Balance Volume\n- [x] **PLUS_DI** - Plus Directional Indicator\n- [x] **PLUS_DM** - Plus Directional Movement\n- [ ] **PPO** - Percentage Price Oscillator\n- [ ] **RENKO** - Renko Chart\n- [x] **RMA** - Rolling Moving Average **[Untested]**\n- [x] **ROC** - Rate of change : ((price/prevPrice)-1)*100\n- [x] **ROCP** - Rate of change Percentage: (price-prevPrice)/prevPrice\n- [x] **ROCR** - Rate of change ratio: (price/prevPrice)\n- [x] **ROCR100** - Rate of change ratio 100 scale: (price/prevPrice)*100\n- [x] **RSI** - Relative Strength Index\n- [x] **SAR** - Parabolic SAR\n- [ ] **SAREXT** - Parabolic SAR - Extended\n- [x] **SMA** - Simple Moving Average\n- [x] **STOCH** - Stochastic **[No Incremental]**\n- [ ] **STOCHF** - Stochastic Fast\n- [ ] **STOCHRSI** - Stochastic Relative Strength Index\n- [x] **SUPERTREND** - Super Trend Indicator\n- [x] **T3** - Triple Exponential Moving Average (T3)\n- [x] **TEMA** - Triple Exponential Moving Average\n- [x] **TPO** - Time Price Opportunity\n- [x] **TRANGE** - True Range\n- [x] **TRIMA** - Triangular Moving Average\n- [x] **TRIX** - 1-day Rate-Of-Change (ROC) of a Triple Smooth EMA\n- [ ] **TSF** - Time Series Forecast\n- [x] **TYPPRICE** - Typical Price\n- [ ] **ULTOSC** - Ultimate Oscillator\n- [x] **VEGAS** - VEGAS Channel and Trend Boundary EMAs **[Untested]**\n- [x] **VWAP** - Volume Weighted Average Price\n- [x] **WCLPRICE** - Weighted Close Price\n- [x] **WILLR** - Williams' %R\n- [x] **WMA** - Weighted Moving Average\n\n### Statistical Analysis\n\n- [ ] **ALPHA** - Alpha: Measures excess returns over market\n- [ ] **BETA** - Beta: Measures sensitivity to market volatility\n- [ ] **CALMAR** - Calmar Ratio: Annual return to maximum drawdown ratio\n- [ ] **CORREL** - Pearson's Correlation Coefficient\n- [ ] **DRAWDOWN** - Maximum Drawdown: Maximum potential loss\n- [ ] **KELLY** - Kelly Criterion: Optimal position sizing\n- [x] **MAX** - Highest value over a specified period\n- [x] **MIN** - Lowest value over a specified period\n- [ ] **SHARPE** - Sharpe Ratio: Risk-adjusted return measure\n- [ ] **SORTINO** - Sortino Ratio: Downside risk-adjusted returns\n- [x] **STDDEV** - Standard Deviation\n- [x] **SUM** - Summation\n- [x] **VAR** - Variance\n- [ ] **WINRATE** - Win Rate: Strategy success probability\n\n## Contributing\n\nWe are passionate about supporting contributors of all levels of experience and would love to see\nyou get involved in the project. See the\n[contributing guide](https://github.com/rust-ta/kand/blob/main/CONTRIBUTING.md) to get started.\n\n\n## License\n\nThis project is licensed under either of the following licenses, at your option:\n- Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or\n  <https://www.apache.org/licenses/LICENSE-2.0>)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or <https://opensource.org/licenses/MIT>)\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in kand by you, as defined in the Apache-2.0 license, shall be dually licensed as above, without any additional terms or conditions.\n\n",
    "bugtrack_url": null,
    "license": "Apache-2.0 OR MIT",
    "summary": "A high-performance technical analysis library written in Rust with Python bindings.",
    "version": "0.1.1",
    "project_urls": {
        "Changelog": "https://github.com/rust-ta/kand/blob/main/CHANGELOG.md",
        "Documentation": "https://docs.rs/kand",
        "Releases": "https://github.com/rust-ta/kand/releases",
        "Repository": "https://github.com/rust-ta/kand"
    },
    "split_keywords": [
        "ta",
        " ta-lib",
        " finance",
        " quant",
        " indicator",
        " technical-analysis"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9fe49e74e2afacc75fd2df6650081cfcafe98653dd5ebe8352c0d01db88e9d60",
                "md5": "2bcd52733bde5b036ccab13460d5cf90",
                "sha256": "c81e511017b22d8e3a966c0d12dc8003cd2cc0f6067dcf5e0241cca1cc6a73bb"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "2bcd52733bde5b036ccab13460d5cf90",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 343024,
            "upload_time": "2025-02-27T05:28:50",
            "upload_time_iso_8601": "2025-02-27T05:28:50.711078Z",
            "url": "https://files.pythonhosted.org/packages/9f/e4/9e74e2afacc75fd2df6650081cfcafe98653dd5ebe8352c0d01db88e9d60/kand-0.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9016090bf2bd7df4f2aa7b9c7005ca6de06c35df5a730adaf18438e951ef87ef",
                "md5": "4ac225db92fe68b14b577a19e23fe6a5",
                "sha256": "a8c52cfedf994a9b9fcb82e7a23a15a7bb1201e7d7fcda25f8df682329a9e4a4"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "4ac225db92fe68b14b577a19e23fe6a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 351261,
            "upload_time": "2025-02-27T05:29:01",
            "upload_time_iso_8601": "2025-02-27T05:29:01.939943Z",
            "url": "https://files.pythonhosted.org/packages/90/16/090bf2bd7df4f2aa7b9c7005ca6de06c35df5a730adaf18438e951ef87ef/kand-0.1.1-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "3126950a4a8b9c9639887294970529f87db812e8e20ea01536d53fbae29e7cd7",
                "md5": "5a87ba25693c033c85703a8d7aee5665",
                "sha256": "26ee39266f5fd826fb9419c914f1a552e59808ff74cb3b922341a6d13f7c2c9a"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "5a87ba25693c033c85703a8d7aee5665",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 395541,
            "upload_time": "2025-02-27T05:29:12",
            "upload_time_iso_8601": "2025-02-27T05:29:12.765893Z",
            "url": "https://files.pythonhosted.org/packages/31/26/950a4a8b9c9639887294970529f87db812e8e20ea01536d53fbae29e7cd7/kand-0.1.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "752d8c7d86ad8de4718b4539cf0b41fa65fb439b3d7bafdaef034b4bda208ef0",
                "md5": "64313acdffce706f0022ccab67951c5c",
                "sha256": "aedb204d7de7332a0bad9c1ad347427fc9faa1d3cc38410ce61d94c27da6e5d3"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "64313acdffce706f0022ccab67951c5c",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 542922,
            "upload_time": "2025-02-27T05:29:23",
            "upload_time_iso_8601": "2025-02-27T05:29:23.451054Z",
            "url": "https://files.pythonhosted.org/packages/75/2d/8c7d86ad8de4718b4539cf0b41fa65fb439b3d7bafdaef034b4bda208ef0/kand-0.1.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2859ad8e506e7ecfc98b3f467bc61e06b1a82f3e78bb7f04cad12039b8b7b92a",
                "md5": "7dc2e3fadfe0d70a5a52dbec547ea4d9",
                "sha256": "976d1d289f8eea6d7e06ec292341c23df348c21b644abb2402cefd84e128d8b6"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7dc2e3fadfe0d70a5a52dbec547ea4d9",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 367206,
            "upload_time": "2025-02-27T05:29:45",
            "upload_time_iso_8601": "2025-02-27T05:29:45.677944Z",
            "url": "https://files.pythonhosted.org/packages/28/59/ad8e506e7ecfc98b3f467bc61e06b1a82f3e78bb7f04cad12039b8b7b92a/kand-0.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e44189ebe7a872296fb03d671a209f81736806a450b03ac29ad4954308096bce",
                "md5": "497a441f5e0a811420c06f846b3525c8",
                "sha256": "f10d8b08b0154ddc3f16d06fb3844c49626dfe674da3eed231c7555338b5c6d5"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "497a441f5e0a811420c06f846b3525c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 373767,
            "upload_time": "2025-02-27T05:29:33",
            "upload_time_iso_8601": "2025-02-27T05:29:33.485651Z",
            "url": "https://files.pythonhosted.org/packages/e4/41/89ebe7a872296fb03d671a209f81736806a450b03ac29ad4954308096bce/kand-0.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c606780d5a9615ac790fe5111c264d4211467725af65a76a4a63986703bcedcf",
                "md5": "c53654f55c983d001eed8dbd52bb27fd",
                "sha256": "d13149fde457c840f6def68b7bdc471a35ae703d82413aebaf162359b0a46189"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "c53654f55c983d001eed8dbd52bb27fd",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 523002,
            "upload_time": "2025-02-27T05:30:06",
            "upload_time_iso_8601": "2025-02-27T05:30:06.708089Z",
            "url": "https://files.pythonhosted.org/packages/c6/06/780d5a9615ac790fe5111c264d4211467725af65a76a4a63986703bcedcf/kand-0.1.1-cp310-cp310-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8e53f99bc192df6aeb8674bf3e9314d0d8186f900e9c2b2b57bdcde4fa671243",
                "md5": "0044a4b7768ec7873eb9e0a7e659bae2",
                "sha256": "7e3c67b2d7b493fd0b3b2dfe4768616ce23de85d5c3d4072c9b6203203b05b7d"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "0044a4b7768ec7873eb9e0a7e659bae2",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 614691,
            "upload_time": "2025-02-27T05:30:17",
            "upload_time_iso_8601": "2025-02-27T05:30:17.887984Z",
            "url": "https://files.pythonhosted.org/packages/8e/53/f99bc192df6aeb8674bf3e9314d0d8186f900e9c2b2b57bdcde4fa671243/kand-0.1.1-cp310-cp310-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a0a4d87502f94f4e40e1162a1730017cc6f8aadd48ae4ea78e814be10c2ad6b3",
                "md5": "3ed2dd0e2cc7f99f4d55d56e85e15b74",
                "sha256": "d51a0e92ea45073a40eabe0fd9456222d1905015d3452cbc719b09932f3b03cb"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "3ed2dd0e2cc7f99f4d55d56e85e15b74",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 549629,
            "upload_time": "2025-02-27T05:30:26",
            "upload_time_iso_8601": "2025-02-27T05:30:26.682683Z",
            "url": "https://files.pythonhosted.org/packages/a0/a4/d87502f94f4e40e1162a1730017cc6f8aadd48ae4ea78e814be10c2ad6b3/kand-0.1.1-cp310-cp310-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "96f132279d5fd4a0320996ce87610042b09194d15d9cf10415d872f9129fe075",
                "md5": "302ab5e3ad69cd4ffe44eba557f35568",
                "sha256": "800a94f1e5b8e95dc7894915b3822199fe0281874e4e2193385b80f11244f3d7"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "302ab5e3ad69cd4ffe44eba557f35568",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 539049,
            "upload_time": "2025-02-27T05:30:35",
            "upload_time_iso_8601": "2025-02-27T05:30:35.163823Z",
            "url": "https://files.pythonhosted.org/packages/96/f1/32279d5fd4a0320996ce87610042b09194d15d9cf10415d872f9129fe075/kand-0.1.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ad1a0b2c302ef219126b6311f85b6bdced40376617a2e09862b2ca26ab903d8",
                "md5": "17cce8e7fc1cf914ac90f2bcc208d919",
                "sha256": "b2e4b50e941934785373d204acfbbfa5881669ac067e5e6bd2945d6bc9ad0dc1"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "17cce8e7fc1cf914ac90f2bcc208d919",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 252929,
            "upload_time": "2025-02-27T05:30:58",
            "upload_time_iso_8601": "2025-02-27T05:30:58.075904Z",
            "url": "https://files.pythonhosted.org/packages/9a/d1/a0b2c302ef219126b6311f85b6bdced40376617a2e09862b2ca26ab903d8/kand-0.1.1-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d63cc09931673dcad5a1a9f20ba42100a955f863c6f5c6a99c74c6cb6f7e7fee",
                "md5": "44b0d31258fa9f589f319d0592e4281d",
                "sha256": "87e62bcb84307a416267bc84e5de33e105cf54c3254ef0e28a1ea2cc9020180e"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "44b0d31258fa9f589f319d0592e4281d",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 265128,
            "upload_time": "2025-02-27T05:30:45",
            "upload_time_iso_8601": "2025-02-27T05:30:45.692784Z",
            "url": "https://files.pythonhosted.org/packages/d6/3c/c09931673dcad5a1a9f20ba42100a955f863c6f5c6a99c74c6cb6f7e7fee/kand-0.1.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "07652bffc148a51a3265807fa12e113fa4b5f4547b3b3b7497ecdf90a0b5ac91",
                "md5": "bb9a726a343a804c745be329ec0288c3",
                "sha256": "873afbcee3b4e97ef338f8cc129c3ef38eaa34678d56012f9eead904a2c28c57"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bb9a726a343a804c745be329ec0288c3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 356167,
            "upload_time": "2025-02-27T05:30:01",
            "upload_time_iso_8601": "2025-02-27T05:30:01.746083Z",
            "url": "https://files.pythonhosted.org/packages/07/65/2bffc148a51a3265807fa12e113fa4b5f4547b3b3b7497ecdf90a0b5ac91/kand-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f6b94ca4599a9e40a21e1ebaf8bc7380b520d7bb551bd165171304853c825f30",
                "md5": "4312094bf6f81b8097116468572e45a6",
                "sha256": "9585d58d7c357c9f3d8c98881891bcaec7468397b7ecd3099ab58f8d10b5232c"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "4312094bf6f81b8097116468572e45a6",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 326180,
            "upload_time": "2025-02-27T05:29:56",
            "upload_time_iso_8601": "2025-02-27T05:29:56.619657Z",
            "url": "https://files.pythonhosted.org/packages/f6/b9/4ca4599a9e40a21e1ebaf8bc7380b520d7bb551bd165171304853c825f30/kand-0.1.1-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8060a0b12336f4597160237df83293e0ad7682fe388127ddecbef3149274e0f2",
                "md5": "7d5cb6179c0a7e1362965c560eb77f92",
                "sha256": "85f60043e8ef0487adaae60db6ee8cd613dbfd3121c38d4056c63f57f115cdd0"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7d5cb6179c0a7e1362965c560eb77f92",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 342686,
            "upload_time": "2025-02-27T05:28:53",
            "upload_time_iso_8601": "2025-02-27T05:28:53.314308Z",
            "url": "https://files.pythonhosted.org/packages/80/60/a0b12336f4597160237df83293e0ad7682fe388127ddecbef3149274e0f2/kand-0.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d1507ca756be0d65830a66bf0a2080006fdea56a7aede1e515a0ca78981c6d56",
                "md5": "3738f2428ee456e5b865f67d788cf0f1",
                "sha256": "3c44b1fa458b6e249fa63bd8e95e6f8c98e68e1909b21de06ad9fcd986642ca2"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "3738f2428ee456e5b865f67d788cf0f1",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 351130,
            "upload_time": "2025-02-27T05:29:04",
            "upload_time_iso_8601": "2025-02-27T05:29:04.364701Z",
            "url": "https://files.pythonhosted.org/packages/d1/50/7ca756be0d65830a66bf0a2080006fdea56a7aede1e515a0ca78981c6d56/kand-0.1.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "690d667d2907e016f59e108c28a21c498f0185a998bed40cf5138fd74e20e9b2",
                "md5": "cb3ddfbaf5781466b259aa9491818074",
                "sha256": "feea66bdd2468553b287d904b0b16e51ccbe388575d606cf5a60ab9355b94d52"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "cb3ddfbaf5781466b259aa9491818074",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 395284,
            "upload_time": "2025-02-27T05:29:14",
            "upload_time_iso_8601": "2025-02-27T05:29:14.637927Z",
            "url": "https://files.pythonhosted.org/packages/69/0d/667d2907e016f59e108c28a21c498f0185a998bed40cf5138fd74e20e9b2/kand-0.1.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bfbc73548d1612d39a848e6afc5bf62b224f7514622db27f3d1025ae5ec61422",
                "md5": "cfd4d9cc3b324761859430ffb76870e9",
                "sha256": "c24973e2012ca1110a48290784f0c0559018288ee912885f6ea0406ad72dd051"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "cfd4d9cc3b324761859430ffb76870e9",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 542554,
            "upload_time": "2025-02-27T05:29:25",
            "upload_time_iso_8601": "2025-02-27T05:29:25.453445Z",
            "url": "https://files.pythonhosted.org/packages/bf/bc/73548d1612d39a848e6afc5bf62b224f7514622db27f3d1025ae5ec61422/kand-0.1.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bb4f363c9917017cebf6c13ec6a769c26d08769559850e0c011502849e5d26fe",
                "md5": "2fa819926dbbed7f783569a771bad556",
                "sha256": "9c9ffd7ac332b3ac7ebb9fbd4ce4a01dd665605291e5fd7dfeed984fbbab3a4f"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "2fa819926dbbed7f783569a771bad556",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 367077,
            "upload_time": "2025-02-27T05:29:47",
            "upload_time_iso_8601": "2025-02-27T05:29:47.150646Z",
            "url": "https://files.pythonhosted.org/packages/bb/4f/363c9917017cebf6c13ec6a769c26d08769559850e0c011502849e5d26fe/kand-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e4630538ffa7f4de359f53265174f90933a755099b85242a3af14ba5391828ef",
                "md5": "1183801cc9e108d98081e05fe622fcf3",
                "sha256": "3800b250f87b47905ab0486c0c4feb95dc6a9b1e34adf512b105a169c848d6a1"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "1183801cc9e108d98081e05fe622fcf3",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 373847,
            "upload_time": "2025-02-27T05:29:35",
            "upload_time_iso_8601": "2025-02-27T05:29:35.858385Z",
            "url": "https://files.pythonhosted.org/packages/e4/63/0538ffa7f4de359f53265174f90933a755099b85242a3af14ba5391828ef/kand-0.1.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ab8d9cb1d3cda1299e36f53a12a392679d2ad75c054ef0fb3a742b159e3a8f46",
                "md5": "d004c9c3d8e1c9327ec7569033b34c91",
                "sha256": "d851b31d0cf7827996369873c2469125d7b24a65c959c0621a0cd79741579c59"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d004c9c3d8e1c9327ec7569033b34c91",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 522748,
            "upload_time": "2025-02-27T05:30:08",
            "upload_time_iso_8601": "2025-02-27T05:30:08.862630Z",
            "url": "https://files.pythonhosted.org/packages/ab/8d/9cb1d3cda1299e36f53a12a392679d2ad75c054ef0fb3a742b159e3a8f46/kand-0.1.1-cp311-cp311-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f89cba961e58b2dbcd1ca7911820b423119deb13528a9e78d1032f5a00308aff",
                "md5": "c5158b6d6d0bad63a671fc9071ebc18e",
                "sha256": "60f1d1cd9787f80f7e2dd0bc907118a32f667b84f6d3bb6c2dafae9f948b6ac8"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "c5158b6d6d0bad63a671fc9071ebc18e",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 614497,
            "upload_time": "2025-02-27T05:30:20",
            "upload_time_iso_8601": "2025-02-27T05:30:20.413337Z",
            "url": "https://files.pythonhosted.org/packages/f8/9c/ba961e58b2dbcd1ca7911820b423119deb13528a9e78d1032f5a00308aff/kand-0.1.1-cp311-cp311-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "24fd0459f5cc6582faf115cddc344b5ddcc9d79590e804fe30643122c70168fa",
                "md5": "4343a4dc591f1a41ea905f50c9f42520",
                "sha256": "7944b52457282d87495b65b4c5191176d17f19ee624dc4b97029bfbd7328175b"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "4343a4dc591f1a41ea905f50c9f42520",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 549607,
            "upload_time": "2025-02-27T05:30:28",
            "upload_time_iso_8601": "2025-02-27T05:30:28.267116Z",
            "url": "https://files.pythonhosted.org/packages/24/fd/0459f5cc6582faf115cddc344b5ddcc9d79590e804fe30643122c70168fa/kand-0.1.1-cp311-cp311-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "212e76ac2ed835332bfc9b4e4758e30612f25935cc9fa38eb5c0c612f7ae6032",
                "md5": "f21e304556ceddebd1f8641e4851e474",
                "sha256": "1ed799e087a41bc4fd0a457e438f584eb5825c93a009e0311ce7cda0354878e3"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f21e304556ceddebd1f8641e4851e474",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 538784,
            "upload_time": "2025-02-27T05:30:37",
            "upload_time_iso_8601": "2025-02-27T05:30:37.346949Z",
            "url": "https://files.pythonhosted.org/packages/21/2e/76ac2ed835332bfc9b4e4758e30612f25935cc9fa38eb5c0c612f7ae6032/kand-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "541b110a23b90ac8bd0e72e7659a9aea09fb39271871242cbe9c1cead5c31bac",
                "md5": "51a002287776d342ebe23d0d8ceb8f0f",
                "sha256": "7180c7760525121a79f512c40e5dc3d47f3f5ca041659208dfaa1474bb3a91e2"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "51a002287776d342ebe23d0d8ceb8f0f",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 252773,
            "upload_time": "2025-02-27T05:31:01",
            "upload_time_iso_8601": "2025-02-27T05:31:01.118628Z",
            "url": "https://files.pythonhosted.org/packages/54/1b/110a23b90ac8bd0e72e7659a9aea09fb39271871242cbe9c1cead5c31bac/kand-0.1.1-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "428d1287a481529f272b83266ac23e88d11cfb447dcfafa4d224a179deca476a",
                "md5": "6506297207ccce2bcbb5ddeedb92d626",
                "sha256": "65ca0b698316aace00b5cfc28c45b6870d4450454162b0bd30e05c654a0173ac"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "6506297207ccce2bcbb5ddeedb92d626",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 264992,
            "upload_time": "2025-02-27T05:30:47",
            "upload_time_iso_8601": "2025-02-27T05:30:47.117677Z",
            "url": "https://files.pythonhosted.org/packages/42/8d/1287a481529f272b83266ac23e88d11cfb447dcfafa4d224a179deca476a/kand-0.1.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a0b1b1984f057ff917532982e14388680cfe43080ac9730f9e555298ab53c2d5",
                "md5": "1846920fdd10662f9ea9bcd7e2406a66",
                "sha256": "9a7657d9e41a9c5d43aba299b3e48cac81caf580f9d6262775e65e94527dbd12"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1846920fdd10662f9ea9bcd7e2406a66",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 351006,
            "upload_time": "2025-02-27T05:30:03",
            "upload_time_iso_8601": "2025-02-27T05:30:03.180880Z",
            "url": "https://files.pythonhosted.org/packages/a0/b1/b1984f057ff917532982e14388680cfe43080ac9730f9e555298ab53c2d5/kand-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "de7ea94924284fa0f16eb8ed8cab9630fc8daddc61208ffe689f89edbd44f020",
                "md5": "80e489c4808c016fedb5103ec7a4e301",
                "sha256": "ca2dc355d674fb92f53521580847ed5284a0422a39a577a8a8deaaf2728e329b"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "80e489c4808c016fedb5103ec7a4e301",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 320700,
            "upload_time": "2025-02-27T05:29:57",
            "upload_time_iso_8601": "2025-02-27T05:29:57.999534Z",
            "url": "https://files.pythonhosted.org/packages/de/7e/a94924284fa0f16eb8ed8cab9630fc8daddc61208ffe689f89edbd44f020/kand-0.1.1-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e30675093937be38468e04e127ca5951114b6e12a33c856ec934f81bf48f3859",
                "md5": "7a5927661aec566e51c754e9fd60cefd",
                "sha256": "92283842bb8237ba2c359a2316ec4ed58e9f7f43ab44d5e8d4899c74c2d612f9"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "7a5927661aec566e51c754e9fd60cefd",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 350326,
            "upload_time": "2025-02-27T05:28:54",
            "upload_time_iso_8601": "2025-02-27T05:28:54.805801Z",
            "url": "https://files.pythonhosted.org/packages/e3/06/75093937be38468e04e127ca5951114b6e12a33c856ec934f81bf48f3859/kand-0.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c3e49a651319f0575ade97d795eeb6b5b2fff3adb6dcb4a08742e312435a0fe1",
                "md5": "c99b62efd31895cb0c756e9c57dd670f",
                "sha256": "4e27ffac9918bbf94fcae43686211baab551cef59b800ba1a7626f79a965e038"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "c99b62efd31895cb0c756e9c57dd670f",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 357173,
            "upload_time": "2025-02-27T05:29:06",
            "upload_time_iso_8601": "2025-02-27T05:29:06.728103Z",
            "url": "https://files.pythonhosted.org/packages/c3/e4/9a651319f0575ade97d795eeb6b5b2fff3adb6dcb4a08742e312435a0fe1/kand-0.1.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "419f236cc974df7ea7ab4f70d40a4bfca8d0b3fdeb0fa243d6a9fc663910dc0f",
                "md5": "db687eb11c1a057214233133016f121c",
                "sha256": "fdf967f4102bf594f5d12c3483c576c53053d7bcb8a3345c8a38c0240823f9d1"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "db687eb11c1a057214233133016f121c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 404979,
            "upload_time": "2025-02-27T05:29:16",
            "upload_time_iso_8601": "2025-02-27T05:29:16.239573Z",
            "url": "https://files.pythonhosted.org/packages/41/9f/236cc974df7ea7ab4f70d40a4bfca8d0b3fdeb0fa243d6a9fc663910dc0f/kand-0.1.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "181d7b5cdb4b8ac5baa2c5bd408e65e117c0035e70812475035330ca53cb984c",
                "md5": "d85b360c08f4912261a460bbb4c11390",
                "sha256": "2766f8e2f43562d1b8f28b955227717e2b5274dc420eef0d3ffa9f51872ce2bb"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "d85b360c08f4912261a460bbb4c11390",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 482723,
            "upload_time": "2025-02-27T05:29:28",
            "upload_time_iso_8601": "2025-02-27T05:29:28.382287Z",
            "url": "https://files.pythonhosted.org/packages/18/1d/7b5cdb4b8ac5baa2c5bd408e65e117c0035e70812475035330ca53cb984c/kand-0.1.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c6079e3446ad99533e482dfaa64eb7a16ad5529bf773962bf3117961d187bd8a",
                "md5": "f164a09c05abaa3e709f51daf73c5569",
                "sha256": "2d5ac6f55d69b2a526a43d957d15afcb4b0fed5dd05613da8df046abc23b69fc"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f164a09c05abaa3e709f51daf73c5569",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 380368,
            "upload_time": "2025-02-27T05:29:48",
            "upload_time_iso_8601": "2025-02-27T05:29:48.689166Z",
            "url": "https://files.pythonhosted.org/packages/c6/07/9e3446ad99533e482dfaa64eb7a16ad5529bf773962bf3117961d187bd8a/kand-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e2838569e1dc66280cb1b0e3f93513a334d3262bf6379dedf6006b3c800aea26",
                "md5": "18e231686010e5aea6c023f3b9b91e59",
                "sha256": "e92736ef58c1d851bff9b35c5c6459a3c96658c2359eca72527ffcd2d4bb80e8"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "18e231686010e5aea6c023f3b9b91e59",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 386067,
            "upload_time": "2025-02-27T05:29:38",
            "upload_time_iso_8601": "2025-02-27T05:29:38.323872Z",
            "url": "https://files.pythonhosted.org/packages/e2/83/8569e1dc66280cb1b0e3f93513a334d3262bf6379dedf6006b3c800aea26/kand-0.1.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "53286563ab180b01ad7cbdfe9adb75b0f95a42619d46c79f4a5d51af295832a3",
                "md5": "9a29be63b5ae34544943acf4ba4b360a",
                "sha256": "cb3a3c4006796e8c62a5caae5ebfbc57660181f3844a8d5c15aa49d9206b5ecb"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "9a29be63b5ae34544943acf4ba4b360a",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 530231,
            "upload_time": "2025-02-27T05:30:10",
            "upload_time_iso_8601": "2025-02-27T05:30:10.424231Z",
            "url": "https://files.pythonhosted.org/packages/53/28/6563ab180b01ad7cbdfe9adb75b0f95a42619d46c79f4a5d51af295832a3/kand-0.1.1-cp312-cp312-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4549d2ea21b1cdabaada6f8a2a7e45ce7cdc5fcfe8aa5cd99a0962fa5f840bb1",
                "md5": "97ad9f7ccd5c2b87249ad39b2681f186",
                "sha256": "b12241fbf4593a24afb5a02c6ae37e89d301211239a96424231af7a7c0301f53"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "97ad9f7ccd5c2b87249ad39b2681f186",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 620507,
            "upload_time": "2025-02-27T05:30:22",
            "upload_time_iso_8601": "2025-02-27T05:30:22.069911Z",
            "url": "https://files.pythonhosted.org/packages/45/49/d2ea21b1cdabaada6f8a2a7e45ce7cdc5fcfe8aa5cd99a0962fa5f840bb1/kand-0.1.1-cp312-cp312-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e7496fd52c33eecbb457b3e0547fbdbdc2e1e2408cbab1c8e00bb78de540f792",
                "md5": "09c70be903376dc02389a4ae0c526009",
                "sha256": "e10743aa50cf42d8811e074e437a3e61b492b7e155436d95a42d88f19ae72b08"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "09c70be903376dc02389a4ae0c526009",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 562966,
            "upload_time": "2025-02-27T05:30:30",
            "upload_time_iso_8601": "2025-02-27T05:30:30.635682Z",
            "url": "https://files.pythonhosted.org/packages/e7/49/6fd52c33eecbb457b3e0547fbdbdc2e1e2408cbab1c8e00bb78de540f792/kand-0.1.1-cp312-cp312-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "d14cff71961c892056b8767f2b5a4f316438084cf796e1fbe3b654d6b0c04e3a",
                "md5": "9de11130da293052e8a323cc8c68c8fa",
                "sha256": "6111f5202040fdcae8c50c4bcd11e5271b63029e02287e044a17c0126e861625"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9de11130da293052e8a323cc8c68c8fa",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 551976,
            "upload_time": "2025-02-27T05:30:39",
            "upload_time_iso_8601": "2025-02-27T05:30:39.828682Z",
            "url": "https://files.pythonhosted.org/packages/d1/4c/ff71961c892056b8767f2b5a4f316438084cf796e1fbe3b654d6b0c04e3a/kand-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1f2e76239b0feda9057cdffc9381b506a5497fc2dbe079626bf262233a44d702",
                "md5": "44bbf40c174af8eff390f7d7d23fc859",
                "sha256": "7971c87ba98daf088f74f47aa2c5dca50dae61ede2070681a0526e03e910395c"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "44bbf40c174af8eff390f7d7d23fc859",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 248380,
            "upload_time": "2025-02-27T05:31:02",
            "upload_time_iso_8601": "2025-02-27T05:31:02.663786Z",
            "url": "https://files.pythonhosted.org/packages/1f/2e/76239b0feda9057cdffc9381b506a5497fc2dbe079626bf262233a44d702/kand-0.1.1-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4d0aeff7fbb40930efb3fdc7fc268571f610cfecc625743df75874d0be334575",
                "md5": "74a58a949c74a790922b513a8930804b",
                "sha256": "58f79f2dd7d84c730480a8d26a92da6f4af2039bb44556ee84723acea2a21436"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "74a58a949c74a790922b513a8930804b",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 258605,
            "upload_time": "2025-02-27T05:30:49",
            "upload_time_iso_8601": "2025-02-27T05:30:49.407367Z",
            "url": "https://files.pythonhosted.org/packages/4d/0a/eff7fbb40930efb3fdc7fc268571f610cfecc625743df75874d0be334575/kand-0.1.1-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0dfaade647da25f1abb07ba8b1fcb10093e6203497722a7ca70cde2274441f9e",
                "md5": "ffdeaa1b2d42d9b16fdeba1272554f34",
                "sha256": "add1ebfcb736402b0beee9d22269c1094e6287d99e3e0d608d09b6ace8fec742"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ffdeaa1b2d42d9b16fdeba1272554f34",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 350703,
            "upload_time": "2025-02-27T05:30:04",
            "upload_time_iso_8601": "2025-02-27T05:30:04.614655Z",
            "url": "https://files.pythonhosted.org/packages/0d/fa/ade647da25f1abb07ba8b1fcb10093e6203497722a7ca70cde2274441f9e/kand-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cfb91ee87bb5ad298096dc8dddcdd118b84e861e445a240a132445f4d6d81b00",
                "md5": "0b57689942316be17dd5323acdf3757d",
                "sha256": "e9e46bcfb845bde104de527fbf889769d210bcb50fdc4f2f55bc6b884acc1365"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "0b57689942316be17dd5323acdf3757d",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 320400,
            "upload_time": "2025-02-27T05:29:59",
            "upload_time_iso_8601": "2025-02-27T05:29:59.976635Z",
            "url": "https://files.pythonhosted.org/packages/cf/b9/1ee87bb5ad298096dc8dddcdd118b84e861e445a240a132445f4d6d81b00/kand-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7ca70a0999bc0806628d65198cd4f70f39d183bb909437c7153ca0d78ddf6dd5",
                "md5": "295a5499400c885a66b50b6d4173d7d7",
                "sha256": "cf654294b3c133dd2073943cf3db598c9725e569a83c60161e74266a20d03a36"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp313-cp313-win32.whl",
            "has_sig": false,
            "md5_digest": "295a5499400c885a66b50b6d4173d7d7",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 248127,
            "upload_time": "2025-02-27T05:31:04",
            "upload_time_iso_8601": "2025-02-27T05:31:04.169032Z",
            "url": "https://files.pythonhosted.org/packages/7c/a7/0a0999bc0806628d65198cd4f70f39d183bb909437c7153ca0d78ddf6dd5/kand-0.1.1-cp313-cp313-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "900b4b919a6d5786c22142815905769c3cfb9244c4c903c19d043354eac26356",
                "md5": "91610ef276bce50c3b0fcef0444b7318",
                "sha256": "cc6a0060c8fc16f85c336d50c4690efbb82bb4d2657fa33409690896a6c3e75a"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "91610ef276bce50c3b0fcef0444b7318",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.8",
            "size": 258346,
            "upload_time": "2025-02-27T05:30:50",
            "upload_time_iso_8601": "2025-02-27T05:30:50.822687Z",
            "url": "https://files.pythonhosted.org/packages/90/0b/4b919a6d5786c22142815905769c3cfb9244c4c903c19d043354eac26356/kand-0.1.1-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "90437bed7859d671fef8274b29bad79deec75d8ed13bfabdac36047fb47b0004",
                "md5": "feb7ce0e8d3ec74072325c2f9d8361ee",
                "sha256": "4c17592fc9f4defad449ccf0bb3c5022644bbf1422bc6c86b3ad221a1a2d4a6d"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "feb7ce0e8d3ec74072325c2f9d8361ee",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 343587,
            "upload_time": "2025-02-27T05:28:57",
            "upload_time_iso_8601": "2025-02-27T05:28:57.176426Z",
            "url": "https://files.pythonhosted.org/packages/90/43/7bed7859d671fef8274b29bad79deec75d8ed13bfabdac36047fb47b0004/kand-0.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "02ff4ba8bd0f85907b8bdd59dbeb3b8371008238fa023db07a01a2ccb601be85",
                "md5": "c3673e757073cd3a612ee2ff96ebcc28",
                "sha256": "4f313e44072e9c52c36151929b58b25f0ba7c4794bc8a9ee25e1488f5fa54d20"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "c3673e757073cd3a612ee2ff96ebcc28",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 351655,
            "upload_time": "2025-02-27T05:29:08",
            "upload_time_iso_8601": "2025-02-27T05:29:08.986584Z",
            "url": "https://files.pythonhosted.org/packages/02/ff/4ba8bd0f85907b8bdd59dbeb3b8371008238fa023db07a01a2ccb601be85/kand-0.1.1-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9cf4a814e402ce4ffeb250ebc2d4629e8dc1f783afc0ed0da360d2d9b96ba27e",
                "md5": "2f9d4dbadb91736a6f4eff23ea16c807",
                "sha256": "34e4ed7b4cceeec835a816291f5ebb3f21324f5c10a50c475d900b6bd04f26ab"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "2f9d4dbadb91736a6f4eff23ea16c807",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 396255,
            "upload_time": "2025-02-27T05:29:19",
            "upload_time_iso_8601": "2025-02-27T05:29:19.534647Z",
            "url": "https://files.pythonhosted.org/packages/9c/f4/a814e402ce4ffeb250ebc2d4629e8dc1f783afc0ed0da360d2d9b96ba27e/kand-0.1.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "51382083b2d38914a8595be2d8ce5eafcbbdf63753e67416fc10278ee5fe5012",
                "md5": "24896961f4be1caa872d786160006b94",
                "sha256": "43e5520c253fa29f2177f208f9cfe30dc2ada92d85f6a3e0acf15ac0b2886bd0"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "24896961f4be1caa872d786160006b94",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 543477,
            "upload_time": "2025-02-27T05:29:29",
            "upload_time_iso_8601": "2025-02-27T05:29:29.916197Z",
            "url": "https://files.pythonhosted.org/packages/51/38/2083b2d38914a8595be2d8ce5eafcbbdf63753e67416fc10278ee5fe5012/kand-0.1.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b7ba95d57bdfd837c013c5292780ff0a8487d9c29917ee51d7217d016acda31f",
                "md5": "4e29b70a99d5d60149be331ac7bd916c",
                "sha256": "eb34e18a1334b773738940c1018202fdbbaddada92bd4b42f9ced206c78bbad9"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "4e29b70a99d5d60149be331ac7bd916c",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 368046,
            "upload_time": "2025-02-27T05:29:50",
            "upload_time_iso_8601": "2025-02-27T05:29:50.187712Z",
            "url": "https://files.pythonhosted.org/packages/b7/ba/95d57bdfd837c013c5292780ff0a8487d9c29917ee51d7217d016acda31f/kand-0.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "16849ca1e675444846b8c96637eebc4f3ef5159bb24e42d848c96d35f00f9823",
                "md5": "edf6af5d838e2196aafc18d2a0360794",
                "sha256": "fb432f7d9f2c703a89830c0848d37f6423f16c77879a747196280921956066b2"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "edf6af5d838e2196aafc18d2a0360794",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 374208,
            "upload_time": "2025-02-27T05:29:39",
            "upload_time_iso_8601": "2025-02-27T05:29:39.994084Z",
            "url": "https://files.pythonhosted.org/packages/16/84/9ca1e675444846b8c96637eebc4f3ef5159bb24e42d848c96d35f00f9823/kand-0.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a7f16718348c1731df0f2b20cf03a94454551f5603a8131925e2df6a58efea12",
                "md5": "3633fcec7a7b810322a979c7ad5348ad",
                "sha256": "85ad3d874594820e24076f62107928afd4fd3ef14314f78c5aef7c47e802c657"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "3633fcec7a7b810322a979c7ad5348ad",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 523400,
            "upload_time": "2025-02-27T05:30:12",
            "upload_time_iso_8601": "2025-02-27T05:30:12.783734Z",
            "url": "https://files.pythonhosted.org/packages/a7/f1/6718348c1731df0f2b20cf03a94454551f5603a8131925e2df6a58efea12/kand-0.1.1-cp38-cp38-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0c6fe4a290ae7cad0958213550fcc471001a8f4ba0464c668004739248deaf24",
                "md5": "bde959aed95ce3128fb45270d04163e8",
                "sha256": "2cedd685d549ab4944998bc409a9d9944a151e8bab92163abf91aee996f42aae"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "bde959aed95ce3128fb45270d04163e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 615092,
            "upload_time": "2025-02-27T05:30:23",
            "upload_time_iso_8601": "2025-02-27T05:30:23.731830Z",
            "url": "https://files.pythonhosted.org/packages/0c/6f/e4a290ae7cad0958213550fcc471001a8f4ba0464c668004739248deaf24/kand-0.1.1-cp38-cp38-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b6c537efe0c4e30ef55810cfaefaea042bf00e1f5c2461be7825d31e3f0b9681",
                "md5": "3bb9c033c790a3d37c9457eb160533e8",
                "sha256": "f3f64e8c6666ca4199efdeda2dc1dc743fd67d0f6100409fffde5d1ae484a928"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "3bb9c033c790a3d37c9457eb160533e8",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 550231,
            "upload_time": "2025-02-27T05:30:32",
            "upload_time_iso_8601": "2025-02-27T05:30:32.148301Z",
            "url": "https://files.pythonhosted.org/packages/b6/c5/37efe0c4e30ef55810cfaefaea042bf00e1f5c2461be7825d31e3f0b9681/kand-0.1.1-cp38-cp38-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b920207c00f614fb92dc175acb03eee852bdaaf5129134793e425eaa8f6f5e0c",
                "md5": "d5a21ce0f828fd1dd8f07dc83578ff21",
                "sha256": "be0d2db394abbf15c7334f463f6e51a3a47a67bee4fffe9d9defd7a4d3250fcc"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d5a21ce0f828fd1dd8f07dc83578ff21",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 539858,
            "upload_time": "2025-02-27T05:30:41",
            "upload_time_iso_8601": "2025-02-27T05:30:41.518693Z",
            "url": "https://files.pythonhosted.org/packages/b9/20/207c00f614fb92dc175acb03eee852bdaaf5129134793e425eaa8f6f5e0c/kand-0.1.1-cp38-cp38-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "03e5c8ddf3f6feb673b88866c55e1dbc644ccc73985fdd310cc20645aef60cee",
                "md5": "11a0fb1c510b1eac6a7de4ad23d459db",
                "sha256": "e59404d5c911895bbfe89b414c34c543aaf316a6690fa1fafded6317d03f59b8"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-win32.whl",
            "has_sig": false,
            "md5_digest": "11a0fb1c510b1eac6a7de4ad23d459db",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 253445,
            "upload_time": "2025-02-27T05:31:05",
            "upload_time_iso_8601": "2025-02-27T05:31:05.695684Z",
            "url": "https://files.pythonhosted.org/packages/03/e5/c8ddf3f6feb673b88866c55e1dbc644ccc73985fdd310cc20645aef60cee/kand-0.1.1-cp38-cp38-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "78f7dfe246866cee67cde1aaa217112b29e32df09937884cdf503ca08186c8d3",
                "md5": "cf9088d64e3bd5ef85a0d02756effc66",
                "sha256": "6e3a26fe9e2aad1636b0da71804f3dc27c7562032256d8d674a86fe87b72d7ce"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "cf9088d64e3bd5ef85a0d02756effc66",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 265843,
            "upload_time": "2025-02-27T05:30:52",
            "upload_time_iso_8601": "2025-02-27T05:30:52.348731Z",
            "url": "https://files.pythonhosted.org/packages/78/f7/dfe246866cee67cde1aaa217112b29e32df09937884cdf503ca08186c8d3/kand-0.1.1-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "6b6b1f7d13eedad37f2a79f91716a82a03f298919bffa0ee88f7e791623a083e",
                "md5": "69a656247dfb12d699a00a86fa59b954",
                "sha256": "074ae313d3d7f5ebb580769a3d63e5f3b2199335b4b605fedc7a1926afe2998c"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "has_sig": false,
            "md5_digest": "69a656247dfb12d699a00a86fa59b954",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 343532,
            "upload_time": "2025-02-27T05:28:59",
            "upload_time_iso_8601": "2025-02-27T05:28:59.632432Z",
            "url": "https://files.pythonhosted.org/packages/6b/6b/1f7d13eedad37f2a79f91716a82a03f298919bffa0ee88f7e791623a083e/kand-0.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5744b0e040caa6a3727be44bfb478f489fb1b16dd9034123e2cfcbfb40f3859f",
                "md5": "90bee83db0b9bcffc10c7e60f2bd7c09",
                "sha256": "77f05e1136447ad8a7897bae18bae3fc0305e9b22e1071bbefba9c783ddcfa6b"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "has_sig": false,
            "md5_digest": "90bee83db0b9bcffc10c7e60f2bd7c09",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 351820,
            "upload_time": "2025-02-27T05:29:11",
            "upload_time_iso_8601": "2025-02-27T05:29:11.252173Z",
            "url": "https://files.pythonhosted.org/packages/57/44/b0e040caa6a3727be44bfb478f489fb1b16dd9034123e2cfcbfb40f3859f/kand-0.1.1-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0f78d67d9423e7562b6edfaf9aa73cfb6cee6e5f067f95ea0f337f509e3cf617",
                "md5": "c754b0337e22a45a8bafd65e979744a2",
                "sha256": "82c9d89a7ae60fe2564b33c1e877a9859bcb51114aea9e62058f6313dc57865d"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "has_sig": false,
            "md5_digest": "c754b0337e22a45a8bafd65e979744a2",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 396172,
            "upload_time": "2025-02-27T05:29:21",
            "upload_time_iso_8601": "2025-02-27T05:29:21.889198Z",
            "url": "https://files.pythonhosted.org/packages/0f/78/d67d9423e7562b6edfaf9aa73cfb6cee6e5f067f95ea0f337f509e3cf617/kand-0.1.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9f8bcaf2df5cab17b962d58c31e69282c72b67276ca0297114c1d5f923e13dc5",
                "md5": "ace66aa6f406ea4ddd57f306ef06ca63",
                "sha256": "b155e118ca0bf80e0cfec42670e05a4a5c302f1e73fcea7655a29a602be50c5f"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "has_sig": false,
            "md5_digest": "ace66aa6f406ea4ddd57f306ef06ca63",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 543497,
            "upload_time": "2025-02-27T05:29:31",
            "upload_time_iso_8601": "2025-02-27T05:29:31.557768Z",
            "url": "https://files.pythonhosted.org/packages/9f/8b/caf2df5cab17b962d58c31e69282c72b67276ca0297114c1d5f923e13dc5/kand-0.1.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f7de7f6538c84ba1bcaee874412cec2473a410d214a84e79d369635f251d8458",
                "md5": "9844c4c9e81daadd7244631272106c46",
                "sha256": "365bc29ea88ed8db3a2356fe518da5ad8eb97d036f539d5f09d80957326a9792"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "9844c4c9e81daadd7244631272106c46",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 367890,
            "upload_time": "2025-02-27T05:29:54",
            "upload_time_iso_8601": "2025-02-27T05:29:54.090333Z",
            "url": "https://files.pythonhosted.org/packages/f7/de/7f6538c84ba1bcaee874412cec2473a410d214a84e79d369635f251d8458/kand-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "75b41c9fc7830edbced98f08818b86dccf1b3ae3c9327dfef05e2be64846443c",
                "md5": "af92037c758b0b2e58b4798d632dacc9",
                "sha256": "e89f20f435f7308e504ba5ef697c317091c70d7228456fe44c893e08bf92fe87"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl",
            "has_sig": false,
            "md5_digest": "af92037c758b0b2e58b4798d632dacc9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 374339,
            "upload_time": "2025-02-27T05:29:44",
            "upload_time_iso_8601": "2025-02-27T05:29:44.245646Z",
            "url": "https://files.pythonhosted.org/packages/75/b4/1c9fc7830edbced98f08818b86dccf1b3ae3c9327dfef05e2be64846443c/kand-0.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e086bab67ad8b1a9fc6b96da727bb2515d1d2eb08d9d8753d66df3dd99d09d17",
                "md5": "d792a3aa61fa724784113658de46cdba",
                "sha256": "87870725f90ad42e4724f1d638ea168305317f9b2c6c9e728e98a805296ee31e"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-musllinux_1_2_aarch64.whl",
            "has_sig": false,
            "md5_digest": "d792a3aa61fa724784113658de46cdba",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 523448,
            "upload_time": "2025-02-27T05:30:15",
            "upload_time_iso_8601": "2025-02-27T05:30:15.231749Z",
            "url": "https://files.pythonhosted.org/packages/e0/86/bab67ad8b1a9fc6b96da727bb2515d1d2eb08d9d8753d66df3dd99d09d17/kand-0.1.1-cp39-cp39-musllinux_1_2_aarch64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2df18e0521618de3f35f4270010b5b16685f2c4d1b96fb1fa339e67d3453f995",
                "md5": "9ab22b6ee33b50e907b3831c97983fb4",
                "sha256": "94990d0630673bd94759d60805617bd526c76a2741796e98bfaeb60f28c73e6a"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-musllinux_1_2_armv7l.whl",
            "has_sig": false,
            "md5_digest": "9ab22b6ee33b50e907b3831c97983fb4",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 615255,
            "upload_time": "2025-02-27T05:30:25",
            "upload_time_iso_8601": "2025-02-27T05:30:25.214657Z",
            "url": "https://files.pythonhosted.org/packages/2d/f1/8e0521618de3f35f4270010b5b16685f2c4d1b96fb1fa339e67d3453f995/kand-0.1.1-cp39-cp39-musllinux_1_2_armv7l.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "29e0262e8090186d83e8d744999f8ab2364892fde924d19df41666726a5b9466",
                "md5": "b8777292b9ac3c9382dc211700796acd",
                "sha256": "8d37df838e9b25fb3df8763bcf69ca2df09377607db3043b890911b24cd551dd"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-musllinux_1_2_i686.whl",
            "has_sig": false,
            "md5_digest": "b8777292b9ac3c9382dc211700796acd",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 550172,
            "upload_time": "2025-02-27T05:30:33",
            "upload_time_iso_8601": "2025-02-27T05:30:33.715771Z",
            "url": "https://files.pythonhosted.org/packages/29/e0/262e8090186d83e8d744999f8ab2364892fde924d19df41666726a5b9466/kand-0.1.1-cp39-cp39-musllinux_1_2_i686.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "4be67759a58d05fa3297b87448f440ed807c2f99f54d721d1255313b8591dabe",
                "md5": "ad50893332bfc1cbe351f5220ad8af99",
                "sha256": "5130d118423f288bde4a690ab6db84109796fbc894a7ca20d8fbc3a04334410e"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad50893332bfc1cbe351f5220ad8af99",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 539719,
            "upload_time": "2025-02-27T05:30:44",
            "upload_time_iso_8601": "2025-02-27T05:30:44.179003Z",
            "url": "https://files.pythonhosted.org/packages/4b/e6/7759a58d05fa3297b87448f440ed807c2f99f54d721d1255313b8591dabe/kand-0.1.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "bedc4de86c2343bbbdfa9aad7b9ac9523e17d3632b46d02451668d82fe8693f6",
                "md5": "7b9f5cd7472bac9663b6527faa1ad072",
                "sha256": "c98e65233a72325554e7ce9d62044e6bd2bc33b1c410b13ece42e1cf806cbfeb"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "7b9f5cd7472bac9663b6527faa1ad072",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 253362,
            "upload_time": "2025-02-27T05:31:07",
            "upload_time_iso_8601": "2025-02-27T05:31:07.158906Z",
            "url": "https://files.pythonhosted.org/packages/be/dc/4de86c2343bbbdfa9aad7b9ac9523e17d3632b46d02451668d82fe8693f6/kand-0.1.1-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "7033e2af9a5d78c91182bed7023d7f4478e8b0b908f111db0a06ae529d353afe",
                "md5": "acee8fbceb69a690b80d8bb133e4ebb7",
                "sha256": "84b89d0919fef3b8225f529c9b1f29c9472a34fd589c5e37d49643846f834104"
            },
            "downloads": -1,
            "filename": "kand-0.1.1-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "acee8fbceb69a690b80d8bb133e4ebb7",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 265742,
            "upload_time": "2025-02-27T05:30:54",
            "upload_time_iso_8601": "2025-02-27T05:30:54.264342Z",
            "url": "https://files.pythonhosted.org/packages/70/33/e2af9a5d78c91182bed7023d7f4478e8b0b908f111db0a06ae529d353afe/kand-0.1.1-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-27 05:28:50",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "rust-ta",
    "github_project": "kand",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "kand"
}
        
Elapsed time: 0.41998s