- (Minor) Add support for bootstrapping UnleashClient with an initial configuration.
- (Minor) Add flag to disable toggle polling from server. Thanks @povilasb!
- (Bugfix) Clarify logging if Unleash server doesn't return feature provisioning (i.e. HTTP 304).
- (Minor) Move UnleashClient logging to the
UnleashClient
logger. - (Bugfix) Fix logging for UnleashClient.
- (Major) Support new constraint operators.
- (Major) Add cache abstraction. Thanks @walison17!
- (Minor) Refactor
unleash-client-python
to modernize tooling (setuptools_scm
and centralizing tool config inpyproject.toml
). - (Minor) Migrate documentation to Sphinx.
- (Bugfix) Fix HTTP 304 handling on
/client/feature
for Gitlab. Thanks @janLo!
- (Breaking) Modify client initialization to allow jitter configuration on refresh/background refresh intervals. May break code when parameters to UnleashClient are not used as keyword arguments. Thanks @dryobates and @jstolarski!
- (Major) If client is already initialized, calling
initialize_client()
again won't re-run initialization. - (Minor) Support HTTP 304 on
/client/feature
endpoint. - (Minor) Rename
master
tomain
. - (Documentation) Document running UnleashClient in uWSGI. Thanks @sighphyre!
- (Documentation) Fix links and formatting. Thanks @thomasheartman & @sighphyre!
- (Minor) Include py.typed to mark package as type-friendly! Thanks @wbolster!
- (Minor) Fix API url sanitization. Thanks @romulorosa!
- (Minor) Support running Unleash client as a context manager. Thanks @Piojo !
- (Minor)
initialize_client()
will raise exception if UnleashClient is configured with an invalid URL. - (Minor) Exclude test package from dist & wheel. Thanks @ameyajoshi99!
- (Minor) Allow users to specify log-level for when
is_enabled()
orget_varients()
calls fail.
- (Minor) Support custom stickiness for FlexibleRollout strategy and variants.
- (Minor) Support project-based feature flag loading.
- (Major) Deprecate the
default_value
argument in theis_enabled()
method. - (Major) Drop Python 3.5 support.
- (Minor) Remove dependencies versions constraints. Thanks @wbolster and @isra17!
- (Bugfix) Don't use mutable defaults. Thanks @aviau!
- (Minor) Only send metrics to API if feature toggle is in-use (i.e. has been resolved to True/False). Thanks @fwpheckel!
- (Minor) Remove dangling
variations
reference in favor ofvariants
verbiage.
- (Major) Fix bug where loader didn't properly refresh variants. Thanks @simenaasland!
- (Minor) Add Python 3.9 support.
- (Minor) Only log errors generated when strategy loading fails once.
- (Minor) Errors submitting metrics will be logged as warnings and not exceptions.
- (Minor) Update apscheduler version to 3.7.0
- (Minor) Better error handling and typo fixes. Thanks @vgerak!
- (Minor) Update requests version to 2.25.1.
- (Major) Stop using the
default_value
argument in theis_enabled()
method (as it can cause counter-intuitive behavior) and add deprecation warning. This argument will be removed in the next major version upgrade!- We recommend using the
fallback_function
argument instead. If you need a blanket True in case of an exception, you can pass in a lambda like:lambda x, y: True
.
- We recommend using the
- (Minor) Add better logging for API errors.
- (Minor) Update requests version to v2.25.0.
General
- (Minor) Move CI to Github Actions, add auto-publishing.
Bugfixes
- (Major) Fallback function will only be called if exception (feature flag not found, general exception) occurs when calling
is_enabled()
. It will not be called on successful execution of the method.
General
- (Major) Add support for variants on feature toggles.
Bugfixes
- (Minor) Fixed issue with applying custom constraints to non-standard parameters in context.
General
- (Major) Allow users to supply a fallback function to customize the default value of a feature flag.
Bugfixes
- Custom constraints check should check for values in the
properties
sub-property in the context as specified by Unleash context documentation.
General
- (Minor) Add official-ish support for Python 3.8.
General
- (Major) Support constraints on all default strategies.
- This is a breaking change! To update your custom strategy, please checkout the custom strategy migration guide.
- (Major) Added flexibleRollout strategy.
General
- (Minor) Add ability to add request kwargs when initializing the client. These will be used when registering the client, fetching feature flags, and sending metrics.
General
- (Minor) Unleash client will not error if cache is not present and Unleash server not accessible during initialization.
General
- (Minor) Added static context values (app name, env) in preparation for Unleash v4 features.
General
- (Minor) Add option to disable metrics on client initialization.
Bugfix
- (Minor) Fixed issue where
disable_metrics
arugment wasn't honored.
Bugfixes
- (Major) Date/time sent to Unleash (in register, metrics, etc) is correctly in UTC w/timestamp format.
- Allow configuration of the cache directory.
General
- (Major) Support for Python 3.5, 3.6, and 3.7. (Credit to Baaym for 3.5 support!)
Bugfixes
- (Major) Fix issue where
bucket.start
value sent to Unleash was never updated. Credit to Calle for bug report/proposed solution! =)
Bugfixes
- (Major) Removed hard-coded
/api/
in Unleash server URLs. Before upgrading, please adjust your server URL accordingly (i.e. changing http://unleash.heroku.com to http://unleash.heroku.com/api).
General
- unleash-client-python has moved under the general Unleash project!
Bugfixes
- (Minor) Updated requests version to address security issue in dependency.
General
- Implemented custom strategies.
General
- Implemented client specification tests.
- Cache changed to use Instance ID as key.
Bugfixes
- (Major) Fixed interposed arguments in normalized_hash() (aka MurmerHash3 wrapper). Python client will now do the same thing as the other clients!
- (Major) Fixed issues with logic in random strategies.
General
- Changed cache implementation. Instead of caching {feature toggle name: provisioning} we'll now cache the entire API response (and use it if the fetch fails in any way).
General
- Fixed Github link on pypi.
- Removed unused sphinx documentation.
- Added documentation using mkdocs
General
- First implementation of the Unleash Python client! Woo!