# carefree-pyo3
`cfpyo3` is a collection of performant utilities.
## Installation
`carefree-pyo3` requires:
- Python 3.8 or higher.
- `numpy < 2.x`, because currently rust numpy doesn't support numpy 2.x.
```bash
pip install carefree-pyo3
```
## Test
```bash
pytest
```
## Benchmark (Rust)
```bash
cargo bench -F criterion -p cfpyo3_rs_core -- --verbose
```
## Architecture
This project is divided into four parts - looks clumsy, but I'll introduce them and explain their necessity.
### `cfpyo3_rs_core`
This is the Rust core of the project, and is meant to be responsible for the heavy lifting. Its necessity is almost self-explanatory.
### `cfpyo3_rs_bindings`
This one looks redundant at first glance, as we already have `cfpyo3_rs_py`. Initially this member did not exist, until I find some bindings in `cfpyo3_rs_py` very useful, want to reuse them, and failed because:
- It is not an `rlib`.
- Even I managed to make it an `rlib`, it's just not good to import the whole package because `cfpyo3_rs_py` itself is exposing lots of APIs to Python.
Another choice is to put these useful bindings in `cfpyo3_rs_core`, but then GitHub CI cannot build it for whatever reason.
So at last, this member is born.
### `cfpyo3_rs_py`
This is the 'direct' Python bindings of this project. It is just a REALLY thin wrapper around `cfpyo3_rs_core` and `cfpyo3_rs_bindings`, and is responsible for exposing the APIs to Python.
### `cfpyo3`
This is the Python package that users will interact with. It is a relatively thin wrapper that dispatches the calls to `cfpyo3_rs_py`.
> A typical use case is the `f32` & `f64` dispatch.
Raw data
{
"_id": null,
"home_page": "https://github.com/carefree0910/carefree-pyo3",
"name": "carefree-pyo3",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "rust, python, numpy, pandas",
"author": "carefree0910 <syameimaru.saki@gmail.com>",
"author_email": "carefree0910 <syameimaru.saki@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/99/7b/333fbfaf1379b44d1f0e9f1a67c9c69ff188f2fac6ee80de21383872bf9a/carefree_pyo3-0.1.12.tar.gz",
"platform": null,
"description": "# carefree-pyo3\n\n`cfpyo3` is a collection of performant utilities.\n\n## Installation\n\n`carefree-pyo3` requires:\n- Python 3.8 or higher.\n- `numpy < 2.x`, because currently rust numpy doesn't support numpy 2.x.\n\n```bash\npip install carefree-pyo3\n```\n\n## Test\n\n```bash\npytest\n```\n\n## Benchmark (Rust)\n\n```bash\ncargo bench -F criterion -p cfpyo3_rs_core -- --verbose\n```\n\n## Architecture\n\nThis project is divided into four parts - looks clumsy, but I'll introduce them and explain their necessity.\n\n### `cfpyo3_rs_core`\n\nThis is the Rust core of the project, and is meant to be responsible for the heavy lifting. Its necessity is almost self-explanatory.\n\n### `cfpyo3_rs_bindings`\n\nThis one looks redundant at first glance, as we already have `cfpyo3_rs_py`. Initially this member did not exist, until I find some bindings in `cfpyo3_rs_py` very useful, want to reuse them, and failed because:\n\n- It is not an `rlib`.\n- Even I managed to make it an `rlib`, it's just not good to import the whole package because `cfpyo3_rs_py` itself is exposing lots of APIs to Python.\n\nAnother choice is to put these useful bindings in `cfpyo3_rs_core`, but then GitHub CI cannot build it for whatever reason.\n\nSo at last, this member is born.\n\n### `cfpyo3_rs_py`\n\nThis is the 'direct' Python bindings of this project. It is just a REALLY thin wrapper around `cfpyo3_rs_core` and `cfpyo3_rs_bindings`, and is responsible for exposing the APIs to Python.\n\n### `cfpyo3`\n\nThis is the Python package that users will interact with. It is a relatively thin wrapper that dispatches the calls to `cfpyo3_rs_py`.\n\n> A typical use case is the `f32` & `f64` dispatch.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "rust \u2192 python made easy",
"version": "0.1.12",
"project_urls": {
"Homepage": "https://github.com/carefree0910/carefree-pyo3"
},
"split_keywords": [
"rust",
" python",
" numpy",
" pandas"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "4fdd8a5904e7ff46e97dc0432b0ba5ad588b924713e01a9250e797025b4a4b67",
"md5": "653eace7552d984475d387056b9d44c0",
"sha256": "128cd55fb9727e386dc086eb425a2ad0aa228aebf9552aede608b40c5b455d6c"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "653eace7552d984475d387056b9d44c0",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 522873,
"upload_time": "2024-10-15T11:52:52",
"upload_time_iso_8601": "2024-10-15T11:52:52.679522Z",
"url": "https://files.pythonhosted.org/packages/4f/dd/8a5904e7ff46e97dc0432b0ba5ad588b924713e01a9250e797025b4a4b67/carefree_pyo3-0.1.12-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "37cc348711aa7823f5d898c27d0aaa55a77404311f699aa50021cf7f506e468b",
"md5": "5c0f516ad8b3ce3f48e5a6a6f9e4bd5a",
"sha256": "fdc5b0bfbb3e2e251dd60b1c7664a294db0cf9fb1849668ae8e8e111decd9a9c"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.12-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5c0f516ad8b3ce3f48e5a6a6f9e4bd5a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 477251,
"upload_time": "2024-10-15T11:52:49",
"upload_time_iso_8601": "2024-10-15T11:52:49.914066Z",
"url": "https://files.pythonhosted.org/packages/37/cc/348711aa7823f5d898c27d0aaa55a77404311f699aa50021cf7f506e468b/carefree_pyo3-0.1.12-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "141663f5b7d73c83a4228e0ca29dc08d5001c0467afc635367dce4f8cf45edd3",
"md5": "beb7b5b00fb3da14bb3402995420212f",
"sha256": "0d4842867ff1128e634b6e82ba51d81a8f06d863b00bff706028f9514f3470ae"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "beb7b5b00fb3da14bb3402995420212f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 558310,
"upload_time": "2024-10-15T11:52:56",
"upload_time_iso_8601": "2024-10-15T11:52:56.893726Z",
"url": "https://files.pythonhosted.org/packages/14/16/63f5b7d73c83a4228e0ca29dc08d5001c0467afc635367dce4f8cf45edd3/carefree_pyo3-0.1.12-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "bacd3898c99aeda02eb16271dfc81c14a1a0aabe7daceda632cf71c909dc4a52",
"md5": "67e754e46f63b33affb49431a498b151",
"sha256": "65616b9429590d841214dc17dfb1f8126bb0792bbee7bfc237210b0f6aca6cff"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.12-cp38-abi3-manylinux_2_24_aarch64.whl",
"has_sig": false,
"md5_digest": "67e754e46f63b33affb49431a498b151",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 532758,
"upload_time": "2024-10-15T11:52:55",
"upload_time_iso_8601": "2024-10-15T11:52:55.428096Z",
"url": "https://files.pythonhosted.org/packages/ba/cd/3898c99aeda02eb16271dfc81c14a1a0aabe7daceda632cf71c909dc4a52/carefree_pyo3-0.1.12-cp38-abi3-manylinux_2_24_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "cda0603e484d546d344a3d515de85d5f897e27626596b099839dcbd11c608dbf",
"md5": "c82c4473c9bcbc6d2deb7ddd55537c27",
"sha256": "c65d0553b697f3df79fafbc05ca1b4c0172366213450f571024912d3f6e63e4e"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.12-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "c82c4473c9bcbc6d2deb7ddd55537c27",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 406665,
"upload_time": "2024-10-15T11:52:58",
"upload_time_iso_8601": "2024-10-15T11:52:58.832552Z",
"url": "https://files.pythonhosted.org/packages/cd/a0/603e484d546d344a3d515de85d5f897e27626596b099839dcbd11c608dbf/carefree_pyo3-0.1.12-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "997b333fbfaf1379b44d1f0e9f1a67c9c69ff188f2fac6ee80de21383872bf9a",
"md5": "ff0dc5acee46bdebea4a53bccbfebc38",
"sha256": "2dff3933d778301d69d346509f93ee1c3eccd57a18bea6cd884c1d168024c359"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.12.tar.gz",
"has_sig": false,
"md5_digest": "ff0dc5acee46bdebea4a53bccbfebc38",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 54594,
"upload_time": "2024-10-15T11:52:53",
"upload_time_iso_8601": "2024-10-15T11:52:53.866407Z",
"url": "https://files.pythonhosted.org/packages/99/7b/333fbfaf1379b44d1f0e9f1a67c9c69ff188f2fac6ee80de21383872bf9a/carefree_pyo3-0.1.12.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-15 11:52:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "carefree0910",
"github_project": "carefree-pyo3",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "carefree-pyo3"
}