studyfetch-sdk 0.1.0a3__py3-none-any.whl → 0.1.0a4__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.
- studyfetch_sdk/_version.py +1 -1
- studyfetch_sdk/resources/v1/chat/chat.py +7 -7
- studyfetch_sdk/resources/v1/components.py +9 -8
- studyfetch_sdk/resources/v1/flashcards.py +16 -16
- studyfetch_sdk/types/v1/chat_send_message_params.py +3 -3
- studyfetch_sdk/types/v1/component_create_params.py +295 -3
- studyfetch_sdk/types/v1/component_create_response.py +3 -1
- studyfetch_sdk/types/v1/component_embed_params.py +3 -2
- studyfetch_sdk/types/v1/component_list_response.py +3 -1
- studyfetch_sdk/types/v1/component_retrieve_response.py +3 -1
- studyfetch_sdk/types/v1/component_update_response.py +3 -1
- studyfetch_sdk/types/v1/flashcard_get_all_params.py +2 -2
- studyfetch_sdk/types/v1/flashcard_get_due_params.py +1 -1
- studyfetch_sdk/types/v1/flashcard_get_stats_params.py +2 -2
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a4.dist-info}/METADATA +1 -1
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a4.dist-info}/RECORD +18 -18
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a4.dist-info}/WHEEL +0 -0
- {studyfetch_sdk-0.1.0a3.dist-info → studyfetch_sdk-0.1.0a4.dist-info}/licenses/LICENSE +0 -0
studyfetch_sdk/_version.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from typing import Iterable
|
5
|
+
from typing import List, Iterable
|
6
6
|
|
7
7
|
import httpx
|
8
8
|
|
@@ -148,7 +148,7 @@ class ChatResource(SyncAPIResource):
|
|
148
148
|
message: chat_send_message_params.Message,
|
149
149
|
x_component_id: str,
|
150
150
|
context: object | NotGiven = NOT_GIVEN,
|
151
|
-
|
151
|
+
group_ids: List[str] | NotGiven = NOT_GIVEN,
|
152
152
|
session_id: str | NotGiven = NOT_GIVEN,
|
153
153
|
user_id: str | NotGiven = NOT_GIVEN,
|
154
154
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -166,7 +166,7 @@ class ChatResource(SyncAPIResource):
|
|
166
166
|
|
167
167
|
context: Additional context data
|
168
168
|
|
169
|
-
|
169
|
+
group_ids: Group IDs for collaboration
|
170
170
|
|
171
171
|
session_id: Session ID for conversation continuity
|
172
172
|
|
@@ -189,7 +189,7 @@ class ChatResource(SyncAPIResource):
|
|
189
189
|
"component_id": component_id,
|
190
190
|
"message": message,
|
191
191
|
"context": context,
|
192
|
-
"
|
192
|
+
"group_ids": group_ids,
|
193
193
|
"session_id": session_id,
|
194
194
|
"user_id": user_id,
|
195
195
|
},
|
@@ -360,7 +360,7 @@ class AsyncChatResource(AsyncAPIResource):
|
|
360
360
|
message: chat_send_message_params.Message,
|
361
361
|
x_component_id: str,
|
362
362
|
context: object | NotGiven = NOT_GIVEN,
|
363
|
-
|
363
|
+
group_ids: List[str] | NotGiven = NOT_GIVEN,
|
364
364
|
session_id: str | NotGiven = NOT_GIVEN,
|
365
365
|
user_id: str | NotGiven = NOT_GIVEN,
|
366
366
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -378,7 +378,7 @@ class AsyncChatResource(AsyncAPIResource):
|
|
378
378
|
|
379
379
|
context: Additional context data
|
380
380
|
|
381
|
-
|
381
|
+
group_ids: Group IDs for collaboration
|
382
382
|
|
383
383
|
session_id: Session ID for conversation continuity
|
384
384
|
|
@@ -401,7 +401,7 @@ class AsyncChatResource(AsyncAPIResource):
|
|
401
401
|
"component_id": component_id,
|
402
402
|
"message": message,
|
403
403
|
"context": context,
|
404
|
-
"
|
404
|
+
"group_ids": group_ids,
|
405
405
|
"session_id": session_id,
|
406
406
|
"user_id": user_id,
|
407
407
|
},
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
+
from typing import List
|
5
6
|
from typing_extensions import Literal
|
6
7
|
|
7
8
|
import httpx
|
@@ -50,7 +51,7 @@ class ComponentsResource(SyncAPIResource):
|
|
50
51
|
def create(
|
51
52
|
self,
|
52
53
|
*,
|
53
|
-
config:
|
54
|
+
config: component_create_params.Config,
|
54
55
|
name: str,
|
55
56
|
origin: Literal["chat", "classroom", "upload", "console", "api"],
|
56
57
|
type: Literal[
|
@@ -322,7 +323,7 @@ class ComponentsResource(SyncAPIResource):
|
|
322
323
|
*,
|
323
324
|
expiry_hours: float | NotGiven = NOT_GIVEN,
|
324
325
|
features: component_embed_params.Features | NotGiven = NOT_GIVEN,
|
325
|
-
|
326
|
+
group_ids: List[str] | NotGiven = NOT_GIVEN,
|
326
327
|
height: str | NotGiven = NOT_GIVEN,
|
327
328
|
session_id: str | NotGiven = NOT_GIVEN,
|
328
329
|
theme: component_embed_params.Theme | NotGiven = NOT_GIVEN,
|
@@ -343,7 +344,7 @@ class ComponentsResource(SyncAPIResource):
|
|
343
344
|
|
344
345
|
features: Feature toggles
|
345
346
|
|
346
|
-
|
347
|
+
group_ids: Group IDs for collaboration
|
347
348
|
|
348
349
|
height: Embed height (e.g., "400px", "100vh")
|
349
350
|
|
@@ -371,7 +372,7 @@ class ComponentsResource(SyncAPIResource):
|
|
371
372
|
{
|
372
373
|
"expiry_hours": expiry_hours,
|
373
374
|
"features": features,
|
374
|
-
"
|
375
|
+
"group_ids": group_ids,
|
375
376
|
"height": height,
|
376
377
|
"session_id": session_id,
|
377
378
|
"theme": theme,
|
@@ -442,7 +443,7 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
442
443
|
async def create(
|
443
444
|
self,
|
444
445
|
*,
|
445
|
-
config:
|
446
|
+
config: component_create_params.Config,
|
446
447
|
name: str,
|
447
448
|
origin: Literal["chat", "classroom", "upload", "console", "api"],
|
448
449
|
type: Literal[
|
@@ -714,7 +715,7 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
714
715
|
*,
|
715
716
|
expiry_hours: float | NotGiven = NOT_GIVEN,
|
716
717
|
features: component_embed_params.Features | NotGiven = NOT_GIVEN,
|
717
|
-
|
718
|
+
group_ids: List[str] | NotGiven = NOT_GIVEN,
|
718
719
|
height: str | NotGiven = NOT_GIVEN,
|
719
720
|
session_id: str | NotGiven = NOT_GIVEN,
|
720
721
|
theme: component_embed_params.Theme | NotGiven = NOT_GIVEN,
|
@@ -735,7 +736,7 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
735
736
|
|
736
737
|
features: Feature toggles
|
737
738
|
|
738
|
-
|
739
|
+
group_ids: Group IDs for collaboration
|
739
740
|
|
740
741
|
height: Embed height (e.g., "400px", "100vh")
|
741
742
|
|
@@ -763,7 +764,7 @@ class AsyncComponentsResource(AsyncAPIResource):
|
|
763
764
|
{
|
764
765
|
"expiry_hours": expiry_hours,
|
765
766
|
"features": features,
|
766
|
-
"
|
767
|
+
"group_ids": group_ids,
|
767
768
|
"height": height,
|
768
769
|
"session_id": session_id,
|
769
770
|
"theme": theme,
|
@@ -122,7 +122,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
122
122
|
self,
|
123
123
|
component_id: str,
|
124
124
|
*,
|
125
|
-
|
125
|
+
group_ids: str | NotGiven = NOT_GIVEN,
|
126
126
|
limit: float | NotGiven = NOT_GIVEN,
|
127
127
|
offset: float | NotGiven = NOT_GIVEN,
|
128
128
|
user_id: str | NotGiven = NOT_GIVEN,
|
@@ -137,7 +137,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
137
137
|
Get all flashcards for component
|
138
138
|
|
139
139
|
Args:
|
140
|
-
|
140
|
+
group_ids: Group IDs (comma-separated)
|
141
141
|
|
142
142
|
limit: Max number of cards
|
143
143
|
|
@@ -165,7 +165,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
165
165
|
timeout=timeout,
|
166
166
|
query=maybe_transform(
|
167
167
|
{
|
168
|
-
"
|
168
|
+
"group_ids": group_ids,
|
169
169
|
"limit": limit,
|
170
170
|
"offset": offset,
|
171
171
|
"user_id": user_id,
|
@@ -180,7 +180,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
180
180
|
self,
|
181
181
|
component_id: str,
|
182
182
|
*,
|
183
|
-
|
183
|
+
group_ids: str,
|
184
184
|
limit: float | NotGiven = NOT_GIVEN,
|
185
185
|
user_id: str | NotGiven = NOT_GIVEN,
|
186
186
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -218,7 +218,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
218
218
|
timeout=timeout,
|
219
219
|
query=maybe_transform(
|
220
220
|
{
|
221
|
-
"
|
221
|
+
"group_ids": group_ids,
|
222
222
|
"limit": limit,
|
223
223
|
"user_id": user_id,
|
224
224
|
},
|
@@ -232,7 +232,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
232
232
|
self,
|
233
233
|
component_id: str,
|
234
234
|
*,
|
235
|
-
|
235
|
+
group_ids: str | NotGiven = NOT_GIVEN,
|
236
236
|
user_id: str | NotGiven = NOT_GIVEN,
|
237
237
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
238
238
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
@@ -245,7 +245,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
245
245
|
Get flashcard statistics
|
246
246
|
|
247
247
|
Args:
|
248
|
-
|
248
|
+
group_ids: Group IDs (comma-separated)
|
249
249
|
|
250
250
|
user_id: User ID
|
251
251
|
|
@@ -269,7 +269,7 @@ class FlashcardsResource(SyncAPIResource):
|
|
269
269
|
timeout=timeout,
|
270
270
|
query=maybe_transform(
|
271
271
|
{
|
272
|
-
"
|
272
|
+
"group_ids": group_ids,
|
273
273
|
"user_id": user_id,
|
274
274
|
},
|
275
275
|
flashcard_get_stats_params.FlashcardGetStatsParams,
|
@@ -444,7 +444,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
444
444
|
self,
|
445
445
|
component_id: str,
|
446
446
|
*,
|
447
|
-
|
447
|
+
group_ids: str | NotGiven = NOT_GIVEN,
|
448
448
|
limit: float | NotGiven = NOT_GIVEN,
|
449
449
|
offset: float | NotGiven = NOT_GIVEN,
|
450
450
|
user_id: str | NotGiven = NOT_GIVEN,
|
@@ -459,7 +459,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
459
459
|
Get all flashcards for component
|
460
460
|
|
461
461
|
Args:
|
462
|
-
|
462
|
+
group_ids: Group IDs (comma-separated)
|
463
463
|
|
464
464
|
limit: Max number of cards
|
465
465
|
|
@@ -487,7 +487,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
487
487
|
timeout=timeout,
|
488
488
|
query=await async_maybe_transform(
|
489
489
|
{
|
490
|
-
"
|
490
|
+
"group_ids": group_ids,
|
491
491
|
"limit": limit,
|
492
492
|
"offset": offset,
|
493
493
|
"user_id": user_id,
|
@@ -502,7 +502,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
502
502
|
self,
|
503
503
|
component_id: str,
|
504
504
|
*,
|
505
|
-
|
505
|
+
group_ids: str,
|
506
506
|
limit: float | NotGiven = NOT_GIVEN,
|
507
507
|
user_id: str | NotGiven = NOT_GIVEN,
|
508
508
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
@@ -540,7 +540,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
540
540
|
timeout=timeout,
|
541
541
|
query=await async_maybe_transform(
|
542
542
|
{
|
543
|
-
"
|
543
|
+
"group_ids": group_ids,
|
544
544
|
"limit": limit,
|
545
545
|
"user_id": user_id,
|
546
546
|
},
|
@@ -554,7 +554,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
554
554
|
self,
|
555
555
|
component_id: str,
|
556
556
|
*,
|
557
|
-
|
557
|
+
group_ids: str | NotGiven = NOT_GIVEN,
|
558
558
|
user_id: str | NotGiven = NOT_GIVEN,
|
559
559
|
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
|
560
560
|
# The extra values given here take precedence over values defined on the client or passed to this method.
|
@@ -567,7 +567,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
567
567
|
Get flashcard statistics
|
568
568
|
|
569
569
|
Args:
|
570
|
-
|
570
|
+
group_ids: Group IDs (comma-separated)
|
571
571
|
|
572
572
|
user_id: User ID
|
573
573
|
|
@@ -591,7 +591,7 @@ class AsyncFlashcardsResource(AsyncAPIResource):
|
|
591
591
|
timeout=timeout,
|
592
592
|
query=await async_maybe_transform(
|
593
593
|
{
|
594
|
-
"
|
594
|
+
"group_ids": group_ids,
|
595
595
|
"user_id": user_id,
|
596
596
|
},
|
597
597
|
flashcard_get_stats_params.FlashcardGetStatsParams,
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from typing import Iterable
|
5
|
+
from typing import List, Iterable
|
6
6
|
from typing_extensions import Required, Annotated, TypedDict
|
7
7
|
|
8
8
|
from ..._utils import PropertyInfo
|
@@ -22,8 +22,8 @@ class ChatSendMessageParams(TypedDict, total=False):
|
|
22
22
|
context: object
|
23
23
|
"""Additional context data"""
|
24
24
|
|
25
|
-
|
26
|
-
"""Group
|
25
|
+
group_ids: Annotated[List[str], PropertyInfo(alias="groupIds")]
|
26
|
+
"""Group IDs for collaboration"""
|
27
27
|
|
28
28
|
session_id: Annotated[str, PropertyInfo(alias="sessionId")]
|
29
29
|
"""Session ID for conversation continuity"""
|
@@ -2,13 +2,30 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
-
from
|
5
|
+
from typing import List, Union, Iterable
|
6
|
+
from typing_extensions import Literal, Required, Annotated, TypeAlias, TypedDict
|
6
7
|
|
7
|
-
|
8
|
+
from ..._utils import PropertyInfo
|
9
|
+
|
10
|
+
__all__ = [
|
11
|
+
"ComponentCreateParams",
|
12
|
+
"Config",
|
13
|
+
"ConfigChatConfigDto",
|
14
|
+
"ConfigFlashcardsConfigDto",
|
15
|
+
"ConfigScenariosConfigDto",
|
16
|
+
"ConfigScenariosConfigDtoCharacter",
|
17
|
+
"ConfigScenariosConfigDtoTool",
|
18
|
+
"ConfigPracticeTestConfigDto",
|
19
|
+
"ConfigPracticeTestConfigDtoQuestionDistribution",
|
20
|
+
"ConfigAudioRecapConfigDto",
|
21
|
+
"ConfigExplainersConfigDto",
|
22
|
+
"ConfigUploadsConfigDto",
|
23
|
+
"ConfigTutorMeConfigDto",
|
24
|
+
]
|
8
25
|
|
9
26
|
|
10
27
|
class ComponentCreateParams(TypedDict, total=False):
|
11
|
-
config: Required[
|
28
|
+
config: Required[Config]
|
12
29
|
"""Component-specific configuration"""
|
13
30
|
|
14
31
|
name: Required[str]
|
@@ -27,3 +44,278 @@ class ComponentCreateParams(TypedDict, total=False):
|
|
27
44
|
|
28
45
|
metadata: object
|
29
46
|
"""Additional metadata"""
|
47
|
+
|
48
|
+
|
49
|
+
class ConfigChatConfigDto(TypedDict, total=False):
|
50
|
+
model: Required[str]
|
51
|
+
"""AI model to use"""
|
52
|
+
|
53
|
+
enable_component_creation: Annotated[bool, PropertyInfo(alias="enableComponentCreation")]
|
54
|
+
"""Enable component creation"""
|
55
|
+
|
56
|
+
enable_follow_ups: Annotated[bool, PropertyInfo(alias="enableFollowUps")]
|
57
|
+
"""Enable follow-up questions"""
|
58
|
+
|
59
|
+
enable_history: Annotated[bool, PropertyInfo(alias="enableHistory")]
|
60
|
+
"""Enable conversation history"""
|
61
|
+
|
62
|
+
enable_rag_search: Annotated[bool, PropertyInfo(alias="enableRAGSearch")]
|
63
|
+
"""Enable RAG search"""
|
64
|
+
|
65
|
+
enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
|
66
|
+
"""Enable voice interactions"""
|
67
|
+
|
68
|
+
enable_web_search: Annotated[bool, PropertyInfo(alias="enableWebSearch")]
|
69
|
+
"""Enable web search"""
|
70
|
+
|
71
|
+
folders: List[str]
|
72
|
+
"""Folder IDs"""
|
73
|
+
|
74
|
+
materials: List[str]
|
75
|
+
"""Material IDs"""
|
76
|
+
|
77
|
+
max_steps: Annotated[float, PropertyInfo(alias="maxSteps")]
|
78
|
+
"""Maximum steps for multi-step tool calls"""
|
79
|
+
|
80
|
+
max_tokens: Annotated[float, PropertyInfo(alias="maxTokens")]
|
81
|
+
"""Maximum tokens for response"""
|
82
|
+
|
83
|
+
system_prompt: Annotated[str, PropertyInfo(alias="systemPrompt")]
|
84
|
+
"""System prompt for the chat"""
|
85
|
+
|
86
|
+
temperature: float
|
87
|
+
"""Temperature for response generation"""
|
88
|
+
|
89
|
+
|
90
|
+
class ConfigFlashcardsConfigDto(TypedDict, total=False):
|
91
|
+
card_types: Annotated[List[str], PropertyInfo(alias="cardTypes")]
|
92
|
+
"""Types of flashcards"""
|
93
|
+
|
94
|
+
difficulty: Literal["easy", "medium", "hard", "mixed"]
|
95
|
+
"""Difficulty level"""
|
96
|
+
|
97
|
+
enable_spaced_repetition: Annotated[bool, PropertyInfo(alias="enableSpacedRepetition")]
|
98
|
+
"""Enable spaced repetition"""
|
99
|
+
|
100
|
+
folders: List[str]
|
101
|
+
"""Folder IDs"""
|
102
|
+
|
103
|
+
learning_steps: Annotated[str, PropertyInfo(alias="learningSteps")]
|
104
|
+
"""Learning steps configuration"""
|
105
|
+
|
106
|
+
materials: List[str]
|
107
|
+
"""Material IDs"""
|
108
|
+
|
109
|
+
max_review_interval: Annotated[float, PropertyInfo(alias="maxReviewInterval")]
|
110
|
+
"""Maximum review interval in days"""
|
111
|
+
|
112
|
+
total_flashcards: Annotated[float, PropertyInfo(alias="totalFlashcards")]
|
113
|
+
"""Total number of flashcards to generate"""
|
114
|
+
|
115
|
+
view_mode: Annotated[Literal["spaced_repetition", "normal"], PropertyInfo(alias="viewMode")]
|
116
|
+
"""View mode for flashcards"""
|
117
|
+
|
118
|
+
|
119
|
+
class ConfigScenariosConfigDtoCharacter(TypedDict, total=False):
|
120
|
+
id: Required[str]
|
121
|
+
"""Character ID"""
|
122
|
+
|
123
|
+
name: Required[str]
|
124
|
+
"""Character name"""
|
125
|
+
|
126
|
+
role: Required[str]
|
127
|
+
"""Character role"""
|
128
|
+
|
129
|
+
description: str
|
130
|
+
"""Character description"""
|
131
|
+
|
132
|
+
|
133
|
+
class ConfigScenariosConfigDtoTool(TypedDict, total=False):
|
134
|
+
id: Required[str]
|
135
|
+
"""Tool ID"""
|
136
|
+
|
137
|
+
name: Required[str]
|
138
|
+
"""Tool name"""
|
139
|
+
|
140
|
+
description: str
|
141
|
+
"""Tool description"""
|
142
|
+
|
143
|
+
|
144
|
+
class ConfigScenariosConfigDto(TypedDict, total=False):
|
145
|
+
characters: Iterable[ConfigScenariosConfigDtoCharacter]
|
146
|
+
"""Scenario characters"""
|
147
|
+
|
148
|
+
context: str
|
149
|
+
"""Scenario context"""
|
150
|
+
|
151
|
+
enable_history: Annotated[bool, PropertyInfo(alias="enableHistory")]
|
152
|
+
"""Enable history"""
|
153
|
+
|
154
|
+
enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
|
155
|
+
"""Enable voice"""
|
156
|
+
|
157
|
+
final_answer_prompt: Annotated[str, PropertyInfo(alias="finalAnswerPrompt")]
|
158
|
+
"""Final answer prompt"""
|
159
|
+
|
160
|
+
folders: List[str]
|
161
|
+
"""Folder IDs"""
|
162
|
+
|
163
|
+
format: str
|
164
|
+
"""Scenario format"""
|
165
|
+
|
166
|
+
goal: str
|
167
|
+
"""Scenario goal"""
|
168
|
+
|
169
|
+
greeting_character_id: Annotated[str, PropertyInfo(alias="greetingCharacterId")]
|
170
|
+
"""Character ID for greeting"""
|
171
|
+
|
172
|
+
greeting_message: Annotated[str, PropertyInfo(alias="greetingMessage")]
|
173
|
+
"""Greeting message"""
|
174
|
+
|
175
|
+
materials: List[str]
|
176
|
+
"""Material IDs"""
|
177
|
+
|
178
|
+
placeholder_text: Annotated[str, PropertyInfo(alias="placeholderText")]
|
179
|
+
"""Placeholder text"""
|
180
|
+
|
181
|
+
requires_final_answer: Annotated[bool, PropertyInfo(alias="requiresFinalAnswer")]
|
182
|
+
"""Requires final answer"""
|
183
|
+
|
184
|
+
tools: Iterable[ConfigScenariosConfigDtoTool]
|
185
|
+
"""Available tools"""
|
186
|
+
|
187
|
+
|
188
|
+
class ConfigPracticeTestConfigDtoQuestionDistribution(TypedDict, total=False):
|
189
|
+
fillinblank: float
|
190
|
+
"""Number of fill in the blank questions"""
|
191
|
+
|
192
|
+
frq: float
|
193
|
+
"""Number of free response questions"""
|
194
|
+
|
195
|
+
multiplechoice: float
|
196
|
+
"""Number of multiple choice questions"""
|
197
|
+
|
198
|
+
shortanswer: float
|
199
|
+
"""Number of short answer questions"""
|
200
|
+
|
201
|
+
truefalse: float
|
202
|
+
"""Number of true/false questions"""
|
203
|
+
|
204
|
+
|
205
|
+
class ConfigPracticeTestConfigDto(TypedDict, total=False):
|
206
|
+
question_types: Required[Annotated[List[str], PropertyInfo(alias="questionTypes")]]
|
207
|
+
"""Question types"""
|
208
|
+
|
209
|
+
ai_generation_mode: Annotated[
|
210
|
+
Literal["balanced", "comprehensive", "focused", "adaptive"], PropertyInfo(alias="aiGenerationMode")
|
211
|
+
]
|
212
|
+
"""AI generation mode"""
|
213
|
+
|
214
|
+
allow_retakes: Annotated[bool, PropertyInfo(alias="allowRetakes")]
|
215
|
+
"""Allow retakes"""
|
216
|
+
|
217
|
+
difficulty: Literal["easy", "medium", "hard", "mixed"]
|
218
|
+
"""Difficulty level"""
|
219
|
+
|
220
|
+
folders: List[str]
|
221
|
+
"""Folder IDs"""
|
222
|
+
|
223
|
+
materials: List[str]
|
224
|
+
"""Material IDs"""
|
225
|
+
|
226
|
+
max_attempts: Annotated[float, PropertyInfo(alias="maxAttempts")]
|
227
|
+
"""Maximum attempts allowed"""
|
228
|
+
|
229
|
+
passing_score: Annotated[float, PropertyInfo(alias="passingScore")]
|
230
|
+
"""Passing score percentage"""
|
231
|
+
|
232
|
+
question_distribution: Annotated[
|
233
|
+
ConfigPracticeTestConfigDtoQuestionDistribution, PropertyInfo(alias="questionDistribution")
|
234
|
+
]
|
235
|
+
"""Distribution of question types"""
|
236
|
+
|
237
|
+
questions_per_test: Annotated[float, PropertyInfo(alias="questionsPerTest")]
|
238
|
+
"""Number of questions per test"""
|
239
|
+
|
240
|
+
randomize_answers: Annotated[bool, PropertyInfo(alias="randomizeAnswers")]
|
241
|
+
"""Randomize answer order"""
|
242
|
+
|
243
|
+
randomize_questions: Annotated[bool, PropertyInfo(alias="randomizeQuestions")]
|
244
|
+
"""Randomize question order"""
|
245
|
+
|
246
|
+
show_correct_answers: Annotated[bool, PropertyInfo(alias="showCorrectAnswers")]
|
247
|
+
"""Show correct answers after submission"""
|
248
|
+
|
249
|
+
show_explanations: Annotated[bool, PropertyInfo(alias="showExplanations")]
|
250
|
+
"""Show explanations for answers"""
|
251
|
+
|
252
|
+
time_limit: Annotated[float, PropertyInfo(alias="timeLimit")]
|
253
|
+
"""Time limit in minutes"""
|
254
|
+
|
255
|
+
|
256
|
+
class ConfigAudioRecapConfigDto(TypedDict, total=False):
|
257
|
+
folders: List[str]
|
258
|
+
"""Folder IDs"""
|
259
|
+
|
260
|
+
format: Literal["podcast", "summary", "lecture"]
|
261
|
+
"""Audio format"""
|
262
|
+
|
263
|
+
materials: List[str]
|
264
|
+
"""Material IDs"""
|
265
|
+
|
266
|
+
speed: float
|
267
|
+
"""Playback speed"""
|
268
|
+
|
269
|
+
voice: str
|
270
|
+
"""Voice to use for audio"""
|
271
|
+
|
272
|
+
|
273
|
+
class ConfigExplainersConfigDto(TypedDict, total=False):
|
274
|
+
folders: List[str]
|
275
|
+
"""Folder IDs"""
|
276
|
+
|
277
|
+
materials: List[str]
|
278
|
+
"""Material IDs"""
|
279
|
+
|
280
|
+
|
281
|
+
class ConfigUploadsConfigDto(TypedDict, total=False):
|
282
|
+
folder_id: Required[Annotated[str, PropertyInfo(alias="folderId")]]
|
283
|
+
"""Folder ID where uploads will be stored"""
|
284
|
+
|
285
|
+
folders: List[str]
|
286
|
+
"""Folder IDs"""
|
287
|
+
|
288
|
+
materials: List[str]
|
289
|
+
"""Material IDs"""
|
290
|
+
|
291
|
+
|
292
|
+
class ConfigTutorMeConfigDto(TypedDict, total=False):
|
293
|
+
enable_video: Annotated[bool, PropertyInfo(alias="enableVideo")]
|
294
|
+
"""Enable video"""
|
295
|
+
|
296
|
+
enable_voice: Annotated[bool, PropertyInfo(alias="enableVoice")]
|
297
|
+
"""Enable voice"""
|
298
|
+
|
299
|
+
folders: List[str]
|
300
|
+
"""Folder IDs"""
|
301
|
+
|
302
|
+
materials: List[str]
|
303
|
+
"""Material IDs"""
|
304
|
+
|
305
|
+
session_duration: Annotated[float, PropertyInfo(alias="sessionDuration")]
|
306
|
+
"""Session duration in minutes"""
|
307
|
+
|
308
|
+
tutor_personality: Annotated[str, PropertyInfo(alias="tutorPersonality")]
|
309
|
+
"""Tutor personality"""
|
310
|
+
|
311
|
+
|
312
|
+
Config: TypeAlias = Union[
|
313
|
+
ConfigChatConfigDto,
|
314
|
+
ConfigFlashcardsConfigDto,
|
315
|
+
ConfigScenariosConfigDto,
|
316
|
+
ConfigPracticeTestConfigDto,
|
317
|
+
ConfigAudioRecapConfigDto,
|
318
|
+
ConfigExplainersConfigDto,
|
319
|
+
ConfigUploadsConfigDto,
|
320
|
+
ConfigTutorMeConfigDto,
|
321
|
+
]
|
@@ -33,7 +33,9 @@ class ComponentCreateResponse(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from __future__ import annotations
|
4
4
|
|
5
|
+
from typing import List
|
5
6
|
from typing_extensions import Annotated, TypedDict
|
6
7
|
|
7
8
|
from ..._utils import PropertyInfo
|
@@ -16,8 +17,8 @@ class ComponentEmbedParams(TypedDict, total=False):
|
|
16
17
|
features: Features
|
17
18
|
"""Feature toggles"""
|
18
19
|
|
19
|
-
|
20
|
-
"""Group
|
20
|
+
group_ids: Annotated[List[str], PropertyInfo(alias="groupIds")]
|
21
|
+
"""Group IDs for collaboration"""
|
21
22
|
|
22
23
|
height: str
|
23
24
|
"""Embed height (e.g., "400px", "100vh")"""
|
@@ -33,7 +33,9 @@ class ComponentListResponseItem(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -33,7 +33,9 @@ class ComponentRetrieveResponse(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -33,7 +33,9 @@ class ComponentUpdateResponse(BaseModel):
|
|
33
33
|
status: Literal["active", "inactive", "draft"]
|
34
34
|
"""Component status"""
|
35
35
|
|
36
|
-
type: Literal[
|
36
|
+
type: Literal[
|
37
|
+
"chat", "flashcards", "scenarios", "practice_test", "audio_recap", "tutor_me", "explainers", "uploads"
|
38
|
+
]
|
37
39
|
"""Component type"""
|
38
40
|
|
39
41
|
updated_at: datetime = FieldInfo(alias="updatedAt")
|
@@ -10,8 +10,8 @@ __all__ = ["FlashcardGetAllParams"]
|
|
10
10
|
|
11
11
|
|
12
12
|
class FlashcardGetAllParams(TypedDict, total=False):
|
13
|
-
|
14
|
-
"""Group
|
13
|
+
group_ids: Annotated[str, PropertyInfo(alias="groupIds")]
|
14
|
+
"""Group IDs (comma-separated)"""
|
15
15
|
|
16
16
|
limit: float
|
17
17
|
"""Max number of cards"""
|
@@ -10,7 +10,7 @@ __all__ = ["FlashcardGetDueParams"]
|
|
10
10
|
|
11
11
|
|
12
12
|
class FlashcardGetDueParams(TypedDict, total=False):
|
13
|
-
|
13
|
+
group_ids: Required[Annotated[str, PropertyInfo(alias="groupIds")]]
|
14
14
|
|
15
15
|
limit: float
|
16
16
|
"""Max number of cards"""
|
@@ -10,8 +10,8 @@ __all__ = ["FlashcardGetStatsParams"]
|
|
10
10
|
|
11
11
|
|
12
12
|
class FlashcardGetStatsParams(TypedDict, total=False):
|
13
|
-
|
14
|
-
"""Group
|
13
|
+
group_ids: Annotated[str, PropertyInfo(alias="groupIds")]
|
14
|
+
"""Group IDs (comma-separated)"""
|
15
15
|
|
16
16
|
user_id: Annotated[str, PropertyInfo(alias="userId")]
|
17
17
|
"""User ID"""
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: studyfetch_sdk
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.0a4
|
4
4
|
Summary: The official Python library for the studyfetch-sdk API
|
5
5
|
Project-URL: Homepage, https://github.com/GoStudyFetchGo/studyfetch-sdk-python
|
6
6
|
Project-URL: Repository, https://github.com/GoStudyFetchGo/studyfetch-sdk-python
|
@@ -11,7 +11,7 @@ studyfetch_sdk/_resource.py,sha256=y0aoAqMIYwTAwStuxbpO8XpTPnrSNQQ_ZcgiH5xcntg,1
|
|
11
11
|
studyfetch_sdk/_response.py,sha256=6ph8tSkqF5pNbTo_2Zhizhq2O-Eb67TcksHwyg3aXdc,28864
|
12
12
|
studyfetch_sdk/_streaming.py,sha256=HZoENuPVzWhBn24eH3lnMCvRbWN0EPwvhWYfdlJfw0A,10128
|
13
13
|
studyfetch_sdk/_types.py,sha256=6nvqHGarRGuhs_FL8tJ8sGXXD8XWajNynT2K78GxRUI,6205
|
14
|
-
studyfetch_sdk/_version.py,sha256=
|
14
|
+
studyfetch_sdk/_version.py,sha256=PoPZ_kT3sPR6WjcswmbEnX77TlwtNlTb0W2Zc9OpZA4,174
|
15
15
|
studyfetch_sdk/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
studyfetch_sdk/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
17
17
|
studyfetch_sdk/_utils/_logs.py,sha256=EoZgOiIkpf2WB_0Ts0Ti7G3o_25v7IsPf_q-yEU6sbY,798
|
@@ -26,9 +26,9 @@ studyfetch_sdk/_utils/_utils.py,sha256=ts4CiiuNpFiGB6YMdkQRh2SZvYvsl7mAF-JWHCcLD
|
|
26
26
|
studyfetch_sdk/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
27
27
|
studyfetch_sdk/resources/__init__.py,sha256=TSJ6b8GNHShyK5w7efHV93u1bY2jYVySQRa2zKc1dKM,500
|
28
28
|
studyfetch_sdk/resources/v1/__init__.py,sha256=Xbao5pcvo3A7m4Px9Xts0hh-DX1HKq2E1-TUM78plbA,6572
|
29
|
-
studyfetch_sdk/resources/v1/components.py,sha256=
|
29
|
+
studyfetch_sdk/resources/v1/components.py,sha256=omSiBUsNpgsPcp-aACKs_itOdKw7Nbj2ASV4W5NAnwQ,35554
|
30
30
|
studyfetch_sdk/resources/v1/explainers.py,sha256=dFk7044_qcf16Ia2VdEJ_dRRdnJeyHALNDHu6PVFbIM,8351
|
31
|
-
studyfetch_sdk/resources/v1/flashcards.py,sha256
|
31
|
+
studyfetch_sdk/resources/v1/flashcards.py,sha256=-RKKuU3SQEZtXeCr1SasxuK1pMQO2FZzesvBeIoCGqo,29317
|
32
32
|
studyfetch_sdk/resources/v1/folders.py,sha256=o43HhcVhqF3t7xWMFFNIiMPElhoqkXtaCTVjEE5s5so,27436
|
33
33
|
studyfetch_sdk/resources/v1/usage.py,sha256=78OlA8pT13Ggja84nHdJJQoKSn7GjDO3SefPyxsCYWo,18513
|
34
34
|
studyfetch_sdk/resources/v1/v1.py,sha256=evx06-nLZCC2mxmaEqb_3H_iq0br3D01dBC-PpvTASc,16705
|
@@ -39,7 +39,7 @@ studyfetch_sdk/resources/v1/auth/__init__.py,sha256=YoujojaKcfwWPoS9E2_PYpMbgs6l
|
|
39
39
|
studyfetch_sdk/resources/v1/auth/auth.py,sha256=3YdW8S67YtkPtNvBvyKtyqiY7fU09vkwCCfR_hgdU3Q,6234
|
40
40
|
studyfetch_sdk/resources/v1/auth/number_2fa.py,sha256=QgfvK7_m-Kko29XYyDSlAWFv6l7xRF8t6ndNAW5kBz8,6195
|
41
41
|
studyfetch_sdk/resources/v1/chat/__init__.py,sha256=WSv53HDkoj5Ec37hiJlCV2V-ZquTjYyG5hU9cOdZPBk,1426
|
42
|
-
studyfetch_sdk/resources/v1/chat/chat.py,sha256=
|
42
|
+
studyfetch_sdk/resources/v1/chat/chat.py,sha256=3gyxkarOmcRC9Ef1U3zvCRyUjJ2-ZBwtY1sX0ubq7qI,21779
|
43
43
|
studyfetch_sdk/resources/v1/chat/sessions.py,sha256=mjcTJFft2zXyQlqhARz_J5md1BfAD3uhDVp-olow83o,8479
|
44
44
|
studyfetch_sdk/resources/v1/chat/test.py,sha256=_7D8vYKhEUi4L32-N4SnpQlDFZl2swrLQFsSDUidn1M,7067
|
45
45
|
studyfetch_sdk/resources/v1/embed/__init__.py,sha256=VJ7xFoda7Gx3MH2plj_RN3NF5lmfKMFB1IHU0StdTzo,1028
|
@@ -66,26 +66,26 @@ studyfetch_sdk/resources/v1/upload/upload.py,sha256=RBkrsVi5_8qIqdYKypnSqj44ONvw
|
|
66
66
|
studyfetch_sdk/types/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
67
67
|
studyfetch_sdk/types/v1/__init__.py,sha256=aywccrChxnRGCoeK_FDPra7X3SKnfnyzI2oKmOyD0V4,3633
|
68
68
|
studyfetch_sdk/types/v1/chat_retrieve_session_params.py,sha256=j_egNBvVvOwAHQGayY5002fE_KK1q775XuIKlokEBsQ,388
|
69
|
-
studyfetch_sdk/types/v1/chat_send_message_params.py,sha256=
|
69
|
+
studyfetch_sdk/types/v1/chat_send_message_params.py,sha256=BRxjNsVXsqcBbdrp4J5TQGjjNPJ_bz7uXw3pnc-x0oU,1454
|
70
70
|
studyfetch_sdk/types/v1/chat_stream_params.py,sha256=Aqp2Vdsa35PAH-75kaO_ZYlkqGrCgDZ5EyYTTLRAJoE,695
|
71
|
-
studyfetch_sdk/types/v1/component_create_params.py,sha256=
|
72
|
-
studyfetch_sdk/types/v1/component_create_response.py,sha256=
|
73
|
-
studyfetch_sdk/types/v1/component_embed_params.py,sha256=
|
71
|
+
studyfetch_sdk/types/v1/component_create_params.py,sha256=30lbEq-sy5L6FaMFXu-3Vxo-Ebx9Ir0mnYFTPZ4k5G8,8937
|
72
|
+
studyfetch_sdk/types/v1/component_create_response.py,sha256=zfrTvGBNGY_N5doR9CAg6DgJgFWXoi4iXiiwEgvipKo,1194
|
73
|
+
studyfetch_sdk/types/v1/component_embed_params.py,sha256=hw7NcUe_QeYxrJ46qojicj8OVDY1KpRGHBPKgfx5FZc,3052
|
74
74
|
studyfetch_sdk/types/v1/component_embed_response.py,sha256=PUr_rBcSsww_FFIAUh6hjXWzCJ6kMENY970dDNtpnpY,906
|
75
75
|
studyfetch_sdk/types/v1/component_list_params.py,sha256=R8NMK7r37CpqmbAWdbs6rEF1LigoYrE3BXksJCCdKEQ,431
|
76
|
-
studyfetch_sdk/types/v1/component_list_response.py,sha256=
|
77
|
-
studyfetch_sdk/types/v1/component_retrieve_response.py,sha256=
|
76
|
+
studyfetch_sdk/types/v1/component_list_response.py,sha256=smVy_fILAm7kwzqncvGCIMMe5C2MrcRvKLPv41MF5iw,1309
|
77
|
+
studyfetch_sdk/types/v1/component_retrieve_response.py,sha256=Yeg2h0foE-atwpRzrhdWUakRP83_7nvkfMfHPf4CT28,1198
|
78
78
|
studyfetch_sdk/types/v1/component_update_params.py,sha256=IkSFyldrto9H_F_4GWIGG1WYpYFEuYsAi-29dmo9vno,365
|
79
|
-
studyfetch_sdk/types/v1/component_update_response.py,sha256=
|
79
|
+
studyfetch_sdk/types/v1/component_update_response.py,sha256=Red-3gvU3gf0uxbxFCtk88D7zXgq_qpqMo-15w-fUh4,1194
|
80
80
|
studyfetch_sdk/types/v1/embed_get_theme_params.py,sha256=wKZn4X-Ne29dOrxEBkGThxBPTdhPTgb-CzV65KvSFVw,308
|
81
81
|
studyfetch_sdk/types/v1/embed_verify_params.py,sha256=hixgK7Uyhi2Oaj0t5Q5sbFVUYGdvmMsk_2-fu_2C2nw,314
|
82
82
|
studyfetch_sdk/types/v1/explainer_handle_webhook_params.py,sha256=woKIx4423Cuk15DNTQ3XfPWsZx5Ewm5KALkgB6wT4Sc,303
|
83
83
|
studyfetch_sdk/types/v1/flashcard_batch_process_params.py,sha256=9rKglWAilYXnfqPSOdKLQWZ7DOrU45S20eLLGn6xsSk,1044
|
84
84
|
studyfetch_sdk/types/v1/flashcard_batch_process_response.py,sha256=UKredDT61O5KA56gvhbJlF1qa8LzrdpLrD4ulzQOFlw,891
|
85
85
|
studyfetch_sdk/types/v1/flashcard_get_algorithm_info_response.py,sha256=DXyISqmGJlqgjyrcAmjO2lrNFqFiwGSI6JPr6niSE0A,871
|
86
|
-
studyfetch_sdk/types/v1/flashcard_get_all_params.py,sha256=
|
87
|
-
studyfetch_sdk/types/v1/flashcard_get_due_params.py,sha256=
|
88
|
-
studyfetch_sdk/types/v1/flashcard_get_stats_params.py,sha256=
|
86
|
+
studyfetch_sdk/types/v1/flashcard_get_all_params.py,sha256=VVEPwJ1sQ03CqUWM-bvmPmy4M2j2MEMvTPU6Qp7aflk,563
|
87
|
+
studyfetch_sdk/types/v1/flashcard_get_due_params.py,sha256=n_05aRmk05p-WXctVdE57Gm-lMChCn-efmy1Tl2Kq-Q,509
|
88
|
+
studyfetch_sdk/types/v1/flashcard_get_stats_params.py,sha256=ghcZfsKIM4au3PtoBpiw-3iGNEy-86co8vzIqLKhZ9o,483
|
89
89
|
studyfetch_sdk/types/v1/flashcard_get_types_response.py,sha256=5Ik-pRsivsnFTytCNvnw0cDZA-95ONMxNY2goXUucLI,371
|
90
90
|
studyfetch_sdk/types/v1/flashcard_rate_params.py,sha256=SrGtfy4XU34M9WYIVQ89uJpmkSmIS9JUzLg2t3_oez8,630
|
91
91
|
studyfetch_sdk/types/v1/folder_create_params.py,sha256=7aOh4pSBdnJ0kLH722pf2gNeJJXpGdf3ldadMcMtXkY,453
|
@@ -131,7 +131,7 @@ studyfetch_sdk/types/v1/scenarios/component_update_params.py,sha256=BDHJzJiiTVqS
|
|
131
131
|
studyfetch_sdk/types/v1/scenarios/submissions/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
132
132
|
studyfetch_sdk/types/v1/tests/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
133
133
|
studyfetch_sdk/types/v1/upload/__init__.py,sha256=OKfJYcKb4NObdiRObqJV_dOyDQ8feXekDUge2o_4pXQ,122
|
134
|
-
studyfetch_sdk-0.1.
|
135
|
-
studyfetch_sdk-0.1.
|
136
|
-
studyfetch_sdk-0.1.
|
137
|
-
studyfetch_sdk-0.1.
|
134
|
+
studyfetch_sdk-0.1.0a4.dist-info/METADATA,sha256=LzluIMWUivn1ko--oLfNtbiKSiGU13nGh5-8hWIyKJI,14826
|
135
|
+
studyfetch_sdk-0.1.0a4.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
136
|
+
studyfetch_sdk-0.1.0a4.dist-info/licenses/LICENSE,sha256=CsdbJMegH_AAWljUmVcwW0Cj_GyIm1hjw6qPqPnmdn4,11344
|
137
|
+
studyfetch_sdk-0.1.0a4.dist-info/RECORD,,
|
File without changes
|
File without changes
|