Repository: deepsense-ai/ragbits
Pull request #449: chore: loosen up all dependencies
Author: login: mhordynski
Created: 2025-03-25T09:41:42Z | Merged: 2025-03-25T10:24:53Z



Diff:
diff --git a/packages/ragbits-cli/pyproject.toml b/packages/ragbits-cli/pyproject.toml
index 91608e23de..421f7be8d7 100644
--- a/packages/ragbits-cli/pyproject.toml
+++ b/packages/ragbits-cli/pyproject.toml
@@ -31,7 +31,7 @@ classifiers = [
     "Topic :: Scientific/Engineering :: Artificial Intelligence",
     "Topic :: Software Development :: Libraries :: Python Modules",
 ]
-dependencies = ["typer>=0.12.5", "ragbits-core==0.10.2"]
+dependencies = ["typer>=0.12.5,<1.0.0", "ragbits-core==0.10.2"]
 
 [project.urls]
 "Homepage" = "https://github.com/deepsense-ai/ragbits"
diff --git a/packages/ragbits-core/pyproject.toml b/packages/ragbits-core/pyproject.toml
index 33a461ad36..c8663e6492 100644
--- a/packages/ragbits-core/pyproject.toml
+++ b/packages/ragbits-core/pyproject.toml
@@ -32,11 +32,11 @@ classifiers = [
     "Topic :: Software Development :: Libraries :: Python Modules",
 ]
 dependencies = [
-    "jinja2>=3.1.4",
-    "pydantic>=2.9.1",
-    "typer~=0.12.5",
-    "tomli~=2.0.2",
-    "litellm~=1.55.0",
+    "jinja2>=3.1.4,<4.0.0",
+    "pydantic>=2.9.1,<3.0.0",
+    "typer>=0.12.5,<1.0.0",
+    "tomli>=2.0.2,<3.0.0",
+    "litellm>=1.55.0,<2.0.0",
 ]
 
 [project.urls]
