Metadata-Version: 2.1 Name: cassio Version: 0.1.7 Summary: A framework-agnostic Python library to seamlessly integrate Apache Cassandra(R) with ML/LLM/genAI workloads. Home-page: https://cassio.org License: Apache-2.0 Keywords: cassandra,ai,llm,genai,astradb Author: Stefano Lottini Author-email: stefano.lottini@datastax.com Requires-Python: >=3.8,<4.0 Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Apache Software License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Programming Language :: Python :: 3.12 Classifier: Topic :: Scientific/Engineering Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence Requires-Dist: cassandra-driver (>=3.28.0,<4.0.0) Requires-Dist: numpy (>=1.0) Requires-Dist: requests (>=2.31.0,<3.0.0) Project-URL: Repository, https://github.com/CassioML/cassio Description-Content-Type: text/markdown # 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; git push origin v` ``` 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._