Open JamesStratford opened 4 months ago
Mmm interesting, I have not taken a look or debugged my self but it looks like it just gets the value from a dictionary, if not found is False otherwise uses the value, which should be evaluated as true in Python?
def _is_upsert_candidate(self) -> bool:
"""Determine if this stream is an upsert candidate based on user configuration."""
upsert_selection = self.config.get("upsert", False)
upsert_candidate = False
if isinstance(upsert_selection, list):
selection: str
for selection in upsert_selection:
invert = selection.startswith("!")
if invert:
selection = selection[1:]
if fnmatch(self.stream_name, selection):
upsert_candidate = True ^ invert
elif upsert_selection:
upsert_candidate = True
return upsert_candidate
https://github.com/z3z1ma/target-bigquery/blob/main/target_bigquery/core.py#L383C9-L383C25
When using
meltano config tap-bigquery set --interactive
, if you set upsert to true, it will save as a string and the following error occursThis is what the YAML produces
Manually changing it to just the boolean
true
fixes the error