Skip to content

Commit 078b389

Browse files
authored
fix: make DriverFeatures lazy again (#14)
1 parent db84c6d commit 078b389

1 file changed

Lines changed: 43 additions & 7 deletions

File tree

adbc_drivers_validation/model.py

Lines changed: 43 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,11 @@ class DriverFeatures:
9292
statement_execute_schema: bool = False
9393
statement_get_parameter_schema: bool = False
9494
statement_prepare: bool = True
95-
current_catalog: str | None = None
96-
current_schema: str | None = None
97-
secondary_schema: str | None = None
98-
secondary_catalog: str | None = None
99-
secondary_catalog_schema: str | None = None
95+
_current_catalog: str | FromEnv | None = None
96+
_current_schema: str | FromEnv | None = None
97+
_secondary_schema: str | FromEnv | None = None
98+
_secondary_catalog: str | FromEnv | None = None
99+
_secondary_catalog_schema: str | FromEnv | None = None
100100
supported_xdbc_fields: list[str] = dataclasses.field(default_factory=list)
101101
# Some vendors sort the columns, so declaring FOREIGN KEY(b, a) REFERENCES
102102
# foo(d, c) still gets returned in the order (a, c), (b, d)
@@ -106,10 +106,46 @@ class DriverFeatures:
106106

107107
def __init__(self, **kwargs) -> None:
108108
for key, value in kwargs.items():
109-
if isinstance(value, FromEnv):
110-
value = value.get_or_raise()
109+
if key in {
110+
"current_catalog",
111+
"current_schema",
112+
"secondary_schema",
113+
"secondary_catalog",
114+
"secondary_catalog_schema",
115+
}:
116+
key = "_" + key
111117
setattr(self, key, value)
112118

119+
@property
120+
def current_catalog(self) -> str | None:
121+
if isinstance(self._current_catalog, FromEnv):
122+
return self._current_catalog.get_or_raise()
123+
return self._current_catalog
124+
125+
@property
126+
def current_schema(self) -> str | None:
127+
if isinstance(self._current_schema, FromEnv):
128+
return self._current_schema.get_or_raise()
129+
return self._current_schema
130+
131+
@property
132+
def secondary_schema(self) -> str | None:
133+
if isinstance(self._secondary_schema, FromEnv):
134+
return self._secondary_schema.get_or_raise()
135+
return self._secondary_schema
136+
137+
@property
138+
def secondary_catalog(self) -> str | None:
139+
if isinstance(self._secondary_catalog, FromEnv):
140+
return self._secondary_catalog.get_or_raise()
141+
return self._secondary_catalog
142+
143+
@property
144+
def secondary_catalog_schema(self) -> str | None:
145+
if isinstance(self._secondary_catalog_schema, FromEnv):
146+
return self._secondary_catalog_schema.get_or_raise()
147+
return self._secondary_catalog_schema
148+
113149

114150
class DriverQuirks(abc.ABC):
115151
@property

0 commit comments

Comments
 (0)