@@ -47,33 +47,33 @@ dependencies = [
 
 [project.optional-dependencies]
 chroma = [
-    "chromadb~=0.6.3",
+    "chromadb>=0.6.3,<1.0.0",
 ]
 local = [
-    "torch~=2.2.1",
-    "transformers~=4.44.2",
-    "numpy~=1.26.0"
+    "torch>=2.2.1,<3.0.0",
+    "transformers>=4.44.2,<5.0.0",
+    "numpy>=1.26.0,<2.0.0"
 ]
 fastembed = [
-    "fastembed>=0.4.2"
+    "fastembed>=0.4.2,<1.0.0"
 ]
 lab = [
-    "gradio~=4.44.0",
+    "gradio~=4.44.0,<5.0.0",
 ]
 promptfoo = [
-    "PyYAML~=6.0.2",
+    "PyYAML>=6.0.2,<7.0.0",
 ]
 otel = [
-    "opentelemetry-api~=1.27.0",
+    "opentelemetry-api>=1.27.0,<2.0.0",
 ]
 qdrant = [
-    "qdrant-client~=1.12.1",
+    "qdrant-client>=1.12.1,<2.0.0",
 ]
 pgvector = [
-    "asyncpg>=0.30.0",
+    "asyncpg>=0.30.0,<1.0.0",
 ]
 fastembed-gpu = [
-    "fastembed-gpu>=0.4.2",
+    "fastembed-gpu>=0.4.2,<1.0.0",
 ]
 
 [tool.uv]
diff --git a/packages/ragbits-document-search/pyproject.toml b/packages/ragbits-document-search/pyproject.toml
index 943d263981..25a140024e 100644
--- a/packages/ragbits-document-search/pyproject.toml
+++ b/packages/ragbits-document-search/pyproject.toml
@@ -42,21 +42,21 @@ dependencies = ["unstructured>=0.16.9", "unstructured-client>=0.26.0", "pdf2imag
 
 [project.optional-dependencies]
 azure=[
-    "azure-storage-blob~=12.24.1",
-    "azure-identity~=1.19.0",
-    "azure-core~=1.32.0"
+    "azure-storage-blob>=12.24.1,<13.0.0",
+    "azure-identity>=1.19.0,<2.0.0",
+    "azure-core>=1.32.0,<2.0.0"
 ]
 gcs = [
-    "gcloud-aio-storage~=9.3.0"
+    "gcloud-aio-storage>=9.3.0,<10.0.0"
 ]
 huggingface = [
-    "datasets~=3.0.1",
+    "datasets>=3.0.1,<4.0.0",
 ]
 ray = [
-    "ray[data]~=2.43.0",
+    "ray[data]>=2.43.0,<3.0.0",
 ]
 s3 = [
-    "boto3~=1.35.42",
+    "boto3>=1.35.42,<2.0.0",
 ]
 
 [tool.uv]
diff --git a/packages/ragbits-evaluate/pyproject.toml b/packages/ragbits-evaluate/pyproject.toml
index 9faf972ccc..35a0a160b7 100644
--- a/packages/ragbits-evaluate/pyproject.toml
+++ b/packages/ragbits-evaluate/pyproject.toml
@@ -42,7 +42,7 @@ dependencies = ["hydra-core~=1.3.2", "neptune[optuna]~=1.12.0", "optuna==4.0.0",
 
 [project.optional-dependencies]
 relari = [
-    "continuous-eval~=0.3.12",
+    "continuous-eval>=0.3.12,<1.0.0",
 ]
 
 [tool.uv]
diff --git a/packages/ragbits-guardrails/pyproject.toml b/packages/ragbits-guardrails/pyproject.toml
index 695e80767b..ac26471411 100644
--- a/packages/ragbits-guardrails/pyproject.toml
+++ b/packages/ragbits-guardrails/pyproject.toml
@@ -41,7 +41,7 @@ dependencies = ["ragbits-core==0.10.2"]
 
 [project.optional-dependencies]
 openai = [
-    "openai~=1.57.3",
+    "openai>=1.57.3,<2.0.0",
 ]
 
 [tool.uv]
diff --git a/uv.lock b/uv.lock
index ada6030094..f523e2de61 100644
--- a/uv.lock
+++ b/uv.lock
@@ -1,4 +1,5 @@
 version = 1
+revision = 1
 requires-python = ">=3.10"
 resolution-markers = [
     "python_full_version < '3.11' and platform_machine == 'x86_64' and sys_platform == 'darwin'",
@@ -460,7 +461,7 @@ name = "build"
 version = "1.2.2"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "colorama", marker = "os_name == 'nt'" },
+    { name = "colorama", marker = "(os_name == 'nt' and platform_machine != 'x86_64') or (os_name == 'nt' and sys_platform != 'darwin')" },
     { name = "importlib-metadata", marker = "python_full_version < '3.10.2'" },
     { name = "packaging" },
     { name = "pyproject-hooks" },
@@ -687,7 +688,7 @@ name = "click"
 version = "8.1.7"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "colorama", marker = "platform_system == 'Windows'" },
+    { name = "colorama", marker = "sys_platform == 'win32'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/96/d3/f04c7bfcf5c1862a2a5b845c6b2b360488cf47af55dfa79c98f6a6bf98b5/click-8.1.7.tar.gz", hash = "sha256:ca9853ad459e787e2192211578cc907e7594e294c7ccc834310722b41b9ca6de", size = 336121 }
 wheels = [
@@ -2436,7 +2437,7 @@ version = "1.6.1"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
     { name = "click" },
-    { name = "colorama", marker = "platform_system == 'Windows'" },
+    { name = "colorama", marker = "sys_platform == 'win32'" },
     { name = "ghp-import" },
     { name = "jinja2" },
     { name = "markdown" },
@@ -2798,6 +2799,8 @@ wheels = [
     { url = "https://files.pythonhosted.org/packages/bc/f7/7ec7fddc92e50714ea3745631f79bd9c96424cb2702632521028e57d3a36/multiprocess-0.70.16-py310-none-any.whl", hash = "sha256:c4a9944c67bd49f823687463660a2d6daae94c289adff97e0f9d696ba6371d02", size = 134824 },
     { url = "https://files.pythonhosted.org/packages/50/15/b56e50e8debaf439f44befec5b2af11db85f6e0f344c3113ae0be0593a91/multiprocess-0.70.16-py311-none-any.whl", hash = "sha256:af4cabb0dac72abfb1e794fa7855c325fd2b55a10a44628a3c1ad3311c04127a", size = 143519 },
     { url = "https://files.pythonhosted.org/packages/0a/7d/a988f258104dcd2ccf1ed40fdc97e26c4ac351eeaf81d76e266c52d84e2f/multiprocess-0.70.16-py312-none-any.whl", hash = "sha256:fc0544c531920dde3b00c29863377f87e1632601092ea2daca74e4beb40faa2e", size = 146741 },
+    { url = "https://files.pythonhosted.org/packages/ea/89/38df130f2c799090c978b366cfdf5b96d08de5b29a4a293df7f7429fa50b/multiprocess-0.70.16-py38-none-any.whl", hash = "sha256:a71d82033454891091a226dfc319d0cfa8019a4e888ef9ca910372a446de4435", size = 132628 },
+    { url = "https://files.pythonhosted.org/packages/da/d9/f7f9379981e39b8c2511c9e0326d212accacb82f12fbfdc1aa2ce2a7b2b6/multiprocess-0.70.16-py39-none-any.whl", hash = "sha256:a0bafd3ae1b732eac64be2e72038231c1ba97724b60b09400d68f229fcc2fbf3", size = 133351 },
 ]
 
 [[package]]
@@ -3012,7 +3015,7 @@ name = "nvidia-cudnn-cu12"
 version = "8.9.2.26"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "nvidia-cublas-cu12" },
+    { name = "nvidia-cublas-cu12", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
 ]
 wheels = [
     { url = "https://files.pythonhosted.org/packages/ff/74/a2e2be7fb83aaedec84f391f082cf765dfb635e7caa9b49065f73e4835d8/nvidia_cudnn_cu12-8.9.2.26-py3-none-manylinux1_x86_64.whl", hash = "sha256:5ccb288774fdfb07a7e7025ffec286971c06d8d7b4fb162525334616d7629ff9", size = 731725872 },
@@ -3039,9 +3042,9 @@ name = "nvidia-cusolver-cu12"
 version = "11.4.5.107"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "nvidia-cublas-cu12" },
-    { name = "nvidia-cusparse-cu12" },
-    { name = "nvidia-nvjitlink-cu12" },
+    { name = "nvidia-cublas-cu12", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
+    { name = "nvidia-cusparse-cu12", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
+    { name = "nvidia-nvjitlink-cu12", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
 ]
 wheels = [
     { url = "https://files.pythonhosted.org/packages/bc/1d/8de1e5c67099015c834315e333911273a8c6aaba78923dd1d1e25fc5f217/nvidia_cusolver_cu12-11.4.5.107-py3-none-manylinux1_x86_64.whl", hash = "sha256:8a7ec542f0412294b15072fa7dab71d31334014a69f953004ea7a118206fe0dd", size = 124161928 },
@@ -3052,7 +3055,7 @@ name = "nvidia-cusparse-cu12"
 version = "12.1.0.106"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "nvidia-nvjitlink-cu12" },
+    { name = "nvidia-nvjitlink-cu12", marker = "platform_machine != 'x86_64' or sys_platform != 'darwin'" },
 ]
 wheels = [
     { url = "https://files.pythonhosted.org/packages/65/5b/cfaeebf25cd9fdec14338ccb16f6b2c4c7fa9163aefcf057d86b9cc248bb/nvidia_cusparse_cu12-12.1.0.106-py3-none-manylinux1_x86_64.whl", hash = "sha256:f3b50f42cf363f86ab21f720998517a659a48131e8d538dc02f8768237bd884c", size = 195958278 },
@@ -3071,7 +3074,6 @@ name = "nvidia-nvjitlink-cu12"
 version = "12.6.77"
 source = { registry = "https://pypi.org/simple" }
 wheels = [
-    { url = "https://files.pythonhosted.org/packages/11/8c/386018fdffdce2ff8d43fedf192ef7d14cab7501cbf78a106dd2e9f1fc1f/nvidia_nvjitlink_cu12-12.6.77-py3-none-manylinux2014_aarch64.whl", hash = "sha256:3bf10d85bb1801e9c894c6e197e44dd137d2a0a9e43f8450e9ad13f2df0dd52d", size = 19270432 },
     { url = "https://files.pythonhosted.org/packages/fe/e4/486de766851d58699bcfeb3ba6a3beb4d89c3809f75b9d423b9508a8760f/nvidia_nvjitlink_cu12-12.6.77-py3-none-manylinux2014_x86_64.whl", hash = "sha256:9ae346d16203ae4ea513be416495167a0101d33d2d14935aa9c1829a3fb45142", size = 19745114 },
 ]
 
@@ -3652,7 +3654,7 @@ name = "portalocker"
 version = "2.10.1"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "pywin32", marker = "platform_system == 'Windows'" },
+    { name = "pywin32", marker = "sys_platform == 'win32'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/ed/d3/c6c64067759e87af98cc668c1cc75171347d0f1577fab7ca3749134e3cd4/portalocker-2.10.1.tar.gz", hash = "sha256:ef1bf844e878ab08aee7e40184156e1151f228f103aa5c6bd0724cc330960f8f", size = 40891 }
 wheels = [
@@ -3723,8 +3725,6 @@ version = "6.0.0"
 source = { registry = "https://pypi.org/simple" }
 sdist = { url = "https://files.pythonhosted.org/packages/18/c7/8c6872f7372eb6a6b2e4708b88419fb46b857f7a2e1892966b851cc79fc9/psutil-6.0.0.tar.gz", hash = "sha256:8faae4f310b6d969fa26ca0545338b21f73c6b15db7c4a8d934a5482faa818f2", size = 508067 }
 wheels = [
-    { url = "https://files.pythonhosted.org/packages/c5/66/78c9c3020f573c58101dc43a44f6855d01bbbd747e24da2f0c4491200ea3/psutil-6.0.0-cp27-none-win32.whl", hash = "sha256:02b69001f44cc73c1c5279d02b30a817e339ceb258ad75997325e0e6169d8b35", size = 249766 },
-    { url = "https://files.pythonhosted.org/packages/e1/3f/2403aa9558bea4d3854b0e5e567bc3dd8e9fbc1fc4453c0aa9aafeb75467/psutil-6.0.0-cp27-none-win_amd64.whl", hash = "sha256:21f1fb635deccd510f69f485b87433460a603919b45e2a324ad65b0cc74f8fb1", size = 253024 },
     { url = "https://files.pythonhosted.org/packages/0b/37/f8da2fbd29690b3557cca414c1949f92162981920699cd62095a984983bf/psutil-6.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c588a7e9b1173b6e866756dde596fd4cad94f9399daf99ad8c3258b3cb2b47a0", size = 250961 },
     { url = "https://files.pythonhosted.org/packages/35/56/72f86175e81c656a01c4401cd3b1c923f891b31fbcebe98985894176d7c9/psutil-6.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6ed2440ada7ef7d0d608f20ad89a04ec47d2d3ab7190896cd62ca5fc4fe08bf0", size = 287478 },
     { url = "https://files.pythonhosted.org/packages/19/74/f59e7e0d392bc1070e9a70e2f9190d652487ac115bb16e2eff6b22ad1d24/psutil-6.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd9a97c8e94059b0ef54a7d4baf13b405011176c3b6ff257c247cae0d560ecd", size = 290455 },
@@ -4246,7 +4246,7 @@ dependencies = [
 [package.metadata]
 requires-dist = [
     { name = "ragbits-core", editable = "packages/ragbits-core" },
-    { name = "typer", specifier = ">=0.12.5" },
+    { name = "typer", specifier = ">=0.12.5,<1.0.0" },
 ]
 
 [[package]]
@@ -4334,23 +4334,24 @@ dev = [
 
 [package.metadata]
 requires-dist = [
-    { name = "asyncpg", marker = "extra == 'pgvector'", specifier = ">=0.30.0" },
-    { name = "chromadb", marker = "extra == 'chroma'", specifier = "~=0.6.3" },
-    { name = "fastembed", marker = "extra == 'fastembed'", specifier = ">=0.4.2" },
-    { name = "fastembed-gpu", marker = "extra == 'fastembed-gpu'", specifier = ">=0.4.2" },
-    { name = "gradio", marker = "extra == 'lab'", specifier = "~=4.44.0" },
-    { name = "jinja2", specifier = ">=3.1.4" },
-    { name = "litellm", specifier = "~=1.55.0" },
-    { name = "numpy", marker = "extra == 'local'", specifier = "~=1.26.0" },
-    { name = "opentelemetry-api", marker = "extra == 'otel'", specifier = "~=1.27.0" },
-    { name = "pydantic", specifier = ">=2.9.1" },
-    { name = "pyyaml", marker = "extra == 'promptfoo'", specifier = "~=6.0.2" },
-    { name = "qdrant-client", marker = "extra == 'qdrant'", specifier = "~=1.12.1" },
-    { name = "tomli", specifier = "~=2.0.2" },
-    { name = "torch", marker = "extra == 'local'", specifier = "~=2.2.1" },
-    { name = "transformers", marker = "extra == 'local'", specifier = "~=4.44.2" },
-    { name = "typer", specifier = "~=0.12.5" },
-]
+    { name = "asyncpg", marker = "extra == 'pgvector'", specifier = ">=0.30.0,<1.0.0" },
+    { name = "chromadb", marker = "extra == 'chroma'", specifier = ">=0.6.3,<1.0.0" },
+    { name = "fastembed", marker = "extra == 'fastembed'", specifier = ">=0.4.2,<1.0.0" },
+    { name = "fastembed-gpu", marker = "extra == 'fastembed-gpu'", specifier = ">=0.4.2,<1.0.0" },
+    { name = "gradio", marker = "extra == 'lab'", specifier = "~=4.44.0,<5.0.0" },
+    { name = "jinja2", specifier = ">=3.1.4,<4.0.0" },
+    { name = "litellm", specifier = ">=1.55.0,<2.0.0" },
+    { name = "numpy", marker = "extra == 'local'", specifier = ">=1.26.0,<2.0.0" },
+    { name = "opentelemetry-api", marker = "extra == 'otel'", specifier = ">=1.27.0,<2.0.0" },
+    { name = "pydantic", specifier = ">=2.9.1,<3.0.0" },
+    { name = "pyyaml", marker = "extra == 'promptfoo'", specifier = ">=6.0.2,<7.0.0" },
+    { name = "qdrant-client", marker = "extra == 'qdrant'", specifier = ">=1.12.1,<2.0.0" },
+    { name = "tomli", specifier = ">=2.0.2,<3.0.0" },
+    { name = "torch", marker = "extra == 'local'", specifier = ">=2.2.1,<3.0.0" },
+    { name = "transformers", marker = "extra == 'local'", specifier = ">=4.44.2,<5.0.0" },
+    { name = "typer", specifier = ">=0.12.5,<1.0.0" },
+]
+provides-extras = ["chroma", "local", "fastembed", "lab", "promptfoo", "otel", "qdrant", "pgvector", "fastembed-gpu"]
 
 [package.metadata.requires-dev]
 dev = [
@@ -4406,19 +4407,20 @@ dev = [
 [package.metadata]
 requires-dist = [
     { name = "aiohttp", specifier = ">=3.10.8" },
-    { name = "azure-core", marker = "extra == 'azure'", specifier = "~=1.32.0" },
-    { name = "azure-identity", marker = "extra == 'azure'", specifier = "~=1.19.0" },
-    { name = "azure-storage-blob", marker = "extra == 'azure'", specifier = "~=12.24.1" },
-    { name = "boto3", marker = "extra == 's3'", specifier = "~=1.35.42" },
-    { name = "datasets", marker = "extra == 'huggingface'", specifier = "~=3.0.1" },
-    { name = "gcloud-aio-storage", marker = "extra == 'gcs'", specifier = "~=9.3.0" },
+    { name = "azure-core", marker = "extra == 'azure'", specifier = ">=1.32.0,<2.0.0" },
+    { name = "azure-identity", marker = "extra == 'azure'", specifier = ">=1.19.0,<2.0.0" },
+    { name = "azure-storage-blob", marker = "extra == 'azure'", specifier = ">=12.24.1,<13.0.0" },
+    { name = "boto3", marker = "extra == 's3'", specifier = ">=1.35.42,<2.0.0" },
+    { name = "datasets", marker = "extra == 'huggingface'", specifier = ">=3.0.1,<4.0.0" },
+    { name = "gcloud-aio-storage", marker = "extra == 'gcs'", specifier = ">=9.3.0,<10.0.0" },
     { name = "pdf2image", specifier = ">=1.17.0" },
     { name = "ragbits-core", editable = "packages/ragbits-core" },
-    { name = "ray", extras = ["data"], marker = "extra == 'ray'", specifier = "~=2.43.0" },
+    { name = "ray", extras = ["data"], marker = "extra == 'ray'", specifier = ">=2.43.0,<3.0.0" },
     { name = "rerankers", specifier = ">=0.6.1" },
     { name = "unstructured", specifier = ">=0.16.9" },
     { name = "unstructured-client", specifier = ">=0.26.0" },
 ]
+provides-extras = ["azure", "gcs", "huggingface", "ray", "s3"]
 
 [package.metadata.requires-dev]
 dev = [
@@ -4458,13 +4460,14 @@ dev = [
 
 [package.metadata]
 requires-dist = [
-    { name = "continuous-eval", marker = "extra == 'relari'", specifier = "~=0.3.12" },
+    { name = "continuous-eval", marker = "extra == 'relari'", specifier = ">=0.3.12,<1.0.0" },
     { name = "distilabel", specifier = "==1.4.1" },
     { name = "hydra-core", specifier = "~=1.3.2" },
     { name = "neptune", extras = ["optuna"], specifier = "~=1.12.0" },
     { name = "optuna", specifier = "==4.0.0" },
     { name = "ragbits-core", editable = "packages/ragbits-core" },
 ]
+provides-extras = ["relari"]
 
 [package.metadata.requires-dev]
 dev = [
@@ -4499,9 +4502,10 @@ dev = [
 
 [package.metadata]
 requires-dist = [
-    { name = "openai", marker = "extra == 'openai'", specifier = "~=1.57.3" },
+    { name = "openai", marker = "extra == 'openai'", specifier = ">=1.57.3,<2.0.0" },
     { name = "ragbits-core", editable = "packages/ragbits-core" },
 ]
+provides-extras = ["openai"]
 
 [package.metadata.requires-dev]
 dev = [
@@ -5527,19 +5531,19 @@ dependencies = [
     { name = "fsspec" },
     { name = "jinja2" },
     { name = "networkx" },
-    { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
-    { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and platform_system == 'Linux'" },
+    { name = "nvidia-cublas-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cuda-cupti-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cuda-nvrtc-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cuda-runtime-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cudnn-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cufft-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-curand-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cusolver-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-cusparse-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-nccl-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
+    { name = "nvidia-nvtx-cu12", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'" },
     { name = "sympy" },
-    { name = "triton", marker = "python_full_version < '3.12' and platform_machine == 'x86_64' and platform_system == 'Linux'" },
+    { name = "triton", marker = "python_full_version < '3.12' and platform_machine == 'x86_64' and sys_platform == 'linux'" },
     { name = "typing-extensions" },
 ]
 wheels = [
@@ -5565,7 +5569,7 @@ name = "tqdm"
 version = "4.66.5"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "colorama", marker = "platform_system == 'Windows'" },
+    { name = "colorama", marker = "sys_platform == 'win32'" },
 ]
 sdist = { url = "https://files.pythonhosted.org/packages/58/83/6ba9844a41128c62e810fddddd72473201f3eacde02046066142a2d96cc5/tqdm-4.66.5.tar.gz", hash = "sha256:e1020aef2e5096702d8a025ac7d16b1577279c9d63f8375b63083e9a5f0fcbad", size = 169504 }
 wheels = [
@@ -5598,7 +5602,7 @@ name = "triton"
 version = "2.2.0"
 source = { registry = "https://pypi.org/simple" }
 dependencies = [
-    { name = "filelock", marker = "python_full_version < '3.12'" },
+    { name = "filelock", marker = "(python_full_version < '3.12' and platform_machine != 'x86_64') or (python_full_version < '3.12' and sys_platform != 'darwin')" },
 ]
 wheels = [
     { url = "https://files.pythonhosted.org/packages/95/05/ed974ce87fe8c8843855daa2136b3409ee1c126707ab54a8b72815c08b49/triton-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2294514340cfe4e8f4f9e5c66c702744c4a117d25e618bd08469d0bfed1e2e5", size = 167900779 },


Reviews:
user: login: ludwiktrammer
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-03-25T09:50:11Z
state: APPROVED
author_association: NONE
submitted_at: 2025-03-25T09:53:53Z
user: login: micpst
state: APPROVED
author_association: COLLABORATOR
submitted_at: 2025-03-25T10:00:54Z
user: login: micpst
state: COMMENTED
author_association: COLLABORATOR
submitted_at: 2025-03-25T10:17:39Z
user: login: mhordynski
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-03-25T10:21:06Z

Review comments:
diff_hunk: @@ -47,33 +47,33 @@ dependencies = [
 
 [project.optional-dependencies]
 chroma = [
-    "chromadb~=0.6.3",
+    "chromadb>=0.6.3,<1.0.0",
 ]
 local = [
-    "torch~=2.2.1",
-    "transformers~=4.44.2",
-    "numpy~=1.26.0"
+    "torch>=2.2.1,<3.0.0",
+    "transformers>=4.44.2,<5.0.0",
+    "numpy>=1.26.0,<2.0.0"
 ]
 fastembed = [
     "fastembed>=0.4.2"
path: packages/ragbits-core/pyproject.toml
user: login: micpst
body: fastembed too, I think
created_at: 2025-03-25T10:17:35Z
author_association: COLLABORATOR
diff_hunk: @@ -47,33 +47,33 @@ dependencies = [
 
 [project.optional-dependencies]
 chroma = [
-    "chromadb~=0.6.3",
+    "chromadb>=0.6.3,<1.0.0",
 ]
 local = [
-    "torch~=2.2.1",
-    "transformers~=4.44.2",
-    "numpy~=1.26.0"
+    "torch>=2.2.1,<3.0.0",
+    "transformers>=4.44.2,<5.0.0",
+    "numpy>=1.26.0,<2.0.0"
 ]
 fastembed = [
     "fastembed>=0.4.2"
path: packages/ragbits-core/pyproject.toml
user: login: mhordynski
body: fixed, thx
created_at: 2025-03-25T10:21:06Z
author_association: MEMBER

PR comments:
user: login: github-actions[bot]
created_at: 2025-03-25T09:43:44Z
body: Trivy scanning results.

Report Summary

┌─────────┬──────┬─────────────────┬─────────┐
│ Target  │ Type │ Vulnerabilities │ Secrets │
├─────────┼──────┼─────────────────┼─────────┤
│ uv.lock │  uv  │       21        │    -    │
└─────────┴──────┴─────────────────┴─────────┘
Legend:
- '-': Not scanned
- '0': Clean (no security findings detected)


For OSS Maintainers: VEX Notice
--------------------------------
If you're an OSS maintainer and Trivy has detected vulnerabilities in your project that you believe are not actually exploitable, consider issuing a VEX (Vulnerability Exploitability eXchange) statement.
VEX allows you to communicate the actual status of vulnerabilities in your project, improving security transparency and reducing false positives for your users.
Learn more and start using VEX: https://trivy.dev/v0.60/docs/supply-chain/vex/repo#publishing-vex-documents

To disable this notice, set the TRIVY_DISABLE_VEX_NOTICE environment variable.


uv.lock (uv)
============
Total: 21 (MEDIUM: 11, HIGH: 9, CRITICAL: 1)

┌──────────────────┬────────────────┬──────────┬────────┬───────────────────┬───────────────┬──────────────────────────────────────────────────────────────┐
│     Library      │ Vulnerability  │ Severity │ Status │ Installed Version │ Fixed Version │                            Title                             │
├──────────────────┼────────────────┼──────────┼────────┼───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ aiohttp          │ CVE-2024-52303 │ MEDIUM   │ fixed  │ 3.10.8            │ 3.10.11       │ aiohttp: aiohttp memory leak when middleware is enabled when │
│                  │                │          │        │                   │               │ requesting a resource...                                     │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-52303                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-52304 │          │        │                   │               │ aiohttp: aiohttp vulnerable to request smuggling due to      │
│                  │                │          │        │                   │               │ incorrect parsing of chunk...                                │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-52304                   │
├──────────────────┼────────────────┼──────────┤        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ gradio           │ CVE-2025-23042 │ CRITICAL │        │ 4.44.1            │ 5.11.0        │ Gradio Blocked Path ACL Bypass Vulnerability                 │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2025-23042                   │
│                  ├────────────────┼──────────┤        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47867 │ HIGH     │        │                   │ 5.0.0         │ Gradio lacks integrity checking on the downloaded FRP client │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47867                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47870 │          │        │                   │               │ Gradio has a race condition in update_root_in_config may     │
│                  │                │          │        │                   │               │ redirect user traffic                                        │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47870                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47871 │          │        │                   │               │ Gradio uses insecure communication between the FRP client    │
│                  │                │          │        │                   │               │ and server                                                   │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47871                   │
│                  ├────────────────┼──────────┤        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47164 │ MEDIUM   │        │                   │               │ Gradio's `is_in_or_equal` function may be bypassed           │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47164                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47165 │          │        │                   │               │ Gradio's CORS origin validation accepts the null origin      │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47165                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47167 │          │        │                   │               │ Gradio vulnerable to SSRF in the path parameter of           │
│                  │                │          │        │                   │               │ /queue/join                                                  │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47167                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47868 │          │        │                   │               │ Gradio has several components with post-process steps allow  │
│                  │                │          │        │                   │               │ arbitrary file leaks                                         │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47868                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-47872 │          │        │                   │               │ Gradio has an XSS on every Gradio server via upload of       │
│                  │                │          │        │                   │               │ HTML...                                                      │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47872                   │
├──────────────────┼────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ jinja2           │ CVE-2024-56201 │          │        │ 3.1.4             │ 3.1.5         │ jinja2: Jinja has a sandbox breakout through malicious       │
│                  │                │          │        │                   │               │ filenames                                                    │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-56201                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-56326 │          │        │                   │               │ jinja2: Jinja has a sandbox breakout through indirect        │
│                  │                │          │        │                   │               │ reference to format method...                                │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-56326                   │
│                  ├────────────────┤          │        │                   ├───────────────┼──────────────────────────────────────────────────────────────┤
│                  │ CVE-2025-27516 │          │        │                   │ 3.1.6         │ jinja2: Jinja sandbox breakout through attr filter selecting │
│                  │                │          │        │                   │               │ format method                                                │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2025-27516                   │
├──────────────────┼────────────────┼──────────┤        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ litellm          │ CVE-2025-0628  │ HIGH     │        │ 1.55.0            │ 1.61.15       │ LiteLLM Has an Improper Authorization Vulnerability          │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2025-0628                    │
├──────────────────┼────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ python-multipart │ CVE-2024-53981 │          │        │ 0.0.12            │ 0.0.18        │ python-multipart: python-multipart has a DoS via deformation │
│                  │                │          │        │                   │               │ `multipart/form-data` boundary                               │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-53981                   │
├──────────────────┼────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ starlette        │ CVE-2024-47874 │          │        │ 0.38.6            │ 0.40.0        │ starlette: Starlette Denial of service (DoS) via             │
│                  │                │          │        │                   │               │ multipart/form-data                                          │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-47874                   │
├──────────────────┼────────────────┤          │        ├───────────────────┼───────────────┼──────────────────────────────────────────────────────────────┤
│ transformers     │ CVE-2024-11392 │          │        │ 4.44.2            │ 4.48.0        │ transformers: Hugging Face Transformers MobileViTV2          │
│                  │                │          │        │                   │               │ Deserialization of Untrusted Data Remote Code Execution...   │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-11392                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-11393 │          │        │                   │               │ transformers: Hugging Face Transformers MaskFormer Model     │
│                  │                │          │        │                   │               │ Deserialization of Untrusted Data Remote Code...             │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-11393                   │
│                  ├────────────────┤          │        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-11394 │          │        │                   │               │ transformers: Hugging Face Transformers Trax Model           │
│                  │                │          │        │                   │               │ Deserialization of Untrusted Data Remote Code...             │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-11394                   │
│                  ├────────────────┼──────────┤        │                   │               ├──────────────────────────────────────────────────────────────┤
│                  │ CVE-2024-12720 │ MEDIUM   │        │                   │               │ Transformers Regular Expression Denial of Service (ReDoS)    │
│                  │                │          │        │                   │               │ vulnerability                                                │
│                  │                │          │        │                   │               │ https://avd.aquasec.com/nvd/cve-2024-12720                   │
└──────────────────┴────────────────┴──────────┴────────┴───────────────────┴───────────────┴──────────────────────────────────────────────────────────────┘

<!-- thollander/actions-comment-pull-request "trivy" -->
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-03-25T09:43:50Z
body: ![badge](https://raw.githubusercontent.com/deepsense-ai/ragbits/_xml_coverage_reports/data/mh%2Floose_versions/./badge.svg)


## Code Coverage Summary

<details>


```
Filename                                                                                                        Stmts    Miss  Cover    Missing
------------------------------------------------------------------------------------------------------------  -------  ------  -------  ---------------------------------------------------------------
packages/ragbits-cli/src/ragbits/cli/__init__.py                                                                   31       4  87.10%   73-74, 81-82
packages/ragbits-cli/src/ragbits/cli/_utils.py                                                                     23       4  82.61%   47, 65-67
packages/ragbits-cli/src/ragbits/cli/state.py                                                                      79       3  96.20%   50-51, 61
packages/ragbits-cli/tests/unit/test_state.py                                                                      72       2  97.22%   103-104
packages/ragbits-conversations/src/ragbits/conversations/__init__.py                                                0       0  100.00%
packages/ragbits-conversations/src/ragbits/conversations/history/__init__.py                                        0       0  100.00%
packages/ragbits-conversations/src/ragbits/conversations/history/compressors/__init__.py                            3       0  100.00%
packages/ragbits-conversations/src/ragbits/conversations/history/compressors/base.py                               10       0  100.00%
packages/ragbits-conversations/src/ragbits/conversations/history/compressors/llm.py                                29       1  96.55%   79
packages/ragbits-conversations/src/ragbits/conversations/history/stores/__init__.py                                 3       0  100.00%
packages/ragbits-conversations/src/ragbits/conversations/history/stores/base.py                                    17       0  100.00%
packages/ragbits-conversations/src/ragbits/conversations/history/stores/sql.py                                     66       1  98.48%   128
packages/ragbits-conversations/tests/unit/history/test_llm_compressor.py                                           64       0  100.00%
packages/ragbits-conversations/tests/unit/history/test_sql_store.py                                                48       2  95.83%   29-30
packages/ragbits-core/src/ragbits/core/__init__.py                                                                  6       2  66.67%   8-9
packages/ragbits-core/src/ragbits/core/cli.py                                                                       6       0  100.00%
packages/ragbits-core/src/ragbits/core/config.py                                                                   17       0  100.00%
packages/ragbits-core/src/ragbits/core/options.py                                                                  17       0  100.00%
packages/ragbits-core/src/ragbits/core/types.py                                                                     9       0  100.00%
packages/ragbits-core/src/ragbits/core/audit/__init__.py                                                           74       5  93.24%   42-45, 52-54
packages/ragbits-core/src/ragbits/core/audit/base.py                                                              183      35  80.87%   156-165, 249, 256, 262-264, 271-274, 335, 337, 341-345, 390-409
packages/ragbits-core/src/ragbits/core/audit/cli.py                                                               132       2  98.48%   91-92
packages/ragbits-core/src/ragbits/core/embeddings/__init__.py                                                       5       0  100.00%
packages/ragbits-core/src/ragbits/core/embeddings/base.py                                                          16       2  87.50%   40, 53
packages/ragbits-core/src/ragbits/core/embeddings/exceptions.py                                                    17       7  58.82%   7-8, 17, 26-27, 36, 45
packages/ragbits-core/src/ragbits/core/embeddings/litellm.py                                                       38      18  52.63%   78-112
packages/ragbits-core/src/ragbits/core/embeddings/noop.py                                                          29       1  96.55%   89
packages/ragbits-core/src/ragbits/core/embeddings/sparse.py                                                        58      29  50.00%   24-25, 28, 67-97
packages/ragbits-core/src/ragbits/core/llms/__init__.py                                                             4       0  100.00%
packages/ragbits-core/src/ragbits/core/llms/base.py                                                                80       2  97.50%   67, 79
packages/ragbits-core/src/ragbits/core/llms/exceptions.py                                                          20       5  75.00%   17, 26-27, 36, 45
packages/ragbits-core/src/ragbits/core/llms/factory.py                                                             12       2  83.33%   30, 51
packages/ragbits-core/src/ragbits/core/llms/litellm.py                                                             83      22  73.49%   93, 132, 142, 172-200, 222-227, 238
packages/ragbits-core/src/ragbits/core/llms/local.py                                                               55      27  50.91%   9-12, 67-75, 87-88, 109-120, 141-157
packages/ragbits-core/src/ragbits/core/llms/mock.py                                                                30       3  90.00%   70-73
packages/ragbits-core/src/ragbits/core/prompt/__init__.py                                                           2       0  100.00%
packages/ragbits-core/src/ragbits/core/prompt/_cli.py                                                              44      21  52.27%   25-33, 47-49, 63-65, 73-75, 89-97
packages/ragbits-core/src/ragbits/core/prompt/base.py                                                              28       0  100.00%
packages/ragbits-core/src/ragbits/core/prompt/exceptions.py                                                         7       0  100.00%
packages/ragbits-core/src/ragbits/core/prompt/parsers.py                                                           35       0  100.00%
packages/ragbits-core/src/ragbits/core/prompt/prompt.py                                                           143       1  99.30%   201
packages/ragbits-core/src/ragbits/core/prompt/discovery/__init__.py                                                 2       0  100.00%
packages/ragbits-core/src/ragbits/core/prompt/discovery/prompt_discovery.py                                        36       2  94.44%   55-56
packages/ragbits-core/src/ragbits/core/utils/__init__.py                                                            0       0  100.00%
packages/ragbits-core/src/ragbits/core/utils/_pyproject.py                                                         38       1  97.37%   113
packages/ragbits-core/src/ragbits/core/utils/config_handling.py                                                    72       8  88.89%   16, 54-55, 62-63, 152-154
packages/ragbits-core/src/ragbits/core/utils/decorators.py                                                         29       0  100.00%
packages/ragbits-core/src/ragbits/core/utils/dict_transformations.py                                               72       3  95.83%   24, 27, 108
packages/ragbits-core/src/ragbits/core/utils/pydantic.py                                                           13       2  84.62%   13, 16
packages/ragbits-core/src/ragbits/core/vector_stores/__init__.py                                                    3       0  100.00%
packages/ragbits-core/src/ragbits/core/vector_stores/_cli.py                                                       50       4  92.00%   67, 89, 95, 119
packages/ragbits-core/src/ragbits/core/vector_stores/base.py                                                       70       2  97.14%   39, 182
packages/ragbits-core/src/ragbits/core/vector_stores/chroma.py                                                     75       2  97.33%   68, 106
packages/ragbits-core/src/ragbits/core/vector_stores/hybrid.py                                                     44       0  100.00%
packages/ragbits-core/src/ragbits/core/vector_stores/in_memory.py                                                  47       0  100.00%
packages/ragbits-core/src/ragbits/core/vector_stores/pgvector.py                                                  137      26  81.02%   103, 205-213, 244, 257-259, 330-365
packages/ragbits-core/src/ragbits/core/vector_stores/qdrant.py                                                     72       4  94.44%   71-86, 134
packages/ragbits-core/tests/cli/__init__.py                                                                         0       0  100.00%
packages/ragbits-core/tests/cli/test_cli_trace_handler.py                                                          48       3  93.75%   30, 43, 56
packages/ragbits-core/tests/cli/test_vector_store.py                                                              115       0  100.00%
packages/ragbits-core/tests/integration/vector_stores/test_vector_store.py                                         94       0  100.00%
packages/ragbits-core/tests/unit/__init__.py                                                                        0       0  100.00%
packages/ragbits-core/tests/unit/test_options.py                                                                   21       0  100.00%
packages/ragbits-core/tests/unit/audit/__init__.py                                                                  0       0  100.00%
packages/ragbits-core/tests/unit/audit/test_cli.py                                                                107       0  100.00%
packages/ragbits-core/tests/unit/audit/test_trace.py                                                               97       3  96.91%   16, 19, 22
packages/ragbits-core/tests/unit/embeddings/__init__.py                                                             0       0  100.00%
packages/ragbits-core/tests/unit/embeddings/test_from_config.py                                                    20       0  100.00%
packages/ragbits-core/tests/unit/llms/__init__.py                                                                   0       0  100.00%
packages/ragbits-core/tests/unit/llms/test_base.py                                                                 98       0  100.00%
packages/ragbits-core/tests/unit/llms/test_from_config.py                                                          16       0  100.00%
packages/ragbits-core/tests/unit/llms/test_litellm.py                                                              80       0  100.00%
packages/ragbits-core/tests/unit/llms/factory/__init__.py                                                           0       0  100.00%
packages/ragbits-core/tests/unit/llms/factory/test_get_preferred_llm.py                                            12       0  100.00%
packages/ragbits-core/tests/unit/prompts/__init__.py                                                                0       0  100.00%
packages/ragbits-core/tests/unit/prompts/test_parsers.py                                                           65       0  100.00%
packages/ragbits-core/tests/unit/prompts/test_prompt.py                                                           191       0  100.00%
packages/ragbits-core/tests/unit/prompts/discovery/__init__.py                                                      0       0  100.00%
packages/ragbits-core/tests/unit/prompts/discovery/prompt_classes_for_tests.py                                     30       0  100.00%
packages/ragbits-core/tests/unit/prompts/discovery/test_prompt_discovery.py                                        18       0  100.00%
packages/ragbits-core/tests/unit/prompts/discovery/ragbits_tests_pkg_with_prompts/__init__.py                       2       1  50.00%   3
packages/ragbits-core/tests/unit/prompts/discovery/ragbits_tests_pkg_with_prompts/prompts/__init__.py               3       2  33.33%   2-4
packages/ragbits-core/tests/unit/prompts/discovery/ragbits_tests_pkg_with_prompts/prompts/temp_prompt1.py          14       0  100.00%
packages/ragbits-core/tests/unit/prompts/discovery/ragbits_tests_pkg_with_prompts/prompts/temp_prompt2.py          14       0  100.00%
packages/ragbits-core/tests/unit/utils/__init__.py                                                                  0       0  100.00%
packages/ragbits-core/tests/unit/utils/test_config_handling.py                                                     64       2  96.88%   27-28
packages/ragbits-core/tests/unit/utils/test_decorators.py                                                          26       2  92.31%   17, 39
packages/ragbits-core/tests/unit/utils/test_dict_transformations.py                                                69       0  100.00%
packages/ragbits-core/tests/unit/utils/pyproject/test_find.py                                                      13       0  100.00%
packages/ragbits-core/tests/unit/utils/pyproject/test_get_config.py                                                 9       0  100.00%
packages/ragbits-core/tests/unit/utils/pyproject/test_get_instace.py                                               37       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/__init__.py                                                          0       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/test_chroma.py                                                      65       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/test_from_config.py                                                 40       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/test_hybrid.py                                                      74       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/test_in_memory.py                                                  102       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/test_pgvector.py                                                   164       0  100.00%
packages/ragbits-core/tests/unit/vector_stores/test_qdrant.py                                                      78       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/__init__.py                                            2       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/_main.py                                              98       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/cli.py                                                39       2  94.87%   85, 104
packages/ragbits-document-search/src/ragbits/document_search/documents/__init__.py                                  0       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/documents/document.py                                 62       2  96.77%   100, 147
packages/ragbits-document-search/src/ragbits/document_search/documents/element.py                                  91      14  84.62%   117, 134, 195-202, 212, 221-223
packages/ragbits-document-search/src/ragbits/document_search/documents/exceptions.py                               22       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/__init__.py                          9       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/azure.py                            97      13  86.60%   73-74, 109-110, 181-192
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/base.py                             64       4  93.75%   166-167, 170-171
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/gcs.py                              65       1  98.46%   45
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/git.py                              94       3  96.81%   192, 199, 215
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/hf.py                               60      12  80.00%   55-58, 62-63, 94, 101-102, 117-119
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/local.py                            40       2  95.00%   40, 80
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/s3.py                              105      49  53.33%   51-58, 72-96, 116-132, 164, 181
packages/ragbits-document-search/src/ragbits/document_search/documents/sources/web.py                              45       2  95.56%   62, 79
packages/ragbits-document-search/src/ragbits/document_search/ingestion/__init__.py                                  0       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/document_processor.py                       33       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/intermediate_handlers/__init__.py            3       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/intermediate_handlers/base.py                5       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/intermediate_handlers/images.py             36       2  94.44%   71, 101
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/__init__.py                        3       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/base.py                           20       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/dummy.py                          21       7  66.67%   35, 56-62
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/unstructured/__init__.py           4       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/unstructured/default.py           48       4  91.67%   99, 104-105, 144
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/unstructured/images.py            34      14  58.82%   54-63, 70-77, 88, 101
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/unstructured/pdf.py               19       6  68.42%   23, 35-43
packages/ragbits-document-search/src/ragbits/document_search/ingestion/providers/unstructured/utils.py             28       7  75.00%   68, 79-80, 95-98
packages/ragbits-document-search/src/ragbits/document_search/ingestion/strategies/__init__.py                       5       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/strategies/base.py                          69       9  86.96%   110-118, 162-163
packages/ragbits-document-search/src/ragbits/document_search/ingestion/strategies/batched.py                       54       2  96.30%   229-230
packages/ragbits-document-search/src/ragbits/document_search/ingestion/strategies/ray.py                           35       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/ingestion/strategies/sequential.py                    23       2  91.30%   69-70
packages/ragbits-document-search/src/ragbits/document_search/retrieval/__init__.py                                  0       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rephrasers/__init__.py                       6       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rephrasers/base.py                           9       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rephrasers/llm.py                           25       4  84.00%   47-50
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rephrasers/multi.py                         27       4  85.19%   51-54
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rephrasers/noop.py                           6       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rephrasers/prompts.py                       26       2  92.31%   65, 87
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rerankers/__init__.py                        3       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rerankers/base.py                           17       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rerankers/litellm.py                        18       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rerankers/noop.py                           11       0  100.00%
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rerankers/reciprocal_ranked_fusion.py       22       2  90.91%   50, 60
packages/ragbits-document-search/src/ragbits/document_search/retrieval/rerankers/rerankers_answerdotai.py          22       0  100.00%
packages/ragbits-document-search/tests/__init__.py                                                                  0       0  100.00%
packages/ragbits-document-search/tests/helpers.py                                                                   3       0  100.00%
packages/ragbits-document-search/tests/cli/test_ingest.py                                                          21       0  100.00%
packages/ragbits-document-search/tests/cli/test_search.py                                                          71       0  100.00%
packages/ragbits-document-search/tests/integration/__init__.py                                                      0       0  100.00%
packages/ragbits-document-search/tests/integration/test_git_source.py                                              85       6  92.94%   148-157
packages/ragbits-document-search/tests/integration/test_rerankers.py                                               26       6  76.92%   21-43
packages/ragbits-document-search/tests/integration/test_sources.py                                                 24      10  58.33%   23-33, 41-46
packages/ragbits-document-search/tests/integration/test_unstructured.py                                            48      10  79.17%   52-58, 71-77
packages/ragbits-document-search/tests/unit/test_aws_source.py                                                     24       0  100.00%
packages/ragbits-document-search/tests/unit/test_azure_blob_source.py                                              76       0  100.00%
packages/ragbits-document-search/tests/unit/test_config.py                                                         63       0  100.00%
packages/ragbits-document-search/tests/unit/test_document_processor.py                                             17       0  100.00%
packages/ragbits-document-search/tests/unit/test_document_search.py                                               218       1  99.54%   428
packages/ragbits-document-search/tests/unit/test_documents.py                                                      13       0  100.00%
packages/ragbits-document-search/tests/unit/test_elements.py                                                       20       0  100.00%
packages/ragbits-document-search/tests/unit/test_gcs_hf_sources.py                                                 53       8  84.91%   17-18, 53-58
packages/ragbits-document-search/tests/unit/test_git_source.py                                                    135       0  100.00%
packages/ragbits-document-search/tests/unit/test_ingest_strategies.py                                              22       0  100.00%
packages/ragbits-document-search/tests/unit/test_intermediate_handlers.py                                          33       0  100.00%
packages/ragbits-document-search/tests/unit/test_local_file_source.py                                              13       0  100.00%
packages/ragbits-document-search/tests/unit/test_providers.py                                                      41       0  100.00%
packages/ragbits-document-search/tests/unit/test_rephrasers.py                                                     40       0  100.00%
packages/ragbits-document-search/tests/unit/test_rerankers.py                                                      81       1  98.77%   25
packages/ragbits-document-search/tests/unit/test_source_discriminator.py                                           36       0  100.00%
packages/ragbits-document-search/tests/unit/test_source_exceptions.py                                              56       0  100.00%
packages/ragbits-document-search/tests/unit/test_web_source.py                                                     43       0  100.00%
packages/ragbits-document-search/tests/unit/testprojects/project_with_instance_factory/__init__.py                  0       0  100.00%
packages/ragbits-document-search/tests/unit/testprojects/project_with_instance_factory/factories.py                22       0  100.00%
packages/ragbits-evaluate/src/ragbits/evaluate/__init__.py                                                          0       0  100.00%
packages/ragbits-evaluate/src/ragbits/evaluate/cli.py                                                              45      16  64.44%   109-119, 130-149
packages/ragbits-evaluate/src/ragbits/evaluate/config.py                                                            6       0  100.00%
packages/ragbits-evaluate/src/ragbits/evaluate/evaluator.py                                                        51      25  50.98%   43-48, 71-78, 99-109, 122, 136, 151-155
packages/ragbits-evaluate/src/ragbits/evaluate/dataloaders/__init__.py                                              7       2  71.43%   20-21
packages/ragbits-evaluate/src/ragbits/evaluate/dataloaders/base.py                                                  7       0  100.00%
packages/ragbits-evaluate/src/ragbits/evaluate/metrics/__init__.py                                                  2       0  100.00%
packages/ragbits-evaluate/src/ragbits/evaluate/metrics/base.py                                                     21       5  76.19%   24-25, 54, 67, 79
packages/ragbits-evaluate/src/ragbits/evaluate/pipelines/__init__.py                                               11       4  63.64%   23-26
packages/ragbits-evaluate/src/ragbits/evaluate/pipelines/base.py                                                   14       2  85.71%   23, 41
packages/ragbits-evaluate/src/ragbits/evaluate/pipelines/document_search.py                                        29      12  58.62%   35-36, 52-55, 61-68, 80-82
packages/ragbits-guardrails/src/ragbits/guardrails/__init__.py                                                      0       0  100.00%
packages/ragbits-guardrails/src/ragbits/guardrails/base.py                                                         15       0  100.00%
packages/ragbits-guardrails/src/ragbits/guardrails/openai_moderation.py                                            19       5  73.68%   29-33
packages/ragbits-guardrails/tests/unit/test_openai_moderation.py                                                   35       0  100.00%
TOTAL                                                                                                            7212     550  92.37%
```

</details>


### Diff against main

```
Filename      Stmts    Miss  Cover
----------  -------  ------  --------
TOTAL             0       0  +100.00%
```


Results for commit: 36f22260c9e78eef8cd91d8ef69d230b9d3c4d0d


_Minimum allowed coverage is `60%`_


:recycle: This comment has been updated with latest results


<!-- Sticky Pull Request Commentcoverage.xml -->
author_association: CONTRIBUTOR