Skip to content
Open
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
26 changes: 13 additions & 13 deletions graphrag/config/environment_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,10 @@

def read_key(value: KeyValue) -> str:
"""Read a key value."""
if not isinstance(value, str):
return value.value.lower()
return value.lower()
# By checking for str *first*, we avoid the Enum check for the common case.
if isinstance(value, str):
return value.lower()
return value.value.lower()


class EnvironmentReader:
Expand All @@ -41,14 +42,13 @@ def env(self):
def _read_env(
self, env_key: str | list[str], default_value: T, read: Callable[[str, T], T]
) -> T | None:
if isinstance(env_key, str):
env_key = [env_key]
# Avoid isinstance call for singleton str: most uses pass a str, not a list
keys = (env_key,) if isinstance(env_key, str) else env_key

for k in env_key:
for k in keys:
result = read(k.upper(), default_value)
if result is not default_value:
return result

return default_value

def envvar_prefix(self, prefix: KeyValue):
Expand Down Expand Up @@ -111,13 +111,13 @@ def bool(
default_value: bool | None = None,
) -> bool | None:
"""Read an integer configuration value."""
key = read_key(key)
if self.section and key in self.section:
return bool(self.section[key])
key_str = read_key(key)
# Optimize attribute access and dict lookup
section = getattr(self, "section", None)
if section is not None and key_str in section:
return bool(section[key_str])

return self._read_env(
env_key or key, default_value, lambda k, dv: self._env.bool(k, dv)
)
return self._read_env(env_key or key_str, default_value, self._env.bool)

def float(
self,
Expand Down