[project] name = "haiku.rag" version = "0.1.0" description = "Retrieval Augmented Generation (RAG) with SQLite" authors = [{ name = "Yiorgis Gozadinos", email = "ggozadinos@gmail.com" }] license = { text = "MIT" } readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.10" classifiers = [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Operating System :: Microsoft :: Windows :: Windows 10", "Operating System :: Microsoft :: Windows :: Windows 11", "Operating System :: MacOS", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Typing :: Typed", ] dependencies = [ "fastmcp>=2.8.1", "httpx>=0.28.1", "markitdown[audio-transcription,docx,pdf,pptx,xlsx]>=0.1.2", "ollama>=0.5.1", "pydantic>=2.11.7", "python-dotenv>=1.1.0", "rich>=14.0.0", "sqlite-vec>=0.1.6", "tiktoken>=0.9.0", "typer>=0.16.0", "watchfiles>=1.1.0", ] [project.optional-dependencies] voyageai = ["voyageai>=0.3.2"] [project.scripts] haiku-rag = "haiku.rag.cli:cli" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src/haiku"] [dependency-groups] dev = [ "datasets>=3.6.0", "pre-commit>=4.2.0", "pyright>=1.1.402", "pytest>=8.4.0", "pytest-asyncio>=1.0.0", "pytest-cov>=6.2.1", "ruff>=0.11.13", ] [tool.ruff] line-length = 88 # Enable Flake's "E" and "F" codes by default and "I" for sorting imports. # Exclude a variety of commonly ignored directories. [tool.ruff.lint] select = [ "E", "F", "UP", "I", ] # Enable Flake's "E" and "F" codes by default and "I" for sorting imports ignore = ["E501"] per-file-ignores = { "__init__.py" = ["F401", "F403"] } # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "auto" [tool.pyright] venvPath = "." venv = ".venv" [tool.pytest.ini_options] asyncio_default_fixture_loop_scope = "session" asyncio_mode = "auto" # pyproject.toml filterwarnings = ["error", "ignore::UserWarning", "ignore::DeprecationWarning"]