fix: Support serialized JSON environment variables #1415
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some of the newer AI configs expect a
dict
, with the assumption that a customquerybook_config.yaml
file is mounted into the Docker volume. Unfortunately that's not straightforward in our deployment, so we're exclusively using environment variables. As a workaround we've hardcoded thedict
type configs into our Docker image, which is less flexible.To address this, this PR adds support for deserializing JSON dicts/lists in configs. It handles deserializing for both environment variables and YAML configs, so it should be backwards compatible with existing config files.
An example config:
Two configs already expected serialized JSON:
FLASK_CACHE_CONFIG
andGOOGLE_CREDS
. Now they can be specified as either string-serialized JSON (like before) or adict
.Note: I restricted this to
dict
andlist
types to avoid issues withint
orbool
types, e.g. where Querybook expects a value of"true"
nottrue
. I didn't want to go through the entire code base to update all of those.