Skip to content

Commit 03e215d

Browse files
Wendong-Fanwaleedalzarooni
authored andcommitted
enhance: PR2998 add kwargs to ChunkrReaderConfig (#3247)
1 parent 68e7d9d commit 03e215d

File tree

2 files changed

+26
-18
lines changed

2 files changed

+26
-18
lines changed

camel/loaders/chunkr_reader.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,12 @@ class ChunkrReaderConfig:
3434
high_resolution (bool, optional): Whether to use high resolution OCR.
3535
(default: :obj:`True`)
3636
ocr_strategy (str, optional): The OCR strategy. Defaults to 'Auto'.
37-
**kwargs: Additional keyword arguments to pass to the Chunkr Configuration.
38-
This accepts all other Configuration parameters such as expires_in,
39-
pipeline, segment_processing, segmentation_strategy, etc.
40-
See: https://github.com/lumina-ai-inc/chunkr/blob/main/core/src/models/task.rs#L749
37+
**kwargs: Additional keyword arguments to pass to the Chunkr
38+
Configuration. This accepts all other Configuration parameters
39+
such as expires_in, pipeline, segment_processing,
40+
segmentation_strategy, etc.
41+
See: https://github.com/lumina-ai-inc/chunkr/blob/main/core/src/
42+
models/task.rs#L749
4143
"""
4244

4345
def __init__(
@@ -181,7 +183,11 @@ def _to_chunkr_configuration(
181183
Returns:
182184
Configuration: Chunkr SDK configuration.
183185
"""
184-
from chunkr_ai.models import ChunkProcessing, Configuration, OcrStrategy
186+
from chunkr_ai.models import (
187+
ChunkProcessing,
188+
Configuration,
189+
OcrStrategy,
190+
)
185191

186192
return Configuration(
187193
chunk_processing=ChunkProcessing(

test/loaders/test_chunkr_reader.py

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,15 @@
2121
from camel.loaders import ChunkrReader, ChunkrReaderConfig
2222

2323

24-
class TestChunkrReader(unittest.TestCase):
25-
def setUp(self):
26-
with patch('chunkr_ai.Chunkr'):
27-
self.reader = ChunkrReader(api_key="fake_api_key")
24+
class TestChunkrReader(unittest.IsolatedAsyncioTestCase):
25+
@patch('chunkr_ai.Chunkr')
26+
def setUp(self, mock_chunkr_class):
27+
self.reader = ChunkrReader(api_key="fake_api_key")
28+
self.mock_chunkr = self.reader._chunkr
2829

2930
@patch('chunkr_ai.Chunkr')
3031
async def test_submit_task_success(self, mock_chunkr_class):
31-
mock_chunkr_instance = mock_chunkr_class.return_value
32+
mock_chunkr_instance = self.mock_chunkr
3233
mock_task = AsyncMock()
3334
mock_task.task_id = "12345"
3435
mock_chunkr_instance.create_task = AsyncMock(return_value=mock_task)
@@ -40,7 +41,7 @@ async def test_submit_task_success(self, mock_chunkr_class):
4041

4142
@patch('chunkr_ai.Chunkr')
4243
async def test_submit_task_with_config(self, mock_chunkr_class):
43-
mock_chunkr_instance = mock_chunkr_class.return_value
44+
mock_chunkr_instance = self.mock_chunkr
4445
mock_task = AsyncMock()
4546
mock_task.task_id = "12345"
4647
mock_chunkr_instance.create_task = AsyncMock(return_value=mock_task)
@@ -55,7 +56,7 @@ async def test_submit_task_with_config(self, mock_chunkr_class):
5556

5657
@patch('chunkr_ai.Chunkr')
5758
async def test_submit_task_failure(self, mock_chunkr_class):
58-
mock_chunkr_instance = mock_chunkr_class.return_value
59+
mock_chunkr_instance = self.mock_chunkr
5960
mock_chunkr_instance.create_task = AsyncMock(side_effect=Exception())
6061

6162
with self.assertRaises(ValueError) as context:
@@ -66,10 +67,10 @@ async def test_submit_task_failure(self, mock_chunkr_class):
6667

6768
@patch('chunkr_ai.Chunkr')
6869
async def test_get_task_output_success(self, mock_chunkr_class):
69-
mock_chunkr_instance = mock_chunkr_class.return_value
70+
mock_chunkr_instance = self.mock_chunkr
7071
mock_task = AsyncMock()
7172
mock_task.status = Status.SUCCEEDED
72-
mock_task.json.return_value = {"status": "Succeeded"}
73+
mock_task.json = MagicMock(return_value={"status": "Succeeded"})
7374
mock_task.poll = AsyncMock()
7475
mock_chunkr_instance.get_task = AsyncMock(return_value=mock_task)
7576

@@ -82,7 +83,7 @@ async def test_get_task_output_success(self, mock_chunkr_class):
8283

8384
@patch('chunkr_ai.Chunkr')
8485
async def test_get_task_output_failed(self, mock_chunkr_class):
85-
mock_chunkr_instance = mock_chunkr_class.return_value
86+
mock_chunkr_instance = self.mock_chunkr
8687
mock_task = AsyncMock()
8788
mock_task.status = Status.FAILED
8889
mock_task.poll = AsyncMock()
@@ -96,7 +97,7 @@ async def test_get_task_output_failed(self, mock_chunkr_class):
9697

9798
@patch('chunkr_ai.Chunkr')
9899
async def test_get_task_output_get_task_error(self, mock_chunkr_class):
99-
mock_chunkr_instance = mock_chunkr_class.return_value
100+
mock_chunkr_instance = self.mock_chunkr
100101
mock_chunkr_instance.get_task = AsyncMock(side_effect=Exception())
101102

102103
with self.assertRaises(ValueError) as context:
@@ -107,7 +108,7 @@ async def test_get_task_output_get_task_error(self, mock_chunkr_class):
107108

108109
@patch('chunkr_ai.Chunkr')
109110
async def test_get_task_output_poll_error(self, mock_chunkr_class):
110-
mock_chunkr_instance = mock_chunkr_class.return_value
111+
mock_chunkr_instance = self.mock_chunkr
111112
mock_task = AsyncMock()
112113
mock_task.poll = AsyncMock(side_effect=Exception())
113114
mock_chunkr_instance.get_task = AsyncMock(return_value=mock_task)
@@ -195,7 +196,7 @@ def test_to_chunkr_configuration_with_kwargs(
195196
mock_chunk_processing.return_value = mock_chunk_processing_instance
196197
mock_ocr_strategy.AUTO = "AUTO"
197198

198-
result = self.reader._to_chunkr_configuration(config)
199+
self.reader._to_chunkr_configuration(config)
199200

200201
mock_chunk_processing.assert_called_once_with(target_length=512)
201202
mock_configuration.assert_called_once_with(
@@ -206,5 +207,6 @@ def test_to_chunkr_configuration_with_kwargs(
206207
pipeline="test_pipeline",
207208
)
208209

210+
209211
if __name__ == "__main__":
210212
unittest.main()

0 commit comments

Comments
 (0)