Metadata-Version: 2.4
Name: quick_algo
Version: 0.1.2
Summary: A simple and fast Graph structure and PPR algorithm implementation based on Cpp&Cython.
Home-page: https://github.com/MaiM-with-u/MaiMBot-LPMM
Author: Oct Autumn
Author-email: octautumn2002@gmail.com
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: Unix
Classifier: Natural Language :: Chinese (Simplified)
Classifier: Programming Language :: C++
Classifier: Programming Language :: Cython
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-python
Dynamic: summary


# QuickAlgo
这是一个快速算法库，旨在为LPMM（Long-term and Persistent Memory）模块提供Graph数据结构和一些复杂算法的Cpp+Cython高效实现。

## 目录结构

```text

/┬- quick_algo - 项目目录  
 ├- quick_algo - 源码目录
 | ├- di_graph - 有向图实现
 | | ├- cpp - C++头文件&实现
 | | └- ...
 | ├- pagerank - PageRank算法实现
 | | ├- cpp - C++头文件&实现
 | | └- ...
 | └- ...
 ├- tests - 测试目录
 ├- build_lib.py - 构建脚本
 ├- requirements.txt - 依赖包列表
 ├- LICENSE.txt - 许可证
 ├- README.md - 本文档
 └- setup.py - Python包安装脚本
```


## 构建脚本
请在项目目录下执行`build_lib.py`并添加相应的任务，这将自动化构建过程。

该脚本支持以下任务：
- `--cleanup`：清理构建目录和临时文件
- `--cythonize`：编译Cython代码（要求依赖`cython`）
- `--force_cythonize`: 强制重新编译Cython代码（要求依赖`cython`）
- `--build_dist`：构建Python包（要求依赖`setuptools`）
- `--build_wheel`：构建Python wheel包（要求依赖`setuptools`, 要求C/Cpp编译环境）
- `--install`：安装Python包（要求依赖`setuptools`, 要求C/Cpp编译环境）

## 安装
您可以直接使用`pip install quick_algo`进行安装，也可以在clone本仓库之后通过前述构建脚本于本地进行安装。

要使用构建脚本直接安装，请在项目目录下执行以下命令：
```bash
python build_lib.py --cleanup --cythonize --install
```
注意：请确保您已经安装了`Cython`和`setuptools`，并且您的系统上有`C/C++编译器`可用。

## 测试
本项目的测试代码位于tests目录下，使用`pytest`进行测试。

在测试之前，请确保您装有以下依赖：
- `pytest`：测试框架
- `networkx`: 图算法库
- `numpy`: 数值计算库(由networkx要求)
- `scipy`: 数值计算库(由networkx要求)

要运行测试，请在项目目录下执行以下命令：
```bash
pytest ./tests
```
