rag_lite / pyproject.toml
EL GHAFRAOUI AYOUB
C
54f5afe
[build-system] # https://python-poetry.org/docs/pyproject/#poetry-and-pep-517
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.poetry] # https://python-poetry.org/docs/pyproject/
name = "raglite"
version = "0.2.0"
description = "A Python toolkit for Retrieval-Augmented Generation (RAG) with SQLite or PostgreSQL."
authors = ["Laurent Sorber <laurent@superlinear.eu>"]
readme = "README.md"
repository = "https://github.com/superlinear-ai/raglite"
[tool.commitizen] # https://commitizen-tools.github.io/commitizen/config/
bump_message = "bump(release): v$current_version → v$new_version"
tag_format = "v$version"
update_changelog_on_bump = true
version_provider = "poetry"
[tool.poetry.dependencies] # https://python-poetry.org/docs/dependency-specification/
# Python:
python = ">=3.10,<4.0"
# Markdown conversion:
pdftext = ">=0.3.13"
pypandoc-binary = { version = ">=1.13", optional = true }
scikit-learn = ">=1.4.2"
# Markdown formatting:
markdown-it-py = ">=3.0.0"
mdformat-gfm = ">=0.3.6"
# Sentence and chunk splitting:
numpy = ">=1.26.4"
scipy = ">=1.5.0"
spacy = ">=3.7.0,<3.8.0"
# Large Language Models:
huggingface-hub = ">=0.22.0"
litellm = ">=1.47.1"
llama-cpp-python = ">=0.2.88"
pydantic = ">=2.7.0"
# Approximate Nearest Neighbors:
pynndescent = ">=0.5.12"
# Reranking:
langdetect = ">=1.0.9"
rerankers = { extras = ["flashrank"], version = ">=0.5.3" }
# Storage:
pg8000 = ">=1.31.2"
sqlmodel-slim = ">=0.0.18"
# Progress:
tqdm = ">=4.66.0"
# Evaluation:
pandas = ">=2.1.0"
ragas = { version = ">=0.1.12", optional = true }
# CLI:
typer = ">=0.12.5"
# Frontend:
chainlit = { version = ">=1.2.0", optional = true }
[tool.poetry.extras] # https://python-poetry.org/docs/pyproject/#extras
chainlit = ["chainlit"]
pandoc = ["pypandoc-binary"]
ragas = ["ragas"]
[tool.poetry.group.test.dependencies] # https://python-poetry.org/docs/master/managing-dependencies/
commitizen = ">=3.29.1"
coverage = { extras = ["toml"], version = ">=7.4.4" }
mypy = ">=1.9.0"
poethepoet = ">=0.25.0"
pre-commit = ">=3.7.0"
pytest = ">=8.1.1"
pytest-mock = ">=3.14.0"
ruff = ">=0.5.7"
safety = ">=3.1.0"
shellcheck-py = ">=0.10.0.1"
typeguard = ">=4.2.1"
xx_sent_ud_sm = { url = "https://github.com/explosion/spacy-models/releases/download/xx_sent_ud_sm-3.7.0/xx_sent_ud_sm-3.7.0-py3-none-any.whl" }
[tool.poetry.group.dev.dependencies] # https://python-poetry.org/docs/master/managing-dependencies/
cruft = ">=2.15.0"
ipykernel = ">=6.29.4"
ipython = ">=8.8.0"
ipywidgets = ">=8.1.2"
matplotlib = ">=3.9.0"
memory-profiler = ">=0.61.0"
pdoc = ">=14.4.0"
[tool.poetry.scripts] # https://python-poetry.org/docs/pyproject/#scripts
raglite = "raglite:cli"
[tool.coverage.report] # https://coverage.readthedocs.io/en/latest/config.html#report
fail_under = 50
precision = 1
show_missing = true
skip_covered = true
[tool.coverage.run] # https://coverage.readthedocs.io/en/latest/config.html#run
branch = true
command_line = "--module pytest"
data_file = "reports/.coverage"
source = ["src"]
[tool.coverage.xml] # https://coverage.readthedocs.io/en/latest/config.html#xml
output = "reports/coverage.xml"
[tool.mypy] # https://mypy.readthedocs.io/en/latest/config_file.html
junit_xml = "reports/mypy.xml"
strict = true
disallow_subclassing_any = false
disallow_untyped_decorators = false
ignore_missing_imports = true
pretty = true
show_column_numbers = true
show_error_codes = true
show_error_context = true
warn_unreachable = true
[tool.pytest.ini_options] # https://docs.pytest.org/en/latest/reference/reference.html#ini-options-ref
addopts = "--color=yes --exitfirst --failed-first --strict-config --strict-markers --verbosity=2 --junitxml=reports/pytest.xml"
filterwarnings = ["error", "ignore::DeprecationWarning", "ignore::pytest.PytestUnraisableExceptionWarning"]
testpaths = ["src", "tests"]
xfail_strict = true
[tool.ruff] # https://github.com/charliermarsh/ruff
fix = true
line-length = 100
src = ["src", "tests"]
target-version = "py310"
[tool.ruff.lint]
select = ["A", "ASYNC", "B", "BLE", "C4", "C90", "D", "DTZ", "E", "EM", "ERA", "F", "FBT", "FLY", "FURB", "G", "I", "ICN", "INP", "INT", "ISC", "LOG", "N", "NPY", "PERF", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "Q", "RET", "RSE", "RUF", "S", "SIM", "SLF", "SLOT", "T10", "T20", "TCH", "TID", "TRY", "UP", "W", "YTT"]
ignore = ["D203", "D213", "E501", "RET504", "RUF002", "S101", "S307"]
unfixable = ["ERA001", "F401", "F841", "T201", "T203"]
[tool.ruff.lint.flake8-tidy-imports]
ban-relative-imports = "all"
[tool.ruff.lint.pycodestyle]
max-doc-length = 100
[tool.ruff.lint.pydocstyle]
convention = "numpy"
[tool.poe.tasks] # https://github.com/nat-n/poethepoet
[tool.poe.tasks.docs]
help = "Generate this package's docs"
cmd = """
pdoc
--docformat $docformat
--output-directory $outputdirectory
raglite
"""
[[tool.poe.tasks.docs.args]]
help = "The docstring style (default: numpy)"
name = "docformat"
options = ["--docformat"]
default = "numpy"
[[tool.poe.tasks.docs.args]]
help = "The output directory (default: docs)"
name = "outputdirectory"
options = ["--output-directory"]
default = "docs"
[tool.poe.tasks.lint]
help = "Lint this package"
[[tool.poe.tasks.lint.sequence]]
cmd = """
pre-commit run
--all-files
--color always
"""
[[tool.poe.tasks.lint.sequence]]
shell = "safety check --continue-on-error --full-report"
[tool.poe.tasks.test]
help = "Test this package"
[[tool.poe.tasks.test.sequence]]
cmd = "coverage run"
[[tool.poe.tasks.test.sequence]]
cmd = "coverage report"
[[tool.poe.tasks.test.sequence]]
cmd = "coverage xml"