Skip to content

Commit f9c7303

Browse files
chore(release): Preparing for 3.0.0 release (#164)
1 parent fafad4c commit f9c7303

File tree

3 files changed

+103
-3
lines changed

3 files changed

+103
-3
lines changed

CHANGELOG.rst

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,103 @@
1+
3.0.0
2+
-----
3+
4+
March 1st, 2019
5+
6+
The 3.0 release improves event tracking and supports additional audience targeting functionality.
7+
8+
New Features:
9+
~~~~~~~~~~~~~
10+
11+
- Event tracking:
12+
13+
- The ``track`` method now dispatches its conversion event
14+
*unconditionally*, without first determining whether the user is
15+
targeted by a known experiment that uses the event. This may
16+
increase outbound network traffic.
17+
- In Optimizely results, conversion events sent by 3.0 SDKs are
18+
automatically attributed to variations that the user has
19+
previously seen, as long as our backend has actually received the
20+
impression events for those variations.
21+
- Altogether, this allows you to track conversion events and
22+
attribute them to variations even when you don’t know all of a
23+
user’s attribute values, and even if the user’s attribute values
24+
or the experiment’s configuration have changed such that the user
25+
is no longer affected by the experiment. As a result, **you may
26+
observe an increase in the conversion rate for
27+
previously-instrumented events.** If that is undesirable, you can
28+
reset the results of previously-running experiments after
29+
upgrading to the 3.0 SDK.
30+
- This will also allow you to attribute events to variations from
31+
other Optimizely projects in your account, even though those
32+
experiments don’t appear in the same datafile.
33+
- Note that for results segmentation in Optimizely results, the user
34+
attribute values from one event are automatically applied to all
35+
other events in the same session, as long as the events in
36+
question were actually received by our backend. This behavior was
37+
already in place and is not affected by the 3.0 release.
38+
39+
- Support for all types of attribute values, not just strings.
40+
41+
- All values are passed through to notification listeners.
42+
- Strings, booleans, and valid numbers are passed to the event
43+
dispatcher and can be used for Optimizely results segmentation. A
44+
valid number is a finite float or numbers.Integral in the inclusive range [-2⁵³,
45+
2⁵³].
46+
- Strings, booleans, and valid numbers are relevant for audience
47+
conditions.
48+
49+
- Support for additional matchers in audience conditions:
50+
51+
- An ``exists`` matcher that passes if the user has a non-null value
52+
for the targeted user attribute and fails otherwise.
53+
- A ``substring`` matcher that resolves if the user has a string
54+
value for the targeted attribute.
55+
- ``gt`` (greater than) and ``lt`` (less than) matchers that resolve
56+
if the user has a valid number value for the targeted attribute. A
57+
valid number is a finite float or numbers.Integral in the inclusive range [-2⁵³,
58+
2⁵³].
59+
- The original (``exact``) matcher can now be used to target
60+
booleans and valid numbers, not just strings.
61+
62+
- Support for A/B tests, feature tests, and feature rollouts whose
63+
audiences are combined using ``"and"`` and ``"not"`` operators, not
64+
just the ``"or"`` operator.
65+
- Datafile-version compatibility check: The SDK will remain
66+
uninitialized (i.e., will gracefully fail to activate experiments and
67+
features) if given a datafile version greater than 4.
68+
- Updated Pull Request template and commit message guidelines.
69+
70+
Breaking Changes:
71+
~~~~~~~~~~~~~~~~~
72+
73+
- Previously, notification listeners were only given string-valued user
74+
attributes because only strings could be passed into various method
75+
calls. That is no longer the case. You may pass non-string attribute
76+
values, and if you do, you must update your notification listeners to
77+
be able to receive whatever values you pass in.
78+
79+
Bug Fixes:
80+
~~~~~~~~~~
81+
82+
- Experiments and features can no longer activate when a negatively
83+
targeted attribute has a missing, null, or malformed value.
84+
85+
- Audience conditions (except for the new ``exists`` matcher) no
86+
longer resolve to ``false`` when they fail to find an legitimate
87+
value for the targeted user attribute. The result remains ``null``
88+
(unknown). Therefore, an audience that negates such a condition
89+
(using the ``"not"`` operator) can no longer resolve to ``true``
90+
unless there is an unrelated branch in the condition tree that
91+
itself resolves to ``true``.
92+
93+
- Updated the default event dispatcher to log an error if the request
94+
resolves to HTTP 4xx or 5xx. (`#140`_)
95+
- All methods now validate that user IDs are strings and that
96+
experiment keys, feature keys, feature variable keys, and event keys
97+
are non-empty strings.
98+
99+
.. _#140: https://github.com/optimizely/python-sdk/pull/140
100+
1101
2.1.1
2102
-----
3103

optimizely/version.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright 2016-2018, Optimizely
1+
# Copyright 2016-2019, Optimizely
22
# Licensed under the Apache License, Version 2.0 (the "License");
33
# you may not use this file except in compliance with the License.
44
# You may obtain a copy of the License at
@@ -11,5 +11,5 @@
1111
# See the License for the specific language governing permissions and
1212
# limitations under the License.
1313

14-
version_info = (2, 1, 1)
14+
version_info = (3, 0, 0)
1515
__version__ = '.'.join(str(v) for v in version_info)

requirements/core.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
jsonschema>=2.5.1
1+
jsonschema==2.6.0
22
mmh3==2.5.1
33
requests[security]>=2.9.1

0 commit comments

Comments
 (0)