broadcast-python 0.6.0__tar.gz → 0.7.0__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.
Files changed (37) hide show
  1. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/CHANGELOG.md +9 -0
  2. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/PKG-INFO +3 -1
  3. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/README.md +2 -0
  4. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/pyproject.toml +1 -1
  5. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/opt_in_forms.py +12 -1
  6. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/version.py +1 -1
  7. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/.gitignore +0 -0
  8. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/LICENSE +0 -0
  9. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/__init__.py +0 -0
  10. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/client.py +0 -0
  11. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/configuration.py +0 -0
  12. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/connection.py +0 -0
  13. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/errors.py +0 -0
  14. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/multipart.py +0 -0
  15. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/py.typed +0 -0
  16. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/__init__.py +0 -0
  17. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/autopilots.py +0 -0
  18. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/base.py +0 -0
  19. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/broadcasts.py +0 -0
  20. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/channel_design.py +0 -0
  21. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/channel_settings.py +0 -0
  22. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/discovery.py +0 -0
  23. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/email_servers.py +0 -0
  24. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/file_assets.py +0 -0
  25. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/global_suppressions.py +0 -0
  26. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/migration.py +0 -0
  27. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/segments.py +0 -0
  28. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/sequences.py +0 -0
  29. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/subscribers.py +0 -0
  30. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/suppressions.py +0 -0
  31. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/templates.py +0 -0
  32. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/topics.py +0 -0
  33. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/transactionals.py +0 -0
  34. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/users.py +0 -0
  35. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/resources/webhook_endpoints.py +0 -0
  36. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/response.py +0 -0
  37. {broadcast_python-0.6.0 → broadcast_python-0.7.0}/src/broadcast_python/webhook.py +0 -0
@@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.7.0] - 2026-10-17
8
+
9
+ ### Added
10
+
11
+ - `TRIGGER_FREQUENCIES` includes `once_per_days` (Broadcast 2.49): the popup shows
12
+ again after `trigger_settings.frequency_cookie_days` days, a whole number, 1 or
13
+ more; blank means 30. The client still sends any word as it is, so nothing
14
+ changes for a server before 2.49, which refuses the word with 422.
15
+
7
16
  ## [0.6.0] - 2026-10-16
8
17
 
9
18
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: broadcast-python
3
- Version: 0.6.0
3
+ Version: 0.7.0
4
4
  Summary: Python client for the Broadcast email platform. Subscribers, sequences, broadcasts, segments, templates, autopilot, webhooks, and transactional email.
5
5
  Project-URL: Homepage, https://sendbroadcast.net
6
6
  Project-URL: Repository, https://github.com/send-broadcast/broadcast-python
@@ -242,6 +242,8 @@ client.templates.create(label="Welcome", subject="Hi", body="...")
242
242
  client.opt_in_forms.analytics(id, start_date=date(2026, 1, 1))
243
243
  # How often the same visitor sees a popup: one of TRIGGER_FREQUENCIES, or ValidationError (422).
244
244
  client.opt_in_forms.update(id, trigger_settings={"frequency": "once_per_day"})
245
+ # Every N days (Broadcast 2.49 and later): frequency_cookie_days is a whole number, 1 or more; blank means 30.
246
+ client.opt_in_forms.update(id, trigger_settings={"frequency": "once_per_days", "frequency_cookie_days": 7})
245
247
  client.opt_in_forms.create_variant(id, name="B", weight=50)
246
248
  client.opt_in_forms.duplicate(id, label="Copy")
247
249
  ```
@@ -218,6 +218,8 @@ client.templates.create(label="Welcome", subject="Hi", body="...")
218
218
  client.opt_in_forms.analytics(id, start_date=date(2026, 1, 1))
219
219
  # How often the same visitor sees a popup: one of TRIGGER_FREQUENCIES, or ValidationError (422).
220
220
  client.opt_in_forms.update(id, trigger_settings={"frequency": "once_per_day"})
221
+ # Every N days (Broadcast 2.49 and later): frequency_cookie_days is a whole number, 1 or more; blank means 30.
222
+ client.opt_in_forms.update(id, trigger_settings={"frequency": "once_per_days", "frequency_cookie_days": 7})
221
223
  client.opt_in_forms.create_variant(id, name="B", weight=50)
222
224
  client.opt_in_forms.duplicate(id, label="Copy")
223
225
  ```
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "broadcast-python"
7
- version = "0.6.0"
7
+ version = "0.7.0"
8
8
  description = "Python client for the Broadcast email platform. Subscribers, sequences, broadcasts, segments, templates, autopilot, webhooks, and transactional email."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -9,7 +9,18 @@ Id = Union[str, int]
9
9
  #: visitor sees a popup. ``always`` and ``every_visit`` mean the same. The server
10
10
  #: refuses any other word with 422 (:class:`ValidationError`); the client does
11
11
  #: not check, so an older server is never refused a word it would take.
12
- TRIGGER_FREQUENCIES = ("always", "every_visit", "once_per_session", "once_per_day", "once_per_week", "once")
12
+ #: ``once_per_days`` (Broadcast 2.49 and later) shows the popup again after
13
+ #: ``trigger_settings["frequency_cookie_days"]`` days: a whole number, 1 or
14
+ #: more; blank means 30.
15
+ TRIGGER_FREQUENCIES = (
16
+ "always",
17
+ "every_visit",
18
+ "once_per_session",
19
+ "once_per_day",
20
+ "once_per_week",
21
+ "once",
22
+ "once_per_days",
23
+ )
13
24
 
14
25
 
15
26
  class OptInForms(BaseResource):
@@ -1,3 +1,3 @@
1
1
  # Kept in sync with pyproject.toml by tests/test_package.py — a User-Agent that
2
2
  # lies about its version misattributes server-side client analytics.
3
- VERSION = "0.6.0"
3
+ VERSION = "0.7.0"