featureflip 2.4.0__tar.gz → 2.4.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {featureflip-2.4.0 → featureflip-2.4.2}/CHANGELOG.md +14 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/LICENSE +15 -3
- {featureflip-2.4.0 → featureflip-2.4.2}/PKG-INFO +2 -2
- {featureflip-2.4.0 → featureflip-2.4.2}/README.md +1 -1
- {featureflip-2.4.0 → featureflip-2.4.2}/pyproject.toml +1 -1
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/__init__.py +1 -2
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/_http.py +2 -1
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/_streaming.py +2 -1
- featureflip-2.4.2/src/featureflip/_version.py +24 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/.gitignore +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/_core.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/_events.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/_polling.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/_semver.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/client.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/config.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/context.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/detail.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/evaluation.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/exceptions.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/inspector.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/src/featureflip/models.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/__init__.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/golden/vectors.json +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/integration/__init__.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/integration/test_api.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_client.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_config.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_context.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_core.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_detail.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_evaluation.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_events.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_exceptions.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_factory.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_golden.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_http.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_inspector.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_models.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_polling.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_semver.py +0 -0
- {featureflip-2.4.0 → featureflip-2.4.2}/tests/test_streaming.py +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.4.2 — 2026-08-05
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- `LICENSE` is now the verbatim Apache-2.0 text. Three phrases in the operative sections had been reworded and the appendix dropped, which left automated license scanners unable to identify it. The license itself is unchanged; the file now says what it always claimed to.
|
|
8
|
+
- The README's License section said MIT. `LICENSE`, `pyproject.toml` and the PyPI listing have always said Apache-2.0, which is the actual license.
|
|
9
|
+
|
|
10
|
+
## 2.4.1 — 2026-08-02
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- The `User-Agent` reports the SDK's real version, read from the installed package metadata rather than a hardcoded literal. It had been pinned to `0.1.0` since the first release, so every request from a 2.x client identified itself as pre-1.0 (#2141).
|
|
15
|
+
- `featureflip.__version__` reports the real version too. It had been stuck at `2.0.0`.
|
|
16
|
+
|
|
3
17
|
## 2.4.0 — 2026-07-29
|
|
4
18
|
|
|
5
19
|
### Added
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
Apache License
|
|
2
3
|
Version 2.0, January 2004
|
|
3
4
|
http://www.apache.org/licenses/
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"Contribution" shall mean any work of authorship, including
|
|
49
50
|
the original version of the Work and any modifications or additions
|
|
50
51
|
to that Work or Derivative Works thereof, that is intentionally
|
|
51
|
-
submitted to
|
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
52
53
|
or by an individual or Legal Entity authorized to submit on behalf of
|
|
53
54
|
the copyright owner. For the purposes of this definition, "submitted"
|
|
54
55
|
means any form of electronic, verbal, or written communication sent
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
designated in writing by the copyright owner as "Not a Contribution."
|
|
61
62
|
|
|
62
63
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
63
|
-
on behalf of whom a Contribution has been received by
|
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
64
65
|
subsequently incorporated within the Work.
|
|
65
66
|
|
|
66
67
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
@@ -106,7 +107,7 @@
|
|
|
106
107
|
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
108
|
distribution, then any Derivative Works that You distribute must
|
|
108
109
|
include a readable copy of the attribution notices contained
|
|
109
|
-
within such NOTICE file, excluding
|
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
111
|
pertain to any part of the Derivative Works, in at least one
|
|
111
112
|
of the following places: within a NOTICE text file distributed
|
|
112
113
|
as part of the Derivative Works; within the Source form or
|
|
@@ -175,6 +176,17 @@
|
|
|
175
176
|
|
|
176
177
|
END OF TERMS AND CONDITIONS
|
|
177
178
|
|
|
179
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
180
|
+
|
|
181
|
+
To apply the Apache License to your work, attach the following
|
|
182
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
183
|
+
replaced with your own identifying information. (Don't include
|
|
184
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
185
|
+
comment syntax for the file format. We also recommend that a
|
|
186
|
+
file or class name and description of purpose be included on the
|
|
187
|
+
same "printed page" as the copyright notice for easier
|
|
188
|
+
identification within third-party archives.
|
|
189
|
+
|
|
178
190
|
Copyright 2026 Canopy Labs LLC
|
|
179
191
|
|
|
180
192
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: featureflip
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: Python SDK for Featureflip - a feature flag SaaS platform
|
|
5
5
|
Project-URL: Homepage, https://featureflip.io
|
|
6
6
|
Project-URL: Documentation, https://featureflip.io/docs/sdks/python/
|
|
@@ -183,4 +183,4 @@ mypy src/featureflip --strict
|
|
|
183
183
|
|
|
184
184
|
## License
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
Apache-2.0
|
|
@@ -7,6 +7,7 @@ from typing import TYPE_CHECKING, Any
|
|
|
7
7
|
import httpx
|
|
8
8
|
import structlog
|
|
9
9
|
|
|
10
|
+
from featureflip._version import USER_AGENT
|
|
10
11
|
from featureflip.models import (
|
|
11
12
|
Condition,
|
|
12
13
|
ConditionGroup,
|
|
@@ -51,7 +52,7 @@ class HttpClient:
|
|
|
51
52
|
),
|
|
52
53
|
headers={
|
|
53
54
|
"Authorization": sdk_key,
|
|
54
|
-
"User-Agent":
|
|
55
|
+
"User-Agent": USER_AGENT,
|
|
55
56
|
},
|
|
56
57
|
)
|
|
57
58
|
|
|
@@ -12,6 +12,7 @@ import structlog
|
|
|
12
12
|
from httpx_sse import connect_sse
|
|
13
13
|
|
|
14
14
|
from featureflip._polling import PollingHandler
|
|
15
|
+
from featureflip._version import USER_AGENT
|
|
15
16
|
|
|
16
17
|
if TYPE_CHECKING:
|
|
17
18
|
from collections.abc import Callable
|
|
@@ -246,7 +247,7 @@ class StreamingHandler:
|
|
|
246
247
|
"""
|
|
247
248
|
return {
|
|
248
249
|
"Authorization": self._sdk_key,
|
|
249
|
-
"User-Agent":
|
|
250
|
+
"User-Agent": USER_AGENT,
|
|
250
251
|
"Accept": "text/event-stream",
|
|
251
252
|
}
|
|
252
253
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""Single source of the SDK's version.
|
|
2
|
+
|
|
3
|
+
Read from the installed distribution's metadata rather than hardcoded, because
|
|
4
|
+
``publish-python-sdk.yml`` sets the release version by ``sed``-ing
|
|
5
|
+
``pyproject.toml`` and nothing else. A literal here would be correct only until
|
|
6
|
+
the next release, which is exactly how the User-Agent came to advertise 0.1.0
|
|
7
|
+
from a 2.4.x SDK (#2141).
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from importlib.metadata import PackageNotFoundError
|
|
13
|
+
from importlib.metadata import version as _distribution_version
|
|
14
|
+
|
|
15
|
+
try:
|
|
16
|
+
__version__ = _distribution_version("featureflip")
|
|
17
|
+
except PackageNotFoundError: # pragma: no cover - source tree without an install
|
|
18
|
+
# Running straight from src/ (e.g. PYTHONPATH=src) with no dist-info to read.
|
|
19
|
+
# Report it plainly instead of guessing a number that could be wrong.
|
|
20
|
+
__version__ = "0.0.0+unknown"
|
|
21
|
+
|
|
22
|
+
USER_AGENT = f"featureflip-python/{__version__}"
|
|
23
|
+
|
|
24
|
+
__all__ = ["USER_AGENT", "__version__"]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|