[tool.poetry] name = "private-gpt" version = "0.1.0" description = "Private GPT" authors = ["Zylon "] [tool.poetry.dependencies] python = ">=3.11,<3.12" fastapi = { extras = ["all"], version = "^0.103.1" } boto3 = "^1.28.56" injector = "^0.21.0" pyyaml = "^6.0.1" python-multipart = "^0.0.6" pypdf = "^4.0.1" llama-index = { extras = ["local_models"], version = "0.9.3" } watchdog = "^3.0.0" qdrant-client = "^1.6.9" chromadb = {version = "^0.4.13", optional = true} passlib = "^1.7.4" python-jose = "^3.3.0" cryptography = "^3.1" [tool.poetry.group.dev.dependencies] black = "^22" mypy = "^1.2" pre-commit = "^2" pytest = "^7" pytest-cov = "^3" ruff = "^0" pytest-asyncio = "^0.21.1" types-pyyaml = "^6.0.12.12" # Dependencies for gradio UI [tool.poetry.group.ui] optional = true [tool.poetry.group.ui.dependencies] gradio = "^4.4.1" [tool.poetry.group.local] optional = true [tool.poetry.group.local.dependencies] llama-cpp-python = "^0.2.11" numpy = "1.26.0" sentence-transformers = "^2.2.2" # https://stackoverflow.com/questions/76327419/valueerror-libcublas-so-0-9-not-found-in-the-system-path torch = ">=2.0.0, !=2.0.1, !=2.1.0" transformers = "^4.34.0" [tool.poetry.extras] chroma = ["chromadb"] bcrypt = ["bcrypt"] [build-system] requires = ["poetry-core>=1.0.0"] build-backend = "poetry.core.masonry.api" # Packages configs ## coverage [tool.coverage.run] branch = true [tool.coverage.report] skip_empty = true precision = 2 ## black [tool.black] target-version = ['py311'] ## ruff # Recommended ruff config for now, to be updated as we go along. [tool.ruff] target-version = 'py311' # See all rules at https://beta.ruff.rs/docs/rules/ select = [ "E", # pycodestyle "W", # pycodestyle "F", # Pyflakes "B", # flake8-bugbear "C4", # flake8-comprehensions "D", # pydocstyle "I", # isort "SIM", # flake8-simplify "TCH", # flake8-type-checking "TID", # flake8-tidy-imports "Q", # flake8-quotes "UP", # pyupgrade "PT", # flake8-pytest-style "RUF", # Ruff-specific rules ] ignore = [ "E501", # "Line too long" # -> line length already regulated by black "PT011", # "pytest.raises() should specify expected exception" # -> would imply to update tests every time you update exception message "SIM102", # "Use a single `if` statement instead of nested `if` statements" # -> too restrictive, "D100", "D101", "D102", "D103", "D104", "D105", "D106", "D107" # -> "Missing docstring in public function too restrictive" ] [tool.ruff.pydocstyle] # Automatically disable rules that are incompatible with Google docstring convention convention = "google" [tool.ruff.pycodestyle] max-doc-length = 88 [tool.ruff.flake8-tidy-imports] ban-relative-imports = "all" [tool.ruff.flake8-type-checking] strict = true runtime-evaluated-base-classes = ["pydantic.BaseModel"] # Pydantic needs to be able to evaluate types at runtime # see https://pypi.org/project/flake8-type-checking/ for flake8-type-checking documentation # see https://beta.ruff.rs/docs/settings/#flake8-type-checking-runtime-evaluated-base-classes for ruff documentation [tool.ruff.per-file-ignores] # Allow missing docstrings for tests "tests/**/*.py" = ["D1"] ## mypy [tool.mypy] python_version = "3.11" strict = true check_untyped_defs = false explicit_package_bases = true warn_unused_ignores = false exclude = ["tests"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] addopts = [ "--import-mode=importlib", ]