-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpyproject.toml
More file actions
83 lines (76 loc) · 3.7 KB
/
Copy pathpyproject.toml
File metadata and controls
83 lines (76 loc) · 3.7 KB
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
[build-system]
requires = ["setuptools>=77", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "quantfit"
version = "0.12.16"
description = "Quantize an LLM and check it still refuses what it should — a GPU-aware quantization CLI that measures the safety drift of the quantization it just performed."
readme = "README.md"
requires-python = ">=3.10"
license = "Apache-2.0"
authors = [{ name = "Sahil Kadadekar" }]
keywords = ["llm", "quantization", "awq", "gptq", "gguf", "fp8", "gpu", "safety"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Scientific/Engineering :: Artificial Intelligence",
]
dependencies = [
"torch>=2.4",
# >=4.56: the from_pretrained dtype= kwarg (torch_dtype was deprecated there).
"transformers>=4.56",
"huggingface_hub>=0.25",
"datasets>=3.0",
"accelerate>=1.0",
# Upper-bounded: llm-compressor's modifier/oneshot API churns across minors; the
# cap moves only after a validated run on the new minor (ROADMAP standing rule).
"llmcompressor>=0.5,<0.13",
"psutil>=5.9",
]
[project.optional-dependencies]
# scipy: stats cross-check tests; gguf: crafts/reads tiny GGUFs in the arm tests.
# ruff bounded: new minors add default rules (0.16 did, mid-cycle) — cap moves
# only after a validated run on the new minor, same rule as llmcompressor.
dev = ["pytest>=8.0", "ruff>=0.16,<0.17", "scipy>=1.11", "gguf>=0.10,<1.0"]
# GGUF metadata reading (verify-safety GGUF arms resolve file_type/architecture
# from the file itself) + the backend's convert step. Pre-1.0 and tracks llama.cpp;
# the enums quantfit reads are append-only in practice, so <1.0 is the honest cap.
gguf = ["gguf>=0.10,<1.0"]
# transformers' AwqQuantizer refuses to load autoawq checkpoints without gptqmodel;
# needed only for screening first-party AWQ artifacts (e.g. Qwen/*-AWQ). Bounded like
# every churning dep here: 7.x is what the screen's AWQ row was curated against
# (7.1.0 locally, 7.3.2 on PyPI), and the loader path it backs is exercised by no
# hermetic test — so a major bump moves the cap only after a real load.
awq = ["gptqmodel>=7.1,<8"]
# The Inspect-API runner (ROADMAP 0.8). Pure python, so CI installs it to run the
# parity test — a parity claim whose only test permanently skips is not a claim.
# Upper-bounded like every churning dep here: the runner depends on inspect_ai
# internals (SampleScore/Score/Value, inspect_ai.score, and the epoch-reduction
# behaviour of Score.value) and is VERIFIED against 0.3.252. The cap moves only
# after a validated run on the new minor — the standing ROADMAP rule.
inspect = ["inspect-ai>=0.3.252,<0.4"]
[project.urls]
Homepage = "https://github.com/Sahil170595/quantfit"
Repository = "https://github.com/Sahil170595/quantfit"
[project.scripts]
quantfit = "quantfit.cli:main"
[tool.setuptools.packages.find]
include = ["quantfit*"]
[tool.pytest.ini_options]
# Make `pytest tests/` import the package without an editable install (keeps CI light).
pythonpath = ["."]
markers = [
"judge: characterises the SHIPPED judge on inputs whose correct label is not in dispute. Downloads a ~0.6 GB model from the Hub, so it is DESELECTED BY DEFAULT and the test suite stays hermetic. Run it deliberately: pytest -m judge",
]
# The default run must not reach the network. `-m 'not judge'` is the whole reason the
# marker exists; removing it would put a model download in every CI test job.
addopts = "-m 'not judge'"
[tool.ruff]
target-version = "py310"
line-length = 120