Merge pull request '1.2.0' (#2) from dev into latest
All checks were successful
Build And Publish Package / publish (push) Successful in 38s

Reviewed-on: #2
This commit is contained in:
2026-02-26 15:23:58 +03:00
3 changed files with 872 additions and 2971 deletions

View File

@ -1,6 +1,6 @@
[project]
name = "oxidetwitch"
version = "1.1.0"
version = "1.2.0"
description = "Client for Twitch API"
readme = "README.md"
authors = [{ name = "Miwory", email = "miwory.uwu@gmail.com" }]
@ -99,6 +99,3 @@ ignore-one-line-docstrings = true
quote-style = "single"
indent-style = "space"
docstring-code-format = true
[tool.uv.sources]
aiohttpx = { index = "Miwory" }

File diff suppressed because it is too large Load Diff

View File

@ -33,6 +33,14 @@ class Pagination(BaseSchema):
cursor: str
class BasePaginated(BaseSchema):
pagination: Pagination | dict[Any, Any] | None = None
class PaginatedSchema[T](BasePaginated):
data: list[T]
class AppAccessToken(BaseSchema):
access_token: str
expires_in: int
@ -100,9 +108,8 @@ class ExtensionAnalyticsData(BaseSchema):
date_range: DateRange
class ExtensionAnalytics(BaseSchema):
class ExtensionAnalytics(PaginatedSchema[ExtensionAnalyticsData]):
data: list[ExtensionAnalyticsData]
pagination: Pagination | dict[Any, Any] | None = None
class GameAnalyticsData(BaseSchema):
@ -112,9 +119,8 @@ class GameAnalyticsData(BaseSchema):
date_range: DateRange
class GameAnalytics(BaseSchema):
class GameAnalytics(PaginatedSchema[GameAnalyticsData]):
data: list[GameAnalyticsData]
pagination: Pagination | dict[Any, Any] | None = None
class BitsLeaderboardData(BaseSchema):
@ -213,9 +219,8 @@ class ExtensionTransactionsData(BaseSchema):
product_data: ExtensionProductData
class ExtensionTransactions(BaseSchema):
class ExtensionTransactions(PaginatedSchema[ExtensionTransactionsData]):
data: list[ExtensionTransactionsData]
pagination: Pagination | dict[Any, Any] | None = None
class ContentClassificationLabel(TypedDict):
@ -265,9 +270,8 @@ class FollowedChannel(BaseSchema):
followed_at: datetime
class FollowedChannels(BaseSchema):
class FollowedChannels(PaginatedSchema[FollowedChannel]):
data: list[FollowedChannel]
pagination: Pagination | dict[Any, Any] | None = None
total: int
@ -278,9 +282,8 @@ class ChannelFollower(BaseSchema):
followed_at: datetime
class ChannelFollowers(BaseSchema):
class ChannelFollowers(PaginatedSchema[ChannelFollower]):
data: list[ChannelFollower]
pagination: Pagination | dict[Any, Any] | None = None
total: int
@ -353,9 +356,8 @@ class CustomRewardRedemption(BaseSchema):
reward: CustomRewardRedemptionReward
class CustomRewardRedemptions(BaseSchema):
class CustomRewardRedemptions(PaginatedSchema[CustomRewardRedemption]):
data: list[CustomRewardRedemption]
pagination: Pagination | dict[Any, Any] | None = None
class CharityCampaignCurrentAmount(BaseSchema):
@ -402,9 +404,8 @@ class CharityDonation(BaseSchema):
amount: CharityDonationAmount
class CharityDonations(BaseSchema):
class CharityDonations(PaginatedSchema[CharityDonation]):
data: list[CharityDonation]
pagination: Pagination | dict[Any, Any] | None = None
class ChattersData(BaseSchema):
@ -413,9 +414,8 @@ class ChattersData(BaseSchema):
user_name: str
class Chatters(BaseSchema):
class Chatters(PaginatedSchema[ChattersData]):
data: list[ChattersData]
pagination: Pagination | dict[Any, Any] | None = None
total: int
@ -522,8 +522,8 @@ class SharedChatSession(BaseSchema):
data: list[SharedChatSessionData]
class UserEmotes(ChannelEmotes):
pagination: Pagination | dict[Any, Any] | None = None
class UserEmotes(PaginatedSchema[ChannelEmote], ChannelEmotes):
pass
class MessageDropReason(BaseSchema):
@ -572,9 +572,8 @@ class Clip(BaseSchema):
is_featured: bool
class Clips(BaseSchema):
class Clips(PaginatedSchema[Clip]):
data: list[Clip]
pagination: Pagination | dict[Any, Any] | None = None
class ClipDownload(BaseSchema):
@ -626,9 +625,8 @@ class ConduitShard(BaseSchema):
transport: ConduitShardTransportWebhook | ConduitShardTransportWebsocket
class ConduitShards(BaseSchema):
class ConduitShards(PaginatedSchema[ConduitShard]):
data: list[ConduitShard]
pagination: Pagination | dict[Any, Any] | None = None
class UpdateConduitShardTransportWebhook(TypedDict):
@ -688,9 +686,8 @@ class DropEntitlement(BaseSchema):
last_updated: datetime
class DropsEntitlements(BaseSchema):
class DropsEntitlements(PaginatedSchema[DropEntitlement]):
data: list[DropEntitlement]
pagination: Pagination | dict[Any, Any] | None = None
class UpdateDropsEntitlementsData(BaseSchema):
@ -723,9 +720,8 @@ class ExtensionLiveChannel(BaseSchema):
title: str
class ExtensionLiveChannels(BaseSchema):
class ExtensionLiveChannels(PaginatedSchema[ExtensionLiveChannel]):
data: list[ExtensionLiveChannel]
paginaiton: Pagination | dict[Any, Any] | None = None
class ExtensionSecret(BaseSchema):
@ -838,12 +834,11 @@ class ExtensionBitsProducts(BaseSchema):
data: list[ExtensionBitsProduct]
class EventsubBaseSubscriptions(BaseSchema):
class EventsubBaseSubscriptions(PaginatedSchema[sub.Any]):
data: list[sub.Any]
total: int
total_cost: int
max_total_cost: int
pagination: Pagination | dict[Any, Any] | None = None
class Game(BaseSchema):
@ -853,9 +848,8 @@ class Game(BaseSchema):
igdb_id: int | str
class Games(BaseSchema):
class Games(PaginatedSchema[Game]):
data: list[Game]
pagination: Pagination | dict[Any, Any] | None = None
class CreatorGoal(BaseSchema):
@ -971,9 +965,8 @@ class BannedUser(BaseSchema):
moderator_name: str
class BannedUsers(BaseSchema):
class BannedUsers(PaginatedSchema[BannedUser]):
data: list[BannedUser]
pagination: Pagination | dict[Any, Any] | None = None
class BanUserData(BaseSchema):
@ -1008,9 +1001,8 @@ class UnbanRequest(BaseSchema):
resolution_text: str | None
class UnbanRequests(BaseSchema):
class UnbanRequests(PaginatedSchema[UnbanRequest]):
data: list[UnbanRequest]
pagination: Pagination | dict[Any, Any] | None = None
class BlockedTerm(BaseSchema):
@ -1023,9 +1015,8 @@ class BlockedTerm(BaseSchema):
expires_at: datetime | None
class BlockedTerms(BaseSchema):
class BlockedTerms(PaginatedSchema[BlockedTerm]):
data: list[BlockedTerm]
pagination: Pagination | dict[Any, Any] | None = None
class ModeratedChannel(BaseSchema):
@ -1034,9 +1025,8 @@ class ModeratedChannel(BaseSchema):
broadcaster_name: str
class ModeratedChannels(BaseSchema):
class ModeratedChannels(PaginatedSchema[ModeratedChannel]):
data: list[ModeratedChannel]
pagination: Pagination | dict[Any, Any] | None = None
class Moderator(BaseSchema):
@ -1045,9 +1035,8 @@ class Moderator(BaseSchema):
user_name: str
class Moderators(BaseSchema):
class Moderators(PaginatedSchema[Moderator]):
data: list[Moderator]
pagination: Pagination | dict[Any, Any] | None = None
class VIP(BaseSchema):
@ -1056,9 +1045,8 @@ class VIP(BaseSchema):
user_name: str
class VIPs(BaseSchema):
class VIPs(PaginatedSchema[VIP]):
data: list[VIP]
pagination: Pagination | dict[Any, Any] | None = None
class ShieldModeStatusData(BaseSchema):
@ -1108,9 +1096,8 @@ class Poll(BaseSchema):
ended_at: datetime | None
class Polls(BaseSchema):
class Polls(PaginatedSchema[Poll]):
data: list[Poll]
pagination: Pagination | dict[Any, Any] | None = None
class PredictionTopPredictor(BaseSchema):
@ -1145,9 +1132,8 @@ class Prediction(BaseSchema):
locked_at: datetime | None
class Predictions(BaseSchema):
class Predictions(PaginatedSchema[Prediction]):
data: list[Prediction]
pagination: Pagination | dict[Any, Any] | None = None
class Raid(BaseSchema):
@ -1187,9 +1173,8 @@ class Schedule(BaseSchema):
segments: list[ScheduleSegment]
class Schedules(BaseSchema):
class Schedules(PaginatedSchema[Schedule]):
data: list[Schedule]
pagination: Pagination | dict[Any, Any] | None = None
class Category(BaseSchema):
@ -1198,9 +1183,8 @@ class Category(BaseSchema):
box_art_url: str
class Categories(BaseSchema):
class Categories(PaginatedSchema[Category]):
data: list[Category]
pagination: Pagination | dict[Any, Any] | None = None
class Channel(BaseSchema):
@ -1217,9 +1201,8 @@ class Channel(BaseSchema):
started_at: datetime | None
class Channels(BaseSchema):
class Channels(PaginatedSchema[Channel]):
data: list[Channel]
pagination: Pagination | dict[Any, Any] | None = None
class StreamKey(BaseSchema):
@ -1248,9 +1231,8 @@ class Stream(BaseSchema):
is_mature: bool
class Streams(BaseSchema):
class Streams(PaginatedSchema[Stream]):
data: list[Stream]
pagination: Pagination | dict[Any, Any] | None = None
class BaseStreamMarker(BaseSchema):
@ -1280,9 +1262,8 @@ class StreamMarkersData(BaseSchema):
videos: list[StreamMarkerVideo]
class StreamMarkers(BaseSchema):
class StreamMarkers(PaginatedSchema[StreamMarkersData]):
data: list[StreamMarkersData]
pagination: Pagination | dict[Any, Any] | None = None
class Subscription(BaseSchema):
@ -1303,9 +1284,8 @@ class BroadcasterSubscription(Subscription):
user_name: str
class BroadcasterSubscriptions(BaseSchema):
class BroadcasterSubscriptions(PaginatedSchema[BroadcasterSubscription]):
data: list[BroadcasterSubscription]
pagination: Pagination | dict[Any, Any] | None = None
total: int
points: int
@ -1391,9 +1371,8 @@ class UserBlock(BaseSchema):
display_name: str
class UserBlockList(BaseSchema):
class UserBlockList(PaginatedSchema[UserBlock]):
data: list[UserBlock]
pagination: Pagination | dict[Any, Any] | None = None
class UserExtension(BaseSchema):
@ -1480,9 +1459,8 @@ class Video(BaseSchema):
muted_segments: list[VideoMutedSegment]
class Videos(BaseSchema):
class Videos(PaginatedSchema[Video]):
data: list[Video]
pagination: Pagination | dict[Any, Any] | None
class DeleteVideos(BaseSchema):