-
Notifications
You must be signed in to change notification settings - Fork 45
Consolidate env reading to single config object. #600
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
fa21286
to
95cb0d6
Compare
return val.lower() == "true" or val == "1" | ||
|
||
|
||
class Config: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
7d2950e
to
dd6b1d2
Compare
debug_encoding.py
Outdated
# int. let's special case that here, because it's sure to happen in | ||
# customer code. | ||
err = d.get("error") | ||
if err and type(err) == bool: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
⚪ Code Quality Violation
use isinstance() instead of type() (...read more)
Using type
checks if an object o
is exactly a given type. In contrast, isinstance
checks if o
is a given type, or any subclass of the given type, thus supporting inheritance. In addition,isinstance
is generally faster than type
.
37e4ccb
to
6449589
Compare
6449589
to
2957287
Compare
@@ -102,7 +101,6 @@ def pop_node(module_name): | |||
end_time_ns = time.time_ns() | |||
node.end_time_ns = end_time_ns | |||
if not import_stack: # import_stack empty, a root node has been found | |||
global root_nodes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These globals are not required because the affected objects are lists.
f869908
to
7bc8751
Compare
return [val.strip() for val in val.split(",") if val.strip()] | ||
|
||
|
||
class Config: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM. Thank you for doing this.
What does this PR do?
Consolidate all config and (most) env var reading into a single
config
object.Furthermore, the environment is now only read when it's needed. The config object will only resolve a config setting when it is accessed. Meaning, we'll be reading a ton fewer environment variables during initialization which will lead to faster cold starts.
Motivation
Tests are currently failing on #598 with a circular import error. Consolidating all config reading to a single location will make fixing that much much much easier.
Testing Guidelines
Additional Notes
Note that for all the boolean like env vars, it is now possible to set the environment value to
"1"
to configure for aTrue
evaluation. The customer can then use"0"
or really anything other than"true"
or"1"
to get aFalse
evaluation.Types of Changes
Check all that apply