CloudBees Feature Management - Python changelog

CloudBees Feature Management is an advanced feature flagging solution that lets your development teams quickly build and deploy applications without compromising on safety. By providing a gradual release mechanism and a simple way to define target audiences, CloudBees Feature Management allows developers and product managers to optimize feature releases and customize the user experience. CloudBees Feature Management gives teams control over features that are in staging, production, or any environment in the deployment pipeline.

January 10, 2024: V5.1.1

Internal release alignment.

January 10, 2024: V5.1.0

Adding Python 3.12 support Updated dependencies, including Requests and Six packages.

September 22, 2023: V5.0.10


  • Using merged context when evaluating boolean flags.

August 12, 2022: V5.0.9


  • Number flags always take the value type default value '0' when configuration is turned on.

May 11, 2022: V5.0.8


  • Warnings generated when using SDK with Python version 3.10

March 1, 2022: V5.0.7


  • Security updates to dependencies.

January 27, 2022: V5.0.6


  • Exception and error details are no longer lost when an error occurs in custom property resolver.

  • Improvement to error reporting when user_unhandler_error_handler causes its own error.

2021-11-02: V5.0.5


  • Using SIGINT when running a server and using ROX python no longer forces the server to stop.

2021-03-29: V5.0.0

Breaking changes:

  • Variant changed to RoxString

    • Variant('default_string', ['string_1', 'string_2']) ⇒ RoxString('default_string', ['string_1', 'string_2'])

  • Functions input validations

    • Some trivial parameters (mostly type) validations were added to dynamic_api and flags constructions. For example: RoxString(None) will raise an TypeError as default cannot be None (default value of RoxString should be a string and defaults to an empty string if no default is provided). Rox.dynamic_api.value(None, 'default_string', ['string_2', 'string_3']) will raise an TypeError because of None flag name (name should always be a string)

Fixes and Additions:

  • Can use register without a namespace:

    • register(container) will register the container under an empty string namespace (multiple register calls with the same namespaces are still not allowed!)

  • Added a User Space Error handling

    • It is recommended to wrap all handlers used in Rox platform (all Rox.set_custom_<…​>_property, RoxOptions.impression_handler, RoxOptions.configuration_fetched_handler, RoxOptions.dynamic_properties_rule) with try-except in order to be in the right context. In case there will be an uncaught error, it will reach the Rox.set_userspace_unhandled_error_handler handler. You can use this handler for debugging, or for further error handling. An Error thrown within this handler will be written to log. If no set_userspace_unhandled_error_handler was set, errors will be written to the log.

  • Analytics / impressions

    • Starting with SDK 5, flags will always send impressions after setup (not only when targeting is enabled on the dashboard)

  • Impression handler parameters change

    • As experiments were removed, impressions handler signature was changed from (reporting_value, experiment, context) to (reporting_value, context). reporting_value now also has a Targeting (boolean) property, indicating the flag was evaluated by using the dashboard configurations.

  • New Flag Types Int/Double

    • In addition to RoxFlag and RoxString, we also added RoxInt and RoxDouble

    • DynamicApi was also updated with matching get_int and get_double methods

  • Added a graceful Rox.shutdown

    • In order to clean all background Tasks

    • multiple Rox.setup calls will be ignored if Rox wasn’t Shutdown in between

  • Fixing RegEx Match condition, and empty string values

2019-10-10: V4.7.1

  • API version 1.8.0

  • Values are base64 - fixing " and () bug

  • Changes to API calls, using Cloudfront

  • Adding Kill switch to remotely shut down the SDK

  • Push notification implementation was changed to be threads based

2019-08-07: V4.5.0

  • Variants in Dynamic API is open for any value from the dashboard

  • internal bug fixes

2018-09-12: V4.0.1

  • Analytics Support

  • Dynamic API for flags

2018-08-22: V3.0.0

  • Initial release