nl-processing 0.4.0__tar.gz → 0.5.0__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.
- {nl_processing-0.4.0 → nl_processing-0.5.0}/PKG-INFO +1 -1
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/sampling/service.py +18 -6
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing.egg-info/PKG-INFO +1 -1
- {nl_processing-0.4.0 → nl_processing-0.5.0}/pyproject.toml +1 -1
- {nl_processing-0.4.0 → nl_processing-0.5.0}/README.md +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/core/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/core/exceptions.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/core/models.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/core/prompts.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/core/scripts/prompt_author.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/backend/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/backend/_neon_exercise.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/backend/_queries.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/backend/abstract.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/backend/neon.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/exceptions.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/exercise_progress.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/logging.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/models.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/service.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/testing.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/_local_store_queries.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/exceptions.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/local_store.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/logging.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/models.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/service.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/sync.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/benchmark.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/image_encoding.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/prompts/generate_nl_prompt.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/prompts/nl.json +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/service.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/prompts/generate_nl_prompt.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/prompts/nl.json +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/service.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/sampling/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_text/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_text/prompts/generate_nl_ru_prompt.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_text/prompts/nl_ru.json +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_text/service.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_word/__init__.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_word/prompts/generate_nl_ru_prompt.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_word/prompts/nl_ru.json +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/translate_word/service.py +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing.egg-info/SOURCES.txt +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing.egg-info/dependency_links.txt +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing.egg-info/requires.txt +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing.egg-info/top_level.txt +0 -0
- {nl_processing-0.4.0 → nl_processing-0.5.0}/setup.cfg +0 -0
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
"""WordSampler — weighted random sampling of practice items for language exercises."""
|
|
2
2
|
|
|
3
3
|
import random
|
|
4
|
+
from typing import Protocol, runtime_checkable
|
|
4
5
|
|
|
5
6
|
from nl_processing.core.models import Language, Word
|
|
6
7
|
from nl_processing.database.exercise_progress import ExerciseProgressStore
|
|
7
8
|
from nl_processing.database.models import ScoredWordPair, WordPair
|
|
8
9
|
|
|
9
10
|
|
|
11
|
+
@runtime_checkable
|
|
12
|
+
class ScoredPairProvider(Protocol):
|
|
13
|
+
"""Data source that provides scored word pairs for sampling."""
|
|
14
|
+
|
|
15
|
+
async def get_word_pairs_with_scores(self) -> list[ScoredWordPair]: ...
|
|
16
|
+
|
|
17
|
+
|
|
10
18
|
class WordSampler:
|
|
11
19
|
"""Weighted random sampling of practice items for language exercises."""
|
|
12
20
|
|
|
@@ -18,6 +26,7 @@ class WordSampler:
|
|
|
18
26
|
target_language: Language = Language.RU,
|
|
19
27
|
exercise_types: list[str],
|
|
20
28
|
positive_balance_weight: float = 0.01,
|
|
29
|
+
scored_store: ScoredPairProvider | None = None,
|
|
21
30
|
) -> None:
|
|
22
31
|
if not exercise_types:
|
|
23
32
|
msg = "exercise_types must be a non-empty list"
|
|
@@ -25,12 +34,15 @@ class WordSampler:
|
|
|
25
34
|
if not (0 < positive_balance_weight <= 1):
|
|
26
35
|
msg = f"positive_balance_weight must be in (0, 1], got {positive_balance_weight}"
|
|
27
36
|
raise ValueError(msg)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
if scored_store is not None:
|
|
38
|
+
self._progress_store: ScoredPairProvider = scored_store
|
|
39
|
+
else:
|
|
40
|
+
self._progress_store = ExerciseProgressStore(
|
|
41
|
+
user_id=user_id,
|
|
42
|
+
source_language=source_language,
|
|
43
|
+
target_language=target_language,
|
|
44
|
+
exercise_types=exercise_types,
|
|
45
|
+
)
|
|
34
46
|
self._exercise_types = exercise_types
|
|
35
47
|
self._positive_balance_weight = positive_balance_weight
|
|
36
48
|
self._source_language = source_language
|
|
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
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database/backend/_neon_exercise.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
|
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/database_cache/_local_store_queries.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/__init__.py
RENAMED
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/benchmark.py
RENAMED
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/image_encoding.py
RENAMED
|
File without changes
|
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/prompts/nl.json
RENAMED
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_text_from_image/service.py
RENAMED
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/prompts/nl.json
RENAMED
|
File without changes
|
{nl_processing-0.4.0 → nl_processing-0.5.0}/nl_processing/extract_words_from_text/service.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|