12345678910111213141516171819202122232425262728293031323334353637383940 |
- # Licensed to the Apache Software Foundation (ASF) under one
- # or more contributor license agreements. See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership. The ASF licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing,
- # software distributed under the License is distributed on an
- # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- # KIND, either express or implied. See the License for the
- # specific language governing permissions and limitations
- # under the License.
- from copy import deepcopy
- class FeatureFlagManager:
- def __init__(self) -> None:
- super().__init__()
- self._get_feature_flags_func = None
- self._feature_flags = None
- def init_app(self, app):
- self._get_feature_flags_func = app.config.get("GET_FEATURE_FLAGS_FUNC")
- self._feature_flags = app.config.get("DEFAULT_FEATURE_FLAGS") or {}
- self._feature_flags.update(app.config.get("FEATURE_FLAGS") or {})
- def get_feature_flags(self):
- if self._get_feature_flags_func:
- return self._get_feature_flags_func(deepcopy(self._feature_flags))
- return self._feature_flags
- def is_feature_enabled(self, feature) -> bool:
- """Utility function for checking whether a feature is turned on"""
- return self.get_feature_flags().get(feature)
|