test_base.py — langchain Source File
Architecture documentation for test_base.py, a python file in the langchain codebase. 2 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 0a7f6880_0927_52b9_1d60_2468c3876c71["test_base.py"] 120e2591_3e15_b895_72b6_cb26195e40a6["pytest"] 0a7f6880_0927_52b9_1d60_2468c3876c71 --> 120e2591_3e15_b895_72b6_cb26195e40a6 85b83517_db5f_3066_2c59_8cb8da70b0cf["langchain.embeddings.base"] 0a7f6880_0927_52b9_1d60_2468c3876c71 --> 85b83517_db5f_3066_2c59_8cb8da70b0cf style 0a7f6880_0927_52b9_1d60_2468c3876c71 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
"""Test embeddings base module."""
import pytest
from langchain.embeddings.base import (
_BUILTIN_PROVIDERS,
_infer_model_and_provider,
_parse_model_string,
)
@pytest.mark.parametrize(
("model_string", "expected_provider", "expected_model"),
[
("openai:text-embedding-3-small", "openai", "text-embedding-3-small"),
("bedrock:amazon.titan-embed-text-v1", "bedrock", "amazon.titan-embed-text-v1"),
("huggingface:BAAI/bge-base-en:v1.5", "huggingface", "BAAI/bge-base-en:v1.5"),
("google_genai:gemini-embedding-001", "google_genai", "gemini-embedding-001"),
],
)
def test_parse_model_string(model_string: str, expected_provider: str, expected_model: str) -> None:
"""Test parsing model strings into provider and model components."""
assert _parse_model_string(model_string) == (
expected_provider,
expected_model,
)
def test_parse_model_string_errors() -> None:
"""Test error cases for model string parsing."""
with pytest.raises(ValueError, match="Model name must be"):
_parse_model_string("just-a-model-name")
with pytest.raises(ValueError, match="Invalid model format "):
_parse_model_string("")
with pytest.raises(ValueError, match="is not supported"):
_parse_model_string(":model-name")
with pytest.raises(ValueError, match="Model name cannot be empty"):
_parse_model_string("openai:")
with pytest.raises(
ValueError,
match="Provider 'invalid-provider' is not supported",
):
_parse_model_string("invalid-provider:model-name")
for provider in _BUILTIN_PROVIDERS:
with pytest.raises(ValueError, match=f"{provider}"):
_parse_model_string("invalid-provider:model-name")
def test_infer_model_and_provider() -> None:
"""Test model and provider inference from different input formats."""
assert _infer_model_and_provider("openai:text-embedding-3-small") == (
"openai",
"text-embedding-3-small",
)
assert _infer_model_and_provider(
model="text-embedding-3-small",
provider="openai",
) == ("openai", "text-embedding-3-small")
assert _infer_model_and_provider(
model="ft:text-embedding-3-small",
provider="openai",
) == ("openai", "ft:text-embedding-3-small")
assert _infer_model_and_provider(model="openai:ft:text-embedding-3-small") == (
"openai",
"ft:text-embedding-3-small",
)
def test_infer_model_and_provider_errors() -> None:
"""Test error cases for model and provider inference."""
# Test missing provider
with pytest.raises(ValueError, match="Must specify either"):
_infer_model_and_provider("text-embedding-3-small")
# Test empty model
with pytest.raises(ValueError, match="Model name cannot be empty"):
_infer_model_and_provider("")
# Test empty provider with model
with pytest.raises(ValueError, match="Must specify either"):
_infer_model_and_provider("model", provider="")
# Test invalid provider
with pytest.raises(ValueError, match="Provider 'invalid' is not supported") as exc:
_infer_model_and_provider("model", provider="invalid")
# Test provider list is in error
for provider in _BUILTIN_PROVIDERS:
assert provider in str(exc.value)
@pytest.mark.parametrize(
"provider",
sorted(_BUILTIN_PROVIDERS.keys()),
)
def test_supported_providers_package_names(provider: str) -> None:
"""Test that all supported providers have valid package names."""
package = _BUILTIN_PROVIDERS[provider][0]
assert "-" not in package
assert package.startswith("langchain_")
assert package.islower()
def test_is_sorted() -> None:
assert list(_BUILTIN_PROVIDERS) == sorted(_BUILTIN_PROVIDERS.keys())
Domain
Subdomains
Functions
Dependencies
- langchain.embeddings.base
- pytest
Source
Frequently Asked Questions
What does test_base.py do?
test_base.py is a source file in the langchain codebase, written in python. It belongs to the CoreAbstractions domain, Serialization subdomain.
What functions are defined in test_base.py?
test_base.py defines 6 function(s): test_infer_model_and_provider, test_infer_model_and_provider_errors, test_is_sorted, test_parse_model_string, test_parse_model_string_errors, test_supported_providers_package_names.
What does test_base.py depend on?
test_base.py imports 2 module(s): langchain.embeddings.base, pytest.
Where is test_base.py in the architecture?
test_base.py is located at libs/langchain_v1/tests/unit_tests/embeddings/test_base.py (domain: CoreAbstractions, subdomain: Serialization, directory: libs/langchain_v1/tests/unit_tests/embeddings).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free