ReMe/tests/unit
xyf2020 82971ac5b0
feat(chunker): better json chunker and json chunker (#325)
* feat(file_chunker): add dedicated JSON and JSONL file chunkers

- Add JsonFileChunker: structure-aware chunking preserving nested key paths,
  optional list-to-dict conversion, size measured by json.dumps() char count
- Add JsonlFileChunker: line-aligned sliding-window chunking with configurable
  overlap, supports char/byte mode switching
- Register both chunkers in default.yaml (json for .json, jsonl for .jsonl)
- Add comprehensive unit tests (21 + 20 test cases)

* chore(config): update default chunker supported_extensions to txt/log

* refactor(json_chunker): optimize _build_tree O(n²) serialization and rewrite tests

- Fix O(n²) redundant json.dumps in _build_tree:
  * Empty containers handled directly as leaves (0 serialization)
  * Non-empty containers recurse first, then reconstruct+dump once
  * Only containers that become leaves pay serialization cost
- Add _reconstruct_object/_reconstruct_array helpers
- Remove dead code: _merge_json method
- Apply user changes: min_element_size formula 0.01->0.05, threshold < to <=
- Use indent=None for compact output (consistent with _SizeNode estimation)
- Remove unused _text_size from JsonlFileChunker

Test rewrite:
- Replace try/finally boilerplate with make_json fixture
- Group tests into TestXxx classes with pytest.mark.parametrize
- Add TestOutputValidation: 9 parametrized scenarios verifying:
  * All chunks are valid JSON
  * Text length <= chunk_chars (with single-leaf tolerance)
  * Leaf-value concatenation matches original data (dict + array roots)
- Add TestSizeNode: incremental size accuracy tests
- Add TestDfsAlgorithm: path wrapping, DFS order, calibration tests
- Update test_min_element_size_formula for new 0.05 multiplier
- Update test_build_tree_structure for larger min_element_size

* chore: apply black formatting to test files
2026-07-08 15:18:59 +08:00
..
__init__.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_auto_dream.py feat(evolve): enhance agent reply processing and logging capabilities (#293) 2026-06-24 22:08:47 +08:00
test_background_steps.py fix(auto-memory): preserve message timestamps (#310) 2026-07-01 17:15:07 +08:00
test_base_component.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_bm25_index_perf.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_channel_notify.py docs: rename vault_dir to workspace_dir in documentation and examples (#286) 2026-06-22 16:58:57 +08:00
test_channel_sink.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_claim_channel.py docs: rename vault_dir to workspace_dir in documentation and examples (#286) 2026-06-22 16:58:57 +08:00
test_common_steps.py docs: rename vault_dir to workspace_dir in documentation and examples (#286) 2026-06-22 16:58:57 +08:00
test_component_registry.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_config_parser.py feat(mem): Enhance daily note system with metadata handling and write functionality (#295) 2026-06-25 21:54:56 +08:00
test_cron_job.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_crud_steps.py fix(file_io): fix risk of out-workspace paths (#322) 2026-07-06 15:25:21 +08:00
test_daily_steps.py fix(auto-memory): preserve message timestamps (#310) 2026-07-01 17:15:07 +08:00
test_default_file_chunker.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_evolve_utils.py fix(auto-memory): preserve message timestamps (#310) 2026-07-01 17:15:07 +08:00
test_file_catalog.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_file_graph.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_file_store_consistency.py fix(embedding): reject mismatched embedding dimensions (#330) 2026-07-08 14:23:38 +09:00
test_http_client.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_job.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_json_file_chunker.py feat(chunker): better json chunker and json chunker (#325) 2026-07-08 15:18:59 +08:00
test_jsonl_file_chunker.py feat(chunker): better json chunker and json chunker (#325) 2026-07-08 15:18:59 +08:00
test_keyword_index.py Update version to 0.4.0.2 and improve tokenizer index handling (#290) 2026-06-24 15:01:07 +08:00
test_link_expansion.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_local_embedding_store.py fix(embedding): reject mismatched embedding dimensions (#330) 2026-07-08 14:23:38 +09:00
test_markdown_file_chunker.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_packaging.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_prompt_handler.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_read_image_steps.py docs: rename vault_dir to workspace_dir in documentation and examples (#286) 2026-06-22 16:58:57 +08:00
test_read_with_neighbors.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_reme_cli.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_runtime_context.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_search_step.py feat(search): add tool context deduplication and improve search configuration (#321) 2026-07-06 16:18:39 +09:00
test_service.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_service_utils.py feat(benchmark): add lme benchmark steps (#326) 2026-07-07 18:53:39 +09:00
test_tokenizer.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_utils.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00
test_wikilink_utils.py docs: rename vault_dir to workspace_dir in documentation and examples (#286) 2026-06-22 16:58:57 +08:00
test_write_metadata_lock.py init: reme version 0.4.0 (#284) 2026-06-22 15:41:19 +08:00