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

schrodinger.utils.featureflags.featureflags.site_state_is_hidden() bool

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:
  1. 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.

  2. 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)