# 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/8f/c9/549ca60bcb9630f470687874bab31baa1d9ab7d0ec8e5562e0724b9d3989/carefree_pyo3-0.1.13.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.13",
"project_urls": {
"Homepage": "https://github.com/carefree0910/carefree-pyo3"
},
"split_keywords": [
"rust",
" python",
" numpy",
" pandas"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "d3d11909c631905199f75e1286fad40195966758877f52102dcebd348812d5c3",
"md5": "c52406a8ed7bb828feaeef90ba5ad1eb",
"sha256": "2b782e0348abafde6e541639127d91bdadca86842773a905c4ac007b01207354"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.13-cp38-abi3-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "c52406a8ed7bb828feaeef90ba5ad1eb",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 515477,
"upload_time": "2024-11-19T10:45:07",
"upload_time_iso_8601": "2024-11-19T10:45:07.470401Z",
"url": "https://files.pythonhosted.org/packages/d3/d1/1909c631905199f75e1286fad40195966758877f52102dcebd348812d5c3/carefree_pyo3-0.1.13-cp38-abi3-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "81086ac3360b811bf3ecbc3c085da2886b5a245872099f23e393acdc9ba7cd37",
"md5": "89ed221f26b343366a5b0de169001ac8",
"sha256": "57c2f89ab8aefa398d972a05cc03a66f7d091326d9e89d7adbad26c3f9cf0631"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.13-cp38-abi3-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "89ed221f26b343366a5b0de169001ac8",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 471717,
"upload_time": "2024-11-19T10:45:06",
"upload_time_iso_8601": "2024-11-19T10:45:06.018446Z",
"url": "https://files.pythonhosted.org/packages/81/08/6ac3360b811bf3ecbc3c085da2886b5a245872099f23e393acdc9ba7cd37/carefree_pyo3-0.1.13-cp38-abi3-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a2606faec4da5a5f6e9c0624dec4478080d4bc71239fc2091c14b830f0a705d7",
"md5": "ddc69c6f2b4c7eb4d27da14e2b89c845",
"sha256": "71efa276d01dd6dd1df8cfb5290e23255099301b1962c3ac927a257082b9131d"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.13-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "ddc69c6f2b4c7eb4d27da14e2b89c845",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 548567,
"upload_time": "2024-11-19T10:45:11",
"upload_time_iso_8601": "2024-11-19T10:45:11.529102Z",
"url": "https://files.pythonhosted.org/packages/a2/60/6faec4da5a5f6e9c0624dec4478080d4bc71239fc2091c14b830f0a705d7/carefree_pyo3-0.1.13-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "7f85cc1c2c2645235d2549314f740c85ff2a8ba76a5dbad8357c738695264941",
"md5": "0603a9eabdb2d49a7c752f55d98753a0",
"sha256": "0b171a865c9cf4f6436b77f5e93477c73c7355f6b71addd68195ca40993f05d0"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.13-cp38-abi3-manylinux_2_24_aarch64.whl",
"has_sig": false,
"md5_digest": "0603a9eabdb2d49a7c752f55d98753a0",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 512432,
"upload_time": "2024-11-19T10:45:10",
"upload_time_iso_8601": "2024-11-19T10:45:10.223444Z",
"url": "https://files.pythonhosted.org/packages/7f/85/cc1c2c2645235d2549314f740c85ff2a8ba76a5dbad8357c738695264941/carefree_pyo3-0.1.13-cp38-abi3-manylinux_2_24_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "abafaa2d70e5e8e51da80d930db01fb313095a192beeee7fe2d8fcf9e36642fc",
"md5": "b56e218d66accc5eb5aa28438e5a85e3",
"sha256": "b0bff0e3a9790882b8069db0f7e9e12d1537ec2751924992a59e382d1162fb43"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.13-cp38-abi3-win_amd64.whl",
"has_sig": false,
"md5_digest": "b56e218d66accc5eb5aa28438e5a85e3",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 396299,
"upload_time": "2024-11-19T10:45:12",
"upload_time_iso_8601": "2024-11-19T10:45:12.939778Z",
"url": "https://files.pythonhosted.org/packages/ab/af/aa2d70e5e8e51da80d930db01fb313095a192beeee7fe2d8fcf9e36642fc/carefree_pyo3-0.1.13-cp38-abi3-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "8fc9549ca60bcb9630f470687874bab31baa1d9ab7d0ec8e5562e0724b9d3989",
"md5": "4db83777391c38f400b6e635549625f3",
"sha256": "8a32671bb2a06800274dd4cd6b3d185507f823364ae4d51e477aa7e444a2ed6b"
},
"downloads": -1,
"filename": "carefree_pyo3-0.1.13.tar.gz",
"has_sig": false,
"md5_digest": "4db83777391c38f400b6e635549625f3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 56125,
"upload_time": "2024-11-19T10:45:09",
"upload_time_iso_8601": "2024-11-19T10:45:09.276417Z",
"url": "https://files.pythonhosted.org/packages/8f/c9/549ca60bcb9630f470687874bab31baa1d9ab7d0ec8e5562e0724b9d3989/carefree_pyo3-0.1.13.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-19 10:45:09",
"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"
}