File size: 1,431 Bytes
96f8c0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
862cbed
 
96f8c0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
bbbfba8
96f8c0a
 
 
 
 
 
 
 
 
 
 
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
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "xmllm"
version = "0.1.0"
description = "Document structure engine: image → canonical model → ALTO XML / PAGE XML"
readme = "README.md"
license = "Apache-2.0"
requires-python = ">=3.11"
authors = [
    { name = "XmLLM contributors" },
]

dependencies = [
    "fastapi>=0.115,<1",
    "uvicorn[standard]>=0.30,<1",
    "pydantic>=2.7,<3",
    "pydantic-settings>=2.3,<3",
    "lxml>=5.2,<6",
    "Pillow>=10.3,<11",
    "python-multipart>=0.0.9",
    "aiosqlite>=0.20,<1",
    "httpx>=0.27,<1",
    "paddlepaddle>=2.6,<3",
    "paddleocr>=2.8",
]

[project.optional-dependencies]
dev = [
    "pytest>=8.2,<9",
    "pytest-asyncio>=0.23,<1",
    "pytest-cov>=5,<6",
    "httpx>=0.27,<1",
    "ruff>=0.4,<1",
    "mypy>=1.10,<2",
    "lxml-stubs>=0.5",
]

[tool.hatch.build.targets.wheel]
packages = ["src"]

[tool.pytest.ini_options]
testpaths = ["tests"]
asyncio_mode = "auto"
markers = [
    "unit: unit tests",
    "integration: integration tests",
    "e2e: end-to-end tests",
]

[tool.ruff]
target-version = "py311"
line-length = 100
src = ["src", "tests"]

[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP", "B", "SIM"]

[tool.mypy]
python_version = "3.11"
strict = true
warn_return_any = true
warn_unused_configs = true
plugins = ["pydantic.mypy"]

[[tool.mypy.overrides]]
module = ["lxml.*"]
ignore_missing_imports = true