# complexipy
<div align="center">
<a href="https://sonarcloud.io/summary/new_code?id=rohaquinlop_complexipy" target="_blank">
<img src="https://sonarcloud.io/api/project_badges/measure?project=rohaquinlop_complexipy&metric=alert_status" alt="Quality Gate">
</a>
<a href="https://pypi.org/project/complexipy" target="_blank">
<img src="https://img.shields.io/pypi/v/complexipy?color=%2334D058&label=pypi%20package" alt="Package version">
</a>
<a href="https://pepy.tech/project/complexipy" target="_blank">
<img src="https://static.pepy.tech/badge/complexipy" alt="Downloads">
</a>
<a href="https://github.com/rohaquinlop/complexipy/blob/main/LICENSE" target="_blank">
<img src="https://img.shields.io/github/license/rohaquinlop/complexipy" alt="License">
</a>
<a href="https://github.com/marketplace/actions/complexipy" target="_blank">
<img src="https://img.shields.io/badge/GitHub%20Actions-complexipy-2088FF?logo=github-actions&logoColor=white" alt="GitHub Actions">
</a>
<a href="https://marketplace.visualstudio.com/items?itemName=rohaquinlop.complexipy" target="_blank">
<img src="https://img.shields.io/visual-studio-marketplace/v/rohaquinlop.complexipy?color=%2334D058&label=vscode%20extension" alt="VSCode Extension">
</a>
<a href="https://github.com/rohaquinlop/complexipy-pre-commit" target="_blank">
<img src="https://img.shields.io/badge/pre--commit-complexipy-2088FF?logo=pre-commit&logoColor=white" alt="Pre-commit">
</a>
</div>
An extremely fast Python library to calculate the cognitive complexity of Python files, written in Rust.
## Table of Contents
- [complexipy](#complexipy)
- [Table of Contents](#table-of-contents)
- [What is Cognitive Complexity?](#what-is-cognitive-complexity)
- [Documentation](#documentation)
- [Requirements](#requirements)
- [Installation](#installation)
- [Usage](#usage)
- [Command Line Interface](#command-line-interface)
- [Command-line options](#command-line-options)
- [GitHub Action](#github-action)
- [Action Inputs](#action-inputs)
- [Examples](#examples)
- [Pre-commit Hook](#pre-commit-hook)
- [VSCode Extension](#vscode-extension)
- [Python API](#python-api)
- [Quick-start](#quick-start)
- [End-to-End Example](#end-to-end-example)
- [1. Prepare a sample file](#1--prepare-a-sample-file)
- [2. Run the CLI](#2--run-the-cli)
- [3. Use the Python API](#3--use-the-python-api)
- [4. Why is the score 1?](#4--why-is-the-score-1)
- [5. Persisting the results](#5--persisting-the-results)
- [6. Scaling up your analysis](#6--scaling-up-your-analysis)
- [Contributors](#contributors)
- [License](#license)
- [Acknowledgments](#acknowledgments)
- [References](#references)
## What is Cognitive Complexity?
Cognitive Complexity breaks from using mathematical models to assess software
maintainability by combining Cyclomatic Complexity precedents with human
assessment. It yields method complexity scores that align well with how
developers perceive maintainability.
Unlike traditional complexity metrics, cognitive complexity focuses on how difficult code is to *understand* by humans, making it more relevant for maintaining and reviewing code.
**Key benefits:**
- Identifies hard-to-understand code sections
- Helps improve code quality and maintainability
- Provides a more intuitive metric than traditional complexity measures
π Read the white paper: [Cognitive Complexity, a new way of measuring understandability](https://www.sonarsource.com/resources/cognitive-complexity/)
## Documentation
**Documentation**: <a href="https://rohaquinlop.github.io/complexipy/" target="_blank">https://rohaquinlop.github.io/complexipy/</a>
**Source Code**: <a href="https://github.com/rohaquinlop/complexipy" target="_blank">https://github.com/rohaquinlop/complexipy</a>
**PyPI**: <a href="https://pypi.org/project/complexipy/" target="_blank">https://pypi.org/project/complexipy/</a>
## Requirements
- Python >= 3.8
- Git (optional) - required only if you want to analyze a git repository
## Installation
```bash
pip install complexipy
```
## Usage
### Command Line Interface
```shell
# Analyze the current directory (recursively)
complexipy .
# Analyze a specific directory (recursively)
complexipy path/to/directory
# Analyze a remote Git repository
complexipy https://github.com/user/repo.git
# Analyze a single file
complexipy path/to/file.py
# Suppress console output
complexipy path/to/directory --quiet # or -q
# List every function, ignoring the 15-point complexity threshold
complexipy path/to/file.py --ignore-complexity # or -i
# Show only files / functions whose complexity exceeds the threshold
complexipy path/to/directory --details low # or -d low
# Sort results (asc: ascending complexity, desc: descending complexity, name: AβZ)
complexipy path/to/directory --sort desc # or -s desc
# Save results
complexipy path/to/directory --output-csv # -c, writes complexipy.csv
complexipy path/to/directory --output-json # -j, writes complexipy.json
# Set custom complexity threshold (default is 15)
complexipy path/to/directory --max-complexity-allowed 10 # or -mx 10
# Combine with other options
complexipy path/to/directory --max-complexity-allowed 20 --details low --sort desc
```
#### Command-line options
| Short | Long | Parameters | Description | Default |
| ----- | -------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |
| `-c` | `--output-csv` | β | Write the report to `complexipy.csv` in the current working directory. | false |
| `-j` | `--output-json` | β | Write the report to `complexipy.json` in the current working directory. | false |
| `-i` | `--ignore-complexity` | β | Do not stop with an error when a function's cognitive complexity exceeds the threshold. All functions are still listed in the output. | off |
| `-d` | `--details <normalβ£low>` | required | Control the verbosity of the output.<br>β’ `normal` β show every file and function (default)<br>β’ `low` β show only entries that exceed the complexity threshold | `normal` |
| `-q` | `--quiet` | β | Suppress console output. Exit codes are still returned. | false |
| `-s` | `--sort <ascβ£descβ£name>` | required | Order the results.<br>β’ `asc` β complexity ascending (default)<br>β’ `desc` β complexity descending<br>β’ `name` β alphabetical AβZ | `asc` |
| `-mx` | `--max-complexity-allowed` | number | Set the maximum allowed cognitive complexity threshold per function. Functions exceeding this value will be highlighted and cause exit code 1. | `15` |
> **Note** The CLI exits with code **1** when at least one function exceeds the complexity threshold (default: 15 points). You can customize this threshold using `--max-complexity-allowed` or disable this behavior with `--ignore-complexity` (`-i`).
### GitHub Action
You can use complexipy as a GitHub Action to automatically check code complexity in your CI/CD pipeline:
```yaml
name: Check Code Complexity
on: [push, pull_request]
jobs:
complexity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Python Code Complexity
uses: rohaquinlop/complexipy-action@v2
with:
paths: . # Analyze the entire repository
```
#### Action Inputs
| Input | Type / Allowed Values | Required |
| ---------------------- | ------------------------------------- | -------- |
| paths | string (single path or list of paths) | Yes |
| quiet | boolean | No |
| ignore_complexity | boolean | No |
| details | normal, low | No |
| sort | asc, desc, name | No |
| output_csv | boolean | No |
| output_json | boolean | No |
| max_complexity_allowed | number | No |
#### Examples
Basic Usage:
```yaml
- uses: rohaquinlop/complexipy-action@v1
with:
paths: |
.
project_path
```
Generate CSV Report:
```yaml
- uses: rohaquinlop/complexipy-action@v1
with:
paths: .
output_csv: true
```
Generate JSON Report:
```yaml
- uses: rohaquinlop/complexipy-action@v1
with:
paths: .
output_json: true
```
Analyze Specific Directory with Low Detail Output:
```yaml
- uses: rohaquinlop/complexipy-action@v1
with:
paths: ./src/python
details: low
sort: desc
```
Set Custom Complexity Threshold:
```yaml
- uses: rohaquinlop/complexipy-action@v1
with:
paths: .
max_complexity_allowed: 10
```
Strict Analysis with Low Threshold and Details:
```yaml
- uses: rohaquinlop/complexipy-action@v1
with:
paths: ./src
max_complexity_allowed: 8
details: low
sort: desc
```
### Pre-commit Hook
You can use complexipy as a pre-commit hook to automatically check code complexity before each commit. This helps maintain code quality by preventing complex code from being committed.
To use complexipy with pre-commit, add the following to your `.pre-commit-config.yaml`:
```yaml
repos:
- repo: https://github.com/rohaquinlop/complexipy-pre-commit
rev: v3.0.0 # Use the latest version
hooks:
- id: complexipy
```
The pre-commit hook will:
- Run automatically before each commit
- Check the cognitive complexity of your Python files
- Prevent commits if any function exceeds the complexity threshold
- Help maintain code quality standards in your repository
### VSCode Extension
You can also use complexipy directly in Visual Studio Code through our official [extension](https://marketplace.visualstudio.com/items?itemName=rohaquinlop.complexipy):
1. Open VS Code
2. Go to the Extensions view (Ctrl+Shift+X / Cmd+Shift+X)
3. Search for "complexipy"
4. Click Install
The extension provides:
- Real-time complexity analysis as you type
- Visual complexity indicators:
- Function complexity shown with Ζ symbol
- Line-level complexity shown with + symbol
- Color-coded indicators:
- Green: Low complexity (functions β€ 15, lines β€ 5)
- Red: High complexity (functions > 15, lines > 5)
- Automatic updates on:
- File save
- Active editor change
- Text changes
You can also trigger a manual analysis by:
1. Opening the Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
2. Typing "complexipy"
3. Selecting the "complexipy" command
## Python API
Complexipy can also be used directly from your Python code. The high-level helper functions below wrap the Rust core and return lightweight Python classes that behave like regular dataclasses.
- `complexipy.file_complexity(path: str) -> FileComplexity` β analyse a Python file on disk.
- `complexipy.code_complexity(src: str) -> CodeComplexity` β analyse a string that contains Python source.
Both helpers return objects whose public attributes you can freely access:
```text
FileComplexity
ββ path: str # Relative path of the analysed file
ββ file_name: str # Filename without the directory part
ββ complexity: int # Cognitive complexity of the whole file
ββ functions: List[FunctionComplexity]
FunctionComplexity
ββ name: str
ββ complexity: int
ββ line_start: int
ββ line_end: int
ββ line_complexities: List[LineComplexity]
LineComplexity
ββ line: int
ββ complexity: int
```
### Quick-start
```python
from complexipy import file_complexity, code_complexity
# Analyse a file
fc = file_complexity("path/to/your/file.py")
print(f"Total file complexity: {fc.complexity}")
for fn in fc.functions:
print(f"{fn.name}:{fn.line_start}-{fn.line_end} β {fn.complexity}")
# Analyse an in-memory snippet
snippet = """
def example_function(x):
if x > 0:
for i in range(x):
print(i)
"""
cc = code_complexity(snippet)
print(f"Snippet complexity: {cc.complexity}")
```
## End-to-End Example
The following walk-through shows how to use **Complexipy** from both the **command line** *and* the **Python API**, how to interpret the scores it returns, and how to save them for later use.
### 1. Prepare a sample file
Create `example.py` with two simple functions:
```python
def a_decorator(a, b):
def inner(func):
return func
return inner
def b_decorator(a, b):
def inner(func):
if func:
return None
return func
return inner
```
### 2. Run the CLI
Analyse the file from your terminal:
```bash
complexipy example.py
```
Typical output (shortened):
```text
βββββββββββββββββββββββββββββ π complexipy 3.3.0 ββββββββββββββββββββββββββββββ
Summary
βββββββββββββββββββββ³ββββββββββββββββββββ³ββββββββββββββ³βββββββββββββ
β Path β File β Function β Complexity β
β‘βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ©
β test_decorator.py β test_decorator.py β a_decorator β 0 β
βββββββββββββββββββββΌββββββββββββββββββββΌββββββββββββββΌβββββββββββββ€
β test_decorator.py β test_decorator.py β b_decorator β 1 β
βββββββββββββββββββββ΄ββββββββββββββββββββ΄ββββββββββββββ΄βββββββββββββ
π§ Total Cognitive Complexity: 1
1 file analyzed in 0.0092 seconds
ββββββββββββββββββββββββββ π Analysis completed! π βββββββββββββββββββββββββββ
```
**What do those columns mean?**
* **Path / File** β location of the analysed source file
* **Function** β function or method name that was measured
* **Complexity** β the cognitive complexity score of that function *(lower is better)*
### 3. Use the Python API
```python
from complexipy import file_complexity, code_complexity
# Analyse the file on disk
fc = file_complexity("example.py")
print(fc.complexity) # β 1
# Analyse an in-memory snippet
snippet = "for x in range(10):\n print(x)"
cc = code_complexity(snippet)
print(cc.complexity) # β 1
```
### 4. Why is the score 1?
```python
def b_decorator(a, b): # 0
def inner(func): # 0
if func: # +1 β decision point
return None # 0
return func # 0
return inner # 0
```
Only a single `if` branch is encountered, therefore the file's total complexity is **1**.
### 5. Persisting the results
* **CSV** β `complexipy example.py -c` β creates `complexipy.csv`
* **JSON** β `complexipy example.py -j` β creates `complexipy.json`
### 6. Scaling up your analysis
* **Entire folder (recursively):** `complexipy .`
* **Specific directory:** `complexipy ~/projects/my_app`
* **Remote Git repository:**
```bash
complexipy https://github.com/rohaquinlop/complexipy # print to screen
complexipy https://github.com/rohaquinlop/complexipy -c # save as CSV
```
## Contributors
<p align="center">
<a href = "https://github.com/rohaquinlop/complexipy/graphs/contributors">
<img src = "https://contrib.rocks/image?repo=rohaquinlop/complexipy"/>
</a>
</p>
Made with [contributors-img](https://contrib.rocks)
## License
This project is licensed under the MIT License - see the [LICENSE](https://github.com/rohaquinlop/complexipy/blob/main/LICENSE) file for details.
## Acknowledgments
- Thanks to G. Ann Campbell for publishing the paper "Cognitive Complexity a new way to measure understandability".
- This project is inspired by the Sonar way to calculate cognitive complexity.
## References
- [Cognitive Complexity](https://www.sonarsource.com/resources/cognitive-complexity/)
Raw data
{
"_id": null,
"home_page": "https://github.com/rohaquinlop/complexipy",
"name": "complexipy",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "cognitive, complexity, cognitive complexity, quality, quality assurance, testing, libraries, performance, sonar",
"author": "Robin Quintero <rohaquinlop301@gmail.com>",
"author_email": "Robin Quintero <rohaquinlop301@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/0e/b8/14850e2953379ea70c7f960558e35081024b063c7097cf9f6b918d3f46c2/complexipy-3.3.0.tar.gz",
"platform": null,
"description": "# complexipy\n\n<div align=\"center\">\n <a href=\"https://sonarcloud.io/summary/new_code?id=rohaquinlop_complexipy\" target=\"_blank\">\n <img src=\"https://sonarcloud.io/api/project_badges/measure?project=rohaquinlop_complexipy&metric=alert_status\" alt=\"Quality Gate\">\n </a>\n <a href=\"https://pypi.org/project/complexipy\" target=\"_blank\">\n <img src=\"https://img.shields.io/pypi/v/complexipy?color=%2334D058&label=pypi%20package\" alt=\"Package version\">\n </a>\n <a href=\"https://pepy.tech/project/complexipy\" target=\"_blank\">\n <img src=\"https://static.pepy.tech/badge/complexipy\" alt=\"Downloads\">\n </a>\n <a href=\"https://github.com/rohaquinlop/complexipy/blob/main/LICENSE\" target=\"_blank\">\n <img src=\"https://img.shields.io/github/license/rohaquinlop/complexipy\" alt=\"License\">\n </a>\n <a href=\"https://github.com/marketplace/actions/complexipy\" target=\"_blank\">\n <img src=\"https://img.shields.io/badge/GitHub%20Actions-complexipy-2088FF?logo=github-actions&logoColor=white\" alt=\"GitHub Actions\">\n </a>\n <a href=\"https://marketplace.visualstudio.com/items?itemName=rohaquinlop.complexipy\" target=\"_blank\">\n <img src=\"https://img.shields.io/visual-studio-marketplace/v/rohaquinlop.complexipy?color=%2334D058&label=vscode%20extension\" alt=\"VSCode Extension\">\n </a>\n <a href=\"https://github.com/rohaquinlop/complexipy-pre-commit\" target=\"_blank\">\n <img src=\"https://img.shields.io/badge/pre--commit-complexipy-2088FF?logo=pre-commit&logoColor=white\" alt=\"Pre-commit\">\n </a>\n</div>\n\nAn extremely fast Python library to calculate the cognitive complexity of Python files, written in Rust.\n\n## Table of Contents\n- [complexipy](#complexipy)\n - [Table of Contents](#table-of-contents)\n - [What is Cognitive Complexity?](#what-is-cognitive-complexity)\n - [Documentation](#documentation)\n - [Requirements](#requirements)\n - [Installation](#installation)\n - [Usage](#usage)\n - [Command Line Interface](#command-line-interface)\n - [Command-line options](#command-line-options)\n - [GitHub Action](#github-action)\n - [Action Inputs](#action-inputs)\n - [Examples](#examples)\n - [Pre-commit Hook](#pre-commit-hook)\n - [VSCode Extension](#vscode-extension)\n - [Python API](#python-api)\n - [Quick-start](#quick-start)\n - [End-to-End Example](#end-to-end-example)\n - [1. Prepare a sample file](#1--prepare-a-sample-file)\n - [2. Run the CLI](#2--run-the-cli)\n - [3. Use the Python API](#3--use-the-python-api)\n - [4. Why is the score 1?](#4--why-is-the-score-1)\n - [5. Persisting the results](#5--persisting-the-results)\n - [6. Scaling up your analysis](#6--scaling-up-your-analysis)\n - [Contributors](#contributors)\n - [License](#license)\n - [Acknowledgments](#acknowledgments)\n - [References](#references)\n\n## What is Cognitive Complexity?\n\nCognitive Complexity breaks from using mathematical models to assess software\nmaintainability by combining Cyclomatic Complexity precedents with human\nassessment. It yields method complexity scores that align well with how\ndevelopers perceive maintainability.\n\nUnlike traditional complexity metrics, cognitive complexity focuses on how difficult code is to *understand* by humans, making it more relevant for maintaining and reviewing code.\n\n**Key benefits:**\n- Identifies hard-to-understand code sections\n- Helps improve code quality and maintainability\n- Provides a more intuitive metric than traditional complexity measures\n\n\ud83d\udcc4 Read the white paper: [Cognitive Complexity, a new way of measuring understandability](https://www.sonarsource.com/resources/cognitive-complexity/)\n\n## Documentation\n\n**Documentation**: <a href=\"https://rohaquinlop.github.io/complexipy/\" target=\"_blank\">https://rohaquinlop.github.io/complexipy/</a>\n\n**Source Code**: <a href=\"https://github.com/rohaquinlop/complexipy\" target=\"_blank\">https://github.com/rohaquinlop/complexipy</a>\n\n**PyPI**: <a href=\"https://pypi.org/project/complexipy/\" target=\"_blank\">https://pypi.org/project/complexipy/</a>\n\n## Requirements\n\n- Python >= 3.8\n- Git (optional) - required only if you want to analyze a git repository\n\n## Installation\n\n```bash\npip install complexipy\n```\n\n## Usage\n\n### Command Line Interface\n\n```shell\n# Analyze the current directory (recursively)\ncomplexipy .\n\n# Analyze a specific directory (recursively)\ncomplexipy path/to/directory\n\n# Analyze a remote Git repository\ncomplexipy https://github.com/user/repo.git\n\n# Analyze a single file\ncomplexipy path/to/file.py\n\n# Suppress console output\ncomplexipy path/to/directory --quiet # or -q\n\n# List every function, ignoring the 15-point complexity threshold\ncomplexipy path/to/file.py --ignore-complexity # or -i\n\n# Show only files / functions whose complexity exceeds the threshold\ncomplexipy path/to/directory --details low # or -d low\n\n# Sort results (asc: ascending complexity, desc: descending complexity, name: A\u2192Z)\ncomplexipy path/to/directory --sort desc # or -s desc\n\n# Save results\ncomplexipy path/to/directory --output-csv # -c, writes complexipy.csv\ncomplexipy path/to/directory --output-json # -j, writes complexipy.json\n\n# Set custom complexity threshold (default is 15)\ncomplexipy path/to/directory --max-complexity-allowed 10 # or -mx 10\n\n# Combine with other options\ncomplexipy path/to/directory --max-complexity-allowed 20 --details low --sort desc\n```\n\n#### Command-line options\n\n| Short | Long | Parameters | Description | Default |\n| ----- | -------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- |\n| `-c` | `--output-csv` | \u2013 | Write the report to `complexipy.csv` in the current working directory. | false |\n| `-j` | `--output-json` | \u2013 | Write the report to `complexipy.json` in the current working directory. | false |\n| `-i` | `--ignore-complexity` | \u2013 | Do not stop with an error when a function's cognitive complexity exceeds the threshold. All functions are still listed in the output. | off |\n| `-d` | `--details <normal\u2223low>` | required | Control the verbosity of the output.<br>\u2022 `normal` \u2013 show every file and function (default)<br>\u2022 `low` \u2013 show only entries that exceed the complexity threshold | `normal` |\n| `-q` | `--quiet` | \u2013 | Suppress console output. Exit codes are still returned. | false |\n| `-s` | `--sort <asc\u2223desc\u2223name>` | required | Order the results.<br>\u2022 `asc` \u2013 complexity ascending (default)<br>\u2022 `desc` \u2013 complexity descending<br>\u2022 `name` \u2013 alphabetical A\u2192Z | `asc` |\n| `-mx` | `--max-complexity-allowed` | number | Set the maximum allowed cognitive complexity threshold per function. Functions exceeding this value will be highlighted and cause exit code 1. | `15` |\n\n> **Note** The CLI exits with code **1** when at least one function exceeds the complexity threshold (default: 15 points). You can customize this threshold using `--max-complexity-allowed` or disable this behavior with `--ignore-complexity` (`-i`).\n\n### GitHub Action\n\nYou can use complexipy as a GitHub Action to automatically check code complexity in your CI/CD pipeline:\n\n```yaml\nname: Check Code Complexity\non: [push, pull_request]\n\njobs:\n complexity:\n runs-on: ubuntu-latest\n steps:\n - uses: actions/checkout@v4\n - name: Check Python Code Complexity\n uses: rohaquinlop/complexipy-action@v2\n with:\n paths: . # Analyze the entire repository\n```\n\n#### Action Inputs\n\n| Input | Type / Allowed Values | Required |\n| ---------------------- | ------------------------------------- | -------- |\n| paths | string (single path or list of paths) | Yes |\n| quiet | boolean | No |\n| ignore_complexity | boolean | No |\n| details | normal, low | No |\n| sort | asc, desc, name | No |\n| output_csv | boolean | No |\n| output_json | boolean | No |\n| max_complexity_allowed | number | No |\n\n#### Examples\n\nBasic Usage:\n```yaml\n- uses: rohaquinlop/complexipy-action@v1\n with:\n paths: |\n .\n project_path\n```\n\nGenerate CSV Report:\n```yaml\n- uses: rohaquinlop/complexipy-action@v1\n with:\n paths: .\n output_csv: true\n```\n\nGenerate JSON Report:\n```yaml\n- uses: rohaquinlop/complexipy-action@v1\n with:\n paths: .\n output_json: true\n```\n\nAnalyze Specific Directory with Low Detail Output:\n```yaml\n- uses: rohaquinlop/complexipy-action@v1\n with:\n paths: ./src/python\n details: low\n sort: desc\n```\n\nSet Custom Complexity Threshold:\n```yaml\n- uses: rohaquinlop/complexipy-action@v1\n with:\n paths: .\n max_complexity_allowed: 10\n```\n\nStrict Analysis with Low Threshold and Details:\n```yaml\n- uses: rohaquinlop/complexipy-action@v1\n with:\n paths: ./src\n max_complexity_allowed: 8\n details: low\n sort: desc\n```\n\n### Pre-commit Hook\n\nYou can use complexipy as a pre-commit hook to automatically check code complexity before each commit. This helps maintain code quality by preventing complex code from being committed.\n\nTo use complexipy with pre-commit, add the following to your `.pre-commit-config.yaml`:\n\n```yaml\nrepos:\n- repo: https://github.com/rohaquinlop/complexipy-pre-commit\n rev: v3.0.0 # Use the latest version\n hooks:\n - id: complexipy\n```\n\nThe pre-commit hook will:\n- Run automatically before each commit\n- Check the cognitive complexity of your Python files\n- Prevent commits if any function exceeds the complexity threshold\n- Help maintain code quality standards in your repository\n\n### VSCode Extension\n\nYou can also use complexipy directly in Visual Studio Code through our official [extension](https://marketplace.visualstudio.com/items?itemName=rohaquinlop.complexipy):\n\n1. Open VS Code\n2. Go to the Extensions view (Ctrl+Shift+X / Cmd+Shift+X)\n3. Search for \"complexipy\"\n4. Click Install\n\nThe extension provides:\n- Real-time complexity analysis as you type\n- Visual complexity indicators:\n - Function complexity shown with \u0192 symbol\n - Line-level complexity shown with + symbol\n - Color-coded indicators:\n - Green: Low complexity (functions \u2264 15, lines \u2264 5)\n - Red: High complexity (functions > 15, lines > 5)\n- Automatic updates on:\n - File save\n - Active editor change\n - Text changes\n\nYou can also trigger a manual analysis by:\n1. Opening the Command Palette (Ctrl+Shift+P / Cmd+Shift+P)\n2. Typing \"complexipy\"\n3. Selecting the \"complexipy\" command\n\n## Python API\n\nComplexipy can also be used directly from your Python code. The high-level helper functions below wrap the Rust core and return lightweight Python classes that behave like regular dataclasses.\n\n- `complexipy.file_complexity(path: str) -> FileComplexity` \u2013 analyse a Python file on disk.\n- `complexipy.code_complexity(src: str) -> CodeComplexity` \u2013 analyse a string that contains Python source.\n\nBoth helpers return objects whose public attributes you can freely access:\n\n```text\nFileComplexity\n\u251c\u2500 path: str # Relative path of the analysed file\n\u251c\u2500 file_name: str # Filename without the directory part\n\u251c\u2500 complexity: int # Cognitive complexity of the whole file\n\u2514\u2500 functions: List[FunctionComplexity]\n\nFunctionComplexity\n\u251c\u2500 name: str\n\u251c\u2500 complexity: int\n\u251c\u2500 line_start: int\n\u251c\u2500 line_end: int\n\u2514\u2500 line_complexities: List[LineComplexity]\n\nLineComplexity\n\u251c\u2500 line: int\n\u2514\u2500 complexity: int\n```\n\n### Quick-start\n\n```python\nfrom complexipy import file_complexity, code_complexity\n\n# Analyse a file\nfc = file_complexity(\"path/to/your/file.py\")\nprint(f\"Total file complexity: {fc.complexity}\")\n\nfor fn in fc.functions:\n print(f\"{fn.name}:{fn.line_start}-{fn.line_end} \u2192 {fn.complexity}\")\n\n# Analyse an in-memory snippet\nsnippet = \"\"\"\ndef example_function(x):\n if x > 0:\n for i in range(x):\n print(i)\n\"\"\"\ncc = code_complexity(snippet)\nprint(f\"Snippet complexity: {cc.complexity}\")\n```\n\n## End-to-End Example\n\nThe following walk-through shows how to use **Complexipy** from both the **command line** *and* the **Python API**, how to interpret the scores it returns, and how to save them for later use.\n\n### 1. Prepare a sample file\n\nCreate `example.py` with two simple functions:\n\n```python\ndef a_decorator(a, b):\n def inner(func):\n return func\n return inner\n\n\ndef b_decorator(a, b):\n def inner(func):\n if func:\n return None\n return func\n return inner\n```\n\n### 2. Run the CLI\n\nAnalyse the file from your terminal:\n\n```bash\ncomplexipy example.py\n```\n\nTypical output (shortened):\n\n```text\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \ud83d\udc19 complexipy 3.3.0 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Summary\n \u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n \u2503 Path \u2503 File \u2503 Function \u2503 Complexity \u2503\n \u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n \u2502 test_decorator.py \u2502 test_decorator.py \u2502 a_decorator \u2502 0 \u2502\n \u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n \u2502 test_decorator.py \u2502 test_decorator.py \u2502 b_decorator \u2502 1 \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\ud83e\udde0 Total Cognitive Complexity: 1\n1 file analyzed in 0.0092 seconds\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \ud83c\udf89 Analysis completed! \ud83c\udf89 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n```\n\n**What do those columns mean?**\n\n* **Path / File** \u2013 location of the analysed source file\n* **Function** \u2013 function or method name that was measured\n* **Complexity** \u2013 the cognitive complexity score of that function *(lower is better)*\n\n### 3. Use the Python API\n\n```python\nfrom complexipy import file_complexity, code_complexity\n\n# Analyse the file on disk\nfc = file_complexity(\"example.py\")\nprint(fc.complexity) # \u2192 1\n\n# Analyse an in-memory snippet\nsnippet = \"for x in range(10):\\n print(x)\"\ncc = code_complexity(snippet)\nprint(cc.complexity) # \u2192 1\n```\n\n### 4. Why is the score 1?\n\n```python\ndef b_decorator(a, b): # 0\n def inner(func): # 0\n if func: # +1 \u2013 decision point\n return None # 0\n return func # 0\n return inner # 0\n```\n\nOnly a single `if` branch is encountered, therefore the file's total complexity is **1**.\n\n### 5. Persisting the results\n\n* **CSV** \u2013 `complexipy example.py -c` \u2192 creates `complexipy.csv`\n* **JSON** \u2013 `complexipy example.py -j` \u2192 creates `complexipy.json`\n\n### 6. Scaling up your analysis\n\n* **Entire folder (recursively):** `complexipy .`\n* **Specific directory:** `complexipy ~/projects/my_app`\n* **Remote Git repository:**\n ```bash\n complexipy https://github.com/rohaquinlop/complexipy # print to screen\n complexipy https://github.com/rohaquinlop/complexipy -c # save as CSV\n ```\n\n## Contributors\n\n<p align=\"center\">\n <a href = \"https://github.com/rohaquinlop/complexipy/graphs/contributors\">\n <img src = \"https://contrib.rocks/image?repo=rohaquinlop/complexipy\"/>\n </a>\n</p>\n\nMade with [contributors-img](https://contrib.rocks)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](https://github.com/rohaquinlop/complexipy/blob/main/LICENSE) file for details.\n\n## Acknowledgments\n\n- Thanks to G. Ann Campbell for publishing the paper \"Cognitive Complexity a new way to measure understandability\".\n- This project is inspired by the Sonar way to calculate cognitive complexity.\n\n## References\n\n- [Cognitive Complexity](https://www.sonarsource.com/resources/cognitive-complexity/)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "An extremely fast Python library to calculate the cognitive complexity of Python files, written in Rust.",
"version": "3.3.0",
"project_urls": {
"Homepage": "https://github.com/rohaquinlop/complexipy",
"Source Code": "https://github.com/rohaquinlop/complexipy"
},
"split_keywords": [
"cognitive",
" complexity",
" cognitive complexity",
" quality",
" quality assurance",
" testing",
" libraries",
" performance",
" sonar"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "cea9ffedd50736eb1a31d6be45b4ccaf82b8e09d3ed91f2a4ab99b6c0c7ace52",
"md5": "f2ede6f9ba1f62a9bced85c2f0aa8279",
"sha256": "427785a6b0639f6a3f532c3213e2aee1003072b25c498e4fb2050e65e30723b5"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "f2ede6f9ba1f62a9bced85c2f0aa8279",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2059845,
"upload_time": "2025-07-17T04:51:16",
"upload_time_iso_8601": "2025-07-17T04:51:16.207374Z",
"url": "https://files.pythonhosted.org/packages/ce/a9/ffedd50736eb1a31d6be45b4ccaf82b8e09d3ed91f2a4ab99b6c0c7ace52/complexipy-3.3.0-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "57bceaefbe188553dfab2456967addeb819a72f1d8c01854152aa095e1e7309c",
"md5": "ce458b19d8507e1df74882c9f9f55495",
"sha256": "9679aa099d7bedbacf35d67cb52c969dda0fc3fcf75609f84612124eaee9c7bf"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ce458b19d8507e1df74882c9f9f55495",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1982533,
"upload_time": "2025-07-17T04:51:18",
"upload_time_iso_8601": "2025-07-17T04:51:18.399805Z",
"url": "https://files.pythonhosted.org/packages/57/bc/eaefbe188553dfab2456967addeb819a72f1d8c01854152aa095e1e7309c/complexipy-3.3.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "55e0cbd7942eedab40fea4d13883bcadefde15f81e847d15088a50c0e1396bc1",
"md5": "f224d9f086c80f6d1b78563d3c1e7ed6",
"sha256": "25e3124fc2e2d50461902d0d758ed2fde0280a75b10ba6f7edfb88a963ec7b40"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "f224d9f086c80f6d1b78563d3c1e7ed6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2158798,
"upload_time": "2025-07-17T04:51:20",
"upload_time_iso_8601": "2025-07-17T04:51:20.377196Z",
"url": "https://files.pythonhosted.org/packages/55/e0/cbd7942eedab40fea4d13883bcadefde15f81e847d15088a50c0e1396bc1/complexipy-3.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "47a650445c6814dc45a6fbbb47967f6b81ceb1bbe8c216bf94c681d439861e49",
"md5": "481d2d1d32e1b5685d5d390ae03caa92",
"sha256": "9d9a7b2c03f5696d4a8544087856715252c901b8e61258487aadbd3f47359772"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "481d2d1d32e1b5685d5d390ae03caa92",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2110397,
"upload_time": "2025-07-17T04:51:22",
"upload_time_iso_8601": "2025-07-17T04:51:22.409077Z",
"url": "https://files.pythonhosted.org/packages/47/a6/50445c6814dc45a6fbbb47967f6b81ceb1bbe8c216bf94c681d439861e49/complexipy-3.3.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "02f93dbef6739ebe215b1a8f0733f9a015dccd76c78aafc6f22d5c7b410b80f5",
"md5": "077412d7d20110e374a0397db035e57f",
"sha256": "a4a7f6d401b529389c9594b18962303c04c0132e7799a992878cb3f8371683d3"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "077412d7d20110e374a0397db035e57f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2280514,
"upload_time": "2025-07-17T04:51:24",
"upload_time_iso_8601": "2025-07-17T04:51:24.336943Z",
"url": "https://files.pythonhosted.org/packages/02/f9/3dbef6739ebe215b1a8f0733f9a015dccd76c78aafc6f22d5c7b410b80f5/complexipy-3.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "938ce39889871d381cf4058fe081c87ac51855697bb938fd6a76f9c6633af162",
"md5": "987d081ad54cc93bb413432ebf0c9101",
"sha256": "51b46b47b03bd59bdb08dae03c2eb99bf2af4ca61fc3c8ba3f5556a6839d8836"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "987d081ad54cc93bb413432ebf0c9101",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2511676,
"upload_time": "2025-07-17T04:51:26",
"upload_time_iso_8601": "2025-07-17T04:51:26.087949Z",
"url": "https://files.pythonhosted.org/packages/93/8c/e39889871d381cf4058fe081c87ac51855697bb938fd6a76f9c6633af162/complexipy-3.3.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8920a069429031d826f6a593a61ae1194ac5a9cdb40325409e4713e2ac8bc945",
"md5": "b0649c34f581e078892ef0456ed9a7f6",
"sha256": "b5d13a47d649bf11cf1089c4824e1504bf816d7fe2cc9b77abbc67fa24e4e3e5"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "b0649c34f581e078892ef0456ed9a7f6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2320523,
"upload_time": "2025-07-17T04:51:28",
"upload_time_iso_8601": "2025-07-17T04:51:28.889477Z",
"url": "https://files.pythonhosted.org/packages/89/20/a069429031d826f6a593a61ae1194ac5a9cdb40325409e4713e2ac8bc945/complexipy-3.3.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c9952a06e90b30058bde39b6073f35810411680435c3ef47146de85c14b17097",
"md5": "fc5e922955e8cf5b6d84768b1b944126",
"sha256": "7898f18d1feaf5cec7ed0921144daee1772c53374ec4b21609cacbf727be473d"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "fc5e922955e8cf5b6d84768b1b944126",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 2232059,
"upload_time": "2025-07-17T04:51:30",
"upload_time_iso_8601": "2025-07-17T04:51:30.819456Z",
"url": "https://files.pythonhosted.org/packages/c9/95/2a06e90b30058bde39b6073f35810411680435c3ef47146de85c14b17097/complexipy-3.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b12171697861b55efeaf12db3328aaeb38fda5976e47af152d3d764686dcedbe",
"md5": "6771af5b68fca873e719f87e5ef6e732",
"sha256": "050e482c87e045b894a50430fbd19309b4e3551294c960a2176eeba29463b1b9"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "6771af5b68fca873e719f87e5ef6e732",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1738067,
"upload_time": "2025-07-17T04:51:32",
"upload_time_iso_8601": "2025-07-17T04:51:32.380393Z",
"url": "https://files.pythonhosted.org/packages/b1/21/71697861b55efeaf12db3328aaeb38fda5976e47af152d3d764686dcedbe/complexipy-3.3.0-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "57ecbd896889047d4ef9671607cfbc43259080b5cb35a778a62631e44b3902ef",
"md5": "4abbeb79fde1060f158125d3cd15fb9c",
"sha256": "6fff66ce62e66afa0bc7e2e5c03c39657ef5d1cc40895112aaabae44e85c4fc2"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "4abbeb79fde1060f158125d3cd15fb9c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1878533,
"upload_time": "2025-07-17T04:51:33",
"upload_time_iso_8601": "2025-07-17T04:51:33.940189Z",
"url": "https://files.pythonhosted.org/packages/57/ec/bd896889047d4ef9671607cfbc43259080b5cb35a778a62631e44b3902ef/complexipy-3.3.0-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0036060fad3fe394c5323ddc6a4c750ff2603281bfa9c8f064e4e07677860f97",
"md5": "9afdf54a50c9e940b618326b59e71507",
"sha256": "04a7001be54c283ab8f9d44ba05fe7c993bf9ccca68b3b84dd2b305efc6f7ae6"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "9afdf54a50c9e940b618326b59e71507",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2059960,
"upload_time": "2025-07-17T04:51:35",
"upload_time_iso_8601": "2025-07-17T04:51:35.833336Z",
"url": "https://files.pythonhosted.org/packages/00/36/060fad3fe394c5323ddc6a4c750ff2603281bfa9c8f064e4e07677860f97/complexipy-3.3.0-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "749291ce0b14176ddb8453cdbe9104bb1d50250a8d64400e19f43ccbb3c7d7b3",
"md5": "87b81c38fd845c76513cc57b50f36268",
"sha256": "6af7976b404775ee56b01b1b40b880b3507fa6277714cea35c2d7c29fb653a1d"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "87b81c38fd845c76513cc57b50f36268",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1982690,
"upload_time": "2025-07-17T04:51:37",
"upload_time_iso_8601": "2025-07-17T04:51:37.670278Z",
"url": "https://files.pythonhosted.org/packages/74/92/91ce0b14176ddb8453cdbe9104bb1d50250a8d64400e19f43ccbb3c7d7b3/complexipy-3.3.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ef24f00c949b0ebfc56ac0e61a1586c97b3d0ba03530c64069416506217d24b0",
"md5": "ddd0839811dff4d65d6e943125fd34cd",
"sha256": "4c4fc6db26bb4ff74b1fb23f246d527b201eedef753e01a2f19893a29b1a9ad2"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ddd0839811dff4d65d6e943125fd34cd",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2158887,
"upload_time": "2025-07-17T04:51:39",
"upload_time_iso_8601": "2025-07-17T04:51:39.777932Z",
"url": "https://files.pythonhosted.org/packages/ef/24/f00c949b0ebfc56ac0e61a1586c97b3d0ba03530c64069416506217d24b0/complexipy-3.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "88a08353977fce3aee42e7977f02a671375de34e41d0baa272bae5d17b3ac11e",
"md5": "d924f26aba8d946cae72c7e99d2ae4a7",
"sha256": "df8086da45bfea6cead6ada52ad8f59a2c7502e47193b118f251c0b052d3197b"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "d924f26aba8d946cae72c7e99d2ae4a7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2110398,
"upload_time": "2025-07-17T04:51:41",
"upload_time_iso_8601": "2025-07-17T04:51:41.467094Z",
"url": "https://files.pythonhosted.org/packages/88/a0/8353977fce3aee42e7977f02a671375de34e41d0baa272bae5d17b3ac11e/complexipy-3.3.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d4e380951fbb42e9fb69ec70c4f74928abc8e7a85bf47531380c1ecdb8727971",
"md5": "73e2899c306612637ecbeed87c05b859",
"sha256": "8c5f1472a3a3210044a752775b6287d4500808d17ac73c3519592d86e40ab643"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "73e2899c306612637ecbeed87c05b859",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2280753,
"upload_time": "2025-07-17T04:51:43",
"upload_time_iso_8601": "2025-07-17T04:51:43.298320Z",
"url": "https://files.pythonhosted.org/packages/d4/e3/80951fbb42e9fb69ec70c4f74928abc8e7a85bf47531380c1ecdb8727971/complexipy-3.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "df8a6973936daa98a7665b4a0db80579a4664c6421ba7316c617eb1fa919d15a",
"md5": "e46a08937c5a99877df2c6bed5959de3",
"sha256": "69db97d22cd7230ca1292292caa55b883e7b6051e9dcae37a8a9fbcb3d52fe8c"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "e46a08937c5a99877df2c6bed5959de3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2511918,
"upload_time": "2025-07-17T04:51:44",
"upload_time_iso_8601": "2025-07-17T04:51:44.846965Z",
"url": "https://files.pythonhosted.org/packages/df/8a/6973936daa98a7665b4a0db80579a4664c6421ba7316c617eb1fa919d15a/complexipy-3.3.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a29bbb87e4ca8460041fbc5b3d34d67f5b0f5b12f2f98e4b3f53870cb03afe3d",
"md5": "ee5768ad4bb35603f29a3e947d205433",
"sha256": "4a3343fb6ead372b33160540f847d2030392384e2eeff7ef1be01608bee9c4a4"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "ee5768ad4bb35603f29a3e947d205433",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2320456,
"upload_time": "2025-07-17T04:51:46",
"upload_time_iso_8601": "2025-07-17T04:51:46.432003Z",
"url": "https://files.pythonhosted.org/packages/a2/9b/bb87e4ca8460041fbc5b3d34d67f5b0f5b12f2f98e4b3f53870cb03afe3d/complexipy-3.3.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f67bba17b272b178b5dba9f21d653ab58e09e07817a1e81e07c4d8e62b91af19",
"md5": "85bc952f6d0abcef66e27ed7cc7a86d7",
"sha256": "e6bfc1e6193f55506da46b717a571242ac77b1398e998df9785ab28b3216ba7c"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "85bc952f6d0abcef66e27ed7cc7a86d7",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 2232082,
"upload_time": "2025-07-17T04:51:48",
"upload_time_iso_8601": "2025-07-17T04:51:48.252216Z",
"url": "https://files.pythonhosted.org/packages/f6/7b/ba17b272b178b5dba9f21d653ab58e09e07817a1e81e07c4d8e62b91af19/complexipy-3.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3d98e329fe71705e5acc2e2f14ad5d60467680dc1c4bf7c7c11149e609301c5e",
"md5": "7c000c9746a4a6c741c40db367b362a4",
"sha256": "2394dd5ee78a0c2ec3eefbb7863af9234b37e2f8c99eea8a6346ed8f3658baa3"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "7c000c9746a4a6c741c40db367b362a4",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1738063,
"upload_time": "2025-07-17T04:51:49",
"upload_time_iso_8601": "2025-07-17T04:51:49.767304Z",
"url": "https://files.pythonhosted.org/packages/3d/98/e329fe71705e5acc2e2f14ad5d60467680dc1c4bf7c7c11149e609301c5e/complexipy-3.3.0-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0ed16202ef1753a3689789e5444e52fa089d39f6a4df33c156601c897e7cf7a8",
"md5": "8999347b40f7df4b7ce2b36a54f58c42",
"sha256": "80364e958deb69e32dc17222a2be41ae7cbe39d740cfb3e14fbd28432923d33a"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "8999347b40f7df4b7ce2b36a54f58c42",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1878544,
"upload_time": "2025-07-17T04:51:51",
"upload_time_iso_8601": "2025-07-17T04:51:51.394824Z",
"url": "https://files.pythonhosted.org/packages/0e/d1/6202ef1753a3689789e5444e52fa089d39f6a4df33c156601c897e7cf7a8/complexipy-3.3.0-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "75e1d75f60a7246bc9b5717c3134de1ed224cb1145ab70622d8737e7cc0a8665",
"md5": "45d0ca563946aa11841a59e78a729838",
"sha256": "792bdf719147f9098022af294f022ccd33597ac3be432853c6ae167741c1571f"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "45d0ca563946aa11841a59e78a729838",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2060691,
"upload_time": "2025-07-17T04:51:53",
"upload_time_iso_8601": "2025-07-17T04:51:53.400712Z",
"url": "https://files.pythonhosted.org/packages/75/e1/d75f60a7246bc9b5717c3134de1ed224cb1145ab70622d8737e7cc0a8665/complexipy-3.3.0-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f46b780399ded11d2378b64269a9291af3f5adddd1c8f020e287d512b4b35f23",
"md5": "32d13cc4e16914658c36be7458481dc2",
"sha256": "2f9340598f255ca79603462a0e25f4007cfe7c5f91414935dc4b3b4e785ed2f7"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "32d13cc4e16914658c36be7458481dc2",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1982805,
"upload_time": "2025-07-17T04:51:55",
"upload_time_iso_8601": "2025-07-17T04:51:55.345453Z",
"url": "https://files.pythonhosted.org/packages/f4/6b/780399ded11d2378b64269a9291af3f5adddd1c8f020e287d512b4b35f23/complexipy-3.3.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bd298f479ba6995d6744af7dea99a6693d894012843156fa186845fc8e2ae225",
"md5": "9a57776d9401d32d341f018724d0504e",
"sha256": "4fd1394b6a76c69b5cc73162137847436fa86337d9df25b3c57ea045be7b39ca"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "9a57776d9401d32d341f018724d0504e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2159005,
"upload_time": "2025-07-17T04:51:57",
"upload_time_iso_8601": "2025-07-17T04:51:57.050818Z",
"url": "https://files.pythonhosted.org/packages/bd/29/8f479ba6995d6744af7dea99a6693d894012843156fa186845fc8e2ae225/complexipy-3.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "083956b34e6c6149fa95b4c2490898a1287cc7b68fb080dbeea039962d9ca79c",
"md5": "87fb2459ed2854404df31a4b16f74380",
"sha256": "211047e61e6b40015bd59493da9f3793ec24b903c1d25dccb328f28c347cddc3"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "87fb2459ed2854404df31a4b16f74380",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2110559,
"upload_time": "2025-07-17T04:51:59",
"upload_time_iso_8601": "2025-07-17T04:51:59.025676Z",
"url": "https://files.pythonhosted.org/packages/08/39/56b34e6c6149fa95b4c2490898a1287cc7b68fb080dbeea039962d9ca79c/complexipy-3.3.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b52f35f4b5e12894194939df1a15caf84c07bdaef37f572aaa1f1eb96b5a547d",
"md5": "1d0cf1a8c6e762305ee11ea9965358b0",
"sha256": "20c3716160b14ab7857f1edb986f188ea6566ce65352d40cacdba8e7d81ef731"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "1d0cf1a8c6e762305ee11ea9965358b0",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2282840,
"upload_time": "2025-07-17T04:52:00",
"upload_time_iso_8601": "2025-07-17T04:52:00.724711Z",
"url": "https://files.pythonhosted.org/packages/b5/2f/35f4b5e12894194939df1a15caf84c07bdaef37f572aaa1f1eb96b5a547d/complexipy-3.3.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "340b58bb8cff8342fcc082d9f83b0fa843a9062d784b169d8e6e703ceb8b0e5e",
"md5": "dc57851cac9016daba69fcf05c96c3f9",
"sha256": "49ff8404eac497244ad7618c3569aff03afa4e8dbf5fe882118d389e5831a960"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "dc57851cac9016daba69fcf05c96c3f9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2510515,
"upload_time": "2025-07-17T04:52:02",
"upload_time_iso_8601": "2025-07-17T04:52:02.360762Z",
"url": "https://files.pythonhosted.org/packages/34/0b/58bb8cff8342fcc082d9f83b0fa843a9062d784b169d8e6e703ceb8b0e5e/complexipy-3.3.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eaed3237416e774b40572ce965c699c322934223b383ef1d504a4742937d1bb2",
"md5": "e320d276fc70069f2903733977a31ab9",
"sha256": "07816b8d95194f716560f19f569293eb55d70a39450744e8151a99b846bbdb70"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "e320d276fc70069f2903733977a31ab9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2316619,
"upload_time": "2025-07-17T04:52:03",
"upload_time_iso_8601": "2025-07-17T04:52:03.937036Z",
"url": "https://files.pythonhosted.org/packages/ea/ed/3237416e774b40572ce965c699c322934223b383ef1d504a4742937d1bb2/complexipy-3.3.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f963d07f5fb452c86e2b9ab474c7b08a44073f8cf03a6239d810ae6a6b9a894c",
"md5": "2e167eb9b99ffa44de6f0133d7fb0ef8",
"sha256": "eaa7cf4afd49af4d9b276d8e77464418e788bc1fe311f69605bdd9e1e093adb6"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2e167eb9b99ffa44de6f0133d7fb0ef8",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 2233574,
"upload_time": "2025-07-17T04:52:05",
"upload_time_iso_8601": "2025-07-17T04:52:05.605202Z",
"url": "https://files.pythonhosted.org/packages/f9/63/d07f5fb452c86e2b9ab474c7b08a44073f8cf03a6239d810ae6a6b9a894c/complexipy-3.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a1c8deacf0b8646ab24395ee4d285ed3ec9d4b116ad0fa6fae8079272ebf4418",
"md5": "824165f0d3be6e4aefa58fec3a7149a3",
"sha256": "69f69837d04de7e1f144782f0cd7a1200c817ded6bc2be1f613e1024966ef446"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "824165f0d3be6e4aefa58fec3a7149a3",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1737552,
"upload_time": "2025-07-17T04:52:07",
"upload_time_iso_8601": "2025-07-17T04:52:07.458437Z",
"url": "https://files.pythonhosted.org/packages/a1/c8/deacf0b8646ab24395ee4d285ed3ec9d4b116ad0fa6fae8079272ebf4418/complexipy-3.3.0-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cb2cd19fa7f5a83f33c20369ecc6d2cc9f1dc51bd8b73e232f3c431d72bf864c",
"md5": "43bba4e015279cf38cf8e260d77b9a8a",
"sha256": "0ded40e22ca9bf6f537b7ca9d664fdb6b628998c920b8577e06112fcddd62690"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "43bba4e015279cf38cf8e260d77b9a8a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1878706,
"upload_time": "2025-07-17T04:52:09",
"upload_time_iso_8601": "2025-07-17T04:52:09.245926Z",
"url": "https://files.pythonhosted.org/packages/cb/2c/d19fa7f5a83f33c20369ecc6d2cc9f1dc51bd8b73e232f3c431d72bf864c/complexipy-3.3.0-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "16ec0db403a97a1b232373a7e2039530f3c365d0d107578820986cd3a9952aaa",
"md5": "08258da53121d4ee645f65087dca0e36",
"sha256": "d5ce610b528f9ade5bf346ed6dd8c56d426706d9c70d51fb0e21fd3763bb3243"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "08258da53121d4ee645f65087dca0e36",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2060691,
"upload_time": "2025-07-17T04:52:10",
"upload_time_iso_8601": "2025-07-17T04:52:10.889057Z",
"url": "https://files.pythonhosted.org/packages/16/ec/0db403a97a1b232373a7e2039530f3c365d0d107578820986cd3a9952aaa/complexipy-3.3.0-cp313-cp313-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "38296042f5d945b9153cb2f198851aa49224abd70f53de9084b98c306ffbd451",
"md5": "a07d5f20dc602c4c86e0c233769af114",
"sha256": "c834c54c127629b1bb53c60654704a7719e2c230b1c511c3f7cd3d075f8be02d"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "a07d5f20dc602c4c86e0c233769af114",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1982836,
"upload_time": "2025-07-17T04:52:12",
"upload_time_iso_8601": "2025-07-17T04:52:12.384300Z",
"url": "https://files.pythonhosted.org/packages/38/29/6042f5d945b9153cb2f198851aa49224abd70f53de9084b98c306ffbd451/complexipy-3.3.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a46563e7e1cd9fefb531f6138e7caa9663a424ad25866d4009c7cf0dd764ac16",
"md5": "10c5a9d64230f898f5e88d98b0ba0882",
"sha256": "eb5ee61f620aa0d4b05b512e1c89f9098138c6df77ca269cc0ca715ef8c5d37d"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "10c5a9d64230f898f5e88d98b0ba0882",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2159005,
"upload_time": "2025-07-17T04:52:13",
"upload_time_iso_8601": "2025-07-17T04:52:13.905782Z",
"url": "https://files.pythonhosted.org/packages/a4/65/63e7e1cd9fefb531f6138e7caa9663a424ad25866d4009c7cf0dd764ac16/complexipy-3.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0d27b4aa7a13eef901999a1bcd64e560f7437f917571871f2276b6ceb0efb125",
"md5": "38ff4e524d3bbf86fc7e1ee88757691a",
"sha256": "c975184a9d89b5b1e544d766809ac7ad0e3737f147bdbe67ce0257a7d9c67518"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "38ff4e524d3bbf86fc7e1ee88757691a",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2110559,
"upload_time": "2025-07-17T04:52:16",
"upload_time_iso_8601": "2025-07-17T04:52:16.242973Z",
"url": "https://files.pythonhosted.org/packages/0d/27/b4aa7a13eef901999a1bcd64e560f7437f917571871f2276b6ceb0efb125/complexipy-3.3.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dceae1100dc199b4f8718c891920ac91716c5d1fbda54c6da15df1bc4eeba9d7",
"md5": "27ca3ece89f0ba2fe6a48547cbd9ae36",
"sha256": "8d743b4b1fc0bdfea00368731dd45fa4c875980bb6ab182fa550bcf9177b4a49"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "27ca3ece89f0ba2fe6a48547cbd9ae36",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2282842,
"upload_time": "2025-07-17T04:52:18",
"upload_time_iso_8601": "2025-07-17T04:52:18.186211Z",
"url": "https://files.pythonhosted.org/packages/dc/ea/e1100dc199b4f8718c891920ac91716c5d1fbda54c6da15df1bc4eeba9d7/complexipy-3.3.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "da2e253b576323e1fa7469da29008b3e76a02f362039aa32f2ad5418191ea936",
"md5": "eaf8fd7a023ffacbf941e2b81f4f7ebd",
"sha256": "0626d609650f0ca01b4119a6678ebac39f7daa632b2acffc8f57f46ad0afd9d6"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "eaf8fd7a023ffacbf941e2b81f4f7ebd",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2510516,
"upload_time": "2025-07-17T04:52:19",
"upload_time_iso_8601": "2025-07-17T04:52:19.861642Z",
"url": "https://files.pythonhosted.org/packages/da/2e/253b576323e1fa7469da29008b3e76a02f362039aa32f2ad5418191ea936/complexipy-3.3.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cd955c68838d5ea56ddec057c56a8161a858833f9a4f4b3940a65fada40eaeb3",
"md5": "e4a9fea327f1e37eedca1dbf1bc4387f",
"sha256": "d6b57d1a9dec47428b003d0b4beae126876605be34dddf4191b6bd2c429942ce"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "e4a9fea327f1e37eedca1dbf1bc4387f",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2316617,
"upload_time": "2025-07-17T04:52:21",
"upload_time_iso_8601": "2025-07-17T04:52:21.629883Z",
"url": "https://files.pythonhosted.org/packages/cd/95/5c68838d5ea56ddec057c56a8161a858833f9a4f4b3940a65fada40eaeb3/complexipy-3.3.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8bcd3e8a864fd66ada5678fabc0e4df9c2738a13733d7c82ea57352bd14cead0",
"md5": "aaf3b843e85e48b7e5b07afce6c6bc51",
"sha256": "eb9d4ed752b2b5e417535d51ac371201d61413874c397216016c0273cc613a62"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "aaf3b843e85e48b7e5b07afce6c6bc51",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 2233576,
"upload_time": "2025-07-17T04:52:23",
"upload_time_iso_8601": "2025-07-17T04:52:23.220771Z",
"url": "https://files.pythonhosted.org/packages/8b/cd/3e8a864fd66ada5678fabc0e4df9c2738a13733d7c82ea57352bd14cead0/complexipy-3.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2f26d8ef62cb686081c609d4521e41f35143231a8d04f52896cc735e83ffe8c3",
"md5": "1e62693f996cfbfd7b099f5d13eda183",
"sha256": "c8d13b8f1a7d664e18885c3561ee6bc0516b1e29c205049181c48e524d139f26"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "1e62693f996cfbfd7b099f5d13eda183",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1737549,
"upload_time": "2025-07-17T04:52:24",
"upload_time_iso_8601": "2025-07-17T04:52:24.833973Z",
"url": "https://files.pythonhosted.org/packages/2f/26/d8ef62cb686081c609d4521e41f35143231a8d04f52896cc735e83ffe8c3/complexipy-3.3.0-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "da16cce480bd94c8bc520719a4c1369e47b561489edfadd3b8644c4154220ac0",
"md5": "76e3ae0988c9dfbc4e541d6efa7aae65",
"sha256": "4e8dbded4ab778bad513b22c11f481857d4cd13a0d1390709cf30c0884e6cdbb"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "76e3ae0988c9dfbc4e541d6efa7aae65",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1878698,
"upload_time": "2025-07-17T04:52:27",
"upload_time_iso_8601": "2025-07-17T04:52:27.271153Z",
"url": "https://files.pythonhosted.org/packages/da/16/cce480bd94c8bc520719a4c1369e47b561489edfadd3b8644c4154220ac0/complexipy-3.3.0-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b0926988f3328c874904abffa00521875423f4a0ed3998b7deddcb1125a8d60c",
"md5": "943a852fabe5bc34a3aef8739d307763",
"sha256": "e63dc162df7cb5a46c8ea4c66cb3a83cab9afb8773a10dbda9cbd5162bf7b8e9"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "943a852fabe5bc34a3aef8739d307763",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2158794,
"upload_time": "2025-07-17T04:52:28",
"upload_time_iso_8601": "2025-07-17T04:52:28.882841Z",
"url": "https://files.pythonhosted.org/packages/b0/92/6988f3328c874904abffa00521875423f4a0ed3998b7deddcb1125a8d60c/complexipy-3.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9cab021c1ebf732b31b686ae4bafe623bf7fa6d5abdb784496f95fa7157d3e2e",
"md5": "bc6101d0a5f16d4af71350e5a1be1f77",
"sha256": "87bec3bb1eca56e37e487a542735a6878b6db697bb9f0d5cc11136e3073b8107"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "bc6101d0a5f16d4af71350e5a1be1f77",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2110796,
"upload_time": "2025-07-17T04:52:30",
"upload_time_iso_8601": "2025-07-17T04:52:30.647348Z",
"url": "https://files.pythonhosted.org/packages/9c/ab/021c1ebf732b31b686ae4bafe623bf7fa6d5abdb784496f95fa7157d3e2e/complexipy-3.3.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "de92169802b8666bf507b7b725e0e8ac3a2439758dacc969a794c18b9cf8e95a",
"md5": "1eed3589a9b07358ca7d382fe42a3ac6",
"sha256": "a8e1bc92ce50d45febdaf6e33619c3568815d585253b20806a38577f49d5df46"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "1eed3589a9b07358ca7d382fe42a3ac6",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2280298,
"upload_time": "2025-07-17T04:52:32",
"upload_time_iso_8601": "2025-07-17T04:52:32.451896Z",
"url": "https://files.pythonhosted.org/packages/de/92/169802b8666bf507b7b725e0e8ac3a2439758dacc969a794c18b9cf8e95a/complexipy-3.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e8526bb912f9c05b11fa08bfacda94b290c7cccb2047b8f3c80ffce6026d2ebd",
"md5": "61ce65fe132283a64cb99383e010b193",
"sha256": "fb745feef51eb565a78495023e65ad7f5dd9a23de765a87f171bb5a2dca29bb3"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "61ce65fe132283a64cb99383e010b193",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2512469,
"upload_time": "2025-07-17T04:52:34",
"upload_time_iso_8601": "2025-07-17T04:52:34.068457Z",
"url": "https://files.pythonhosted.org/packages/e8/52/6bb912f9c05b11fa08bfacda94b290c7cccb2047b8f3c80ffce6026d2ebd/complexipy-3.3.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a84827515f6a739887cc9ca04fad2533ab49afa495a19a6ce80ce983ab892f4e",
"md5": "a1c838cf866522dd161b5ade45191b92",
"sha256": "8b5e408ffda68a67abadb70dcf78771803c8c8148c302e8a267e800a16aadccc"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "a1c838cf866522dd161b5ade45191b92",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2320228,
"upload_time": "2025-07-17T04:52:35",
"upload_time_iso_8601": "2025-07-17T04:52:35.845683Z",
"url": "https://files.pythonhosted.org/packages/a8/48/27515f6a739887cc9ca04fad2533ab49afa495a19a6ce80ce983ab892f4e/complexipy-3.3.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1e116cbaf3ed211c13dba32df23bea06cd88499f0268f24e3e5c62d92e44c216",
"md5": "e88aac3510b69c40bef48d50ce4f9ca3",
"sha256": "9bb045784cc8b80702d07b4936e759f451b371e2424fa5763405564581ebb30b"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "e88aac3510b69c40bef48d50ce4f9ca3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 2232217,
"upload_time": "2025-07-17T04:52:37",
"upload_time_iso_8601": "2025-07-17T04:52:37.510167Z",
"url": "https://files.pythonhosted.org/packages/1e/11/6cbaf3ed211c13dba32df23bea06cd88499f0268f24e3e5c62d92e44c216/complexipy-3.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "dc50ca9c50948cadd647c4b8580196deff7da1640fa7f4e0afba5809520a4609",
"md5": "00c255385294aaee2e43db9cfa072d67",
"sha256": "67f10621f71ef61e8a003fa63cb3b529a498a230c050c4bb558e3a96ddeecaf3"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "00c255385294aaee2e43db9cfa072d67",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 2159300,
"upload_time": "2025-07-17T04:52:39",
"upload_time_iso_8601": "2025-07-17T04:52:39.442680Z",
"url": "https://files.pythonhosted.org/packages/dc/50/ca9c50948cadd647c4b8580196deff7da1640fa7f4e0afba5809520a4609/complexipy-3.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "70a3a28d558c4fff40cbc8fbd050dac922a255a51a1df683be49aeb66b823f36",
"md5": "ec9dce3631f430fba6a8406dec7dd58b",
"sha256": "ec6e9d81fbd3b5807b3595edb4eb08b63a3fcff9232208975c3a399ddbcc57f9"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "ec9dce3631f430fba6a8406dec7dd58b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 2110835,
"upload_time": "2025-07-17T04:52:41",
"upload_time_iso_8601": "2025-07-17T04:52:41.122823Z",
"url": "https://files.pythonhosted.org/packages/70/a3/a28d558c4fff40cbc8fbd050dac922a255a51a1df683be49aeb66b823f36/complexipy-3.3.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f60cbbafb6e91ae9c74e3114a21b3969472afa2efa1c85b00f93227647b6f3f8",
"md5": "87f33d4b5e91443080703afb529dcc24",
"sha256": "29530d655ba23f2ac3433eb329114fa1c995c9d62b3642ed7f58ab040a626585"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "87f33d4b5e91443080703afb529dcc24",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 2280572,
"upload_time": "2025-07-17T04:52:43",
"upload_time_iso_8601": "2025-07-17T04:52:43.001089Z",
"url": "https://files.pythonhosted.org/packages/f6/0c/bbafb6e91ae9c74e3114a21b3969472afa2efa1c85b00f93227647b6f3f8/complexipy-3.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d9c36ede05f56cf0dab6412500045c66d07738b517aaea9da6c2a7b24f739653",
"md5": "617e6d1afe810a002176d3e58b7cabec",
"sha256": "23e41cfa083bce7cb897fdd9e404bc072d4eb5882e90e3f1e113420515243244"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "617e6d1afe810a002176d3e58b7cabec",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 2512871,
"upload_time": "2025-07-17T04:52:45",
"upload_time_iso_8601": "2025-07-17T04:52:45.084484Z",
"url": "https://files.pythonhosted.org/packages/d9/c3/6ede05f56cf0dab6412500045c66d07738b517aaea9da6c2a7b24f739653/complexipy-3.3.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c2a4f5f7d5bd92b4c8077293dae6e2f13d0315ac437ae296fd366d9d7e0415a8",
"md5": "e4080bd3f0a85dc41732b417e5a83340",
"sha256": "93369578c6de42877602966c2dfda7250c98e0c247355b85b6bec23ad24e3818"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "e4080bd3f0a85dc41732b417e5a83340",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 2321592,
"upload_time": "2025-07-17T04:52:47",
"upload_time_iso_8601": "2025-07-17T04:52:47.199637Z",
"url": "https://files.pythonhosted.org/packages/c2/a4/f5f7d5bd92b4c8077293dae6e2f13d0315ac437ae296fd366d9d7e0415a8/complexipy-3.3.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8e9aede72921ff5c90123449cd8276759346aae34c9b7dc1811d11a8a0e3d85b",
"md5": "ddae2e0471f5b64565f4f6cb0b8d165b",
"sha256": "92ab4765c1b9bd16877a1713845452df164be2fa9112ce3746693a82773392b6"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ddae2e0471f5b64565f4f6cb0b8d165b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 2231923,
"upload_time": "2025-07-17T04:52:49",
"upload_time_iso_8601": "2025-07-17T04:52:49.259657Z",
"url": "https://files.pythonhosted.org/packages/8e/9a/ede72921ff5c90123449cd8276759346aae34c9b7dc1811d11a8a0e3d85b/complexipy-3.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9051aba08a8c70e3280a8b04e36106d442f92067012f79cd23f5f5ca2195d1c0",
"md5": "878ca735f66d76b5934d16392a8bd591",
"sha256": "4bab801e0a16bf57d33a7d2f54484b965d9c7e181008b04f54199ae9b36b4973"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "878ca735f66d76b5934d16392a8bd591",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1738539,
"upload_time": "2025-07-17T04:52:50",
"upload_time_iso_8601": "2025-07-17T04:52:50.883393Z",
"url": "https://files.pythonhosted.org/packages/90/51/aba08a8c70e3280a8b04e36106d442f92067012f79cd23f5f5ca2195d1c0/complexipy-3.3.0-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3ee53808c63f6733f7c1eda3d98bff9e5df98fa69afe132ee9d94c58a78c628b",
"md5": "08e6670d7e7ef1cb83a6f3776d6c9493",
"sha256": "6136fffd5ce40adab6f420507dd31cfd4ba8c09f8e85f4651da05685b7027b91"
},
"downloads": -1,
"filename": "complexipy-3.3.0-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "08e6670d7e7ef1cb83a6f3776d6c9493",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1879013,
"upload_time": "2025-07-17T04:52:52",
"upload_time_iso_8601": "2025-07-17T04:52:52.449222Z",
"url": "https://files.pythonhosted.org/packages/3e/e5/3808c63f6733f7c1eda3d98bff9e5df98fa69afe132ee9d94c58a78c628b/complexipy-3.3.0-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "9d4a866c841357d13e64bc3c6e2664e0d9e8f8235c8632afce137785f4b8d2cf",
"md5": "8b97241392d876801a8eaf06cddba3c1",
"sha256": "2583c93db83b95ba612cda045f033a2d1481ea32410a4c31867614b1d64df218"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "8b97241392d876801a8eaf06cddba3c1",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 2158489,
"upload_time": "2025-07-17T04:52:54",
"upload_time_iso_8601": "2025-07-17T04:52:54.010725Z",
"url": "https://files.pythonhosted.org/packages/9d/4a/866c841357d13e64bc3c6e2664e0d9e8f8235c8632afce137785f4b8d2cf/complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d5d3a9138babd3e6c2a71019e1f33e8f5e9e5211b6b9beb78084c4b4c886b1bf",
"md5": "7963653d36bcb210b07a907c8275e5aa",
"sha256": "5988978a3122688fa07aca4d3050baf17695d88b1616c641c464e14c66b6f962"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "7963653d36bcb210b07a907c8275e5aa",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 2110963,
"upload_time": "2025-07-17T04:52:55",
"upload_time_iso_8601": "2025-07-17T04:52:55.682346Z",
"url": "https://files.pythonhosted.org/packages/d5/d3/a9138babd3e6c2a71019e1f33e8f5e9e5211b6b9beb78084c4b4c886b1bf/complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "eb15569a20bf0baf9a8ebb31c73c1ce9dde2f01bcc4a354f0175b94e7f7d7b8a",
"md5": "f94066e7428dbfec9ffce3efa596cb93",
"sha256": "31a0837c3eb3f9b28281e8002567c7eccd0a993d59b0e5cc33f5f93e9f64ee27"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "f94066e7428dbfec9ffce3efa596cb93",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 2280673,
"upload_time": "2025-07-17T04:52:57",
"upload_time_iso_8601": "2025-07-17T04:52:57.257385Z",
"url": "https://files.pythonhosted.org/packages/eb/15/569a20bf0baf9a8ebb31c73c1ce9dde2f01bcc4a354f0175b94e7f7d7b8a/complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4330ec4d807c63ac3582fedbc925c5f951b71b3f839001d483063f16133f9fce",
"md5": "1da216f2bce764afe541d87d6751788a",
"sha256": "fd8b1b97aeb2db513748f683fdf7186179066b4ae0d4b6c2304bda96476c33e3"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "1da216f2bce764afe541d87d6751788a",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 2510509,
"upload_time": "2025-07-17T04:52:59",
"upload_time_iso_8601": "2025-07-17T04:52:59.257683Z",
"url": "https://files.pythonhosted.org/packages/43/30/ec4d807c63ac3582fedbc925c5f951b71b3f839001d483063f16133f9fce/complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b854cc37d00b0898b395a30840b9ce169ea23b6ce1246c83429834fbf4c67d69",
"md5": "69d499a31c37b272fc51538594c5211a",
"sha256": "2afe891241f4daf58893c79dbe1b89febc83dad15e1e9ade3fcd348aabb2762e"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "69d499a31c37b272fc51538594c5211a",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 2320134,
"upload_time": "2025-07-17T04:53:00",
"upload_time_iso_8601": "2025-07-17T04:53:00.958112Z",
"url": "https://files.pythonhosted.org/packages/b8/54/cc37d00b0898b395a30840b9ce169ea23b6ce1246c83429834fbf4c67d69/complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "4a641a2f7d0c67d59e2ce86801495d0d6ad84162b5b0a36f9c8b9fa4083b8cba",
"md5": "f2870738bd7f5f3b37c4360bb8bf6e95",
"sha256": "ca836bb000b9809be47c41bf4a6eae62fd7fb8cdb8a4e36406d8cb1b6d551993"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "f2870738bd7f5f3b37c4360bb8bf6e95",
"packagetype": "bdist_wheel",
"python_version": "pp310",
"requires_python": ">=3.8",
"size": 2231490,
"upload_time": "2025-07-17T04:53:02",
"upload_time_iso_8601": "2025-07-17T04:53:02.733674Z",
"url": "https://files.pythonhosted.org/packages/4a/64/1a2f7d0c67d59e2ce86801495d0d6ad84162b5b0a36f9c8b9fa4083b8cba/complexipy-3.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0eadca938a7b020f181d06f11c4e50695266d0bb61a7763ed7a68a316b3f85b0",
"md5": "e2dcce1c03e193d832a5d8c0783a4ddb",
"sha256": "83324d56fe4655f1a26bbab697810eb944771cd4a05f66f0326c9f682d5a11f0"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "e2dcce1c03e193d832a5d8c0783a4ddb",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 2158657,
"upload_time": "2025-07-17T04:53:04",
"upload_time_iso_8601": "2025-07-17T04:53:04.384778Z",
"url": "https://files.pythonhosted.org/packages/0e/ad/ca938a7b020f181d06f11c4e50695266d0bb61a7763ed7a68a316b3f85b0/complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "e593f3635782c6c6900d79b48e9c20f25f71b479ce8e3cf9bacdd3bad93ce12e",
"md5": "541680a71e3f37bf59fa28d7ea757ade",
"sha256": "c8b3697268c830f7153cd0a7ed7c02bb82380c7779e02a467fda2f4c36d22bf6"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "541680a71e3f37bf59fa28d7ea757ade",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 2110989,
"upload_time": "2025-07-17T04:53:06",
"upload_time_iso_8601": "2025-07-17T04:53:06.304840Z",
"url": "https://files.pythonhosted.org/packages/e5/93/f3635782c6c6900d79b48e9c20f25f71b479ce8e3cf9bacdd3bad93ce12e/complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1205cd5e23229a53c1a033057246f59f7f4fc2506cb24b3f01123d220739d50c",
"md5": "11e37c7633d55e436dcae90c9d8f1f76",
"sha256": "8574091b5b463b511b93fff3df4d68a24e1df24d8454ff59d051de8df3778c4c"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "11e37c7633d55e436dcae90c9d8f1f76",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 2280866,
"upload_time": "2025-07-17T04:53:07",
"upload_time_iso_8601": "2025-07-17T04:53:07.854502Z",
"url": "https://files.pythonhosted.org/packages/12/05/cd5e23229a53c1a033057246f59f7f4fc2506cb24b3f01123d220739d50c/complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "f490db2300ebe2ba034c3b14348a01f15ac67ac06cd3789b9f042126465e9441",
"md5": "4ed29c0a646f6fd074ec7995cdfd342c",
"sha256": "21369484f0aa2f7684dc51d825c3ff394f2829cb1995a206d9c2a55788dc4795"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "4ed29c0a646f6fd074ec7995cdfd342c",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 2510890,
"upload_time": "2025-07-17T04:53:10",
"upload_time_iso_8601": "2025-07-17T04:53:10.045267Z",
"url": "https://files.pythonhosted.org/packages/f4/90/db2300ebe2ba034c3b14348a01f15ac67ac06cd3789b9f042126465e9441/complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d4c17f1fac8d9c38f065eba1f1a9329074771653a5d0deb41ff40827c5e9770e",
"md5": "b95567a8df0466ccfbe106b25638ae6f",
"sha256": "38e0455fe179c60ebfa478db7a7720cdf6d1f07d5e457e1a70430726144ad001"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "b95567a8df0466ccfbe106b25638ae6f",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 2320049,
"upload_time": "2025-07-17T04:53:12",
"upload_time_iso_8601": "2025-07-17T04:53:12.112717Z",
"url": "https://files.pythonhosted.org/packages/d4/c1/7f1fac8d9c38f065eba1f1a9329074771653a5d0deb41ff40827c5e9770e/complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "41f54a70275b4d7e976faf9f2e59b64f2d70a726a585d1a6b305391c955388be",
"md5": "a8d36efd77ad7167c30223a0ca468f2f",
"sha256": "561ec96d6a83c84f7e0ae5965dd079aeb06a7e437af719f9adffb3d9d8affcbd"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "a8d36efd77ad7167c30223a0ca468f2f",
"packagetype": "bdist_wheel",
"python_version": "pp311",
"requires_python": ">=3.8",
"size": 2231540,
"upload_time": "2025-07-17T04:53:13",
"upload_time_iso_8601": "2025-07-17T04:53:13.770425Z",
"url": "https://files.pythonhosted.org/packages/41/f5/4a70275b4d7e976faf9f2e59b64f2d70a726a585d1a6b305391c955388be/complexipy-3.3.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "3c164b7e9cdc7f588f75a5b0ffa157ecede8df9614c17569dc31c9b1174c962d",
"md5": "be0236f964466059ed23605cac9c2ede",
"sha256": "736c81f80a6312b605f8f54c8299207f71511ee4976b049ad4833ba9aaf51e56"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "be0236f964466059ed23605cac9c2ede",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 2158336,
"upload_time": "2025-07-17T04:53:15",
"upload_time_iso_8601": "2025-07-17T04:53:15.479318Z",
"url": "https://files.pythonhosted.org/packages/3c/16/4b7e9cdc7f588f75a5b0ffa157ecede8df9614c17569dc31c9b1174c962d/complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "71869dc7db7de6ee9b079bf7c4f5acd426d6de7fe206d626f0865809592650bd",
"md5": "9fc3196fc576361b314e9445e8a66e38",
"sha256": "f80c4ec56233342a7daec651dc0e00e7c086174b375e73185654af1a17c0eb4c"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "9fc3196fc576361b314e9445e8a66e38",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 2111223,
"upload_time": "2025-07-17T04:53:17",
"upload_time_iso_8601": "2025-07-17T04:53:17.127675Z",
"url": "https://files.pythonhosted.org/packages/71/86/9dc7db7de6ee9b079bf7c4f5acd426d6de7fe206d626f0865809592650bd/complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "be96da480948b15b49442078dc74697ab2b9f071abe0584e79dfb0a206ea0930",
"md5": "dc4bce92a30b08cd65bbfea9f04c625a",
"sha256": "19e6f4ff3bb7d6129e599c9734b882edcba1e9c7b9bba74658492bfe959389f2"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "dc4bce92a30b08cd65bbfea9f04c625a",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 2510086,
"upload_time": "2025-07-17T04:53:18",
"upload_time_iso_8601": "2025-07-17T04:53:18.739160Z",
"url": "https://files.pythonhosted.org/packages/be/96/da480948b15b49442078dc74697ab2b9f071abe0584e79dfb0a206ea0930/complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "35718b4e8049c69c0c0cb05d6d72c54dfa715011803f7ad7d75bce7fd5a64508",
"md5": "f0a49f31e8bcf775841ee0e45d4dc54b",
"sha256": "fcabbb633a4c9cb0131d139b113a8a76d126c76c5d00c4380f3e5880589d1f23"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "f0a49f31e8bcf775841ee0e45d4dc54b",
"packagetype": "bdist_wheel",
"python_version": "pp38",
"requires_python": ">=3.8",
"size": 2319707,
"upload_time": "2025-07-17T04:53:20",
"upload_time_iso_8601": "2025-07-17T04:53:20.517213Z",
"url": "https://files.pythonhosted.org/packages/35/71/8b4e8049c69c0c0cb05d6d72c54dfa715011803f7ad7d75bce7fd5a64508/complexipy-3.3.0-pp38-pypy38_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "831b26f5fcf46ce49b8baf41269ee578d9034a7ce7644b622c272835d42ff6a6",
"md5": "816335a9cae60e3de859b6ff1b135aff",
"sha256": "0538c7364c31ff0ff29ea642afd527037e357ea3c7966c14ade03697c077bc85"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "816335a9cae60e3de859b6ff1b135aff",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 2158514,
"upload_time": "2025-07-17T04:53:22",
"upload_time_iso_8601": "2025-07-17T04:53:22.198381Z",
"url": "https://files.pythonhosted.org/packages/83/1b/26f5fcf46ce49b8baf41269ee578d9034a7ce7644b622c272835d42ff6a6/complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0e4accb2f8257c4d5421786b8aca7af44623358a454873f2cef8b9ee769ed3ae",
"md5": "0be299eb579371c346197737f04a13c3",
"sha256": "a8a4a2fe0b6f709cd61c6a367058a127ce82ad4f8e54765dc25333cc24e9ec95"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"has_sig": false,
"md5_digest": "0be299eb579371c346197737f04a13c3",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 2110838,
"upload_time": "2025-07-17T04:53:23",
"upload_time_iso_8601": "2025-07-17T04:53:23.842396Z",
"url": "https://files.pythonhosted.org/packages/0e/4a/ccb2f8257c4d5421786b8aca7af44623358a454873f2cef8b9ee769ed3ae/complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "31757ae1819f73645ae4719ae06df8b1f00d964ce50c8550fa90698fa5b4769f",
"md5": "9d124ad9f4e2a2d4e7563f999148f17a",
"sha256": "7ed89865974c955f660b4605f8079743d033d330c40af79024afad3a7803d21f"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "9d124ad9f4e2a2d4e7563f999148f17a",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 2510565,
"upload_time": "2025-07-17T04:53:25",
"upload_time_iso_8601": "2025-07-17T04:53:25.449815Z",
"url": "https://files.pythonhosted.org/packages/31/75/7ae1819f73645ae4719ae06df8b1f00d964ce50c8550fa90698fa5b4769f/complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "31c92008708ac235ea0d4f448f6ffcdd6a6d36801057fd715a648be5d578a5a6",
"md5": "6679f70c4bf82def4b2a753aab4aa6ad",
"sha256": "4b82d1eb62cb880805161d6ccf6a3ce678510cf805685dd046fee146e31bdeed"
},
"downloads": -1,
"filename": "complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "6679f70c4bf82def4b2a753aab4aa6ad",
"packagetype": "bdist_wheel",
"python_version": "pp39",
"requires_python": ">=3.8",
"size": 2320271,
"upload_time": "2025-07-17T04:53:27",
"upload_time_iso_8601": "2025-07-17T04:53:27.244655Z",
"url": "https://files.pythonhosted.org/packages/31/c9/2008708ac235ea0d4f448f6ffcdd6a6d36801057fd715a648be5d578a5a6/complexipy-3.3.0-pp39-pypy39_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0eb814850e2953379ea70c7f960558e35081024b063c7097cf9f6b918d3f46c2",
"md5": "6c3f04e9ddaea2426405bf710c61dac7",
"sha256": "decdde0bc51ba768e84bfdd0b706370f092d18df311fa5fd35732b364bf689bd"
},
"downloads": -1,
"filename": "complexipy-3.3.0.tar.gz",
"has_sig": false,
"md5_digest": "6c3f04e9ddaea2426405bf710c61dac7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 282127,
"upload_time": "2025-07-17T04:53:28",
"upload_time_iso_8601": "2025-07-17T04:53:28.728366Z",
"url": "https://files.pythonhosted.org/packages/0e/b8/14850e2953379ea70c7f960558e35081024b063c7097cf9f6b918d3f46c2/complexipy-3.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-17 04:53:28",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rohaquinlop",
"github_project": "complexipy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "complexipy"
}