- (Bugfix) Current time context field will automatically populate with UTC aware time (#324). Thanks @jacob-indigo!
- (Patch) Metrics are extended with richer metadata about runtime
- (Bugfix) Packaged wheel no longer includes tests
- (Minor) Switch back to mmh3 for Python 3.12 support.
- (Bugfix) Metrics counting for dependent feature flags (the previous implementation was incorrect) (#300 and #304)
- (Minor) Add missing parenthesis
- (Bugfix) Fix/double execution result
- (Documentation) Update readme with developer instructions
- (Minor) Configurable timeout and retries
- (Minor) Typos in request timeout
- (Minor) Bump client spec
- (Minor) add is_feature_enabled to variant response
- (Bugfix) Update variants to use a seed value for their hash. This fixes an issue with variant distribution & gradual rollouts where users were seeing very non-random distributions.
- (Minor) Add support for Semver 3 while maintaining backwards compatibility. Thanks @@chaitanya-parsana!
- (Major) Support for dependent features. Thanks @Tymek!
- (Major) Add request timeout and request retrie paremeters/overides. Thanks @snosratiershad!
- (Bugfix) Make
check_date_operators
works with dateutil < 2.9.1. - (Bugfix) Update responses mock for etag test. Thanks @yjabri!
- (Bugfix) Fix broken link in client spec ddocs. Thanks @sjaanus!
- (Major) Added support for Strategy Variants.
- (Bugfix) Fix dependency issue.
- (Major) Metrics are now recorded for each variant whenever get_variant is called.
- (Major) Track metrics for unknown features and their variants.
- (Minor) Add docstring for the Unleash client's disable_registration option. Thanks @Lujeni!
- (Minor) Fix a typo in the Cache docstring.
- (Minor) Switch to ruff for linting and black for formatting.
- (Major) Add support for event callbacks.
- (Minor) SDK now warns when multiple instances are created
- (Bugfix) Fix an issue where the NOT_IN operator behaves incorrectly when inverted and no context is passed
- (Bugfix) Fix an issue where custom stickiness fail to calculate correctly
- (Bugfix) Fix floats not working correctly in constraints
- (Bugfix) Fix an issue where timezones would be incorrectly handled in constraints
- (Bugfix) Fix for NOT_IN constraint to handle failure case correctly as per spec
- (Bugfix) Update murmurhash library to resolve correctly on Python 3.10+ without gcc
- (Minor) Allow users to pass in an apscheduler scheduler & executor name.
- (Minor) Remove vestigial reference to
bootstraped
parameter. Thanks @koffie !
- (Minor) Add retries to GET /features. Thanks @janboll!
- (Minor) Add global segments. Thanks @sighphyre!
- (Minor) Documentation updates and tweaks. Thanks @inirudebwoy, @sighphyre, @thomasheartman !
- (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!