Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

python: Refactor models to use alias_generator #1678

Merged
merged 5 commits into from
Jan 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion python/mypy.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
[mypy]
strict = True
plugins = pydantic.mypy
4 changes: 2 additions & 2 deletions python/svix/models/aggregate_event_types_out.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

from .background_task_status import BackgroundTaskStatus
from .background_task_type import BackgroundTaskType
from .common import SvixBaseModel
from .common import BaseModel


class AggregateEventTypesOut(SvixBaseModel):
class AggregateEventTypesOut(BaseModel):
id: str

status: BackgroundTaskStatus
Expand Down
10 changes: 4 additions & 6 deletions python/svix/models/app_portal_access_in.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
# this file is @generated
import typing as t

from pydantic import Field

from .application_in import ApplicationIn
from .common import SvixBaseModel
from .common import BaseModel


class AppPortalAccessIn(SvixBaseModel):
class AppPortalAccessIn(BaseModel):
application: t.Optional[ApplicationIn] = None
"""Optionally creates a new application while generating the access link.

Expand All @@ -18,8 +16,8 @@ class AppPortalAccessIn(SvixBaseModel):

Valid values are between 1 hour and 7 days. The default is 7 days."""

feature_flags: t.Optional[t.List[str]] = Field(default=None, alias="featureFlags")
feature_flags: t.Optional[t.List[str]] = None
"""The set of feature flags the created token will have access to."""

read_only: t.Optional[bool] = Field(default=None, alias="readOnly")
read_only: t.Optional[bool] = None
"""Whether the app portal should be in read-only mode."""
4 changes: 2 additions & 2 deletions python/svix/models/app_portal_access_out.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# this file is @generated

from .common import SvixBaseModel
from .common import BaseModel


class AppPortalAccessOut(SvixBaseModel):
class AppPortalAccessOut(BaseModel):
token: str

url: str
8 changes: 3 additions & 5 deletions python/svix/models/app_usage_stats_in.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@
import typing as t
from datetime import datetime

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class AppUsageStatsIn(SvixBaseModel):
app_ids: t.Optional[t.List[str]] = Field(default=None, alias="appIds")
class AppUsageStatsIn(BaseModel):
app_ids: t.Optional[t.List[str]] = None
"""Specific app IDs or UIDs to aggregate stats for.

Note that if none of the given IDs or UIDs are resolved, a 422 response will be given."""
Expand Down
8 changes: 3 additions & 5 deletions python/svix/models/app_usage_stats_out.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
# this file is @generated
import typing as t

from pydantic import Field

from .background_task_status import BackgroundTaskStatus
from .background_task_type import BackgroundTaskType
from .common import SvixBaseModel
from .common import BaseModel


class AppUsageStatsOut(SvixBaseModel):
class AppUsageStatsOut(BaseModel):
id: str

status: BackgroundTaskStatus

task: BackgroundTaskType

unresolved_app_ids: t.List[str] = Field(alias="unresolvedAppIds")
unresolved_app_ids: t.List[str]
"""Any app IDs or UIDs received in the request that weren't found.

Stats will be produced for all the others."""
8 changes: 3 additions & 5 deletions python/svix/models/application_in.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
# this file is @generated
import typing as t

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class ApplicationIn(SvixBaseModel):
class ApplicationIn(BaseModel):
metadata: t.Optional[t.Dict[str, str]] = None

name: str

rate_limit: t.Optional[int] = Field(default=None, alias="rateLimit")
rate_limit: t.Optional[int] = None

uid: t.Optional[str] = None
"""Optional unique identifier for the application."""
12 changes: 5 additions & 7 deletions python/svix/models/application_out.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@
import typing as t
from datetime import datetime

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class ApplicationOut(SvixBaseModel):
created_at: datetime = Field(alias="createdAt")
class ApplicationOut(BaseModel):
created_at: datetime

id: str
"""The app's ID"""
Expand All @@ -17,9 +15,9 @@ class ApplicationOut(SvixBaseModel):

name: str

rate_limit: t.Optional[int] = Field(default=None, alias="rateLimit")
rate_limit: t.Optional[int] = None

uid: t.Optional[str] = None
"""The app's UID"""

updated_at: datetime = Field(alias="updatedAt")
updated_at: datetime
8 changes: 3 additions & 5 deletions python/svix/models/application_patch.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
# this file is @generated
import typing as t

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class ApplicationPatch(SvixBaseModel):
class ApplicationPatch(BaseModel):
metadata: t.Optional[t.Dict[str, str]] = None

name: t.Optional[str] = None

rate_limit: t.Optional[int] = Field(default=None, alias="rateLimit")
rate_limit: t.Optional[int] = None

uid: t.Optional[str] = None
"""The app's UID"""
4 changes: 2 additions & 2 deletions python/svix/models/application_token_expire_in.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# this file is @generated
import typing as t

from .common import SvixBaseModel
from .common import BaseModel


class ApplicationTokenExpireIn(SvixBaseModel):
class ApplicationTokenExpireIn(BaseModel):
expiry: t.Optional[int] = None
"""How many seconds until the old key is expired."""
8 changes: 4 additions & 4 deletions python/svix/models/background_task_out.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
# this file is @generated
import typing as t

from .background_task_data import BackgroundTaskData
from .background_task_status import BackgroundTaskStatus
from .background_task_type import BackgroundTaskType
from .common import SvixBaseModel
from .common import BaseModel


class BackgroundTaskOut(SvixBaseModel):
data: BackgroundTaskData
class BackgroundTaskOut(BaseModel):
data: t.Dict[str, t.Any]

