gllm-core-binary 0.3.23b3__py3-none-any.whl → 0.4.2b1__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.
Files changed (39) hide show
  1. gllm_core/adapters/__init__.py +5 -0
  2. gllm_core/adapters/__init__.pyi +3 -0
  3. gllm_core/adapters/tool/__init__.py +6 -0
  4. gllm_core/adapters/tool/__init__.pyi +4 -0
  5. gllm_core/adapters/tool/google_adk.py +91 -0
  6. gllm_core/adapters/tool/google_adk.pyi +23 -0
  7. gllm_core/adapters/tool/langchain.py +130 -0
  8. gllm_core/adapters/tool/langchain.pyi +31 -0
  9. gllm_core/constants.py +0 -1
  10. gllm_core/constants.pyi +0 -1
  11. gllm_core/event/event_emitter.py +8 -44
  12. gllm_core/event/event_emitter.pyi +9 -21
  13. gllm_core/event/handler/console_event_handler.py +1 -12
  14. gllm_core/event/handler/console_event_handler.pyi +0 -1
  15. gllm_core/event/handler/print_event_handler.py +15 -59
  16. gllm_core/event/handler/print_event_handler.pyi +1 -2
  17. gllm_core/schema/__init__.py +2 -2
  18. gllm_core/schema/__init__.pyi +2 -2
  19. gllm_core/schema/component.py +236 -27
  20. gllm_core/schema/component.pyi +164 -17
  21. gllm_core/schema/schema_generator.py +150 -0
  22. gllm_core/schema/schema_generator.pyi +35 -0
  23. gllm_core/schema/tool.py +31 -1
  24. gllm_core/schema/tool.pyi +21 -0
  25. gllm_core/utils/__init__.py +2 -0
  26. gllm_core/utils/__init__.pyi +2 -1
  27. gllm_core/utils/analyzer.py +24 -1
  28. gllm_core/utils/analyzer.pyi +15 -1
  29. gllm_core/utils/concurrency.py +2 -2
  30. gllm_core/utils/logger_manager.py +17 -7
  31. gllm_core/utils/logger_manager.pyi +3 -0
  32. gllm_core/utils/main_method_resolver.py +185 -0
  33. gllm_core/utils/main_method_resolver.pyi +54 -0
  34. gllm_core/utils/retry.py +130 -21
  35. gllm_core/utils/retry.pyi +6 -29
  36. {gllm_core_binary-0.3.23b3.dist-info → gllm_core_binary-0.4.2b1.dist-info}/METADATA +6 -1
  37. {gllm_core_binary-0.3.23b3.dist-info → gllm_core_binary-0.4.2b1.dist-info}/RECORD +39 -27
  38. {gllm_core_binary-0.3.23b3.dist-info → gllm_core_binary-0.4.2b1.dist-info}/WHEEL +0 -0
  39. {gllm_core_binary-0.3.23b3.dist-info → gllm_core_binary-0.4.2b1.dist-info}/top_level.txt +0 -0
gllm_core/utils/retry.py CHANGED
@@ -8,12 +8,15 @@ References:
8
8
  """
9
9
 
10
10
  import asyncio
11
+ import functools
12
+ import inspect
11
13
  import random
12
- from typing import Any, Callable, TypeVar
14
+ from typing import Any, Callable, TypeVar, overload
13
15
 
14
16
  from pydantic import BaseModel, Field, model_validator
15
17
 
16
18
  from gllm_core.utils import LoggerManager
19
+ from gllm_core.utils.concurrency import syncify
17
20
 
18
21
  logger = LoggerManager().get_logger(__name__)
19
22
 
@@ -29,18 +32,16 @@ class RetryConfig(BaseModel):
29
32
  max_retries (int): Maximum number of retry attempts.
30
33
  base_delay (float): Base delay in seconds between retries.
31
34
  max_delay (float): Maximum delay in seconds between retries.
32
- exponential_base (float): Base for exponential backoff. Deprecated and will be removed in v0.4.
33
35
  jitter (bool): Whether to add random jitter to delays.
34
36
  timeout (float | None): Overall timeout in seconds for the entire operation. If None, timeout is disabled.
35
37
  retry_on_exceptions (tuple[type[Exception], ...]): Tuple of exception types to retry on.
36
38
  """
37
39
 
