Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion libs/astradb/langchain_astradb/utils/astradb.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,17 @@ def __init__(
"Attempting to fetch keyspace from environment " "variable '%s'",
KEYSPACE_ENV_VAR,
)
self.keyspace = os.getenv(KEYSPACE_ENV_VAR)
_env_var_keyspace = os.getenv(KEYSPACE_ENV_VAR, "").strip()
if _env_var_keyspace:
logger.info(
"Using keyspace '%s' from environment variable.",
_env_var_keyspace,
)
self.keyspace = _env_var_keyspace
else:
self.keyspace = keyspace
else:
logger.info("No valid keyspace found in environment variable.")
self.keyspace = keyspace

# init parameters are normalized to self.{token, api_endpoint, keyspace}.
Expand Down
22 changes: 20 additions & 2 deletions libs/astradb/tests/unit_tests/test_astra_db_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,19 @@ def test_initialization(self) -> None:
env_vars_to_restore[KEYSPACE_ENV_VAR] = os.environ[KEYSPACE_ENV_VAR]
del os.environ[KEYSPACE_ENV_VAR]

# token+endpoint
# token+endpoint+keyspace
env1 = _AstraDBEnvironment(
token=FAKE_TOKEN,
api_endpoint=a_e_string,
keyspace="n",
)

# token+endpoint, no keyspace
env2 = _AstraDBEnvironment(
token=FAKE_TOKEN,
api_endpoint=a_e_string,
)

# just tokenn, no endpoint
with pytest.raises(
ValueError, match="API endpoint for Data API not provided."
Expand Down Expand Up @@ -81,7 +87,7 @@ def test_initialization(self) -> None:
assert env1.database == env5.database
assert env1.async_database == env5.async_database

# both and also namespace via env vars
# both and also keyspace via env vars
os.environ[TOKEN_ENV_VAR] = FAKE_TOKEN
os.environ[API_ENDPOINT_ENV_VAR] = a_e_string
os.environ[KEYSPACE_ENV_VAR] = "n"
Expand All @@ -93,6 +99,18 @@ def test_initialization(self) -> None:
del os.environ[API_ENDPOINT_ENV_VAR]
del os.environ[KEYSPACE_ENV_VAR]

# an empty-string (stripped) keyspace equals no env var
os.environ[TOKEN_ENV_VAR] = FAKE_TOKEN
os.environ[API_ENDPOINT_ENV_VAR] = a_e_string
os.environ[KEYSPACE_ENV_VAR] = " "
env7 = _AstraDBEnvironment()
assert env2.data_api_client == env7.data_api_client
assert env2.database == env7.database
assert env2.async_database == env7.async_database
del os.environ[TOKEN_ENV_VAR]
del os.environ[API_ENDPOINT_ENV_VAR]
del os.environ[KEYSPACE_ENV_VAR]

# env. vars do not interfere if parameters passed
os.environ[TOKEN_ENV_VAR] = "NO!"
os.environ[API_ENDPOINT_ENV_VAR] = "NO!"
Expand Down