[build-system] requires = ["hatchling"] build-backend = "hatchling.build" [project] name = "document-chatbot-colpali" version = "1.0.0" description = "A RAG system with a hybrid retriever (BM25 + Dense) and a ColPali reranker." readme = "README.md" license = { text = "MIT" } requires-python = ">=3.10" authors = [ {name = "User", email = "user@example.com"}, ] keywords = ["rag", "retrieval", "nlp", "colpali", "bm25", "vector-search", "gradio"] classifiers = [ "Development Status :: 4 - Beta", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Topic :: Scientific/Engineering :: Artificial Intelligence", ] # --- Core Application Dependencies --- # These packages are essential for the application to run. dependencies = [ "gradio>=4.28.0", "qdrant-client>=1.9.0", "colpali-engine>=0.3.0", "langchain-google-genai>=1.0.2", "PyMuPDF>=1.24.2", "pytesseract>=0.3.10", "Pillow>=10.3.0", "pydantic>=2.7.1", "python-dotenv>=1.0.1", "torch>=2.2.0", "transformers>=4.39.0", "numpy>=1.26.0", "langchain>=0.1.16", "langchain-core>=0.1.45", "rank_bm25", "httpx", "gradio-client", "sentence-transformers", "idna", "huggingface-hub", "requests", ] # --- Optional Development Dependencies --- # These packages are used for development, testing, linting, and formatting. [project.optional-dependencies] dev = [ # Testing "pytest>=7.4.0", "pytest-cov>=4.1.0", # Linting & Formatting "ruff>=0.1.0", "black>=24.0.0", # Type Checking "mypy>=1.6.0", ] # --- Tool Configurations --- [tool.hatch.build.targets.wheel] # Explicitly tell hatchling where to find the package source code. packages = ["backend"] [tool.black] line-length = 88 target-version = ['py311'] # --- Ruff Linter Configuration --- [tool.ruff] # Enable Pyflakes (F) and pycodestyle (E, W) rules by default. select = ["E", "F", "W", "I", "UP"] ignore = [] # Allow unused variables when underscore-prefixed. dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$" # Assume Python 3.11 target-version = "py311" [tool.ruff.format] quote-style = "double" indent-style = "space" skip-magic-trailing-comma = false line-ending = "lf" # --- Mypy Type Checker Configuration --- [tool.mypy] python_version = "3.11" warn_return_any = true warn_unused_configs = true disallow_untyped_defs = true ignore_missing_imports = true