hamtaa-texttools 0.1.48__tar.gz → 0.1.50__tar.gz
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.
Potentially problematic release.
This version of hamtaa-texttools might be problematic. Click here for more details.
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/PKG-INFO +1 -1
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/hamtaa_texttools.egg-info/PKG-INFO +1 -1
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/pyproject.toml +1 -1
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/batch_manager/batch_runner.py +1 -1
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/flex_processor.py +31 -29
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/README.md +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/hamtaa_texttools.egg-info/SOURCES.txt +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/hamtaa_texttools.egg-info/dependency_links.txt +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/hamtaa_texttools.egg-info/requires.txt +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/hamtaa_texttools.egg-info/top_level.txt +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/setup.cfg +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/setup.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/tests/test_vllm_output.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_categorizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_keyword_extractor.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_ner_extractor.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_detector.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_generator.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_merger.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_rewriter.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_router.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_summarizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_task_performer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_translator.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/formatter/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/formatter/base.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/formatter/gemma3_formatter.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/handlers/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/handlers/categorizer/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/handlers/categorizer/categorizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/handlers/handlers.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/encoder_model/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/encoder_model/encoder_vectorizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/llm/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/llm/gemma_categorizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/llm/openai_categorizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/keyword_extractor/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/keyword_extractor/gemma_extractor.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/merger/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/merger/gemma_question_merger.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/ner/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/ner/gemma_ner_extractor.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_detector/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_detector/gemma_detector.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_detector/llm_detector.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_generator/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_generator/gemma_question_generator.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/reranker/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/reranker/reranker.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/reranker/scorer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/reranker/sorter.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/rewriter/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/rewriter/gemma_question_rewriter.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/router/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/router/gemma_router.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/subject_to_question/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/subject_to_question/gemma_question_generator.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/summarizer/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/summarizer/gemma_summarizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/summarizer/llm_summerizer.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/translator/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/translator/gemma_translator.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/batch_manager/__init__.py +0 -0
- {hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/batch_manager/batch_manager.py +0 -0
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/batch_manager/batch_runner.py
RENAMED
|
@@ -9,7 +9,7 @@ from typing import Any, Callable
|
|
|
9
9
|
from openai import OpenAI
|
|
10
10
|
from pydantic import BaseModel
|
|
11
11
|
|
|
12
|
-
from texttools.batch_manager import SimpleBatchManager
|
|
12
|
+
from texttools.utils.batch_manager.batch_manager import SimpleBatchManager
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class OutputModel(BaseModel):
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
-
import random
|
|
2
1
|
import asyncio
|
|
3
|
-
|
|
2
|
+
import random
|
|
4
3
|
from typing import Optional
|
|
4
|
+
|
|
5
|
+
from openai import APIError, OpenAI, RateLimitError
|
|
5
6
|
from pydantic import BaseModel, ValidationError
|
|
6
|
-
import httpx
|
|
7
7
|
|
|
8
8
|
# http_client = httpx()
|
|
9
9
|
# test_client = OpenAI(http_client=http_client)
|
|
10
10
|
|
|
11
|
+
|
|
11
12
|
async def flex_processing(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
LLM_client: OpenAI,
|
|
14
|
+
system_prompt: str,
|
|
15
|
+
user_prompt: str,
|
|
16
|
+
output_model: Optional[BaseModel] = None,
|
|
17
|
+
prompt_cache_key: Optional[str] = None,
|
|
18
|
+
max_retries: int = 10,
|
|
19
|
+
base_delay: float = 2.0,
|
|
20
|
+
model_name: Optional[str] = "gpt-5-mini",
|
|
21
|
+
**client_kwargs,
|
|
22
|
+
):
|
|
21
23
|
"""
|
|
22
24
|
Wrapper for flex processing with retry and exponential backoff.
|
|
23
25
|
Handles 429 'Resource Unavailable' errors gracefully.
|
|
@@ -25,24 +27,24 @@ async def flex_processing(
|
|
|
25
27
|
for attempt in range(max_retries):
|
|
26
28
|
try:
|
|
27
29
|
request_kwargs = {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
"model": model_name,
|
|
31
|
+
"messages": [
|
|
32
|
+
{"role": "system", "content": system_prompt},
|
|
33
|
+
{"role": "user", "content": user_prompt},
|
|
34
|
+
],
|
|
35
|
+
"service_tier": "flex",
|
|
36
|
+
"timeout": 900.0,
|
|
37
|
+
**client_kwargs,
|
|
38
|
+
}
|
|
37
39
|
if output_model:
|
|
38
40
|
request_kwargs["response_format"] = output_model
|
|
39
41
|
if prompt_cache_key:
|
|
40
42
|
request_kwargs["prompt_cache_key"] = prompt_cache_key
|
|
41
|
-
|
|
43
|
+
|
|
42
44
|
response = LLM_client.chat.completions.parse(**request_kwargs)
|
|
43
45
|
# response = self.client.chat.completions.parse(output_model)
|
|
44
46
|
content = response.choices[0].message.content
|
|
45
|
-
|
|
47
|
+
# ✅ Validate structured output if a model is provided
|
|
46
48
|
if output_model is not None:
|
|
47
49
|
try:
|
|
48
50
|
output_model.model_validate_json(content)
|
|
@@ -51,17 +53,17 @@ async def flex_processing(
|
|
|
51
53
|
return base_content
|
|
52
54
|
except ValidationError as ve:
|
|
53
55
|
# Treat invalid output as retryable
|
|
54
|
-
wait_time = base_delay * (2
|
|
56
|
+
wait_time = base_delay * (2**attempt) + random.uniform(0, 1)
|
|
55
57
|
print(
|
|
56
|
-
f"[Flex Retry] Attempt {attempt+1}/{max_retries} produced invalid structured output. "
|
|
58
|
+
f"[Flex Retry] Attempt {attempt + 1}/{max_retries} produced invalid structured output. "
|
|
57
59
|
f"Retrying in {wait_time:.2f}s... (ValidationError: {ve})"
|
|
58
60
|
)
|
|
59
61
|
await asyncio.sleep(wait_time)
|
|
60
|
-
continue
|
|
62
|
+
continue
|
|
61
63
|
except (RateLimitError, APIError) as e:
|
|
62
|
-
wait_time = base_delay * (2
|
|
64
|
+
wait_time = base_delay * (2**attempt) + random.uniform(0, 1)
|
|
63
65
|
print(
|
|
64
|
-
f"[Flex Retry] Attempt {attempt+1}/{max_retries} failed "
|
|
66
|
+
f"[Flex Retry] Attempt {attempt + 1}/{max_retries} failed "
|
|
65
67
|
f"with error: {type(e).__name__} - {e}. "
|
|
66
68
|
f"Retrying in {wait_time:.2f}s..."
|
|
67
69
|
)
|
|
@@ -75,4 +77,4 @@ async def flex_processing(
|
|
|
75
77
|
|
|
76
78
|
raise RuntimeError(
|
|
77
79
|
f"[Flex Processing] Exhausted {max_retries} retries for prompt_key={prompt_cache_key}"
|
|
78
|
-
)
|
|
80
|
+
)
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/hamtaa_texttools.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_keyword_extractor.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_detector.py
RENAMED
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_generator.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/base/base_question_rewriter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/handlers/categorizer/__init__.py
RENAMED
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/handlers/categorizer/categorizer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/categorizer/llm/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/keyword_extractor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/merger/gemma_question_merger.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/ner/gemma_ner_extractor.py
RENAMED
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_detector/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/question_generator/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/subject_to_question/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/summarizer/gemma_summarizer.py
RENAMED
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/summarizer/llm_summerizer.py
RENAMED
|
File without changes
|
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/tools/translator/gemma_translator.py
RENAMED
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/batch_manager/__init__.py
RENAMED
|
File without changes
|
{hamtaa_texttools-0.1.48 → hamtaa_texttools-0.1.50}/texttools/utils/batch_manager/batch_manager.py
RENAMED
|
File without changes
|