Skip to content

Commit

Permalink
[FSSDK-8954] chore: prep 4.1.1 (#422)
Browse files Browse the repository at this point in the history
* [FSSDK-8954] docs: change full stack to feature experimentation (#420)

* [FSSDK-8954] chore: prep for 4.1.1 release (#421)
  • Loading branch information
andrewleap-optimizely authored Mar 10, 2023
1 parent 834d09e commit 3d7d24d
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 39 deletions.
11 changes: 8 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Optimizely Python SDK Changelog

## 4.1.1
March 10th, 2023

We updated our README.md and other non-functional code to reflect that this SDK supports both Optimizely Feature Experimentation and Optimizely Full Stack. ([#420](https://github.com/optimizely/python-sdk/pull/420))

## 4.1.0
July 7th, 2022

Expand Down Expand Up @@ -30,10 +35,10 @@ January 12th, 2022
September 16th, 2021

### New Features
* Added new public properties to OptimizelyConfig.
* Added new public properties to OptimizelyConfig.
- sdk_key and environment_key [#338] (https://github.com/optimizely/python-sdk/pull/338)
- attributes and events [#339] (https://github.com/optimizely/python-sdk/pull/339)
- experiment_rules, delivery_rules, audiences and audiences in OptimizelyExperiment
- experiment_rules, delivery_rules, audiences and audiences in OptimizelyExperiment
- [#342] (https://github.com/optimizely/python-sdk/pull/342)
- [#351] (https://github.com/optimizely/python-sdk/pull/351/files)
* For details please refer to our documentation page:
Expand Down Expand Up @@ -158,7 +163,7 @@ October 28th, 2019
* To configure event batching, set the `batch_size` and `flush_interval` properties when initializing instance of [BatchEventProcessor](https://github.com/optimizely/python-sdk/blob/3.3.x/optimizely/event/event_processor.py#L45).
* Event batching is disabled by default. You can pass in instance of `BatchEventProcessor` when creating `Optimizely` instance to enable event batching.
* Users can subscribe to `LogEvent` notification to be notified of whenever a payload consisting of a batch of user events is handed off to the event dispatcher to send to Optimizely's backend.
* Introduced blocking timeout in `PollingConfigManager`. By default, calls to `get_config` will block for maximum of 10 seconds until config is available.
* Introduced blocking timeout in `PollingConfigManager`. By default, calls to `get_config` will block for maximum of 10 seconds until config is available.

### Bug Fixes:
* Fixed incorrect log message when numeric metric is not used. ([#217](https://github.com/optimizely/python-sdk/pull/217))
Expand Down
90 changes: 60 additions & 30 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,25 @@
[![PyPI version](https://badge.fury.io/py/optimizely-sdk.svg)](https://pypi.org/project/optimizely-sdk)
[![Build Status](https://travis-ci.org/optimizely/python-sdk.svg?branch=master)](https://travis-ci.org/optimizely/python-sdk)
[![Coverage Status](https://coveralls.io/repos/github/optimizely/python-sdk/badge.svg)](https://coveralls.io/github/optimizely/python-sdk)
[![Documentation Status](https://readthedocs.org/projects/optimizely-python-sdk/badge/?version=latest)](https://optimizely-python-sdk.readthedocs.io/en/latest/?badge=latest)
[![Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](http://www.apache.org/licenses/LICENSE-2.0)

This repository houses the official Python SDK for use with Optimizely
Full Stack and Optimizely Rollouts.
This repository houses the Python SDK for use with Optimizely Feature Experimentation and Optimizely Full Stack (legacy).

Optimizely Full Stack is A/B testing and feature flag management for
product development teams. Experiment in any application. Make every
feature on your roadmap an opportunity to learn. Learn more at
<https://www.optimizely.com/platform/full-stack/>, or see the [Full
Stack
documentation](https://docs.developers.optimizely.com/full-stack/docs).
Optimizely Feature Experimentation is an A/B testing and feature management tool for product development teams that enables you to experiment at every step. Using Optimizely Feature Experimentation allows for every feature on your roadmap to be an opportunity to discover hidden insights. Learn more at [Optimizely.com](https://www.optimizely.com/products/experiment/feature-experimentation/), or see the [developer documentation](https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/welcome).

Optimizely Rollouts is free feature flags for development teams. Easily
roll out and roll back features in any application without code deploys.
Mitigate risk for every feature on your roadmap. Learn more at
<https://www.optimizely.com/rollouts/>, or see the [Rollouts
documentation](https://docs.developers.optimizely.com/rollouts/docs).
Optimizely Rollouts is [free feature flags](https://www.optimizely.com/free-feature-flagging/) for development teams. You can easily roll out and roll back features in any application without code deploys, mitigating risk for every feature on your roadmap.

## Getting Started
## Get Started

### Installing the SDK
Refer to the [Python SDK's developer documentation](https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/python-sdk) for detailed instructions on getting started with using the SDK.

### Requirements

Version `4.0+`: Python 3.7+, PyPy 3.7+

Version `3.0+`: Python 2.7+, PyPy 3.4+

### Install the SDK

The SDK is available through [PyPi](https://pypi.python.org/pypi?name=optimizely-sdk&:action=display).

Expand All @@ -35,9 +32,11 @@ To install:
### Feature Management Access

To access the Feature Management configuration in the Optimizely
dashboard, please contact your Optimizely account executive.
dashboard, please contact your Optimizely customer success manager.

## Use the Python SDK

### Using the SDK
### Initialization

You can initialize the Optimizely instance in three ways: with a datafile, by providing an sdk_key, or by providing an implementation of
[BaseConfigManager](https://github.com/optimizely/python-sdk/tree/master/optimizely/config_manager.py#L32).
Expand Down Expand Up @@ -79,7 +78,7 @@ Each method is described below.
config_manager=custom_config_manager
)

#### PollingConfigManager
### PollingConfigManager

The [PollingConfigManager](https://github.com/optimizely/python-sdk/blob/master/optimizely/config_manager.py#L150) asynchronously polls for
datafiles from a specified URL at regular intervals by making HTTP requests.
Expand Down Expand Up @@ -120,7 +119,7 @@ used to form the target URL.
You may also provide your own logger, error_handler, or
notification_center.

#### AuthDatafilePollingConfigManager
### AuthDatafilePollingConfigManager

The [AuthDatafilePollingConfigManager](https://github.com/optimizely/python-sdk/blob/master/optimizely/config_manager.py#L375)
implements `PollingConfigManager` and asynchronously polls for authenticated datafiles from a specified URL at regular intervals
Expand All @@ -137,7 +136,7 @@ your project and generate an access token for your datafile.

**datafile_access_token** The datafile_access_token is attached to the outbound HTTP request header to authorize the request and fetch the datafile.

#### Advanced configuration
### Advanced configuration

The following properties can be set to override the default
configurations for [PollingConfigManager](#pollingconfigmanager) and [AuthDatafilePollingConfigManager](#authdatafilepollingconfigmanager).
Expand All @@ -158,18 +157,18 @@ notifications, use:
notification_center.add_notification_listener(NotificationTypes.OPTIMIZELY_CONFIG_UPDATE, update_callback)
```

For Further details see the Optimizely [Full Stack documentation](https://docs.developers.optimizely.com/full-stack/docs)
For Further details see the Optimizely [Feature Experimentation documentation](https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/welcome)
to learn how to set up your first Python project and use the SDK.

## Development
## SDK Development

### Building the SDK

Build and install the SDK with pip, using the following command:

pip install -e .

### Unit tests
### Unit Tests

#### Running all tests

Expand Down Expand Up @@ -220,9 +219,40 @@ would be:

Please see [CONTRIBUTING](https://github.com/optimizely/python-sdk/blob/master/CONTRIBUTING.md).

### Additional Code
This software incorporates code from the following open source repos:
requests (Apache-2.0 License: https://github.com/psf/requests/blob/master/LICENSE)
pyOpenSSL (Apache-2.0 License https://github.com/pyca/pyopenssl/blob/main/LICENSE)
cryptography (Apache-2.0 https://github.com/pyca/cryptography/blob/main/LICENSE.APACHE)
idna (BSD 3-Clause License https://github.com/kjd/idna/blob/master/LICENSE.md)
### Credits

This software incorporates code from the following open source projects:

requests (Apache-2.0 License: https://github.com/psf/requests/blob/master/LICENSE)

pyOpenSSL (Apache-2.0 License https://github.com/pyca/pyopenssl/blob/main/LICENSE)

cryptography (Apache-2.0 https://github.com/pyca/cryptography/blob/main/LICENSE.APACHE)

idna (BSD 3-Clause License https://github.com/kjd/idna/blob/master/LICENSE.md)

### Other Optimizely SDKs

- Agent - https://github.com/optimizely/agent

- Android - https://github.com/optimizely/android-sdk

- C# - https://github.com/optimizely/csharp-sdk

- Flutter - https://github.com/optimizely/optimizely-flutter-sdk

- Go - https://github.com/optimizely/go-sdk

- Java - https://github.com/optimizely/java-sdk

- JavaScript - https://github.com/optimizely/javascript-sdk

- PHP - https://github.com/optimizely/php-sdk

- Python - https://github.com/optimizely/python-sdk

- React - https://github.com/optimizely/react-sdk

- Ruby - https://github.com/optimizely/ruby-sdk

- Swift - https://github.com/optimizely/swift-sdk
4 changes: 2 additions & 2 deletions optimizely/version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright 2016-2020, Optimizely
# Copyright 2016-2020, 2022-2023, Optimizely
# Licensed 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
Expand All @@ -11,5 +11,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.

version_info = (4, 1, 0)
version_info = (4, 1, 1)
__version__ = '.'.join(str(v) for v in version_info)
9 changes: 5 additions & 4 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,16 +24,17 @@
CHANGELOG = _file.read()

about_text = (
'Optimizely X Full Stack is A/B testing and feature management for product development teams. '
'Optimizely Feature Experimentation is A/B testing and feature management for product development teams. '
'Experiment in any application. Make every feature on your roadmap an opportunity to learn. '
'Learn more at https://www.optimizely.com/products/full-stack/ or see our documentation at '
'https://docs.developers.optimizely.com/full-stack/docs. '
'Learn more at https://www.optimizely.com/products/experiment/feature-experimentation/ or see our documentation at '
'https://docs.developers.optimizely.com/experimentation/v4.0.0-full-stack/docs/welcome. '
)

setup(
name='optimizely-sdk',
version=__version__,
description='Python SDK for Optimizely X Full Stack.',
description='Python SDK for Optimizely Feature Experimentation, Optimizely Full Stack (legacy), '
'and Optimizely Rollouts.',
long_description=about_text + README + CHANGELOG,
long_description_content_type='text/markdown',
author='Optimizely',
Expand Down

0 comments on commit 3d7d24d

Please sign in to comment.