File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11{
2- "." : " 7.1.1 "
2+ "." : " 7.2.0 "
33}
Original file line number Diff line number Diff line change 11configured_endpoints : 77
2- openapi_spec_url : https://storage.googleapis.com/stainless-sdk-openapi-specs/courier%2Fcourier-b232056686e3541154faff791bd660463ba8564947f9c01b8eedea6b6f606f65 .yml
3- openapi_spec_hash : d5992a85e943a1bc21f81d70b86109c9
4- config_hash : 3ec521d062b05b81c22bc1a25bfe3d02
2+ openapi_spec_url : https://storage.googleapis.com/stainless-sdk-openapi-specs/courier%2Fcourier-5be11a3b4798c4039b34a39efe7bb1a25be6fea2293ba67f7c0d9eecec1b8ba4 .yml
3+ openapi_spec_hash : ee9ccd5743306a2df39447def1b43017
4+ config_hash : c549fe8ed531041c8cc28ae9645b80dd
Original file line number Diff line number Diff line change 11# Changelog
22
3+ ## 7.2.0 (2025-12-08)
4+
5+ Full Changelog: [ v7.1.1...v7.2.0] ( https://github.com/trycourier/courier-python/compare/v7.1.1...v7.2.0 )
6+
7+ ### Features
8+
9+ * Add event_ids field to Notification schema ([ 02bb30d] ( https://github.com/trycourier/courier-python/commit/02bb30db537aca01f146a165ddf08d561cea1244 ) )
10+
11+
12+ ### Bug Fixes
13+
14+ * ** client:** fix duplicate Go struct resulting from name derivations schema ([ f2f7fc4] ( https://github.com/trycourier/courier-python/commit/f2f7fc498132b1ca3d39a90d178ab01ca372e6c9 ) )
15+
16+
17+ ### Chores
18+
19+ * ** docs:** use environment variables for authentication in code snippets ([ f393857] ( https://github.com/trycourier/courier-python/commit/f393857a8d91fdeb8eecb649033de72b8adbee9f ) )
20+ * update lockfile ([ 15713ee] ( https://github.com/trycourier/courier-python/commit/15713ee6c246e5d1a7388718b9d09303eebeb541 ) )
21+
322## 7.1.1 (2025-12-02)
423
524Full Changelog: [ v7.1.0...v7.1.1] ( https://github.com/trycourier/courier-python/compare/v7.1.0...v7.1.1 )
Original file line number Diff line number Diff line change @@ -91,14 +91,15 @@ pip install trycourier[aiohttp]
9191Then you can enable it by instantiating the client with ` http_client=DefaultAioHttpClient() ` :
9292
9393``` python
94+ import os
9495import asyncio
9596from courier import DefaultAioHttpClient
9697from courier import AsyncCourier
9798
9899
99100async def main () -> None :
100101 async with AsyncCourier(
101- api_key = " My API Key " ,
102+ api_key = os.environ.get( " COURIER_API_KEY " ), # This is the default and can be omitted
102103 http_client = DefaultAioHttpClient(),
103104 ) as client:
104105 response = await client.send.message(
Original file line number Diff line number Diff line change @@ -24,6 +24,7 @@ from courier.types import (
2424 Paging,
2525 Preference,
2626 PreferenceStatus,
27+ ProfilePreferences,
2728 Recipient,
2829 RecipientPreferences,
2930 Rule,
Original file line number Diff line number Diff line change 11[project ]
22name = " trycourier"
3- version = " 7.1.1 "
3+ version = " 7.2.0 "
44description = " The official Python library for the Courier API"
55dynamic = [" readme" ]
66license = " Apache-2.0"
77authors = [
88{ name = " Courier" , email = " support@courier.com" },
99]
10+
1011dependencies = [
11- " httpx>=0.23.0, <1" ,
12- " pydantic>=1.9.0, <3" ,
13- " typing-extensions>=4.10, <5" ,
14- " anyio>=3.5.0, <5" ,
15- " distro>=1.7.0, <2" ,
16- " sniffio" ,
12+ " httpx>=0.23.0, <1" ,
13+ " pydantic>=1.9.0, <3" ,
14+ " typing-extensions>=4.10, <5" ,
15+ " anyio>=3.5.0, <5" ,
16+ " distro>=1.7.0, <2" ,
17+ " sniffio" ,
1718]
19+
1820requires-python = " >= 3.9"
1921classifiers = [
2022 " Typing :: Typed" ,
Original file line number Diff line number Diff line change 1212-e file:.
1313aiohappyeyeballs==2.6.1
1414 # via aiohttp
15- aiohttp==3.12.8
15+ aiohttp==3.13.2
1616 # via httpx-aiohttp
1717 # via trycourier
18- aiosignal==1.3.2
18+ aiosignal==1.4.0
1919 # via aiohttp
20- annotated-types==0.6 .0
20+ annotated-types==0.7 .0
2121 # via pydantic
22- anyio==4.4 .0
22+ anyio==4.12 .0
2323 # via httpx
2424 # via trycourier
25- argcomplete==3.1.2
25+ argcomplete==3.6.3
2626 # via nox
2727async-timeout==5.0.1
2828 # via aiohttp
29- attrs==25.3 .0
29+ attrs==25.4 .0
3030 # via aiohttp
31- certifi==2023.7.22
31+ # via nox
32+ backports-asyncio-runner==1.2.0
33+ # via pytest-asyncio
34+ certifi==2025.11.12
3235 # via httpcore
3336 # via httpx
34- colorlog==6.7.0
37+ colorlog==6.10.1
38+ # via nox
39+ dependency-groups==1.3.1
3540 # via nox
36- dirty-equals==0.6.0
37- distlib==0.3.7
41+ dirty-equals==0.11
42+ distlib==0.4.0
3843 # via virtualenv
39- distro==1.8 .0
44+ distro==1.9 .0
4045 # via trycourier
41- exceptiongroup==1.2.2
46+ exceptiongroup==1.3.1
4247 # via anyio
4348 # via pytest
44- execnet==2.1.1
49+ execnet==2.1.2
4550 # via pytest-xdist
46- filelock==3.12.4
51+ filelock==3.19.1
4752 # via virtualenv
48- frozenlist==1.6.2
53+ frozenlist==1.8.0
4954 # via aiohttp
5055 # via aiosignal
5156h11==0.16.0
@@ -58,82 +63,87 @@ httpx==0.28.1
5863 # via trycourier
5964httpx-aiohttp==0.1.9
6065 # via trycourier
61- idna==3.4
66+ humanize==4.13.0
67+ # via nox
68+ idna==3.11
6269 # via anyio
6370 # via httpx
6471 # via yarl
65- importlib-metadata==7.0 .0
66- iniconfig==2.0 .0
72+ importlib-metadata==8.7 .0
73+ iniconfig==2.1 .0
6774 # via pytest
6875markdown-it-py==3.0.0
6976 # via rich
7077mdurl==0.1.2
7178 # via markdown-it-py
72- multidict==6.4.4
79+ multidict==6.7.0
7380 # via aiohttp
7481 # via yarl
7582mypy==1.17.0
76- mypy-extensions==1.0 .0
83+ mypy-extensions==1.1 .0
7784 # via mypy
78- nodeenv==1.8.0
85+ nodeenv==1.9.1
7986 # via pyright
80- nox==2023.4.22
81- packaging==23.2
87+ nox==2025.11.12
88+ packaging==25.0
89+ # via dependency-groups
8290 # via nox
8391 # via pytest
8492pathspec==0.12.1
8593 # via mypy
86- platformdirs==3.11 .0
94+ platformdirs==4.4 .0
8795 # via virtualenv
88- pluggy==1.5 .0
96+ pluggy==1.6 .0
8997 # via pytest
90- propcache==0.3 .1
98+ propcache==0.4 .1
9199 # via aiohttp
92100 # via yarl
93- pydantic==2.11.9
101+ pydantic==2.12.5
94102 # via trycourier
95- pydantic-core==2.33.2
103+ pydantic-core==2.41.5
96104 # via pydantic
97- pygments==2.18.0
105+ pygments==2.19.2
106+ # via pytest
98107 # via rich
99108pyright==1.1.399
100- pytest==8.3.3
109+ pytest==8.4.2
101110 # via pytest-asyncio
102111 # via pytest-xdist
103- pytest-asyncio==0.24 .0
104- pytest-xdist==3.7 .0
105- python-dateutil==2.8.2
112+ pytest-asyncio==1.2 .0
113+ pytest-xdist==3.8 .0
114+ python-dateutil==2.9.0.post0
106115 # via time-machine
107- pytz==2023.3.post1
108- # via dirty-equals
109116respx==0.22.0
110- rich==13.7.1
111- ruff==0.9.4
112- setuptools==68.2.2
113- # via nodeenv
114- six==1.16.0
117+ rich==14.2.0
118+ ruff==0.14.7
119+ six==1.17.0
115120 # via python-dateutil
116- sniffio==1.3.0
117- # via anyio
121+ sniffio==1.3.1
118122 # via trycourier
119- time-machine==2.9.0
120- tomli==2.0.2
123+ time-machine==2.19.0
124+ tomli==2.3.0
125+ # via dependency-groups
121126 # via mypy
127+ # via nox
122128 # via pytest
123- typing-extensions==4.12.2
129+ typing-extensions==4.15.0
130+ # via aiosignal
124131 # via anyio
132+ # via exceptiongroup
125133 # via multidict
126134 # via mypy
127135 # via pydantic
128136 # via pydantic-core
129137 # via pyright
138+ # via pytest-asyncio
130139 # via trycourier
131140 # via typing-inspection
132- typing-inspection==0.4.1
141+ # via virtualenv
142+ typing-inspection==0.4.2
133143 # via pydantic
134- virtualenv==20.24.5
144+ virtualenv==20.35.4
135145 # via nox
136- yarl==1.20 .0
146+ yarl==1.22 .0
137147 # via aiohttp
138- zipp==3.17 .0
148+ zipp==3.23 .0
139149 # via importlib-metadata
Original file line number Diff line number Diff line change 1212-e file:.
1313aiohappyeyeballs==2.6.1
1414 # via aiohttp
15- aiohttp==3.12.8
15+ aiohttp==3.13.2
1616 # via httpx-aiohttp
1717 # via trycourier
18- aiosignal==1.3.2
18+ aiosignal==1.4.0
1919 # via aiohttp
20- annotated-types==0.6 .0
20+ annotated-types==0.7 .0
2121 # via pydantic
22- anyio==4.4 .0
22+ anyio==4.12 .0
2323 # via httpx
2424 # via trycourier
2525async-timeout==5.0.1
2626 # via aiohttp
27- attrs==25.3 .0
27+ attrs==25.4 .0
2828 # via aiohttp
29- certifi==2023.7.22
29+ certifi==2025.11.12
3030 # via httpcore
3131 # via httpx
32- distro==1.8 .0
32+ distro==1.9 .0
3333 # via trycourier
34- exceptiongroup==1.2.2
34+ exceptiongroup==1.3.1
3535 # via anyio
36- frozenlist==1.6.2
36+ frozenlist==1.8.0
3737 # via aiohttp
3838 # via aiosignal
3939h11==0.16.0
@@ -45,31 +45,32 @@ httpx==0.28.1
4545 # via trycourier
4646httpx-aiohttp==0.1.9
4747 # via trycourier
48- idna==3.4
48+ idna==3.11
4949 # via anyio
5050 # via httpx
5151 # via yarl
52- multidict==6.4.4
52+ multidict==6.7.0
5353 # via aiohttp
5454 # via yarl
55- propcache==0.3 .1
55+ propcache==0.4 .1
5656 # via aiohttp
5757 # via yarl
5858pydantic==2.12.5
5959 # via trycourier
6060pydantic-core==2.41.5
6161 # via pydantic
62- sniffio==1.3.0
63- # via anyio
62+ sniffio==1.3.1
6463 # via trycourier
6564typing-extensions==4.15.0
65+ # via aiosignal
6666 # via anyio
67+ # via exceptiongroup
6768 # via multidict
6869 # via pydantic
6970 # via pydantic-core
7071 # via trycourier
7172 # via typing-inspection
7273typing-inspection==0.4.2
7374 # via pydantic
74- yarl==1.20 .0
75+ yarl==1.22 .0
7576 # via aiohttp
Original file line number Diff line number Diff line change 11# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
22
33__title__ = "courier"
4- __version__ = "7.1.1 " # x-release-please-version
4+ __version__ = "7.2.0 " # x-release-please-version
Original file line number Diff line number Diff line change 2525 PreferenceStatus as PreferenceStatus ,
2626 ChannelPreference as ChannelPreference ,
2727 ElementalBaseNode as ElementalBaseNode ,
28+ ProfilePreferences as ProfilePreferences ,
2829 ElementalChannelNode as ElementalChannelNode ,
2930 RecipientPreferences as RecipientPreferences ,
3031 ChannelClassification as ChannelClassification ,
You can’t perform that action at this time.
0 commit comments