38
40
  max_retries: int = Field(default=0, ge=0)
39
- base_delay: float = Field(default=1.0, ge=0.0)
40
- max_delay: float = Field(default=10.0, ge=0.0)
41
- exponential_base: float = Field(default=BASE_EXPONENTIAL_BACKOFF) # TODO: Remove in v0.4
41
+ base_delay: float = Field(default=1.0, gt=0.0)
42
+ max_delay: float = Field(default=10.0, gt=0.0)
42
43
  jitter: bool = Field(default=True)
43
- timeout: float | None = Field(default=None, ge=0.0) # TODO: In v0.4, prohibit timeout=0.0
44
+ timeout: float | None = Field(default=None, gt=0.0)
44
45
  retry_on_exceptions: tuple[type[Exception], ...] = Field(default=(Exception,))
45
46
 
46
47
  @model_validator(mode="after")
@@ -63,13 +64,29 @@ class RetryConfig(BaseModel):
63
64
  if self.max_delay < self.base_delay:
64
65
  raise ValueError("The 'max_delay' parameter must be greater than or equal to 'base_delay'.")
65
66
 
66
- if self.exponential_base != BASE_EXPONENTIAL_BACKOFF: # TODO: Remove in v0.4
67
- raise ValueError("The 'exponential_base' parameter must be exactly 2.0.")
68
-
69
67
  return self
70
68
 
71
69
 
