| 1 |
[project] |
| 2 |
name = "dlm" |
| 3 |
version = "0.1.0" |
| 4 |
description = "A text file with a .dlm extension becomes a local, trainable LLM." |
| 5 |
readme = "README.md" |
| 6 |
requires-python = ">=3.11" |
| 7 |
license = { text = "MIT" } |
| 8 |
authors = [{ name = "espadonne", email = "mfwolffe@outlook.com" }] |
| 9 |
keywords = ["llm", "lora", "fine-tuning", "ollama", "local-ai"] |
| 10 |
classifiers = [ |
| 11 |
"Development Status :: 2 - Pre-Alpha", |
| 12 |
"Intended Audience :: Developers", |
| 13 |
"License :: OSI Approved :: MIT License", |
| 14 |
"Programming Language :: Python :: 3", |
| 15 |
"Programming Language :: Python :: 3.11", |
| 16 |
"Programming Language :: Python :: 3.12", |
| 17 |
"Topic :: Scientific/Engineering :: Artificial Intelligence", |
| 18 |
] |
| 19 |
dependencies = [ |
| 20 |
"typer>=0.12", |
| 21 |
"rich>=13.7", |
| 22 |
] |
| 23 |
|
| 24 |
[project.scripts] |
| 25 |
dlm = "dlm.cli.app:main" |
| 26 |
|
| 27 |
[project.urls] |
| 28 |
Homepage = "https://github.com/tenseleyFlow/DocumentLanguageModel" |
| 29 |
Issues = "https://github.com/tenseleyFlow/DocumentLanguageModel/issues" |
| 30 |
|
| 31 |
[dependency-groups] |
| 32 |
dev = [ |
| 33 |
"pytest>=8.0", |
| 34 |
"mypy>=1.11", |
| 35 |
"ruff>=0.6", |
| 36 |
] |
| 37 |
|
| 38 |
[build-system] |
| 39 |
requires = ["hatchling"] |
| 40 |
build-backend = "hatchling.build" |
| 41 |
|
| 42 |
[tool.hatch.build.targets.wheel] |
| 43 |
packages = ["src/dlm"] |
| 44 |
|
| 45 |
# -------- ruff -------- |
| 46 |
[tool.ruff] |
| 47 |
line-length = 100 |
| 48 |
target-version = "py311" |
| 49 |
src = ["src", "tests"] |
| 50 |
|
| 51 |
[tool.ruff.lint] |
| 52 |
select = [ |
| 53 |
"E", # pycodestyle errors |
| 54 |
"F", # pyflakes |
| 55 |
"W", # pycodestyle warnings |
| 56 |
"I", # isort |
| 57 |
"UP", # pyupgrade |
| 58 |
"B", # bugbear |
| 59 |
"N", # pep8-naming |
| 60 |
"C4", # comprehensions |
| 61 |
"SIM", # simplify |
| 62 |
"PT", # pytest |
| 63 |
"RET", # return |
| 64 |
"ARG", # unused args |
| 65 |
"PTH", # use pathlib |
| 66 |
"TID", # tidy imports |
| 67 |
] |
| 68 |
ignore = [ |
| 69 |
"E501", # handled by formatter |
| 70 |
] |
| 71 |
|
| 72 |
[tool.ruff.lint.per-file-ignores] |
| 73 |
"tests/**/*.py" = ["ARG", "PT011"] |
| 74 |
|
| 75 |
[tool.ruff.format] |
| 76 |
quote-style = "double" |
| 77 |
indent-style = "space" |
| 78 |
|
| 79 |
# -------- mypy -------- |
| 80 |
[tool.mypy] |
| 81 |
strict = true |
| 82 |
python_version = "3.11" |
| 83 |
packages = ["dlm"] |
| 84 |
mypy_path = "src" |
| 85 |
warn_return_any = true |
| 86 |
warn_unused_ignores = true |
| 87 |
warn_redundant_casts = true |
| 88 |
no_implicit_optional = true |
| 89 |
disallow_untyped_decorators = true |
| 90 |
|
| 91 |
# -------- pytest -------- |
| 92 |
[tool.pytest.ini_options] |
| 93 |
testpaths = ["tests"] |
| 94 |
addopts = [ |
| 95 |
"-ra", |
| 96 |
"-m", "not slow and not gpu and not online", |
| 97 |
] |
| 98 |
markers = [ |
| 99 |
"slow: expensive; deselected by default", |
| 100 |
"gpu: requires CUDA; skipped on CPU/MPS runners", |
| 101 |
"online: touches the network; skipped in offline CI", |
| 102 |
] |