Skip to content

Commit dadf34d

Browse files
Automatically update Python SDK
1 parent ddebc68 commit dadf34d

File tree

11 files changed

+774
-76
lines changed

11 files changed

+774
-76
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "trophy"
7-
version = "1.0.1"
7+
version = "1.0.2"
88
description = "A Python library for the Trophy API"
99
license = {text = "MIT"}
1010
readme = "README.md"

trophy/__init__.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@
44
AchievementCompletionResponse,
55
AchievementResponse,
66
ErrorBody,
7-
EventRequestUser,
87
EventResponse,
98
EventResponseMetricsItem,
109
MetricResponse,
1110
MetricStatus,
1211
StreakFrequency,
1312
StreakResponse,
13+
UpdatedUser,
14+
UpsertedUser,
15+
User,
1416
)
1517
from .errors import (
1618
BadRequestError,
@@ -28,7 +30,6 @@
2830
"AsyncTrophyApi",
2931
"BadRequestError",
3032
"ErrorBody",
31-
"EventRequestUser",
3233
"EventResponse",
3334
"EventResponseMetricsItem",
3435
"MetricResponse",
@@ -40,6 +41,9 @@
4041
"TrophyApiEnvironment",
4142
"UnauthorizedError",
4243
"UnprocessableEntityError",
44+
"UpdatedUser",
45+
"UpsertedUser",
46+
"User",
4347
"achievements",
4448
"metrics",
4549
"users",

trophy/achievements/client.py

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import typing
44
from ..core.client_wrapper import SyncClientWrapper
5-
from ..types.event_request_user import EventRequestUser
5+
from ..types.upserted_user import UpsertedUser
66
from ..core.request_options import RequestOptions
77
from ..types.achievement_completion_response import AchievementCompletionResponse
88
from ..core.jsonable_encoder import jsonable_encoder
@@ -28,7 +28,7 @@ def complete(
2828
self,
2929
key: str,
3030
*,
31-
user: EventRequestUser,
31+
user: UpsertedUser,
3232
request_options: typing.Optional[RequestOptions] = None,
3333
) -> AchievementCompletionResponse:
3434
"""
@@ -39,7 +39,7 @@ def complete(
3939
key : str
4040
Unique reference of the achievement as set when created.
4141
42-
user : EventRequestUser
42+
user : UpsertedUser
4343
The user that completed the achievement.
4444
4545
request_options : typing.Optional[RequestOptions]
@@ -52,17 +52,15 @@ def complete(
5252
5353
Examples
5454
--------
55-
from trophy import EventRequestUser, TrophyApi
55+
from trophy import TrophyApi, UpsertedUser
5656
5757
client = TrophyApi(
5858
api_key="YOUR_API_KEY",
5959
)
6060
client.achievements.complete(
6161
key="finish-onboarding",
62-
user=EventRequestUser(
63-
id="18",
64-
email="jk.rowling@harrypotter.com",
65-
tz="Europe/London",
62+
user=UpsertedUser(
63+
id="user-id",
6664
),
6765
)
6866
"""
@@ -71,7 +69,7 @@ def complete(
7169
method="POST",
7270
json={
7371
"user": convert_and_respect_annotation_metadata(
74-
object_=user, annotation=EventRequestUser, direction="write"
72+
object_=user, annotation=UpsertedUser, direction="write"
7573
),
7674
},
7775
headers={
@@ -133,7 +131,7 @@ async def complete(
133131
self,
134132
key: str,
135133
*,
136-
user: EventRequestUser,
134+
user: UpsertedUser,
137135
request_options: typing.Optional[RequestOptions] = None,
138136
) -> AchievementCompletionResponse:
139137
"""
@@ -144,7 +142,7 @@ async def complete(
144142
key : str
145143
Unique reference of the achievement as set when created.
146144
147-
user : EventRequestUser
145+
user : UpsertedUser
148146
The user that completed the achievement.
149147
150148
request_options : typing.Optional[RequestOptions]
@@ -159,7 +157,7 @@ async def complete(
159157
--------
160158
import asyncio
161159
162-
from trophy import AsyncTrophyApi, EventRequestUser
160+
from trophy import AsyncTrophyApi, UpsertedUser
163161
164162
client = AsyncTrophyApi(
165163
api_key="YOUR_API_KEY",
@@ -169,10 +167,8 @@ async def complete(
169167
async def main() -> None:
170168
await client.achievements.complete(
171169
key="finish-onboarding",
172-
user=EventRequestUser(
173-
id="18",
174-
email="jk.rowling@harrypotter.com",
175-
tz="Europe/London",
170+
user=UpsertedUser(
171+
id="user-id",
176172
),
177173
)
178174
@@ -184,7 +180,7 @@ async def main() -> None:
184180
method="POST",
185181
json={
186182
"user": convert_and_respect_annotation_metadata(
187-
object_=user, annotation=EventRequestUser, direction="write"
183+
object_=user, annotation=UpsertedUser, direction="write"
188184
),
189185
},
190186
headers={

trophy/metrics/client.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import typing
44
from ..core.client_wrapper import SyncClientWrapper
5-
from ..types.event_request_user import EventRequestUser
5+
from ..types.upserted_user import UpsertedUser
66
from ..core.request_options import RequestOptions
77
from ..types.event_response import EventResponse
88
from ..core.jsonable_encoder import jsonable_encoder
@@ -28,7 +28,7 @@ def event(
2828
self,
2929
key: str,
3030
*,
31-
user: EventRequestUser,
31+
user: UpsertedUser,
3232
value: float,
3333
request_options: typing.Optional[RequestOptions] = None,
3434
) -> EventResponse:
@@ -40,7 +40,7 @@ def event(
4040
key : str
4141
Unique reference of the metric as set when created.
4242
43-
user : EventRequestUser
43+
user : UpsertedUser
4444
The user that triggered the event.
4545
4646
value : float
@@ -56,17 +56,17 @@ def event(
5656
5757
Examples
5858
--------
59-
from trophy import EventRequestUser, TrophyApi
59+
from trophy import TrophyApi, UpsertedUser
6060
6161
client = TrophyApi(
6262
api_key="YOUR_API_KEY",
6363
)
6464
client.metrics.event(
6565
key="words-written",
66-
user=EventRequestUser(
67-
id="18",
68-
email="jk.rowling@harrypotter.com",
66+
user=UpsertedUser(
67+
email="user@example.com",
6968
tz="Europe/London",
69+
id="18",
7070
),
7171
value=750.0,
7272
)
@@ -76,7 +76,7 @@ def event(
7676
method="POST",
7777
json={
7878
"user": convert_and_respect_annotation_metadata(
79-
object_=user, annotation=EventRequestUser, direction="write"
79+
object_=user, annotation=UpsertedUser, direction="write"
8080
),
8181
"value": value,
8282
},
@@ -139,7 +139,7 @@ async def event(
139139
self,
140140
key: str,
141141
*,
142-
user: EventRequestUser,
142+
user: UpsertedUser,
143143
value: float,
144144
request_options: typing.Optional[RequestOptions] = None,
145145
) -> EventResponse:
@@ -151,7 +151,7 @@ async def event(
151151
key : str
152152
Unique reference of the metric as set when created.
153153
154-
user : EventRequestUser
154+
user : UpsertedUser
155155
The user that triggered the event.
156156
157157
value : float
@@ -169,7 +169,7 @@ async def event(
169169
--------
170170
import asyncio
171171
172-
from trophy import AsyncTrophyApi, EventRequestUser
172+
from trophy import AsyncTrophyApi, UpsertedUser
173173
174174
client = AsyncTrophyApi(
175175
api_key="YOUR_API_KEY",
@@ -179,10 +179,10 @@ async def event(
179179
async def main() -> None:
180180
await client.metrics.event(
181181
key="words-written",
182-
user=EventRequestUser(
183-
id="18",
184-
email="jk.rowling@harrypotter.com",
182+
user=UpsertedUser(
183+
email="user@example.com",
185184
tz="Europe/London",
185+
id="18",
186186
),
187187
value=750.0,
188188
)
@@ -195,7 +195,7 @@ async def main() -> None:
195195
method="POST",
196196
json={
197197
"user": convert_and_respect_annotation_metadata(
198-
object_=user, annotation=EventRequestUser, direction="write"
198+
object_=user, annotation=UpsertedUser, direction="write"
199199
),
200200
"value": value,
201201
},

trophy/types/__init__.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,27 @@
33
from .achievement_completion_response import AchievementCompletionResponse
44
from .achievement_response import AchievementResponse
55
from .error_body import ErrorBody
6-
from .event_request_user import EventRequestUser
76
from .event_response import EventResponse
87
from .event_response_metrics_item import EventResponseMetricsItem
98
from .metric_response import MetricResponse
109
from .metric_status import MetricStatus
1110
from .streak_frequency import StreakFrequency
1211
from .streak_response import StreakResponse
12+
from .updated_user import UpdatedUser
13+
from .upserted_user import UpsertedUser
14+
from .user import User
1315

1416
__all__ = [
1517
"AchievementCompletionResponse",
1618
"AchievementResponse",
1719
"ErrorBody",
18-
"EventRequestUser",
1920
"EventResponse",
2021
"EventResponseMetricsItem",
2122
"MetricResponse",
2223
"MetricStatus",
2324
"StreakFrequency",
2425
"StreakResponse",
26+
"UpdatedUser",
27+
"UpsertedUser",
28+
"User",
2529
]

trophy/types/event_response.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import pydantic
77
import typing
88
from .event_response_metrics_item import EventResponseMetricsItem
9+
from .streak_response import StreakResponse
910
from ..core.pydantic_utilities import IS_PYDANTIC_V2
1011

1112

@@ -36,6 +37,13 @@ class EventResponse(UniversalBaseModel):
3637
Changes to achievements as a result of this event.
3738
"""
3839

40+
current_streak: typing_extensions.Annotated[
41+
typing.Optional[StreakResponse], FieldMetadata(alias="currentStreak")
42+
] = pydantic.Field(default=None)
43+
"""
44+
The user's current streak for the metric, if the metric has streaks enabled.
45+
"""
46+
3947
if IS_PYDANTIC_V2:
4048
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
4149
extra="allow", frozen=True

trophy/types/metric_response.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ class MetricResponse(UniversalBaseModel):
5555
A list of the metric's achievements and the user's progress towards each.
5656
"""
5757

58-
streak: typing.Optional[StreakResponse] = pydantic.Field(default=None)
58+
current_streak: typing_extensions.Annotated[
59+
typing.Optional[StreakResponse], FieldMetadata(alias="currentStreak")
60+
] = pydantic.Field(default=None)
5961
"""
6062
The user's current streak for the metric, if the metric has streaks enabled.
6163
"""
Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
# This file was auto-generated by Fern from our API Definition.
22

33
from ..core.pydantic_utilities import UniversalBaseModel
4-
import pydantic
54
import typing
5+
import pydantic
6+
import typing_extensions
7+
from ..core.serialization import FieldMetadata
68
from ..core.pydantic_utilities import IS_PYDANTIC_V2
79

810

9-
class EventRequestUser(UniversalBaseModel):
10-
"""
11-
The user that triggered the event.
12-
"""
13-
14-
id: str = pydantic.Field()
11+
class UpdatedUser(UniversalBaseModel):
1512
"""
16-
The ID of the user in your database. Must be a string.
13+
An object with editable user fields.
1714
"""
1815

1916
email: typing.Optional[str] = pydantic.Field(default=None)
2017
"""
21-
The user's email address.
18+
The user's email address. Required if subscribeToEmails is true.
2219
"""
2320

2421
name: typing.Optional[str] = pydantic.Field(default=None)
@@ -31,6 +28,13 @@ class EventRequestUser(UniversalBaseModel):
3128
The user's timezone (used for email scheduling).
3229
"""
3330

31+
subscribe_to_emails: typing_extensions.Annotated[
32+
typing.Optional[bool], FieldMetadata(alias="subscribeToEmails")
33+
] = pydantic.Field(default=None)
34+
"""
35+
Whether the user should receive Trophy-powered emails. Cannot be false if an email is provided.
36+
"""
37+
3438
if IS_PYDANTIC_V2:
3539
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
3640
extra="allow", frozen=True

trophy/types/upserted_user.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# This file was auto-generated by Fern from our API Definition.
2+
3+
from .updated_user import UpdatedUser
4+
import pydantic
5+
from ..core.pydantic_utilities import IS_PYDANTIC_V2
6+
import typing
7+
8+
9+
class UpsertedUser(UpdatedUser):
10+
"""
11+
An object with editable user fields.
12+
"""
13+
14+
id: str = pydantic.Field()
15+
"""
16+
The ID of the user in your database. Must be a string.
17+
"""
18+
19+
if IS_PYDANTIC_V2:
20+
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(
21+
extra="allow", frozen=True
22+
) # type: ignore # Pydantic v2
23+
else:
24+
25+
class Config:
26+
frozen = True
27+
smart_union = True
28+
extra = pydantic.Extra.allow

0 commit comments

Comments
 (0)