# cassIO
A framework-agnostic Python library to seamlessly integrate Apache Cassandra with ML/LLM/genAI workloads.
**Note**: this is currently an alpha release.
## Users
Installation is as simple as:
```
pip install cassio
```
For example usages and integration with higher-level LLM frameworks
such as LangChain, please visit [cassio.org](https://cassio.org).
## CassIO developers
### Setup
To develop `cassio`, we use poetry
```shell
pip install poetry
```
Use poetry to install dependencies
```shell
poetry install
```
#### Use cassio current code in other Poetry base projects
If the integration is Poetry-based (e.g. LangChain itself), you should get this
in your `pyproject.toml`:
```
cassio = {path = "../../cassio", develop = true}
```
Then you do
```
poetry remove cassio # if necessary
poetry lock --no-update
poetry install -E all --with dev --with test_integration # or similar, this is for langchain
```
[Inspired from this](https://github.com/orgs/python-poetry/discussions/1135).
You also need a recent Poetry for this to work.
#### Versioning
We are still at `0.*`. Occasional breaking changes are to be expected,
but please think carefully. Later, a stronger versioning model will be adopted.
### Style and typing
Style is enforced through `black`, linting with `ruff`,
and typechecking with `mypy`.
The code should run through `make format` without issues.
### Python version coverage
At the moment we try to run tests under Python3.8 and Python3.10 to try and
catch versions-specific issues
(such as the newer `typing` syntax such as `typeA | typeB`, illegal on 3.8).
### Publishing
- Bump version in pyproject.toml
- Add to `CHANGES.txt`
- Commit the very code that will be built:
- `git tag v<x.y.z>; git push origin v<x.y.z>`
```
make build
poetry publish # (login to PyPI ...)
```
### Testing
Please run tests (and add some coverage for new features). This is not
enforced other than to your conscience. Type `make` for the available tests.
To run the full tests (except specific tests targeting Cassandra),
there's `make test-all`.
#### Unit testing
```
make test-unit
```
#### Integration with the DB
Ensure the required environment variables are set (see for instance
the provided `TEMPLATE.testing.env`).
You need at least one of either Astra DB or a
Cassandra (5+) cluster to use.
Launch the tests with either of:
```
make test-integration
make test-astra-integration
make test-cassandra-integration
make test-testcontainerscassandra-integration
```
The last three above specify `TEST_DB_MODE` as either `LOCAL_CASSANDRA`, `TESTCONTAINERS_CASSANDRA` or
`ASTRA_DB`. Refer to `TEMPLATE.testing.env` for required environment variables in the specific cases.
_Note: Ideally you should test with both Astra DB and one Cassandra, since some tests are
skipped in either case._
Raw data
{
"_id": null,
"home_page": "https://cassio.org",
"name": "cassio",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "cassandra, ai, llm, genai, astradb",
"author": "Stefano Lottini",
"author_email": "stefano.lottini@datastax.com",
"download_url": "https://files.pythonhosted.org/packages/88/00/a9a3a958169677f5f713bb3ed5a4afc1baf7abd1e08f37acad718aa923db/cassio-0.1.10.tar.gz",
"platform": null,
"description": "# cassIO\n\nA framework-agnostic Python library to seamlessly integrate Apache Cassandra with ML/LLM/genAI workloads.\n\n**Note**: this is currently an alpha release.\n\n## Users\n\nInstallation is as simple as:\n\n```\npip install cassio\n```\n\nFor example usages and integration with higher-level LLM frameworks\nsuch as LangChain, please visit [cassio.org](https://cassio.org).\n\n## CassIO developers\n\n### Setup\n\nTo develop `cassio`, we use poetry\n\n```shell\npip install poetry\n```\n\nUse poetry to install dependencies\n\n```shell\npoetry install\n```\n\n#### Use cassio current code in other Poetry base projects\n\nIf the integration is Poetry-based (e.g. LangChain itself), you should get this\nin your `pyproject.toml`:\n\n```\ncassio = {path = \"../../cassio\", develop = true}\n```\n\nThen you do\n\n```\npoetry remove cassio # if necessary\npoetry lock --no-update\npoetry install -E all --with dev --with test_integration # or similar, this is for langchain\n```\n\n[Inspired from this](https://github.com/orgs/python-poetry/discussions/1135).\nYou also need a recent Poetry for this to work.\n\n#### Versioning\n\nWe are still at `0.*`. Occasional breaking changes are to be expected,\nbut please think carefully. Later, a stronger versioning model will be adopted.\n\n### Style and typing\n\nStyle is enforced through `black`, linting with `ruff`,\nand typechecking with `mypy`.\nThe code should run through `make format` without issues.\n\n### Python version coverage\n\nAt the moment we try to run tests under Python3.8 and Python3.10 to try and\ncatch versions-specific issues\n(such as the newer `typing` syntax such as `typeA | typeB`, illegal on 3.8).\n\n### Publishing\n\n- Bump version in pyproject.toml\n- Add to `CHANGES.txt`\n- Commit the very code that will be built:\n- `git tag v<x.y.z>; git push origin v<x.y.z>`\n\n```\nmake build\npoetry publish # (login to PyPI ...)\n```\n\n### Testing\n\nPlease run tests (and add some coverage for new features). This is not\nenforced other than to your conscience. Type `make` for the available tests.\n\nTo run the full tests (except specific tests targeting Cassandra),\nthere's `make test-all`.\n\n#### Unit testing\n\n```\nmake test-unit\n```\n\n#### Integration with the DB\n\nEnsure the required environment variables are set (see for instance\nthe provided `TEMPLATE.testing.env`).\nYou need at least one of either Astra DB or a\nCassandra (5+) cluster to use.\n\nLaunch the tests with either of:\n\n```\nmake test-integration\n\nmake test-astra-integration\nmake test-cassandra-integration\nmake test-testcontainerscassandra-integration\n```\n\nThe last three above specify `TEST_DB_MODE` as either `LOCAL_CASSANDRA`, `TESTCONTAINERS_CASSANDRA` or\n`ASTRA_DB`. Refer to `TEMPLATE.testing.env` for required environment variables in the specific cases.\n\n_Note: Ideally you should test with both Astra DB and one Cassandra, since some tests are\nskipped in either case._\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A framework-agnostic Python library to seamlessly integrate Apache Cassandra(R) with ML/LLM/genAI workloads.",
"version": "0.1.10",
"project_urls": {
"Homepage": "https://cassio.org",
"Repository": "https://github.com/CassioML/cassio"
},
"split_keywords": [
"cassandra",
" ai",
" llm",
" genai",
" astradb"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "73ae25347dca6ca4032d421cd674fdb35bb02985baf5dcb8cbfac0cc95dfae49",
"md5": "64be0718e7d670a3e5b30e3a4f368039",
"sha256": "9eebe5f18b627d0f328de4dbbf22c68cc76dbeecf46d846c0277e410de5cb1dc"
},
"downloads": -1,
"filename": "cassio-0.1.10-py3-none-any.whl",
"has_sig": false,
"md5_digest": "64be0718e7d670a3e5b30e3a4f368039",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 45726,
"upload_time": "2024-10-03T16:53:54",
"upload_time_iso_8601": "2024-10-03T16:53:54.790788Z",
"url": "https://files.pythonhosted.org/packages/73/ae/25347dca6ca4032d421cd674fdb35bb02985baf5dcb8cbfac0cc95dfae49/cassio-0.1.10-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8800a9a3a958169677f5f713bb3ed5a4afc1baf7abd1e08f37acad718aa923db",
"md5": "136f01a970c05bbbd262ccce18d19c96",
"sha256": "577f0a2ce5898a57c83195bf74811dec8794282477eb6fa4debd4ccec6cfab98"
},
"downloads": -1,
"filename": "cassio-0.1.10.tar.gz",
"has_sig": false,
"md5_digest": "136f01a970c05bbbd262ccce18d19c96",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 35854,
"upload_time": "2024-10-03T16:53:57",
"upload_time_iso_8601": "2024-10-03T16:53:57.549750Z",
"url": "https://files.pythonhosted.org/packages/88/00/a9a3a958169677f5f713bb3ed5a4afc1baf7abd1e08f37acad718aa923db/cassio-0.1.10.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-03 16:53:57",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "CassioML",
"github_project": "cassio",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "cassio"
}