anilibria-api-client 0.1.6__py3-none-any.whl → 0.1.8__py3-none-any.whl

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.
@@ -1,218 +1,226 @@
1
- from typing import Dict, Any
2
- from ..types import AgeRating, SortType, ContentType, Seasons, PublishStatusesType, ProductionStatusesType
3
- from ..models import ReleaseCollection, Release
4
-
5
- async def validate_filters(params: Release) -> Dict[str, Any]:
6
- """
7
- Валидация параметров фильтров в формате f["название_переменной"]
8
-
9
- Args:
10
- filters: Словарь с параметрами фильтров
11
- """
12
- filters = {
13
- "genres": params.genres,
14
- "types": params.types,
15
- "seasons": params.seasons,
16
- "from_year": params.from_year,
17
- "to_year": params.to_year,
18
- "search": params.search,
19
- "sorting": params.sorting,
20
- "age_ratings": params.age_ratings,
21
- "publish_statuses": params.publish_statuses,
22
- "production_statuses": params.production_statuses
23
- }
24
- validated_filters = {}
25
-
26
- # Валидация genres
27
- if "genres" in filters and filters["genres"] is not None:
28
- if not isinstance(filters["genres"], str):
29
- raise ValueError("genres должен быть строкой")
30
- validated_filters["f[genres]"] = filters["genres"]
31
-
32
- # Валидация types (список ContentType)
33
- if "types" in filters and filters["types"] is not None:
34
- if not isinstance(filters["types"], list) or not all(isinstance(t, ContentType) for t in filters["types"]):
35
- raise ValueError("types должен быть списком ContentType")
36
- validated_filters["f[types]"] = [t.value for t in filters["types"]]
37
-
38
- # Валидация seasons (список Seasons)
39
- if "seasons" in filters and filters["seasons"] is not None:
40
- if not isinstance(filters["seasons"], list) or not all(isinstance(s, Seasons) for s in filters["seasons"]):
41
- raise ValueError("seasons должен быть списком Seasons")
42
- validated_filters["f[seasons]"] = [s.value for s in filters["seasons"]]
43
-
44
- # Валидация from_year
45
- if "from_year" in filters and filters["from_year"] is not None:
46
- if not isinstance(filters["from_year"], int) or filters["from_year"] < 1900:
47
- raise ValueError("from_year должен быть целым числом не менее 1900")
48
- validated_filters["f[from_year]"] = filters["from_year"]
49
-
50
- # Валидация to_year
51
- if "to_year" in filters and filters["to_year"] is not None:
52
- if not isinstance(filters["to_year"], int) or filters["to_year"] < 1900:
53
- raise ValueError("to_year должен быть целым числом не менее 1900")
54
- validated_filters["f[to_year]"] = filters["to_year"]
55
-
56
- # Валидация search
57
- if "search" in filters and filters["search"] is not None:
58
- if not isinstance(filters["search"], str):
59
- raise ValueError("search должен быть строкой")
60
- validated_filters["f[search]"] = filters["search"]
61
-
62
- # Валидация sorting
63
- if "sorting" in filters and filters["sorting"] is not None:
64
- if not isinstance(filters["sorting"], SortType):
65
- raise ValueError("sorting должен быть экземпляром SortType")
66
- validated_filters["f[sorting]"] = filters["sorting"].value
67
-
68
- # Валидация age_ratings (список AgeRating)
69
- if "age_ratings" in filters and filters["age_ratings"] is not None:
70
- if not isinstance(filters["age_ratings"], list) or not all(isinstance(a, AgeRating) for a in filters["age_ratings"]):
71
- raise ValueError("age_ratings должен быть списком AgeRating")
72
- validated_filters["f[age_ratings]"] = [a.value for a in filters["age_ratings"]]
73
-
74
- # Валидация publish_statuses (список PublishStatusesType)
75
- if "publish_statuses" in filters and filters["publish_statuses"] is not None:
76
- if not isinstance(filters["publish_statuses"], list) or not all(isinstance(p, PublishStatusesType) for p in filters["publish_statuses"]):
77
- raise ValueError("publish_statuses должен быть списком PublishStatusesType")
78
- validated_filters["f[publish_statuses]"] = [p.value for p in filters["publish_statuses"]]
79
-
80
- # Валидация production_statuses (список ProductionStatusesType)
81
- if "production_statuses" in filters and filters["production_statuses"] is not None:
82
- if not isinstance(filters["production_statuses"], list) or not all(isinstance(p, ProductionStatusesType) for p in filters["production_statuses"]):
83
- raise ValueError("production_statuses должен быть списком ProductionStatusesType")
84
- validated_filters["f[production_statuses]"] = [p.value for p in filters["production_statuses"]]
85
-
86
- return validated_filters
87
-
88
- async def create_filters_from_release(release: Release) -> Dict[str, Any]:
89
- """
90
- Создает фильтры в формате API из объекта Release
91
-
92
- Args:
93
- release: Объект Release с параметрами фильтрации
94
- """
95
- filters = {}
96
-
97
- # genres
98
- if release.genres is not None:
99
- filters["genres"] = release.genres
100
-
101
- # types
102
- if release.types is not None:
103
- filters["types"] = [t.value for t in release.types]
104
-
105
- # seasons
106
- if release.seasons is not None:
107
- filters["seasons"] = [s.value for s in release.seasons]
108
-
109
- # years (объединяем from_year и to_year)
110
- if release.from_year is not None or release.to_year is not None:
111
- years = {}
112
- if release.from_year is not None:
113
- years["from_year"] = release.from_year
114
- if release.to_year is not None:
115
- years["to_year"] = release.to_year
116
- filters["years"] = years
117
-
118
- # search
119
- if release.search is not None:
120
- filters["search"] = release.search
121
-
122
- # sorting
123
- if release.sorting is not None and release.sorting:
124
- filters["sorting"] = release.sorting.value
125
-
126
- # age_ratings
127
- if release.age_ratings is not None:
128
- filters["age_ratings"] = [a.value for a in release.age_ratings]
129
-
130
- # publish_statuses
131
- if release.publish_statuses is not None:
132
- filters["publish_statuses"] = [p.value for p in release.publish_statuses]
133
-
134
- # production_statuses
135
- if release.production_statuses is not None:
136
- filters["production_statuses"] = [p.value for p in release.production_statuses]
137
-
138
- return {"f": filters}
139
-
140
- async def validate_collection(params: ReleaseCollection) -> Dict[str, Any]:
141
- """
142
- Валидация параметров фильтров для ReleaseCollection в формате f["название_переменной"]
143
-
144
- Args:
145
- params: Объект ReleaseCollection с параметрами фильтрации
146
- """
147
- filters = {
148
- "genres": params.genres,
149
- "types": params.types,
150
- "years": params.years,
151
- "search": params.search,
152
- "age_ratings": params.age_ratings
153
- }
154
- validated_filters = {}
155
-
156
- # Валидация genres
157
- if "genres" in filters and filters["genres"] is not None:
158
- if not isinstance(filters["genres"], str):
159
- raise ValueError("genres должен быть строкой")
160
- validated_filters["f[genres]"] = filters["genres"]
161
-
162
- # Валидация types (список ContentType)
163
- if "types" in filters and filters["types"] is not None:
164
- if not isinstance(filters["types"], list) or not all(isinstance(t, ContentType) for t in filters["types"]):
165
- raise ValueError("types должен быть списком ContentType")
166
- validated_filters["f[types]"] = [t.value for t in filters["types"]]
167
-
168
- # Валидация years
169
- if "years" in filters and filters["years"] is not None:
170
- if not isinstance(filters["years"], str):
171
- raise ValueError("years должен быть строкой")
172
- validated_filters["f[years]"] = filters["years"]
173
-
174
- # Валидация search
175
- if "search" in filters and filters["search"] is not None:
176
- if not isinstance(filters["search"], str):
177
- raise ValueError("search должен быть строкой")
178
- validated_filters["f[search]"] = filters["search"]
179
-
180
- # Валидация age_ratings (список AgeRating)
181
- if "age_ratings" in filters and filters["age_ratings"] is not None:
182
- if not isinstance(filters["age_ratings"], list) or not all(isinstance(a, AgeRating) for a in filters["age_ratings"]):
183
- raise ValueError("age_ratings должен быть списком AgeRating")
184
- validated_filters["f[age_ratings]"] = [a.value for a in filters["age_ratings"]]
185
-
186
- return validated_filters
187
-
188
-
189
- async def validated_json_collection(release: ReleaseCollection) -> Dict[str, Any]:
190
- """
191
- Создает фильтры в формате API из объекта ReleaseCollection
192
-
193
- Args:
194
- release: Объект ReleaseCollection с параметрами фильтрации
195
- """
196
- filters = {}
197
-
198
- # genres
199
- if release.genres is not None:
200
- filters["genres"] = release.genres
201
-
202
- # types
203
- if release.types is not None:
204
- filters["types"] = [t.value for t in release.types]
205
-
206
- # years
207
- if release.years is not None:
208
- filters["years"] = release.years
209
-
210
- # search
211
- if release.search is not None:
212
- filters["search"] = release.search
213
-
214
- # age_ratings
215
- if release.age_ratings is not None:
216
- filters["age_ratings"] = [a.value for a in release.age_ratings]
217
-
1
+ from typing import Dict, Any
2
+ from ..types import (
3
+ AgeRating,
4
+ SortType,
5
+ ContentType,
6
+ Seasons,
7
+ PublishStatusesType,
8
+ ProductionStatusesType
9
+ )
10
+ from ..models import ReleaseCollection, Release
11
+
12
+
13
+ async def validate_filters(params: Release) -> Dict[str, Any]:
14
+ """
15
+ Валидация параметров фильтров в формате f["название_переменной"]
16
+
17
+ Args:
18
+ filters: Словарь с параметрами фильтров
19
+ """
20
+ filters = {
21
+ "genres": params.genres,
22
+ "types": params.types,
23
+ "seasons": params.seasons,
24
+ "from_year": params.from_year,
25
+ "to_year": params.to_year,
26
+ "search": params.search,
27
+ "sorting": params.sorting,
28
+ "age_ratings": params.age_ratings,
29
+ "publish_statuses": params.publish_statuses,
30
+ "production_statuses": params.production_statuses
31
+ }
32
+ validated_filters = {}
33
+
34
+ # Валидация genres
35
+ if "genres" in filters and filters["genres"] is not None:
36
+ if not isinstance(filters["genres"], str):
37
+ raise ValueError("genres должен быть строкой")
38
+ validated_filters["f[genres]"] = filters["genres"]
39
+
40
+ # Валидация types (список ContentType)
41
+ if "types" in filters and filters["types"] is not None:
42
+ if not isinstance(filters["types"], list) or not all(isinstance(t, ContentType) for t in filters["types"]):
43
+ raise ValueError("types должен быть списком ContentType")
44
+ validated_filters["f[types]"] = [t.value for t in filters["types"]]
45
+
46
+ # Валидация seasons (список Seasons)
47
+ if "seasons" in filters and filters["seasons"] is not None:
48
+ if not isinstance(filters["seasons"], list) or not all(isinstance(s, Seasons) for s in filters["seasons"]):
49
+ raise ValueError("seasons должен быть списком Seasons")
50
+ validated_filters["f[seasons]"] = [s.value for s in filters["seasons"]]
51
+
52
+ # Валидация from_year
53
+ if "from_year" in filters and filters["from_year"] is not None:
54
+ if not isinstance(filters["from_year"], int) or filters["from_year"] < 1900:
55
+ raise ValueError("from_year должен быть целым числом не менее 1900")
56
+ validated_filters["f[from_year]"] = filters["from_year"]
57
+
58
+ # Валидация to_year
59
+ if "to_year" in filters and filters["to_year"] is not None:
60
+ if not isinstance(filters["to_year"], int) or filters["to_year"] < 1900:
61
+ raise ValueError("to_year должен быть целым числом не менее 1900")
62
+ validated_filters["f[to_year]"] = filters["to_year"]
63
+
64
+ # Валидация search
65
+ if "search" in filters and filters["search"] is not None:
66
+ if not isinstance(filters["search"], str):
67
+ raise ValueError("search должен быть строкой")
68
+ validated_filters["f[search]"] = filters["search"]
69
+
70
+ # Валидация sorting
71
+ if "sorting" in filters and filters["sorting"] is not None:
72
+ if not isinstance(filters["sorting"], SortType):
73
+ raise ValueError("sorting должен быть экземпляром SortType")
74
+ validated_filters["f[sorting]"] = filters["sorting"].value
75
+
76
+ # Валидация age_ratings (список AgeRating)
77
+ if "age_ratings" in filters and filters["age_ratings"] is not None:
78
+ if not isinstance(filters["age_ratings"], list) or not all(isinstance(a, AgeRating) for a in filters["age_ratings"]):
79
+ raise ValueError("age_ratings должен быть списком AgeRating")
80
+ validated_filters["f[age_ratings]"] = [a.value for a in filters["age_ratings"]]
81
+
82
+ # Валидация publish_statuses (список PublishStatusesType)
83
+ if "publish_statuses" in filters and filters["publish_statuses"] is not None:
84
+ if not isinstance(filters["publish_statuses"], list) or not all(isinstance(p, PublishStatusesType) for p in filters["publish_statuses"]):
85
+ raise ValueError("publish_statuses должен быть списком PublishStatusesType")
86
+ validated_filters["f[publish_statuses]"] = [p.value for p in filters["publish_statuses"]]
87
+
88
+ # Валидация production_statuses (список ProductionStatusesType)
89
+ if "production_statuses" in filters and filters["production_statuses"] is not None:
90
+ if not isinstance(filters["production_statuses"], list) or not all(isinstance(p, ProductionStatusesType) for p in filters["production_statuses"]):
91
+ raise ValueError("production_statuses должен быть списком ProductionStatusesType")
92
+ validated_filters["f[production_statuses]"] = [p.value for p in filters["production_statuses"]]
93
+
94
+ return validated_filters
95
+
96
+ async def create_filters_from_release(release: Release) -> Dict[str, Any]:
97
+ """
98
+ Создает фильтры в формате API из объекта Release
99
+
100
+ Args:
101
+ release: Объект Release с параметрами фильтрации
102
+ """
103
+ filters = {}
104
+
105
+ # genres
106
+ if release.genres is not None:
107
+ filters["genres"] = release.genres
108
+
109
+ # types
110
+ if release.types is not None:
111
+ filters["types"] = [t.value for t in release.types]
112
+
113
+ # seasons
114
+ if release.seasons is not None:
115
+ filters["seasons"] = [s.value for s in release.seasons]
116
+
117
+ # years (объединяем from_year и to_year)
118
+ if release.from_year is not None or release.to_year is not None:
119
+ years = {}
120
+ if release.from_year is not None:
121
+ years["from_year"] = release.from_year
122
+ if release.to_year is not None:
123
+ years["to_year"] = release.to_year
124
+ filters["years"] = years
125
+
126
+ # search
127
+ if release.search is not None:
128
+ filters["search"] = release.search
129
+
130
+ # sorting
131
+ if release.sorting is not None and release.sorting:
132
+ filters["sorting"] = release.sorting.value
133
+
134
+ # age_ratings
135
+ if release.age_ratings is not None:
136
+ filters["age_ratings"] = [a.value for a in release.age_ratings]
137
+
138
+ # publish_statuses
139
+ if release.publish_statuses is not None:
140
+ filters["publish_statuses"] = [p.value for p in release.publish_statuses]
141
+
142
+ # production_statuses
143
+ if release.production_statuses is not None:
144
+ filters["production_statuses"] = [p.value for p in release.production_statuses]
145
+
146
+ return {"f": filters}
147
+
148
+ async def validate_collection(params: ReleaseCollection) -> Dict[str, Any]:
149
+ """
150
+ Валидация параметров фильтров для ReleaseCollection в формате f["название_переменной"]
151
+
152
+ Args:
153
+ params: Объект ReleaseCollection с параметрами фильтрации
154
+ """
155
+ filters = {
156
+ "genres": params.genres,
157
+ "types": params.types,
158
+ "years": params.years,
159
+ "search": params.search,
160
+ "age_ratings": params.age_ratings
161
+ }
162
+ validated_filters = {}
163
+
164
+ # Валидация genres
165
+ if "genres" in filters and filters["genres"] is not None:
166
+ if not isinstance(filters["genres"], str):
167
+ raise ValueError("genres должен быть строкой")
168
+ validated_filters["f[genres]"] = filters["genres"]
169
+
170
+ # Валидация types (список ContentType)
171
+ if "types" in filters and filters["types"] is not None:
172
+ if not isinstance(filters["types"], list) or not all(isinstance(t, ContentType) for t in filters["types"]):
173
+ raise ValueError("types должен быть списком ContentType")
174
+ validated_filters["f[types]"] = [t.value for t in filters["types"]]
175
+
176
+ # Валидация years
177
+ if "years" in filters and filters["years"] is not None:
178
+ if not isinstance(filters["years"], str):
179
+ raise ValueError("years должен быть строкой")
180
+ validated_filters["f[years]"] = filters["years"]
181
+
182
+ # Валидация search
183
+ if "search" in filters and filters["search"] is not None:
184
+ if not isinstance(filters["search"], str):
185
+ raise ValueError("search должен быть строкой")
186
+ validated_filters["f[search]"] = filters["search"]
187
+
188
+ # Валидация age_ratings (список AgeRating)
189
+ if "age_ratings" in filters and filters["age_ratings"] is not None:
190
+ if not isinstance(filters["age_ratings"], list) or not all(isinstance(a, AgeRating) for a in filters["age_ratings"]):
191
+ raise ValueError("age_ratings должен быть списком AgeRating")
192
+ validated_filters["f[age_ratings]"] = [a.value for a in filters["age_ratings"]]
193
+
194
+ return validated_filters
195
+
196
+
197
+ async def validated_json_collection(release: ReleaseCollection) -> Dict[str, Any]:
198
+ """
199
+ Создает фильтры в формате API из объекта ReleaseCollection
200
+
201
+ Args:
202
+ release: Объект ReleaseCollection с параметрами фильтрации
203
+ """
204
+ filters = {}
205
+
206
+ # genres
207
+ if release.genres is not None:
208
+ filters["genres"] = release.genres
209
+
210
+ # types
211
+ if release.types is not None:
212
+ filters["types"] = [t.value for t in release.types]
213
+
214
+ # years
215
+ if release.years is not None:
216
+ filters["years"] = release.years
217
+
218
+ # search
219
+ if release.search is not None:
220
+ filters["search"] = release.search
221
+
222
+ # age_ratings
223
+ if release.age_ratings is not None:
224
+ filters["age_ratings"] = [a.value for a in release.age_ratings]
225
+
218
226
  return {"f": filters}
@@ -1,10 +1,10 @@
1
- from typing import TYPE_CHECKING
2
-
3
-
4
- if TYPE_CHECKING:
5
- from ..api_client import AsyncAnilibriaAPI
6
-
7
- class BaseMethod:
8
- def __init__(self, api: 'AsyncAnilibriaAPI'):
9
- self._api = api
1
+ from typing import TYPE_CHECKING
2
+
3
+
4
+ if TYPE_CHECKING:
5
+ from ..api_client import AsyncAnilibriaAPI
6
+
7
+ class BaseMethod:
8
+ def __init__(self, api: 'AsyncAnilibriaAPI'):
9
+ self._api = api
10
10