File size: 19,785 Bytes
cc59214
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
[
  "tests/test_analysis_service.py::TestAnalysisServiceConcurrency::test_default_max_concurrent",
  "tests/test_analysis_service.py::TestAnalysisServiceConcurrency::test_semaphore_initialized_with_max_concurrent",
  "tests/test_analysis_service.py::TestAnalysisServiceConcurrency::test_semaphore_limits_parallel_jobs",
  "tests/test_analysis_service.py::TestOnTaskDone::test_cancelled_task_marks_job_failed",
  "tests/test_analysis_service.py::TestOnTaskDone::test_exception_marks_job_failed",
  "tests/test_analysis_service.py::TestOnTaskDone::test_successful_task_does_not_mark_failed",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis_document_not_found",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis_empty_document_id",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis_whitespace_document_id",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis_with_partial_pipeline_options",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis_with_pipeline_options",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_create_analysis_with_vlm_config",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_delete_analysis",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_delete_analysis_not_found",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_get_analysis",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_get_analysis_not_found",
  "tests/test_api_endpoints.py::TestAnalysisEndpoints::test_list_analyses",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_delete_document",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_delete_document_not_found",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_get_document",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_get_document_not_found",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_list_documents",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_preview_page_out_of_range",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_upload_document",
  "tests/test_api_endpoints.py::TestDocumentEndpoints::test_upload_too_large",
  "tests/test_api_endpoints.py::TestHealthEndpoint::test_health",
  "tests/test_bbox.py::TestDegenerateBboxes::test_empty_bbox_is_not_mutated",
  "tests/test_bbox.py::TestDegenerateBboxes::test_inverted_lr_returns_empty",
  "tests/test_bbox.py::TestDegenerateBboxes::test_inverted_tb_topleft_returns_empty",
  "tests/test_bbox.py::TestDegenerateBboxes::test_point_bbox_returns_empty",
  "tests/test_bbox.py::TestDegenerateBboxes::test_zero_height_returns_empty",
  "tests/test_bbox.py::TestDegenerateBboxes::test_zero_width_returns_empty",
  "tests/test_bbox.py::TestPageFormats::test_a3_page",
  "tests/test_bbox.py::TestPageFormats::test_a4_page",
  "tests/test_bbox.py::TestPageFormats::test_landscape_page",
  "tests/test_bbox.py::TestPageFormats::test_legal_page",
  "tests/test_bbox.py::TestPrecision::test_bbox_at_page_bottom_right",
  "tests/test_bbox.py::TestPrecision::test_bbox_at_page_origin",
  "tests/test_bbox.py::TestPrecision::test_bottomleft_near_page_edge",
  "tests/test_bbox.py::TestPrecision::test_fractional_coordinates",
  "tests/test_bbox.py::TestPrecision::test_very_small_bbox",
  "tests/test_bbox.py::TestToTopleftList::test_bottomleft_origin_converted",
  "tests/test_bbox.py::TestToTopleftList::test_full_page_bbox_bottomleft",
  "tests/test_bbox.py::TestToTopleftList::test_full_page_bbox_topleft",
  "tests/test_bbox.py::TestToTopleftList::test_result_has_positive_dimensions",
  "tests/test_bbox.py::TestToTopleftList::test_topleft_origin_unchanged",
  "tests/test_bbox.py::TestToTopleftListStandard::test_bottomleft_origin_converted",
  "tests/test_bbox.py::TestToTopleftListStandard::test_full_page_bbox_bottomleft",
  "tests/test_bbox.py::TestToTopleftListStandard::test_full_page_bbox_topleft",
  "tests/test_bbox.py::TestToTopleftListStandard::test_result_has_positive_dimensions",
  "tests/test_bbox.py::TestToTopleftListStandard::test_topleft_origin_unchanged",
  "tests/test_chunking.py::TestAnalysisJobChunking::test_default_chunking_fields",
  "tests/test_chunking.py::TestAnalysisJobChunking::test_mark_completed_with_chunks",
  "tests/test_chunking.py::TestAnalysisJobChunking::test_mark_completed_without_chunks",
  "tests/test_chunking.py::TestChunkBbox::test_chunk_result_with_bboxes",
  "tests/test_chunking.py::TestChunkBbox::test_construction",
  "tests/test_chunking.py::TestChunkBbox::test_serializable",
  "tests/test_chunking.py::TestChunkBboxResponse::test_chunk_response_with_bboxes",
  "tests/test_chunking.py::TestChunkBboxResponse::test_serializes",
  "tests/test_chunking.py::TestChunkResponse::test_serializes_to_camel_case",
  "tests/test_chunking.py::TestChunkResult::test_defaults",
  "tests/test_chunking.py::TestChunkResult::test_full_values",
  "tests/test_chunking.py::TestChunkResult::test_serializable",
  "tests/test_chunking.py::TestChunkingOptions::test_custom_values",
  "tests/test_chunking.py::TestChunkingOptions::test_defaults",
  "tests/test_chunking.py::TestChunkingOptions::test_is_default",
  "tests/test_chunking.py::TestChunkingOptionsRequest::test_boundary_max_tokens",
  "tests/test_chunking.py::TestChunkingOptionsRequest::test_custom_values",
  "tests/test_chunking.py::TestChunkingOptionsRequest::test_defaults",
  "tests/test_chunking.py::TestChunkingOptionsRequest::test_invalid_chunker_type",
  "tests/test_chunking.py::TestChunkingOptionsRequest::test_max_tokens_too_high",
  "tests/test_chunking.py::TestChunkingOptionsRequest::test_max_tokens_too_low",
  "tests/test_chunking.py::TestCreateAnalysisWithChunking::test_create_with_chunking_options",
  "tests/test_chunking.py::TestCreateAnalysisWithChunking::test_create_without_chunking_options",
  "tests/test_chunking.py::TestCreateAnalysisWithChunking::test_response_includes_chunking_fields",
  "tests/test_chunking.py::TestRechunkEndpoint::test_rechunk_invalid_chunker_type",
  "tests/test_chunking.py::TestRechunkEndpoint::test_rechunk_no_document_json",
  "tests/test_chunking.py::TestRechunkEndpoint::test_rechunk_not_completed",
  "tests/test_chunking.py::TestRechunkEndpoint::test_rechunk_returns_bboxes",
  "tests/test_chunking.py::TestRechunkEndpoint::test_rechunk_success",
  "tests/test_chunking.py::TestRechunkRequest::test_parses",
  "tests/test_config.py::TestParsingMode::test_from_string",
  "tests/test_config.py::TestParsingMode::test_invalid_raises",
  "tests/test_config.py::TestParsingMode::test_values",
  "tests/test_config.py::TestResolveConfig::test_config_is_frozen",
  "tests/test_config.py::TestResolveConfig::test_defaults",
  "tests/test_config.py::TestResolveConfig::test_env_var_override",
  "tests/test_config.py::TestResolveConfig::test_none_values_use_defaults",
  "tests/test_config.py::TestResolveConfig::test_override_all",
  "tests/test_config.py::TestResolveConfig::test_override_mode",
  "tests/test_config.py::TestResolveConfig::test_override_ollama_model",
  "tests/test_config.py::TestResolveConfig::test_override_ollama_url",
  "tests/test_config.py::TestResolveConfig::test_per_request_overrides_env",
  "tests/test_document_service.py::TestCountPages::test_returns_none_on_error",
  "tests/test_document_service.py::TestCountPages::test_returns_page_count",
  "tests/test_document_service.py::TestDelete::test_delete_not_found_returns_false",
  "tests/test_document_service.py::TestDelete::test_delete_refuses_file_outside_upload_dir",
  "tests/test_document_service.py::TestDelete::test_delete_removes_file_and_records",
  "tests/test_document_service.py::TestGeneratePreview::test_raises_on_invalid_page",
  "tests/test_document_service.py::TestGeneratePreview::test_returns_png_bytes",
  "tests/test_document_service.py::TestUploadValidation::test_accepts_valid_pdf",
  "tests/test_document_service.py::TestUploadValidation::test_allows_pdf_under_page_limit",
  "tests/test_document_service.py::TestUploadValidation::test_rejects_non_pdf",
  "tests/test_document_service.py::TestUploadValidation::test_rejects_oversized_file",
  "tests/test_document_service.py::TestUploadValidation::test_rejects_too_many_pages",
  "tests/test_document_service.py::TestUploadValidation::test_unlimited_pages_when_zero",
  "tests/test_models.py::TestAnalysisJob::test_default_values",
  "tests/test_models.py::TestAnalysisJob::test_mark_completed",
  "tests/test_models.py::TestAnalysisJob::test_mark_failed",
  "tests/test_models.py::TestAnalysisJob::test_mark_running",
  "tests/test_models.py::TestAnalysisJob::test_status_transitions",
  "tests/test_models.py::TestAnalysisStatus::test_from_string",
  "tests/test_models.py::TestAnalysisStatus::test_values",
  "tests/test_models.py::TestDocument::test_custom_values",
  "tests/test_models.py::TestDocument::test_default_values",
  "tests/test_models.py::TestDocument::test_unique_ids",
  "tests/test_pipeline_options.py::TestAnalysisEndpointPipelineOptions::test_empty_pipeline_options_object_uses_defaults",
  "tests/test_pipeline_options.py::TestAnalysisEndpointPipelineOptions::test_full_pipeline_options",
  "tests/test_pipeline_options.py::TestAnalysisEndpointPipelineOptions::test_invalid_pipeline_option_type_rejected",
  "tests/test_pipeline_options.py::TestAnalysisEndpointPipelineOptions::test_no_pipeline_options_sends_none",
  "tests/test_pipeline_options.py::TestAnalysisEndpointPipelineOptions::test_partial_pipeline_options_merges_with_defaults",
  "tests/test_pipeline_options.py::TestAnalysisEndpointPipelineOptions::test_unknown_pipeline_option_ignored",
  "tests/test_pipeline_options.py::TestBuildConverter::test_all_options_combined",
  "tests/test_pipeline_options.py::TestBuildConverter::test_code_enrichment_enabled",
  "tests/test_pipeline_options.py::TestBuildConverter::test_defaults",
  "tests/test_pipeline_options.py::TestBuildConverter::test_formula_enrichment_enabled",
  "tests/test_pipeline_options.py::TestBuildConverter::test_generate_page_images",
  "tests/test_pipeline_options.py::TestBuildConverter::test_generate_picture_images",
  "tests/test_pipeline_options.py::TestBuildConverter::test_images_scale",
  "tests/test_pipeline_options.py::TestBuildConverter::test_ocr_disabled",
  "tests/test_pipeline_options.py::TestBuildConverter::test_picture_classification_enabled",
  "tests/test_pipeline_options.py::TestBuildConverter::test_picture_description_enabled",
  "tests/test_pipeline_options.py::TestBuildConverter::test_table_mode_accurate",
  "tests/test_pipeline_options.py::TestBuildConverter::test_table_mode_fast",
  "tests/test_pipeline_options.py::TestBuildConverter::test_table_structure_disabled",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_forwards_all_options_to_build_converter",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_code_enrichment_on",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_formula_enrichment_on",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_generate_images_on",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_images_scale_changed",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_ocr_disabled",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_picture_options_on",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_custom_converter_when_table_mode_fast",
  "tests/test_pipeline_options.py::TestConvertDocumentRouting::test_uses_default_converter_with_all_defaults",
  "tests/test_pipeline_options.py::TestServiceForwardsPipelineOptions::test_create_passes_none_when_no_options",
  "tests/test_pipeline_options.py::TestServiceForwardsPipelineOptions::test_create_passes_pipeline_options_to_run",
  "tests/test_pipeline_options.py::TestServiceForwardsPipelineOptions::test_run_analysis_forwards_options_to_convert",
  "tests/test_pipeline_options.py::TestServiceForwardsPipelineOptions::test_run_analysis_marks_failed_on_error",
  "tests/test_pipeline_options.py::TestServiceForwardsPipelineOptions::test_run_analysis_uses_defaults_when_no_options",
  "tests/test_rate_limiter.py::TestClientBucket::test_add",
  "tests/test_rate_limiter.py::TestClientBucket::test_count_recent_filters_old_entries",
  "tests/test_rate_limiter.py::TestClientBucket::test_count_recent_keeps_all_when_within_window",
  "tests/test_rate_limiter.py::TestRateLimiterMiddleware::test_allows_requests_under_limit",
  "tests/test_rate_limiter.py::TestRateLimiterMiddleware::test_blocks_requests_over_limit",
  "tests/test_rate_limiter.py::TestRateLimiterMiddleware::test_health_excluded_from_limit",
  "tests/test_rate_limiter.py::TestRateLimiterMiddleware::test_window_resets",
  "tests/test_repos.py::TestAnalysisRepo::test_delete",
  "tests/test_repos.py::TestAnalysisRepo::test_delete_by_document",
  "tests/test_repos.py::TestAnalysisRepo::test_delete_nonexistent",
  "tests/test_repos.py::TestAnalysisRepo::test_find_all",
  "tests/test_repos.py::TestAnalysisRepo::test_find_by_id_not_found",
  "tests/test_repos.py::TestAnalysisRepo::test_insert_and_find_by_id",
  "tests/test_repos.py::TestAnalysisRepo::test_update_status",
  "tests/test_repos.py::TestAnalysisRepo::test_update_status_completed",
  "tests/test_repos.py::TestDocumentRepo::test_delete",
  "tests/test_repos.py::TestDocumentRepo::test_delete_nonexistent",
  "tests/test_repos.py::TestDocumentRepo::test_find_all",
  "tests/test_repos.py::TestDocumentRepo::test_find_by_id_not_found",
  "tests/test_repos.py::TestDocumentRepo::test_insert_and_find_by_id",
  "tests/test_repos.py::TestDocumentRepo::test_update_page_count",
  "tests/test_schemas.py::TestAnalysisResponse::test_populate_by_name",
  "tests/test_schemas.py::TestAnalysisResponse::test_serializes_to_camel_case",
  "tests/test_schemas.py::TestCreateAnalysisRequest::test_backward_compatible_with_only_document_id",
  "tests/test_schemas.py::TestCreateAnalysisRequest::test_optional_vlm_fields_default_to_none",
  "tests/test_schemas.py::TestCreateAnalysisRequest::test_parses_document_id",
  "tests/test_schemas.py::TestCreateAnalysisRequest::test_parses_with_pipeline_options",
  "tests/test_schemas.py::TestCreateAnalysisRequest::test_vlm_fields_set",
  "tests/test_schemas.py::TestDocumentResponse::test_optional_fields_default_to_none",
  "tests/test_schemas.py::TestDocumentResponse::test_serializes_to_camel_case",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_boundary_images_scale_accepted",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_custom_values",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_defaults",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_excessive_images_scale_rejected",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_invalid_table_mode_rejected",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_model_dump",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_negative_images_scale_rejected",
  "tests/test_schemas.py::TestPipelineOptionsRequest::test_zero_images_scale_rejected",
  "tests/test_schemas.py::TestToCamel::test_already_camel",
  "tests/test_schemas.py::TestToCamel::test_single_word",
  "tests/test_schemas.py::TestToCamel::test_three_words",
  "tests/test_schemas.py::TestToCamel::test_two_words",
  "tests/test_serve_converter.py::TestBuildFormData::test_custom_options",
  "tests/test_serve_converter.py::TestBuildFormData::test_default_options",
  "tests/test_serve_converter.py::TestConverterWiring::test_local_engine_builds_local_converter",
  "tests/test_serve_converter.py::TestConverterWiring::test_remote_engine_builds_serve_converter",
  "tests/test_serve_converter.py::TestConverterWiring::test_remote_engine_passes_api_key",
  "tests/test_serve_converter.py::TestExtractBbox::test_bottomleft_conversion",
  "tests/test_serve_converter.py::TestExtractBbox::test_empty_dict",
  "tests/test_serve_converter.py::TestExtractBbox::test_missing_coord_origin_defaults_topleft",
  "tests/test_serve_converter.py::TestExtractBbox::test_non_dict_returns_zeros",
  "tests/test_serve_converter.py::TestExtractBbox::test_topleft_passthrough",
  "tests/test_serve_converter.py::TestLabelMapping::test_known_labels",
  "tests/test_serve_converter.py::TestLabelMapping::test_unknown_label_defaults_to_text",
  "tests/test_serve_converter.py::TestMapItemType::test_missing_type_defaults_to_text",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[code-code]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[equation-formula]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[figure-picture]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[formula-formula]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[list_item-list]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[paragraph-text]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[picture-picture]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[section-header-section_header]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[section_header-section_header]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[table-table]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[text-text]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[title-title]",
  "tests/test_serve_converter.py::TestMapItemType::test_type_mapping[unknown_type-text]",
  "tests/test_serve_converter.py::TestParseResponse::test_bbox_as_list",
  "tests/test_serve_converter.py::TestParseResponse::test_empty_response",
  "tests/test_serve_converter.py::TestParseResponse::test_json_content_as_string",
  "tests/test_serve_converter.py::TestParseResponse::test_json_content_malformed_string_falls_back",
  "tests/test_serve_converter.py::TestParseResponse::test_minimal_response",
  "tests/test_serve_converter.py::TestParseResponse::test_multi_page",
  "tests/test_serve_converter.py::TestParseResponse::test_multi_page_response",
  "tests/test_serve_converter.py::TestParseResponse::test_no_json_content",
  "tests/test_serve_converter.py::TestParseResponse::test_response_with_body_elements",
  "tests/test_serve_converter.py::TestParseResponse::test_response_with_elements",
  "tests/test_serve_converter.py::TestParseResponse::test_tables_and_pictures",
  "tests/test_serve_converter.py::TestServeConverter::test_base_url_trailing_slash_stripped",
  "tests/test_serve_converter.py::TestServeConverter::test_build_conversion_options",
  "tests/test_serve_converter.py::TestServeConverter::test_headers_with_api_key",
  "tests/test_serve_converter.py::TestServeConverter::test_headers_without_api_key",
  "tests/test_serve_converter.py::TestServeConverterConvert::test_health_check_failure",
  "tests/test_serve_converter.py::TestServeConverterConvert::test_health_check_success",
  "tests/test_serve_converter.py::TestServeConverterConvert::test_http_error_raises",
  "tests/test_serve_converter.py::TestServeConverterConvert::test_successful_conversion",
  "tests/test_settings.py::TestSettingsDefaults::test_default_values",
  "tests/test_settings.py::TestSettingsDefaults::test_frozen",
  "tests/test_settings.py::TestSettingsFromEnv::test_cors_origins_split",
  "tests/test_settings.py::TestSettingsFromEnv::test_defaults_when_env_empty",
  "tests/test_settings.py::TestSettingsFromEnv::test_reads_env_vars"
]