id: str

Expand Down
8 changes: 5 additions & 3 deletions python/svix/models/common.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from pydantic import BaseModel, ConfigDict
import pydantic
from pydantic.alias_generators import to_camel


class SvixBaseModel(BaseModel):
model_config = ConfigDict(
class BaseModel(pydantic.BaseModel):
model_config = pydantic.ConfigDict(
alias_generator=to_camel,
populate_by_name=True,
json_encoders={set: lambda v: list(v)},
)
4 changes: 2 additions & 2 deletions python/svix/models/dashboard_access_out.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# this file is @generated

from .common import SvixBaseModel
from .common import BaseModel


class DashboardAccessOut(SvixBaseModel):
class DashboardAccessOut(BaseModel):
token: str

url: str
4 changes: 2 additions & 2 deletions python/svix/models/endpoint_headers_in.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# this file is @generated
import typing as t

from .common import SvixBaseModel
from .common import BaseModel


class EndpointHeadersIn(SvixBaseModel):
class EndpointHeadersIn(BaseModel):
headers: t.Dict[str, str]
4 changes: 2 additions & 2 deletions python/svix/models/endpoint_headers_out.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# this file is @generated
import typing as t

from .common import SvixBaseModel
from .common import BaseModel


class EndpointHeadersOut(SvixBaseModel):
class EndpointHeadersOut(BaseModel):
"""The value of the headers is returned in the `headers` field.

Sensitive headers that have been redacted are returned in the sensitive field."""
Expand Down
4 changes: 2 additions & 2 deletions python/svix/models/endpoint_headers_patch_in.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# this file is @generated
import typing as t

from .common import SvixBaseModel
from .common import BaseModel


class EndpointHeadersPatchIn(SvixBaseModel):
class EndpointHeadersPatchIn(BaseModel):
headers: t.Dict[str, str]
10 changes: 4 additions & 6 deletions python/svix/models/endpoint_in.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
# this file is @generated
import typing as t

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class EndpointIn(SvixBaseModel):
class EndpointIn(BaseModel):
channels: t.Optional[t.List[str]] = None
"""List of message channels this endpoint listens to (omit for all)."""

description: t.Optional[str] = None

disabled: t.Optional[bool] = None

filter_types: t.Optional[t.List[str]] = Field(default=None, alias="filterTypes")
filter_types: t.Optional[t.List[str]] = None

metadata: t.Optional[t.Dict[str, str]] = None

rate_limit: t.Optional[int] = Field(default=None, alias="rateLimit")
rate_limit: t.Optional[int] = None

secret: t.Optional[str] = None
"""The endpoint's verification secret.
Expand Down
12 changes: 5 additions & 7 deletions python/svix/models/endpoint_message_out.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,26 @@
import typing as t
from datetime import datetime

from pydantic import Field

from .common import SvixBaseModel
from .common import BaseModel
from .message_status import MessageStatus


class EndpointMessageOut(SvixBaseModel):
class EndpointMessageOut(BaseModel):
"""A model containing information on a given message plus additional fields on the last attempt for that message."""

channels: t.Optional[t.List[str]] = None
"""List of free-form identifiers that endpoints can filter by"""

event_id: t.Optional[str] = Field(default=None, alias="eventId")
event_id: t.Optional[str] = None
"""Optional unique identifier for the message"""

event_type: str = Field(alias="eventType")
event_type: str
"""The event type's name"""

id: str
"""The msg's ID"""

next_attempt: t.Optional[datetime] = Field(default=None, alias="nextAttempt")
next_attempt: t.Optional[datetime] = None

payload: t.Dict[str, t.Any]

Expand Down
14 changes: 6 additions & 8 deletions python/svix/models/endpoint_out.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,35 +2,33 @@
import typing as t
from datetime import datetime

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class EndpointOut(SvixBaseModel):
class EndpointOut(BaseModel):
channels: t.Optional[t.List[str]] = None
"""List of message channels this endpoint listens to (omit for all)."""

created_at: datetime = Field(alias="createdAt")
created_at: datetime

description: str
"""An example endpoint name."""

disabled: t.Optional[bool] = None

filter_types: t.Optional[t.List[str]] = Field(default=None, alias="filterTypes")
filter_types: t.Optional[t.List[str]] = None

id: str
"""The ep's ID"""

metadata: t.Dict[str, str]

rate_limit: t.Optional[int] = Field(default=None, alias="rateLimit")
rate_limit: t.Optional[int] = None

uid: t.Optional[str] = None
"""Optional unique identifier for the endpoint."""

updated_at: datetime = Field(alias="updatedAt")
updated_at: datetime

url: str

Expand Down
10 changes: 4 additions & 6 deletions python/svix/models/endpoint_patch.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,21 @@
# this file is @generated
import typing as t

from pydantic import Field
from .common import BaseModel

from .common import SvixBaseModel


class EndpointPatch(SvixBaseModel):
class EndpointPatch(BaseModel):
channels: t.Optional[t.List[str]] = None

description: t.Optional[str] = None

disabled: t.Optional[bool] = None

filter_types: t.Optional[t.List[str]] = Field(default=None, alias="filterTypes")
filter_types: t.Optional[t.List[str]] = None

metadata: t.Optional[t.Dict[str, str]] = None

rate_limit: t.Optional[int] = Field(default=None, alias="rateLimit")
rate_limit: t.Optional[int] = None

secret: t.Optional[str] = None
"""The endpoint's verification secret.
Expand Down
Loading