72
- async def retry(
70
+ def _calculate_delay(attempt: int, config: RetryConfig) -> float:
71
+ """Calculates the delay for the next retry attempt.
72
+
73
+ Args:
74
+ attempt (int): The current attempt number (0-based).
75
+ config (RetryConfig): The retry configuration.
76
+
77
+ Returns:
78
+ float: The delay in seconds.
79
+ """
80
+ delay = config.base_delay * (BASE_EXPONENTIAL_BACKOFF**attempt)
81
+
82
+ if config.jitter:
83
+ jitter_factor = random.uniform(0, 0.25)
84
+ delay += delay * jitter_factor
85
+
86
+ return min(delay, config.max_delay)
87
+
88
+
89
+ async def _retry_async(
73
90
  func: Callable[..., Any],
74
91
  *args: Any,
75
92
  retry_config: RetryConfig | None = None,
@@ -107,7 +124,10 @@ async def retry(
107
124
 
108
125
  for attempt in range(max_retries):
109
126
  try:
110
- return await func(*args, **kwargs)
127
+ result = func(*args, **kwargs)
128
+ if inspect.isawaitable(result):
129
+ return await result
130
+ return result
111
131
 
112
132
  except asyncio.TimeoutError:
113
133
  raise
@@ -130,20 +150,109 @@ async def retry(
130
150
  return await attempt_loop()
131
151
 
132
152
 
133
- def _calculate_delay(attempt: int, config: RetryConfig) -> float:
134
- """Calculates the delay for the next retry attempt.
153
+ @overload
154
+ async def retry(
155
+ func: Callable[..., Any],
156
+ *args: Any,
157
+ retry_config: RetryConfig | None = None,
158
+ **kwargs: Any,
159
+ ) -> T: ...
160
+
161
+
162
+ @overload
163
+ def retry(config: RetryConfig | None = None) -> Callable[[Callable[..., Any]], Callable[..., Any]]: ...
164
+
165
+
166
+ def retry(
167
+ func_or_config: Callable[..., Any] | RetryConfig | None = None,
168
+ *args: Any,
169
+ retry_config: RetryConfig | None = None,
170
+ **kwargs: Any,
171
+ ) -> T | Callable[[Callable[..., Any]], Callable[..., Any]]:
172
+ """Executes a function with retry logic or creates a retry decorator.
173
+
174
+ This function supports two usage patterns:
175
+ 1. Direct function execution: await retry(func, *args, retry_config=config, **kwargs)
176
+ 2. Decorator factory: @retry() or @retry(config)
135
177
 
136
178
  Args:
137
- attempt (int): The current attempt number (0-based).
138
- config (RetryConfig): The retry configuration.
179
+ func_or_config (Callable[..., Any] | RetryConfig | None, optional): Either a function to execute or a
180
+ RetryConfig for decorator usage. Defaults to None.
181
+ *args (Any): Positional arguments (only used in direct execution mode).
182
+ retry_config (RetryConfig | None, optional): Retry configuration (only used in direct execution mode).
183
+ Defaults to None, in which case no retry nor timeout is applied.
184
+ **kwargs (Any): Keyword arguments (only used in direct execution mode).
139
185
 
140
186
  Returns:
141
- float: The delay in seconds.
187
+ T | Callable[[Callable[..., Any]], Callable[..., Any]]: Either the result of function execution or
188
+ a decorator function.
189
+
190
+ Raises:
191
+ Exception: The last exception raised by the function if all retries are exhausted.
192
+ asyncio.TimeoutError: If the overall timeout is exceeded.
193
+
194
+ Examples:
195
+ # Direct function execution
196
+ ```python
197
+ result = await retry(my_function, arg1, arg2, retry_config=config)
198
+ ```
199
+
200
+ # Decorator usage - parameterless
201
+ ```python
202
+ @retry()
203
+ async def my_async_function():
204
+ # Use default settings, in which case no retry nor timeout is applied.
205
+ pass
206
+ ```
207
+
208
+ # Decorator usage - with custom configuration
209
+ ```python
210
+ @retry(RetryConfig(max_retries=3, timeout=120))
211
+ async def my_function():
212
+ # Will retry up to 3 times with 0.5s base delay
213
+ pass
214
+ ```
215
+
216
+ # Decorator on sync functions
217
+ ```python
218
+ @retry()
219
+ def my_sync_function():
220
+ # Works with sync functions too
221
+ return "success"
222
+ ```
223
+
224
+ # Decorator on class methods
225
+ ```python
226
+ class MyService:
227
+ @retry(RetryConfig(max_retries=2))
228
+ async def get_data(self, id: str):
229
+ return {"id": id, "data": "value"}
230
+ ```
142
231
  """
143
- delay = config.base_delay * (BASE_EXPONENTIAL_BACKOFF**attempt)
232
+ if callable(func_or_config) and not isinstance(func_or_config, RetryConfig):
233
+ func = func_or_config
144
234
 
145
- if config.jitter:
146
- jitter_factor = random.uniform(0, 0.25)
147
- delay += delay * jitter_factor
235
+ async def async_wrapper() -> T:
236
+ return await _retry_async(func, *args, retry_config=retry_config, **kwargs)
148
237
 
149
- return min(delay, config.max_delay)
238
+ return async_wrapper()
239
+
240
+ config = func_or_config
241
+
242
+ def decorator(func: Callable[..., Any]) -> Callable[..., Any]:
243
+ if asyncio.iscoroutinefunction(func):
244
+
245
+ @functools.wraps(func)
246
+ async def async_wrapper(*args: Any, **kwargs: Any) -> Any:
247
+ return await _retry_async(func, *args, retry_config=config, **kwargs)
248
+
249
+ return async_wrapper
250
+
251
+ @functools.wraps(func)
252
+ def sync_wrapper(*args: Any, **kwargs: Any) -> Any:
253
+ sync_retry = syncify(lambda: _retry_async(func, *args, retry_config=config, **kwargs))
254
+ return sync_retry()
255
+
256
+ return sync_wrapper
257
+
258
+ return decorator
gllm_core/utils/retry.pyi CHANGED
@@ -1,7 +1,8 @@
1
1
  from _typeshed import Incomplete
2
2
  from gllm_core.utils import LoggerManager as LoggerManager
3
+ from gllm_core.utils.concurrency import syncify as syncify
3
4
  from pydantic import BaseModel
4
- from typing import Any, Callable, TypeVar
5
+ from typing import Any, Callable, TypeVar, overload
5
6
 
6
7
  logger: Incomplete
7
8
  T = TypeVar('T')
@@ -14,7 +15,6 @@ class RetryConfig(BaseModel):
14
15
  max_retries (int): Maximum number of retry attempts.
15
16
  base_delay (float): Base delay in seconds between retries.
16
17
  max_delay (float): Maximum delay in seconds between retries.
17
- exponential_base (float): Base for exponential backoff. Deprecated and will be removed in v0.4.
18
18
  jitter (bool): Whether to add random jitter to delays.
19
19
  timeout (float | None): Overall timeout in seconds for the entire operation. If None, timeout is disabled.
20
20
  retry_on_exceptions (tuple[type[Exception], ...]): Tuple of exception types to retry on.
@@ -22,7 +22,6 @@ class RetryConfig(BaseModel):
22
22
  max_retries: int
23
23
  base_delay: float
24
24
  max_delay: float
25
- exponential_base: float
26
25
  jitter: bool
27
26
  timeout: float | None
28
27
  retry_on_exceptions: tuple[type[Exception], ...]
@@ -36,29 +35,7 @@ class RetryConfig(BaseModel):
36
35
  ValueError: If max_delay is less than base_delay.
37
36
  """
38
37
 
39
- async def retry(func: Callable[..., Any], *args: Any, retry_config: RetryConfig | None = None, **kwargs: Any) -> T:
40
- """Executes a function with retry logic and exponential backoff.
41
-
42
- This function executes the provided function with retry logic. It will first try to execute the function once.
43
- If the function raises an exception that matches the retry_on_exceptions, it will retry up to max_retries times
44
- with exponential backoff. Therefore, the max number of attempts is max_retries + 1. If provided, the timeout
45
- applies to the entire retry operation, including all attempts and delays.
46
-
47
- Example:
48
- If you set timeout=10.0 and max_retries=3, the entire retry operation (including all attempts
49
- and delays) will timeout after 10 seconds, not 10 seconds per attempt.
50
-
51
- Args:
52
- func (Callable[..., Any]): The function to execute.
53
- *args (Any): Positional arguments to pass to the function.
54
- retry_config (RetryConfig | None, optional): Retry configuration. If None, uses default config.
55
- Defaults to None.
56
- **kwargs (Any): Keyword arguments to pass to the function.
57
-
58
- Returns:
59
- T: The result of the function execution.
60
-
61
- Raises:
62
- Exception: The last exception raised by the function if all retries are exhausted.
63
- asyncio.TimeoutError: If the overall timeout is exceeded.
64
- """
38
+ @overload
39
+ async def retry(func: Callable[..., Any], *args: Any, retry_config: RetryConfig | None = None, **kwargs: Any) -> T: ...
40
+ @overload
41
+ def retry(config: RetryConfig | None = None) -> Callable[[Callable[..., Any]], Callable[..., Any]]: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gllm-core-binary
3
- Version: 0.3.23b3
3
+ Version: 0.4.2b1
4
4
  Summary: A library containing core components for Gen AI applications.
5
5
  Author-email: Dimitrij Ray <dimitrij.ray@gdplabs.id>, Henry Wicaksono <henry.wicaksono@gdplabs.id>, Resti Febriana <resti.febriana@gdplabs.id>
6
6
  Requires-Python: <3.14,>=3.11
@@ -27,6 +27,11 @@ Requires-Dist: pytest<9.0.0,>=8.1.1; extra == "dev"
27
27
  Requires-Dist: pytest-asyncio<1.0.0,>=0.23.6; extra == "dev"
28
28
  Requires-Dist: pytest-cov<6.0.0,>=5.0.0; extra == "dev"
29
29
  Requires-Dist: ruff<1.0.0,>=0.6.7; extra == "dev"
30
+ Provides-Extra: langchain
31
+ Requires-Dist: langchain-core<1.0.0,>=0.3.0; extra == "langchain"
32
+ Provides-Extra: google-adk
33
+ Requires-Dist: google-adk<2.0.0,>=1.0.0; extra == "google-adk"
34
+ Requires-Dist: starlette<1.0.0,>=0.49.0; extra == "google-adk"
30
35
 
31
36
  # GLLM Core
32
37
 
@@ -1,21 +1,29 @@
1
1
  gllm_core/__init__.py,sha256=eNadXBQreFzNIUMsBil5pQpemEqa118vXoQ7W68fb0Y,54
2
2
  gllm_core/__init__.pyi,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- gllm_core/constants.py,sha256=I5KKviLMMNUuuBSJJAtuWhBS7R71Oloykk5mwv_9Ee8,1155
4
- gllm_core/constants.pyi,sha256=p7-Sr-sNmjv6mboGJmALDd3UtTZ4y0m_gmUXIBbAzBk,923
3
+ gllm_core/constants.py,sha256=oYp3hUekkE4Ph3X4ujIFdFJSO5VMdXUE3BB4iCd-XCg,1112
4
+ gllm_core/constants.pyi,sha256=9M5UxEkdttu4fSJTLxhjt7q1xTRYbjTFheM5EjQ5Bs4,904
5
+ gllm_core/adapters/__init__.py,sha256=DT9i3jbfas2h3OZKB8X-h1tUjmgqULK0UpdFqXwrI18,180
6
+ gllm_core/adapters/__init__.pyi,sha256=N8JBGr2mPUMAGaMd__7XxGr2NAzfaFMuNH15QkSfbrA,187
7
+ gllm_core/adapters/tool/__init__.py,sha256=_aSDU8ch_0cs7dEnPjC3DfNJojDOR7nermdnyeqFxu0,242
8
+ gllm_core/adapters/tool/__init__.pyi,sha256=zRmMo1ilDaYF-cErfkQqy8zGnArHebdWmox-P34_7fI,244
9
+ gllm_core/adapters/tool/google_adk.py,sha256=pUay4OgMdffEVQMMIje8p4R1S8AMlCe4ekDsiWnHi5E,3194
10
+ gllm_core/adapters/tool/google_adk.pyi,sha256=0awaKRXmmK5NiAP9vNNYjMARDPWfWyQqy29k3WHoX2s,953
11
+ gllm_core/adapters/tool/langchain.py,sha256=rOxuD1EMZHcFkruT65zYeKvH_xxIzq65pdfb_uUT_f4,3825
12
+ gllm_core/adapters/tool/langchain.pyi,sha256=LBqox8xFm6jSxPfBEftJr_zUmXwPk_qHNwU3bZaphhE,855
5
13
  gllm_core/event/__init__.py,sha256=kgm77bXmkT3fBUSQSl0ELAFM9NXnaGXPPml1LcthOLk,243
6
14
  gllm_core/event/__init__.pyi,sha256=HVs5C80lFzVEH7mO8KJTUqEPi_7KyPvNeMLuoG-hDeE,177
7
- gllm_core/event/event_emitter.py,sha256=plcf_xu4jG168Z11WpJcVdYKSMKFhQc7fPwHhkLAwLo,10509
8
- gllm_core/event/event_emitter.pyi,sha256=7WcK-SV4xVwh48rsc-gt_41J8qksBTxbWSWfnr85dYk,8386
15
+ gllm_core/event/event_emitter.py,sha256=8BWYLC-Nz6maGHZLXc_dfyzC08GDQWpDbZu3nYC_7oQ,8658
16
+ gllm_core/event/event_emitter.pyi,sha256=dzhlOGnA2h5-OSRZHt-AJ-THul-rDUatfwr6dyYzYu8,7297
9
17
  gllm_core/event/messenger.py,sha256=-m4Kdv6xRRqhaUG_gol0Af7_Z1bKOOgB5VTQdQqg8G8,5664
10
18
  gllm_core/event/messenger.pyi,sha256=8Nvra-a7RqnfX0PAtm-Of5M8CvsYr0L_1k3HgdNCR5I,3190
11
19
  gllm_core/event/handler/__init__.py,sha256=IClP_8FakiM1-DfYbjGWrylm1AKKbrKX5-btBhKu6Y4,406
12
20
  gllm_core/event/handler/__init__.pyi,sha256=gZ21Fjjog3-e3-_Xv5sTpX9_Mx8X2LUzTrqp_tPisCg,377
13
- gllm_core/event/handler/console_event_handler.py,sha256=OzlxmNFCXY7hv5xsxih_sepQqgl6FFyVe8TokejSyXE,2186
14
- gllm_core/event/handler/console_event_handler.pyi,sha256=h3Dpj6-UeZnKUm7iFFOmRWk8k2Hw6YsvP28FUWYjU4U,1550
21
+ gllm_core/event/handler/console_event_handler.py,sha256=lIiBcMClRHI5h1v-xb1BzE9Zzo1QJW4gBqCeB81cFjo,1817
22
+ gllm_core/event/handler/console_event_handler.pyi,sha256=eCv0SaZEpbu8W2jQPLnWwXNzhGOSM5KAtDVUYfvlvMs,1494
15
23
  gllm_core/event/handler/event_handler.py,sha256=2r2gpykTEiFnFrroKXtm3J65nE3nysFxr3iGcOSY5Vc,3055
16
24
  gllm_core/event/handler/event_handler.pyi,sha256=chEYnw3Rp9Lk3Cz4dSn6EVlzje4BG-SlM82J-4UE5Hw,2153
17
- gllm_core/event/handler/print_event_handler.py,sha256=93EighPzNXrnTO5CbE5Qop1aTMQqHqTODyZ1JBGXqfo,6729
18
- gllm_core/event/handler/print_event_handler.pyi,sha256=Z34M73brc4eaDLDt_nmdo638qsyUVuuMLyIJ0PdBt6c,1805
25
+ gllm_core/event/handler/print_event_handler.py,sha256=SvdbjJ_diJkUlB4yZL-TGfjOB56DM86XDJnB-CZgR60,4968
26
+ gllm_core/event/handler/print_event_handler.pyi,sha256=D_xNtpcBsGl7NVSCvFKEGvaUqfMTxPaQV8zXECwmZ2Q,1674
19
27
  gllm_core/event/handler/stream_event_handler.py,sha256=RbzHAyvRoGWn5XSTmkGMBwi-3l02NrKAiNWC03Kl14I,3411
20
28
  gllm_core/event/handler/stream_event_handler.pyi,sha256=5faGSFQLBN7XMqd4nIfGkdTBI_ALVaE-fmxVAjzca9w,2908
21
29
  gllm_core/event/hook/__init__.py,sha256=ro-Hf0C2BPjxUyEZBl_a19GlH23YcHkkajQC2OarNjc,204
@@ -24,25 +32,27 @@ gllm_core/event/hook/event_hook.py,sha256=LHu9DcxcrKtiOmDVia1zrbrWg9eLqQzlox_pW9
24
32
  gllm_core/event/hook/event_hook.pyi,sha256=rMatofdNAwHI65ya_7-q3NAfmTuKhc2WkXeiGPAvcKI,600
25
33
  gllm_core/event/hook/json_stringify_event_hook.py,sha256=ImOy1kEudSIzkWkD1PSwsIbMWqoN0vpnjbAKK0EOkqI,849
26
34
  gllm_core/event/hook/json_stringify_event_hook.pyi,sha256=I-QxbaLc4rEyqhW_f4INN5UxBg_ZofHHN1HQKfPJ7rs,585
27
- gllm_core/schema/__init__.py,sha256=AbYOCjcyJJLzn13TP8M8Zfv4F2VvzkVAQnBj241IRYU,322
28
- gllm_core/schema/__init__.pyi,sha256=oqfGtlLWbWJmHiKXA9Yfz1HoEpMRqStnxwNaRRIb2Vw,288
35
+ gllm_core/schema/__init__.py,sha256=p2T4be4h062eWl4NwYFV5B9p1LONoIBLjPw31sgkZWw,336
36
+ gllm_core/schema/__init__.pyi,sha256=X7Gv3xgtl4Ylzsg9iuGgjJPkQey7OdvvIC_X1e5_LAI,310
29
37
  gllm_core/schema/chunk.py,sha256=5-MjZ9D3nB3ref6qqdygkV5njH7QsUBfTOeFK7zr5PE,4875
30
38
  gllm_core/schema/chunk.pyi,sha256=ZVYQitMtvMStiFssnTCgtSIcj30VSsK2dKscSysl3R4,2378
31
- gllm_core/schema/component.py,sha256=oOe27IigRKyE3l2WOQzaAe6PS08QgaVEs_l62rfHe8U,13492
32
- gllm_core/schema/component.pyi,sha256=kZr6If6yTkY-tdhZTUm0hJtd_m-Cu8Z4jhfKsjQgKeM,2715
39
+ gllm_core/schema/component.py,sha256=gd0g1w4UM1UqswDMndoiNsLgi2PuxO5FUBwtWuQ3410,22540
40
+ gllm_core/schema/component.pyi,sha256=fghUD8QJRXjjUT2jn64dkM_KjMv6MV9OAQUXjc7xsD0,9164
33
41
  gllm_core/schema/event.py,sha256=TXukuyS7HYlm0OMwlCjUha_JB0D_qs8NWB0K7aImAmE,1744
34
42
  gllm_core/schema/event.pyi,sha256=Yd74uSWhIO1lx0_p70rYt-LMz4FZHbbbqJP7xhVh_pY,1335
35
- gllm_core/schema/tool.py,sha256=IQOewyunEJ3zFXMhcJMHeiRcbkLewbttEVStzzBsXps,15499
36
- gllm_core/schema/tool.pyi,sha256=miqqYG0XtNY4p7UCYRS1-A23FY9wq_LZ6RvbcgGIyNQ,8038
37
- gllm_core/utils/__init__.py,sha256=5iWTy3HAPOWJw_nBZpOQZjCzmuTJuy_VGDlKVWwXf38,1104
38
- gllm_core/utils/__init__.pyi,sha256=U13s25K_edFp2WoCHfB0NyTROXvnP62P5A2YRukSIhs,1246
39
- gllm_core/utils/analyzer.py,sha256=UyNh4k0jEmi5RHSDrbLDPIulzTrsEycCkckqDZoIvhs,8138
40
- gllm_core/utils/analyzer.pyi,sha256=M7_KYdBqz5S5fEPvnd49e6ij01dOvJD-k7amAlvRwNQ,3989
43
+ gllm_core/schema/schema_generator.py,sha256=1PgcghBNCljTASB_dbmcl9-5sJIevs8XiXm7RT6XFig,5129
44
+ gllm_core/schema/schema_generator.pyi,sha256=ToadC6UKEq35k32wUK1VaMKiICRtENXUYdAQOMlTg3U,1445
45
+ gllm_core/schema/tool.py,sha256=DnuZaDnd2u9-eF06iFYtYgDHKUnTKx4GWuqvxm6Fb2c,16644
46
+ gllm_core/schema/tool.pyi,sha256=T5TufJZPYUzYoSPZBX0FkqgZ9u03VAIsZdwvY1PS7nw,8848
47
+ gllm_core/utils/__init__.py,sha256=THjHMxGlgdlVSR6LoruXzsxHI9UKaN7dCadsTrjA6OY,1200
48
+ gllm_core/utils/__init__.pyi,sha256=ZFilGPXXqc2JGwy8AV8N7pf6zmtd9clzuk310PIGkBs,1359
49
+ gllm_core/utils/analyzer.py,sha256=V8hTVdqMpll0BuH9lFZHiX7Ijl72aNvBlYXLJy9FSRI,8882
50
+ gllm_core/utils/analyzer.pyi,sha256=M48PRor76L5eAQBpSqpv3EkZ4kU1t5Zm3CPFd34dxWM,4470
41
51
  gllm_core/utils/binary_handler_factory.py,sha256=JGk1G5OzYLGlx6W2eYb8mSXlHZh29zEKQEx1kX0HLuc,2512
42
52
  gllm_core/utils/binary_handler_factory.pyi,sha256=imcuCL2oa-7uwTnC_vI-_KvE1hGu1-5U4ZiF5fShDmQ,1739
43
53
  gllm_core/utils/chunk_metadata_merger.py,sha256=-Tk83zuXFlUh2ZilXHSnCTkJW1b8hgkCRaVQu136-xY,4096
44
54
  gllm_core/utils/chunk_metadata_merger.pyi,sha256=J1lHTFV-0IiC6xKzzC7x1D1wBoki249muEU2HrF6C58,2317
45
- gllm_core/utils/concurrency.py,sha256=igz4VeLI2vjd7oVeX-G-aaYibViMlHmcp7Ht4K942cY,6338
55
+ gllm_core/utils/concurrency.py,sha256=KM7qS5rN25ppssSuDsH80xzFeDYuu0MhHn6-O021AjQ,6352
46
56
  gllm_core/utils/concurrency.pyi,sha256=n_Mb9D_2hJAQ7VSwDBxhgmDv7hyFRKevDlhcHoAjvyA,3959
47
57
  gllm_core/utils/event_formatter.py,sha256=c1jOgu468IY3NPIXFbC56khU8_LERUFLXBocO25mk4g,2237
48
58
  gllm_core/utils/event_formatter.pyi,sha256=ocQ_Ev_XorRhLzj0c2szlclz8V3_Ysbg6qHmjhmur3k,1375
@@ -50,17 +60,19 @@ gllm_core/utils/google_sheets.py,sha256=8p2f-Kfz4gqtq9_bIJd5GvQY22oQ4sTaeyOYJM4t
50
60
  gllm_core/utils/google_sheets.pyi,sha256=IjKdc7H3hBLAp8I8jxnwDfKP79D1EIBIRQKKFTUNqjM,939
51
61
  gllm_core/utils/imports.py,sha256=obCG8wrTp5MDDzeQ5SbqUgwX1PDJp-OuhPxL7HZAVC0,3625
52
62
  gllm_core/utils/imports.pyi,sha256=-KM0pyw7yFVCUZjHjoNBRFgEnI8hlr0pquKuhcA2X9M,2196
53
- gllm_core/utils/logger_manager.py,sha256=RhU41aERkCMNumWEJdy7hdt-3zBqnX5afu9VyG9kAZw,12377
54
- gllm_core/utils/logger_manager.pyi,sha256=0U07paP3_NSl8QiEw3_LnboA-HdHU7VcAB4pX6_voNw,7074
63
+ gllm_core/utils/logger_manager.py,sha256=xnM3ON_6GGS-xaWFVEruq_830FwwXyuEvqqCaZJ-g7U,12827
64
+ gllm_core/utils/logger_manager.pyi,sha256=IDRgA-5jRDu4miO5Ru_tFJHql2JlHdr1GvZdmdS9Sg8,7159
65
+ gllm_core/utils/main_method_resolver.py,sha256=lGirchC4Eo4Y0WQdOp3ORIzlhBAyuPY9w1YMwiJODWY,7801
66
+ gllm_core/utils/main_method_resolver.pyi,sha256=dHozSqFMwCyVorQ0ZE9N-c2V4PkpF8FdU1VGGPvTjK4,2178
55
67
  gllm_core/utils/merger_method.py,sha256=pf06CAnC8ZhJZB7qjwades6AY_IAgoBGSeeZAxc3NYM,4727
56
68
  gllm_core/utils/merger_method.pyi,sha256=JsgHnO47cqenqNxCrHqhAR-nnR_dEqE-7wprVrd8ZFg,1868
57
- gllm_core/utils/retry.py,sha256=6YSBD2WhU0i-mys1ZMviH0afNQNIk4w1rPuk_uJOeUM,5574
58
- gllm_core/utils/retry.pyi,sha256=2RcG5C9xQS2nCSWBmtsOfKgIk5mVXHmYBrXrqStvsrI,2839
69
+ gllm_core/utils/retry.py,sha256=4uYZnqkC2poeGt9rpYiKXfrS7eZ1plnpPwVYB_l7sTY,9084
70
+ gllm_core/utils/retry.pyi,sha256=KxlPzURzZfCSgKC44v98nR2bqamzHqtbRuXLDEuX29c,1614
59
71
  gllm_core/utils/similarity.py,sha256=_pMMOkJW0gBxBS3stBvqRGa8IIG3owA-JXiIR6LzJPc,864
60
72
  gllm_core/utils/similarity.pyi,sha256=HmSxE5VfPwYZYih_bSIz8QRDbkouO_jij-FX6TSCEdM,439
61
73
  gllm_core/utils/validation.py,sha256=Vxd4PxHR2tl-VcfIqJFgA3oHf2VJvcz5D39WbwvorhQ,767
62
74
  gllm_core/utils/validation.pyi,sha256=-RdMmb8afH7F7q4Ao7x6FbwaDfxUHn3hA3WiOgzB-3s,397
63
- gllm_core_binary-0.3.23b3.dist-info/METADATA,sha256=ZM3HKQ2fy6b7nvskaomJTe1CTDZApGcx_bDi_btBx7I,4432
64
- gllm_core_binary-0.3.23b3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
- gllm_core_binary-0.3.23b3.dist-info/top_level.txt,sha256=UYoTGvK_Yec95-_QUuVCKEr6PUXb5Lc7Dr-x8SeX9uM,10
66
- gllm_core_binary-0.3.23b3.dist-info/RECORD,,
75
+ gllm_core_binary-0.4.2b1.dist-info/METADATA,sha256=5UxLNPRtb0JcmQZsqhSSMb_MyfwtfD546SEI4yUkGhI,4681
76
+ gllm_core_binary-0.4.2b1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
77
+ gllm_core_binary-0.4.2b1.dist-info/top_level.txt,sha256=UYoTGvK_Yec95-_QUuVCKEr6PUXb5Lc7Dr-x8SeX9uM,10
78
+ gllm_core_binary-0.4.2b1.dist-info/RECORD,,