Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
File size: 5,120 Bytes
3530326 80444ea 52d25f7 80444ea 1a19508 f1f86cc 1a19508 80444ea d8c1d40 80444ea 3530326 3719fca 3530326 80444ea 3530326 80444ea 1a19508 80444ea 1a19508 80444ea 3530326 d8c1d40 f1f86cc 1a19508 52d25f7 1a19508 f1f86cc 3530326 270d701 | 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 | from __future__ import annotations
import base64
import json
from ui_helpers import (
configuration_required_html,
download_html,
file_strip_html,
header_html,
output_progress_html,
page_context_html,
page_limit_html,
progress_html,
settings_html,
status_html,
viewer_html,
zoom_width,
)
def state() -> dict:
return {
"name": 'invoice "draft".pdf',
"size": 100,
"kind": "pdf",
"total_pages": 12,
"current_page": 0,
"pages": [
{
"number": 1,
"png": b"image",
"width": 100,
"height": 200,
}
],
"results": [
{
"raw_output": "hello",
"output_chars": 5,
"boxes": [
{
"id": "1",
"label": "<unsafe>",
"bbox": [0.1, 0.2, 0.8, 0.9],
}
],
"tables_html": "",
"text_html": "<p>hello</p>",
"elapsed_ms": 12,
"model": "parser",
"usage": None,
"request_id": None,
}
],
}
def test_viewer_embeds_page_and_escapes_labels() -> None:
rendered = viewer_html(state(), show_boxes=True, zoom=50)
assert base64.b64encode(b"image").decode("ascii") in rendered
assert "<unsafe>" in rendered
assert "<unsafe>" not in rendered
assert 'style="width:100.0%"' in rendered
def test_zoom_uses_an_intuitive_control_scale() -> None:
assert zoom_width(1) == 51
assert zoom_width(50) == 100
assert zoom_width(100) == 160
assert zoom_width(500) == 160
def test_settings_only_render_the_target_heading() -> None:
single_page = state()
single_page["total_pages"] = 1
rendered = settings_html(single_page)
assert "Configuration" in rendered
assert "Parse settings" in rendered
assert "Pages" not in rendered
def test_idle_status_does_not_render_a_redundant_message() -> None:
idle = state()
idle["results"] = [None]
assert status_html(idle) == ""
def test_progress_status_is_visible_and_escapes_its_message() -> None:
rendered = progress_html("Preparing <document>", upload=True)
assert 'role="status"' in rendered
assert "status-spinner" in rendered
assert "Preparing <document>" in rendered
assert "Preparing <document>" not in rendered
def test_output_progress_describes_the_active_page() -> None:
rendered = output_progress_html(2, 3)
assert 'role="status"' in rendered
assert "Parsing document" in rendered
assert "Processing page 2 / 3" in rendered
def test_header_uses_parse_brand_and_requested_docs_url() -> None:
rendered = header_html()
assert "assets/parse-logo.svg" in rendered
assert "assets/up_right_arrow.svg" in rendered
assert 'href="https://docs.cohere.com/docs/parse"' in rendered
assert "assets/cohere-logo.svg" not in rendered
def test_configuration_message_names_the_selected_environment_key() -> None:
rendered = configuration_required_html("COHERE_API_KEY")
assert "COHERE_API_KEY" in rendered
assert "Space settings" in rendered
def test_configuration_message_rejects_an_invalid_environment() -> None:
rendered = configuration_required_html()
assert "COHERE_ENV" in rendered
assert "staging or production" in rendered
def test_file_strip_uses_document_icon_and_metric_badges() -> None:
rendered = file_strip_html(state())
assert "assets/filetype_doc.svg" in rendered
assert rendered.count('class="metric-badge"') == 3
assert "1/1 PARSED" in rendered
def test_page_context_compacts_remaining_pages() -> None:
document = state()
document["pages"] = document["pages"] * 5
document["results"] = document["results"] * 5
assert page_context_html(document) == "<span>2</span><span>…</span><span>5</span>"
def test_page_limit_warning_is_persistent_html() -> None:
warning = page_limit_html(state())
assert "Only the first 1 pages will be processed" in warning
assert "11 pages will" in warning
def test_download_contains_structured_results() -> None:
rendered = download_html(state())
encoded = rendered.split("base64,", 1)[1].split('"', 1)[0]
payload = json.loads(base64.b64decode(encoded))
assert payload["document"]["total_pages"] == 12
assert payload["pages"][0]["text"] == "hello"
def test_download_preserves_parse_text_and_structured_response() -> None:
document = state()
document["results"][0]["text_output"] = "Parsed text"
document["results"][0]["response"] = {
"id": "parse-123",
"pages": [{"index": 0, "type": "blocks", "blocks": []}],
}
rendered = download_html(document)
encoded = rendered.split("base64,", 1)[1].split('"', 1)[0]
payload = json.loads(base64.b64decode(encoded))
assert payload["pages"][0]["text"] == "Parsed text"
assert payload["pages"][0]["response"]["id"] == "parse-123"
|