# fast-maxsim
> **Note**: This project is forked from [mixedbread-ai/maxsim-cpu](https://github.com/mixedbread-ai/maxsim-cpu). The main improvement is adding support for **macOS Intel** (x86_64) pre-built wheels, in addition to the original Linux x86_64 and macOS ARM support.
`fast-maxsim` is a high-performance CPU implementation of MaxSim scoring for late-interaction (ColBERT, ColPali) workflows.
It is a python library written in Rust and powered by `libsxmm` on x86 CPUs and Apple Accelerate on ARM macs. It supports Linux x86_64, macOS ARM (Apple Silicon), and macOS Intel (x86_64) platforms.
`fast-maxsim` is built to run exclusively on CPU, and achieves speed-ups that scale with core count on the scoring machine. It's designed to be used in situations where index/scoring machines do not have access to GPUs, and achieves ~2-3x speed-ups on ARM macs and 5x speedups on Linux CPUs over common PyTorch maxsim implementations.
It also implements effective just-in-time batching and padding for variable documents, greatly reducing padding overhead and needless computations.
## Getting Started
Pre-built wheels are available on Pypi for Python 3.9 through 3.13 and can be installed in the usual way:
```bash
uv pip install fast-maxsim # You may use vanilla pip install but why would you? If you're sophisticated, you could use `uv add` too!
```
Once installed, the simple API exposes two methods. For uniform-length inputs, you may use:
```python
import numpy as np
import fast_maxsim
# Prepare normalized embeddings
query = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]
# NOTE: fast-maxsim expects normalized vectors.
query /= np.linalg.norm(query, axis=1, keepdims=True)
docs = np.random.randn(1000, 512, 128).astype(np.float32) # [num_docs, doc_len, dim]
# Normalize document embeddings...
# Compute MaxSim scores
scores = fast_maxsim.maxsim_scores(query, docs) # Returns [num_docs] scores
```
For variable length inputs, you should use the alternate `maxsim_scores_variable`:
```python
import numpy as np
import fast_maxsim
# Prepare normalized embeddings
query = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]
# NOTE: fast-maxsim expects normalized vectors.
query /= np.linalg.norm(query, axis=1, keepdims=True)
# Create variable-length documents as a list
docs = [
np.random.randn(np.random.randint(50, 800), 128).astype(np.float32) # Variable length docs
for _ in range(1000)
]
# Normalize document embeddings...
# Compute MaxSim scores
scores = fast_maxsim.maxsim_scores_variable(query, docs) # Returns [num_docs] scores
```
## Platform Requirements
- **macOS ARM**: Apple Silicon (M1+)
- **macOS Intel**: x86_64 with AVX2 (Intel Haswell 2013+ - Core i3/i5/i7 4xxx series or newer)
- **Linux**: x86_64 with AVX2 (Intel Haswell 2013+, AMD Excavator 2015+)
We currently do not support Windows or take advantage of AVX512 instructions, nor do we optimise caching for specific CPUs. Contributions/PRs in this direction are welcome!
**Note**: Pre-built wheels on PyPI are available for Linux x86_64, macOS ARM (Apple Silicon), and macOS Intel (x86_64).
## Building
We use `maturin` as our build system.
#### Linux
The easy way to build `fast-maxsim` from source on Linux is as follows:
```bash
# Install necessary system deps
apt-get install libssl-dev libopenblas-dev -y
apt-get install pkg-config -y
# Install tooling
uv pip install maturin patchelf numpy
# Install libxsmm
git@github.com:libxsmm/libxsmm.git && cd libxsmm && make STATIC=1 && make
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install fast-maxsim
git clone git@github.com:zhuwenxing/fast-maxsim.git
cd fast-maxsim
RUSTFLAGS="-L native=$(pwd)/../libxsmm/lib" maturin build --release --features use-libxsmm
```
Step by step:
- This installs OpenSSL and OpenBLAS, which will be required for compiling, as well as pkg-config so they can be found easily.
- It then clones `libxsmm`, on which most of the performance depends, and installs it.
- Installs RUST and enables its environment
- Clones this repository and finally build it
You may modify it and remove any step depending on dependencies already present on your machine.
#### Mac
On Mac, the installation is simplified, assuming you use homebrew:
**For Apple Silicon (M1+):**
```bash
# Install maturin
uv pip install maturin
# Install patchelf
brew install patchelf
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install fast-maxsim
git clone git@github.com:zhuwenxing/fast-maxsim.git
cd fast-maxsim
maturin build --release
```
**For Intel Mac (x86_64):**
```bash
# Install maturin
uv pip install maturin
# Install patchelf
brew install patchelf
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
. "$HOME/.cargo/env"
# Clone and install fast-maxsim
git clone git@github.com:zhuwenxing/fast-maxsim.git
cd fast-maxsim
# Build with AVX2 support (requires Intel Haswell 2013+ or newer)
RUSTFLAGS="-C target-cpu=haswell" maturin build --release
```
## Performance
For documents of uniform lengths, performance on Linux is slower than Jax on 4 core machines and either somewhat faster or slower depending on the CPU at 8 cores, and always faster than alternatives on ARM Macs. For variable document lengths (evaluated as a uniform distribution between 128 and 1536 tokens), `fast-maxsim` is always pretty fast thanks to more efficient batching.
### Mac M4 Ultra

### Linux AMD EPYC
#### 32 core limit performance

#### 16 core limit performance
*It seems our performance was hindered during benchmarking due to a Rayon config issue when limiting the available cores. Leaving reporting as-is for now but performance is expected to be considerably better on an actual 16-core CPU.*

Raw data
{
"_id": null,
"home_page": null,
"name": "fast-maxsim",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "maxsim, similarity, ranking, cpu, simd, performance",
"author": "Benjamin Clavi\u00e9, Mixedbread Team",
"author_email": null,
"download_url": null,
"platform": null,
"description": "# fast-maxsim\n\n> **Note**: This project is forked from [mixedbread-ai/maxsim-cpu](https://github.com/mixedbread-ai/maxsim-cpu). The main improvement is adding support for **macOS Intel** (x86_64) pre-built wheels, in addition to the original Linux x86_64 and macOS ARM support.\n\n`fast-maxsim` is a high-performance CPU implementation of MaxSim scoring for late-interaction (ColBERT, ColPali) workflows.\n\nIt is a python library written in Rust and powered by `libsxmm` on x86 CPUs and Apple Accelerate on ARM macs. It supports Linux x86_64, macOS ARM (Apple Silicon), and macOS Intel (x86_64) platforms.\n\n`fast-maxsim` is built to run exclusively on CPU, and achieves speed-ups that scale with core count on the scoring machine. It's designed to be used in situations where index/scoring machines do not have access to GPUs, and achieves ~2-3x speed-ups on ARM macs and 5x speedups on Linux CPUs over common PyTorch maxsim implementations.\n\nIt also implements effective just-in-time batching and padding for variable documents, greatly reducing padding overhead and needless computations.\n\n## Getting Started\n\nPre-built wheels are available on Pypi for Python 3.9 through 3.13 and can be installed in the usual way:\n\n```bash\nuv pip install fast-maxsim # You may use vanilla pip install but why would you? If you're sophisticated, you could use `uv add` too!\n```\n\nOnce installed, the simple API exposes two methods. For uniform-length inputs, you may use:\n\n```python\nimport numpy as np\nimport fast_maxsim\n\n# Prepare normalized embeddings\nquery = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]\n\n# NOTE: fast-maxsim expects normalized vectors.\nquery /= np.linalg.norm(query, axis=1, keepdims=True)\n\ndocs = np.random.randn(1000, 512, 128).astype(np.float32) # [num_docs, doc_len, dim]\n# Normalize document embeddings...\n\n# Compute MaxSim scores\nscores = fast_maxsim.maxsim_scores(query, docs) # Returns [num_docs] scores\n```\n\nFor variable length inputs, you should use the alternate `maxsim_scores_variable`:\n\n```python\nimport numpy as np\nimport fast_maxsim\n\n# Prepare normalized embeddings\nquery = np.random.randn(32, 128).astype(np.float32) # [num_query_tokens, dim]\n\n# NOTE: fast-maxsim expects normalized vectors.\nquery /= np.linalg.norm(query, axis=1, keepdims=True)\n\n# Create variable-length documents as a list\ndocs = [\n np.random.randn(np.random.randint(50, 800), 128).astype(np.float32) # Variable length docs\n for _ in range(1000)\n]\n# Normalize document embeddings...\n\n# Compute MaxSim scores\nscores = fast_maxsim.maxsim_scores_variable(query, docs) # Returns [num_docs] scores\n```\n\n## Platform Requirements\n\n- **macOS ARM**: Apple Silicon (M1+)\n- **macOS Intel**: x86_64 with AVX2 (Intel Haswell 2013+ - Core i3/i5/i7 4xxx series or newer)\n- **Linux**: x86_64 with AVX2 (Intel Haswell 2013+, AMD Excavator 2015+)\n\nWe currently do not support Windows or take advantage of AVX512 instructions, nor do we optimise caching for specific CPUs. Contributions/PRs in this direction are welcome!\n\n**Note**: Pre-built wheels on PyPI are available for Linux x86_64, macOS ARM (Apple Silicon), and macOS Intel (x86_64).\n\n## Building\n\nWe use `maturin` as our build system. \n\n#### Linux\n\nThe easy way to build `fast-maxsim` from source on Linux is as follows:\n\n```bash\n# Install necessary system deps\napt-get install libssl-dev libopenblas-dev -y\napt-get install pkg-config -y\n# Install tooling\nuv pip install maturin patchelf numpy\n# Install libxsmm\ngit@github.com:libxsmm/libxsmm.git && cd libxsmm && make STATIC=1 && make\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install fast-maxsim\ngit clone git@github.com:zhuwenxing/fast-maxsim.git\ncd fast-maxsim\nRUSTFLAGS=\"-L native=$(pwd)/../libxsmm/lib\" maturin build --release --features use-libxsmm\n```\n\nStep by step:\n- This installs OpenSSL and OpenBLAS, which will be required for compiling, as well as pkg-config so they can be found easily.\n- It then clones `libxsmm`, on which most of the performance depends, and installs it.\n- Installs RUST and enables its environment\n- Clones this repository and finally build it\n\nYou may modify it and remove any step depending on dependencies already present on your machine.\n\n#### Mac\n\nOn Mac, the installation is simplified, assuming you use homebrew:\n\n**For Apple Silicon (M1+):**\n```bash\n# Install maturin\nuv pip install maturin\n# Install patchelf\nbrew install patchelf\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install fast-maxsim\ngit clone git@github.com:zhuwenxing/fast-maxsim.git\ncd fast-maxsim\nmaturin build --release\n```\n\n**For Intel Mac (x86_64):**\n```bash\n# Install maturin\nuv pip install maturin\n# Install patchelf\nbrew install patchelf\n# Install Rust\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. \"$HOME/.cargo/env\"\n# Clone and install fast-maxsim\ngit clone git@github.com:zhuwenxing/fast-maxsim.git\ncd fast-maxsim\n# Build with AVX2 support (requires Intel Haswell 2013+ or newer)\nRUSTFLAGS=\"-C target-cpu=haswell\" maturin build --release\n```\n\n## Performance\n\nFor documents of uniform lengths, performance on Linux is slower than Jax on 4 core machines and either somewhat faster or slower depending on the CPU at 8 cores, and always faster than alternatives on ARM Macs. For variable document lengths (evaluated as a uniform distribution between 128 and 1536 tokens), `fast-maxsim` is always pretty fast thanks to more efficient batching.\n\n### Mac M4 Ultra\n\n\n\n\n### Linux AMD EPYC\n\n#### 32 core limit performance\n\n\n\n#### 16 core limit performance\n\n*It seems our performance was hindered during benchmarking due to a Rayon config issue when limiting the available cores. Leaving reporting as-is for now but performance is expected to be considerably better on an actual 16-core CPU.*\n\n\n\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Fast CPU implementation of MaxSim scoring",
"version": "0.2.0",
"project_urls": {
"Bug Tracker": "https://github.com/zhuwenxing/fast-maxsim/issues",
"Homepage": "https://github.com/zhuwenxing/fast-maxsim",
"Original Project": "https://github.com/mixedbread-ai/maxsim-cpu",
"Source": "https://github.com/zhuwenxing/fast-maxsim"
},
"split_keywords": [
"maxsim",
" similarity",
" ranking",
" cpu",
" simd",
" performance"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "17d88b260817d4cc3d2753c92da7681f96b4244bff02aaf8c49aabafbf7e9954",
"md5": "0874c0925f65953c775fc1527bf1cd07",
"sha256": "917a609cfa947286e3f038c2cc857b5c0cf6fb173d7fcc717beddc2410cb7252"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp310-cp310-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "0874c0925f65953c775fc1527bf1cd07",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 232696,
"upload_time": "2025-11-04T06:54:06",
"upload_time_iso_8601": "2025-11-04T06:54:06.881897Z",
"url": "https://files.pythonhosted.org/packages/17/d8/8b260817d4cc3d2753c92da7681f96b4244bff02aaf8c49aabafbf7e9954/fast_maxsim-0.2.0-cp310-cp310-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a380d98785b70a1644cc9b8a18b1e628d1913f79d920f656fc34b5843136d884",
"md5": "6ec296f8241f858ca60f3d2098e16b3e",
"sha256": "93f011f08b817c6870bd3a3e99052e934dcd793b92479476533045774661e6ed"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "6ec296f8241f858ca60f3d2098e16b3e",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 215427,
"upload_time": "2025-11-04T06:54:08",
"upload_time_iso_8601": "2025-11-04T06:54:08.627600Z",
"url": "https://files.pythonhosted.org/packages/a3/80/d98785b70a1644cc9b8a18b1e628d1913f79d920f656fc34b5843136d884/fast_maxsim-0.2.0-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a23b08186b8dafa0a04e8c58cc3c9f510fcea01a4e708698803a4dc1f6fe076d",
"md5": "ec6f93e58b7a8c8a06912f198f0bd759",
"sha256": "75eeca7873272007fa6943af449cab0387adfc09b1b798540619be71b9804382"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "ec6f93e58b7a8c8a06912f198f0bd759",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 1022665,
"upload_time": "2025-11-04T06:54:09",
"upload_time_iso_8601": "2025-11-04T06:54:09.562784Z",
"url": "https://files.pythonhosted.org/packages/a2/3b/08186b8dafa0a04e8c58cc3c9f510fcea01a4e708698803a4dc1f6fe076d/fast_maxsim-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2780be9958588f09ffa639abd894dc0fca219192d06d4256281449ff0636fd90",
"md5": "6cf9645d5d940c6b7ce7025140dc7f59",
"sha256": "294a31cd08ee742dcc636683321ae9007845019bb302ceba02358c968dae2819"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "6cf9645d5d940c6b7ce7025140dc7f59",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 232697,
"upload_time": "2025-11-04T06:54:11",
"upload_time_iso_8601": "2025-11-04T06:54:11.215828Z",
"url": "https://files.pythonhosted.org/packages/27/80/be9958588f09ffa639abd894dc0fca219192d06d4256281449ff0636fd90/fast_maxsim-0.2.0-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "d5380617c584e4cd691a394b9efd1dc2eec52ad9757939e3d218d236927892e6",
"md5": "3f3f75766ba1e1b848cab781c1b7bed6",
"sha256": "963bc736c716123089ac045d0546540dfe29a094fcbf2c3b25ff5c6627cb267c"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "3f3f75766ba1e1b848cab781c1b7bed6",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 215424,
"upload_time": "2025-11-04T06:54:12",
"upload_time_iso_8601": "2025-11-04T06:54:12.527017Z",
"url": "https://files.pythonhosted.org/packages/d5/38/0617c584e4cd691a394b9efd1dc2eec52ad9757939e3d218d236927892e6/fast_maxsim-0.2.0-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7a0bc5539ab248fbf22b597e29d030253696518a7965c19117be6b537b75a538",
"md5": "9b111a11f318bd23ab052ecebdafdab8",
"sha256": "6c9901f44bcbdd995e6d8cc66df4e24122e6a2d35a0496fb33a1144b12cc44ad"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "9b111a11f318bd23ab052ecebdafdab8",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 1022689,
"upload_time": "2025-11-04T06:54:13",
"upload_time_iso_8601": "2025-11-04T06:54:13.477076Z",
"url": "https://files.pythonhosted.org/packages/7a/0b/c5539ab248fbf22b597e29d030253696518a7965c19117be6b537b75a538/fast_maxsim-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "660801acac8c952d069a0939d763f75b7913d79ffe76a345c068c920cacd4a42",
"md5": "e27df2f765bcc2a380c6827a16a588eb",
"sha256": "51189e81649810e1f7b37ba8d0729de9475903165bd25d914c36fc10d4882096"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "e27df2f765bcc2a380c6827a16a588eb",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 232696,
"upload_time": "2025-11-04T06:54:14",
"upload_time_iso_8601": "2025-11-04T06:54:14.875784Z",
"url": "https://files.pythonhosted.org/packages/66/08/01acac8c952d069a0939d763f75b7913d79ffe76a345c068c920cacd4a42/fast_maxsim-0.2.0-cp312-cp312-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c065e4378a824e0b6b0ce7a9cd4a91003b532de480728d2593da3f98a465055e",
"md5": "ee890214939c0080b40ea12f77aa3761",
"sha256": "348cde346a4e24e97d08d56ffc92272cb9cfe6541c7130e09f007e8b82a5a622"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "ee890214939c0080b40ea12f77aa3761",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 215422,
"upload_time": "2025-11-04T06:54:16",
"upload_time_iso_8601": "2025-11-04T06:54:16.069610Z",
"url": "https://files.pythonhosted.org/packages/c0/65/e4378a824e0b6b0ce7a9cd4a91003b532de480728d2593da3f98a465055e/fast_maxsim-0.2.0-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "339781d846726067f0e25730d65f1607957012b1e223666ead059931bf719d43",
"md5": "5b9f7676d14c4f47773baf0887b9e8a6",
"sha256": "8aed99d0ce471f06d7465eaa4d03a7e68591e7a1ecd4993cac728c8399d9ffe0"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "5b9f7676d14c4f47773baf0887b9e8a6",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 1022665,
"upload_time": "2025-11-04T06:54:16",
"upload_time_iso_8601": "2025-11-04T06:54:16.954604Z",
"url": "https://files.pythonhosted.org/packages/33/97/81d846726067f0e25730d65f1607957012b1e223666ead059931bf719d43/fast_maxsim-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f060bf35d37fe83b5f77849d2c1c883a3357da30c3abceaf7f7aa32c7777aee",
"md5": "8dcfa0a80827632aaa0d4a15a809b6bf",
"sha256": "4c9960bc8f94e498f94fde7236f9540e298009ddfbd076461bdf2b4c2d5ec7de"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "8dcfa0a80827632aaa0d4a15a809b6bf",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 232696,
"upload_time": "2025-11-04T06:54:18",
"upload_time_iso_8601": "2025-11-04T06:54:18.601934Z",
"url": "https://files.pythonhosted.org/packages/7f/06/0bf35d37fe83b5f77849d2c1c883a3357da30c3abceaf7f7aa32c7777aee/fast_maxsim-0.2.0-cp313-cp313-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bac9846484469f6c09a0f26751e0a75e29254e88d100e48617bee4dbd862b9ad",
"md5": "931373f90544d9d42c50075369de9392",
"sha256": "632e83df31e06f5603c6bd715bc0da0464ac9154afc2e0de179a05aefe156917"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "931373f90544d9d42c50075369de9392",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 215428,
"upload_time": "2025-11-04T06:54:20",
"upload_time_iso_8601": "2025-11-04T06:54:20.044119Z",
"url": "https://files.pythonhosted.org/packages/ba/c9/846484469f6c09a0f26751e0a75e29254e88d100e48617bee4dbd862b9ad/fast_maxsim-0.2.0-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0a43b4d3d140c63e7324a5bfcbebd4cb9c84ef3ee5d82047ac9430042d14bceb",
"md5": "d78deb21c72e60b5796d6169fcb9f4bc",
"sha256": "10c8de4a8a88bf013e46ae97527762f563a8668f577293e4ef4cb9efdc57d7a5"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "d78deb21c72e60b5796d6169fcb9f4bc",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.8",
"size": 1022665,
"upload_time": "2025-11-04T06:54:21",
"upload_time_iso_8601": "2025-11-04T06:54:21.082726Z",
"url": "https://files.pythonhosted.org/packages/0a/43/b4d3d140c63e7324a5bfcbebd4cb9c84ef3ee5d82047ac9430042d14bceb/fast_maxsim-0.2.0-cp313-cp313-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "89ad0c2f9eaccf7ba3b5c7a605816c532fa0a8ff797d625508f0e6dffab26d85",
"md5": "bbfed5128b40c9517b2fea189a0033a3",
"sha256": "f9f538121b1c6692cada67009d693a3b62bd1925272396051f628f20de982457"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp39-cp39-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "bbfed5128b40c9517b2fea189a0033a3",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 232957,
"upload_time": "2025-11-04T06:54:22",
"upload_time_iso_8601": "2025-11-04T06:54:22.089827Z",
"url": "https://files.pythonhosted.org/packages/89/ad/0c2f9eaccf7ba3b5c7a605816c532fa0a8ff797d625508f0e6dffab26d85/fast_maxsim-0.2.0-cp39-cp39-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "0e3100cb4b51fa7350ee96ea738f656fbce52ce2ee2c853c7362ae30bc1919c3",
"md5": "f7d52309381ac171fe8d490311b322f5",
"sha256": "7febf01ca073e0ee80d2c90b575d832c956cc3c15ce6507471324cc36fcfa006"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "f7d52309381ac171fe8d490311b322f5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 215629,
"upload_time": "2025-11-04T06:54:23",
"upload_time_iso_8601": "2025-11-04T06:54:23.039069Z",
"url": "https://files.pythonhosted.org/packages/0e/31/00cb4b51fa7350ee96ea738f656fbce52ce2ee2c853c7362ae30bc1919c3/fast_maxsim-0.2.0-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "13146f7d4aa0625e126ac004f0b33ecdf5d4949d257718364d1dcc0e8621b0ef",
"md5": "c57bdcb9ada49717be814dfa144ad5a2",
"sha256": "2db1cf317c6da8dd14ae3305b7ec941e4ae045ab5f5c36523d4e355bf5f2a118"
},
"downloads": -1,
"filename": "fast_maxsim-0.2.0-cp39-cp39-manylinux_2_34_x86_64.whl",
"has_sig": false,
"md5_digest": "c57bdcb9ada49717be814dfa144ad5a2",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 1022848,
"upload_time": "2025-11-04T06:54:24",
"upload_time_iso_8601": "2025-11-04T06:54:24.393177Z",
"url": "https://files.pythonhosted.org/packages/13/14/6f7d4aa0625e126ac004f0b33ecdf5d4949d257718364d1dcc0e8621b0ef/fast_maxsim-0.2.0-cp39-cp39-manylinux_2_34_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-04 06:54:06",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "zhuwenxing",
"github_project": "fast-maxsim",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "fast-maxsim"
}