Skip to content

Commit 58413b6

Browse files
chore: fix ruff linting issues in rag module
linting, list embedding handling, and test update
1 parent 37636f0 commit 58413b6

File tree

18 files changed

+59
-43
lines changed

18 files changed

+59
-43
lines changed

src/crewai/rag/__init__.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
"""RAG (Retrieval-Augmented Generation) infrastructure for CrewAI."""
22

3-
import sys
43
import importlib
4+
import sys
55
from types import ModuleType
66
from typing import Any
77

88
from crewai.rag.config.types import RagConfigType
99
from crewai.rag.config.utils import set_rag_config
1010

11-
1211
_module_path = __path__
1312
_module_file = __file__
1413

14+
1515
class _RagModule(ModuleType):
1616
"""Module wrapper to intercept attribute setting for config."""
1717

@@ -51,8 +51,10 @@ def __getattr__(self, name: str) -> Any:
5151
"""
5252
try:
5353
return importlib.import_module(f"{self.__name__}.{name}")
54-
except ImportError:
55-
raise AttributeError(f"module '{self.__name__}' has no attribute '{name}'")
54+
except ImportError as e:
55+
raise AttributeError(
56+
f"module '{self.__name__}' has no attribute '{name}'"
57+
) from e
5658

5759

5860
sys.modules[__name__] = _RagModule(__name__)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"""Optional imports for RAG configuration providers."""
1+
"""Optional imports for RAG configuration providers."""

src/crewai/rag/config/optional_imports/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Base classes for missing provider configurations."""
22

3-
from typing import Literal
43
from dataclasses import field
4+
from typing import Literal
55

66
from pydantic import ConfigDict
77
from pydantic.dataclasses import dataclass as pyd_dataclass

src/crewai/rag/config/optional_imports/protocols.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from __future__ import annotations
44

5-
from typing import Protocol, TYPE_CHECKING
5+
from typing import TYPE_CHECKING, Protocol
66

77
if TYPE_CHECKING:
88
from crewai.rag.chromadb.client import ChromaDBClient

src/crewai/rag/config/optional_imports/providers.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
"""Provider-specific missing configuration classes."""
22

3-
from typing import Literal
43
from dataclasses import field
4+
from typing import Literal
5+
56
from pydantic import ConfigDict
67
from pydantic.dataclasses import dataclass as pyd_dataclass
78

src/crewai/rag/config/types.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Type definitions for RAG configuration."""
22

3-
from typing import Annotated, TypeAlias, TYPE_CHECKING
3+
from typing import TYPE_CHECKING, Annotated, TypeAlias
4+
45
from pydantic import Field
56

67
from crewai.rag.config.constants import DISCRIMINATOR

src/crewai/rag/config/utils.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,14 @@
44

55
from pydantic import BaseModel, Field
66

7-
from crewai.utilities.import_utils import require
8-
from crewai.rag.core.base_client import BaseClient
9-
from crewai.rag.config.types import RagConfigType
107
from crewai.rag.config.constants import (
11-
DEFAULT_RAG_CONFIG_PATH,
128
DEFAULT_RAG_CONFIG_CLASS,
9+
DEFAULT_RAG_CONFIG_PATH,
1310
)
11+
from crewai.rag.config.types import RagConfigType
12+
from crewai.rag.core.base_client import BaseClient
1413
from crewai.rag.factory import create_client
14+
from crewai.utilities.import_utils import require
1515

1616

1717
class RagContext(BaseModel):
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
"""Embedding components for RAG infrastructure."""
1+
"""Embedding components for RAG infrastructure."""

src/crewai/rag/embeddings/configurator.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import os
2-
from typing import Any, Dict, Optional, cast
2+
from typing import Any, cast
33

44
from chromadb import Documents, EmbeddingFunction, Embeddings
55
from chromadb.api.types import validate_embedding_function
@@ -23,7 +23,7 @@ def __init__(self):
2323

2424
def configure_embedder(
2525
self,
26-
embedder_config: Optional[Dict[str, Any]] = None,
26+
embedder_config: dict[str, Any] | None = None,
2727
) -> EmbeddingFunction:
2828
"""Configures and returns an embedding function based on the provided config."""
2929
if embedder_config is None:
@@ -42,9 +42,9 @@ def configure_embedder(
4242
embedding_function = self.embedding_functions[provider]
4343
except ImportError as e:
4444
missing_package = str(e).split()[-1]
45-
raise ImportError(
45+
raise ImportError(
4646
f"{missing_package} is not installed. Please install it with: pip install {missing_package}"
47-
)
47+
) from e
4848

4949
return (
5050
embedding_function(config)
@@ -147,7 +147,7 @@ def _configure_cohere(config, model_name):
147147

148148
@staticmethod
149149
def _configure_voyageai(config, model_name):
150-
from chromadb.utils.embedding_functions.voyageai_embedding_function import (
150+
from chromadb.utils.embedding_functions.voyageai_embedding_function import ( # type: ignore[import-not-found]
151151
VoyageAIEmbeddingFunction,
152152
)
153153

@@ -181,9 +181,11 @@ def _configure_huggingface(config, model_name):
181181
@staticmethod
182182
def _configure_watson(config, model_name):
183183
try:
184-
import ibm_watsonx_ai.foundation_models as watson_models
185-
from ibm_watsonx_ai import Credentials
186-
from ibm_watsonx_ai.metanames import EmbedTextParamsMetaNames as EmbedParams
184+
import ibm_watsonx_ai.foundation_models as watson_models # type: ignore[import-not-found]
185+
from ibm_watsonx_ai import Credentials # type: ignore[import-not-found]
186+
from ibm_watsonx_ai.metanames import ( # type: ignore[import-not-found]
187+
EmbedTextParamsMetaNames as EmbedParams,
188+
)
187189
except ImportError as e:
188190
raise ImportError(
189191
"IBM Watson dependencies are not installed. Please install them to use Watson embedding."
@@ -225,7 +227,7 @@ def _configure_custom(config):
225227
validate_embedding_function(custom_embedder)
226228
return custom_embedder
227229
except Exception as e:
228-
raise ValueError(f"Invalid custom embedding function: {str(e)}")
230+
raise ValueError(f"Invalid custom embedding function: {e!s}") from e
229231
elif callable(custom_embedder):
230232
try:
231233
instance = custom_embedder()
@@ -236,7 +238,7 @@ def _configure_custom(config):
236238
"Custom embedder does not create an EmbeddingFunction instance"
237239
)
238240
except Exception as e:
239-
raise ValueError(f"Error instantiating custom embedder: {str(e)}")
241+
raise ValueError(f"Error instantiating custom embedder: {e!s}") from e
240242
else:
241243
raise ValueError(
242244
"Custom embedder must be an instance of `EmbeddingFunction` or a callable that creates one"

src/crewai/rag/embeddings/types.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
"""Type definitions for the embeddings module."""
22

33
from typing import Literal
4+
45
from pydantic import BaseModel, Field, SecretStr
56

67
from crewai.rag.types import EmbeddingFunction
78

8-
99
EmbeddingProvider = Literal[
1010
"openai",
1111
"cohere",

0 commit comments

Comments
 (0)