schrodinger.utils.featureflags.featureflags module¶
- schrodinger.utils.featureflags.featureflags.get_features() Tuple[Set[str], Set[str], Dict[str, Dict[str, str]]] ¶
Get the feature flags from site and user state files. If SCHRODINGER_FEATURE_FLAGS is set, its values are included with the user state.
- Returns
sets of feature flag names from site and user state file, and combined_flags as a dict of of feature flag name and additional attributes as dict. The final state of the feature flag and source used to decide would be evaluated by the caller.
- schrodinger.utils.featureflags.featureflags.set_features(features, desired_state)¶
Enable or Disable the given features.
This also report the given features which are not present in the default state file.
- Parameters
features (list or set) – List of features to enable or disable in the user state file.
- Returntype
tuple(int, features)
- Returns
(number of features changed, list of unknown features)
- Raises
ValueError – if json document cannot be parsed.
- schrodinger.utils.featureflags.featureflags.set_installation_feature(feature: str, desired_state: bool) bool ¶
Enable or disable the given feature in the installation state file. If the state file already contains the feature at the desired state, no change is made.
- Returns
whether the file was updated
- Raises
ValueError – if specifying an unknown feature
PermissionError – if unable to write to the installation state file
- schrodinger.utils.featureflags.featureflags.get_state_string(state)¶
Convert the feature state from integer to a string.
- Parameters
state (int) – Feature state in integer format.
- Returntype
string
- Returns
0 => Disabled, 1 => Enabled, -1 => None
- schrodinger.utils.featureflags.featureflags.get_env_var_warning()¶
- Returns
If there are conflicting env var settings, return a string with the description. Otherwise, return None.
- Rtype str or None
- schrodinger.utils.featureflags.featureflags.env_var_feature_flag_is_set()¶
Return boolean whether SCHRODINGER_FEATURE_FLAGS is set or not
Return whether the environment points to hiding the site state file.
- schrodinger.utils.featureflags.featureflags.list_features(search='*')¶
Show all available features based on accessibility from site state file or user state file + flags specified with SCHRODINGER_FEATURE_FLAGS when search string is not specified. If search string is given, feature matching the search string will be shown. Otherwise feature whose description match the search string is shown only when state file is accessible.
The function will list the output in following format:
<feature_name> : <Enabled|Disabled> <Description if available> <User State> : <Enabled|Disabled|None> <Default State> : <Enabled|Disabled>
- Parameters
search_string (str) – Optional search string.
- schrodinger.utils.featureflags.featureflags.get_nondefault_features() str ¶
Return a string usable as the SCHRODINGER_FEATURE_FLAGS environment variable that includes any non-default settings in either the user settings or site settings, and any user settings that restore non-default site settings to their defaults.
Returns “0” if there are no non-default settings.
- schrodinger.utils.featureflags.featureflags.get_site_nondefaults() Set[str] ¶
Return the nondefault feature flags in the site state file.
- schrodinger.utils.featureflags.featureflags.get_user_feature_env(feature_const: int, enable: bool = True)¶
Enable a feature flag and return dict with custom feature flags.
- Parameters
feature_const (int) – Feature to be enabled/disabled
enable (bool) – If True enable, if False disable
- Raises
ValueError – If feature is unknown
- Return type
dict
- Returns
Dict with key SCHRODINGER_FEATURE_FLAGS and all the custom flags as value
- schrodinger.utils.featureflags.featureflags.parse_args(argv=None)¶
Setup code for argument parsing
- Params argv
Arguments to parse.
- schrodinger.utils.featureflags.featureflags.get_fflags_env_to_export(enable_flags: Set[str], disable_flags: Set[str], unknown_flags: List[str]) str ¶
Returns a new value for SCHRODINGER_FEATURE_FLAGS that needs to be exported to pick up changes in the feature flags provided in the enable or disable arguments.
If the environment variable is not already set or there is no modification required, this returns None.
- NOTE:
We don’t clean the existing environment value and just extend the flags to enable or disable. So, if something is newly enabled, but disabled in the environment variable it will result in something like -FEATURE+FEATURE, which evaluates as enabled.
If SCHRODINGER_FEATURE_FLAGS is set to 0 to ignore initially, we assume the value needs to be modified to accept user’s request to enable or disable feature flag.
- Parameters
enable_flags – feature flags to enable.
disable_flags – feature flags to disable.
unknown_flags – unknown feature flags categorized from enable_flags or disable_flags identified from user’s request to enable or disable.
- Returns
new value to export for SCHRODINGER_FEATURE_FLAGS or None.
- schrodinger.utils.featureflags.featureflags.main(argv=None)¶