docs: prepare for 2.0 release (#531)

Co-authored-by: Vinay Umrethe <175500353+Vinay-Umrethe@users.noreply.github.com>
This commit is contained in:
Philipp Emanuel WeidmannandVinay Umrethe authored and GitHub committed 2026-11-01 14:04:45 +05:30
1 parent ecde93f1e0
commit 0db5c31e10
4 files changed
+290 -129

No files matched your search

+211 -123
View File
@@ -1,89 +1,79 @@
<img width="128" align="right" alt="Logo" src="https://github.com/user-attachments/assets/df5f2840-2f92-4991-aa57-252747d7182e" />
<div align="center">
# Heretic: Fully automatic censorship removal for language models<br><br>[![Discord](https://img.shields.io/discord/1447831134212984903?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge)](https://discord.gg/gdXc48gSyT) [![Matrix](https://img.shields.io/badge/Matrix-black?logo=matrix&style=for-the-badge)](https://matrix.to/#/#heretic:matrix.org) [![Follow us on Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/follow-us-on-hf-md-dark.svg)](https://huggingface.co/heretic-org) [![Codeberg mirror](https://img.shields.io/badge/Codeberg%20mirror-black?logo=codeberg&style=for-the-badge)](https://codeberg.org/p-e-w/heretic)
<img width="128" alt="Heretic logo" src="https://github.com/user-attachments/assets/df5f2840-2f92-4991-aa57-252747d7182e" />
[![#1 Repository of the Day](https://trendshift.io/api/badge/repositories/20538)](https://trendshift.io/repositories/20538)
# Heretic
Heretic is a tool that removes censorship (aka "safety alignment") from
transformer-based language models without expensive post-training.
It combines an advanced implementation of directional ablation, also known
as "abliteration" ([Arditi et al. 2024](https://arxiv.org/abs/2406.11717),
Lai 2025 ([1](https://huggingface.co/blog/grimjim/projected-abliteration),
[2](https://huggingface.co/blog/grimjim/norm-preserving-biprojected-abliteration))),
with a TPE-based parameter optimizer powered by [Optuna](https://optuna.org/).
### Training-free language model modification
This approach enables Heretic to work **completely automatically.** Heretic
finds high-quality abliteration parameters by co-minimizing the number of
refusals and the KL divergence from the original model. This results in a
decensored model that retains as much of the original model's intelligence
as possible. Using Heretic does not require an understanding of transformer
internals. In fact, anyone who knows how to run a command-line program
can use Heretic to decensor language models.
**Remove censorship**, suppress slop, reduce sycophancy, and more.<br>
All in an afternoon, on your gaming PC.
Heretic supports most dense models, including many multimodal models,
several different MoE architectures, and even some hybrid models like Qwen3.5.
Pure state-space models and certain other research architectures are not yet
supported out of the box.
[![Discord](https://img.shields.io/discord/1447831134212984903?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge)](https://discord.gg/gdXc48gSyT)&nbsp;&nbsp;&nbsp;&nbsp;
[![Matrix](https://img.shields.io/badge/Matrix-black?logo=matrix&style=for-the-badge)](https://matrix.to/#/#heretic:matrix.org)&nbsp;&nbsp;&nbsp;
[![Follow us on Hugging Face](https://huggingface.co/datasets/huggingface/badges/resolve/main/follow-us-on-hf-md-dark.svg)](https://huggingface.co/heretic-org)&nbsp;&nbsp;&nbsp;
[![Codeberg mirror](https://img.shields.io/badge/Codeberg%20mirror-black?logo=codeberg&style=for-the-badge)](https://codeberg.org/p-e-w/heretic)
<img width="650" height="715" alt="Screenshot" src="https://github.com/user-attachments/assets/d71a5efa-d6be-4705-a817-63332afb2d15" />
</div>
-----
&nbsp;
Running unsupervised with the default configuration, Heretic can produce
decensored models that rival the quality of abliterations created manually
by human experts:
[![#1 Repository of the Day](https://trendshift.io/api/badge/repositories/20538)](https://trendshift.io/repositories/20538)&nbsp;&nbsp;&nbsp;&nbsp;
[![Model and download statistics](https://github.com/user-attachments/assets/c9b5a660-7ef9-43c7-991c-fd9d63ea8bd8)](https://heretic.sdad.pro/)
| Model | Refusals for "harmful" prompts | KL divergence from original model for "harmless" prompts |
| :--- | ---: | ---: |
| [google/gemma-3-12b-it](https://huggingface.co/google/gemma-3-12b-it) (original) | 97/100 | 0 *(by definition)* |
| [mlabonne/gemma-3-12b-it-abliterated-v2](https://huggingface.co/mlabonne/gemma-3-12b-it-abliterated-v2) | 3/100 | 1.04 |
| [huihui-ai/gemma-3-12b-it-abliterated](https://huggingface.co/huihui-ai/gemma-3-12b-it-abliterated) | 3/100 | 0.45 |
| **[p-e-w/gemma-3-12b-it-heretic](https://huggingface.co/p-e-w/gemma-3-12b-it-heretic) (ours)** | **3/100** | **0.16** |
The Heretic version, generated without any human effort, achieves the same
level of refusal suppression as other abliterations, but at a much lower
KL divergence, indicating less damage to the original model's capabilities.
*(You can reproduce those numbers using Heretic's built-in evaluation functionality,
e.g. `heretic --model google/gemma-3-12b-it --evaluate-model p-e-w/gemma-3-12b-it-heretic`.
Note that the exact values might be platform- and hardware-dependent.
The table above was compiled using PyTorch 2.8 on an RTX 5090.)*
## Modify any LLM that you can run on your hardware[^1]
Of course, mathematical metrics and automated benchmarks never tell the whole
story, and are no substitute for human evaluation. Models generated with
Heretic have been well-received by users (links and emphasis added):
[^1]: Heretic supports on-the-fly 4-bit model quantization with bitsandbytes,
which can reduce the amount of VRAM required to process a model to the same amount
that is used to run a typical quantized version of it, at a slight accuracy cost.
Set the `quantization` option to `bnb_4bit` to enable this.
> "I was skeptical before, but I just downloaded
> [**GPT-OSS 20B Heretic**](https://huggingface.co/p-e-w/gpt-oss-20b-heretic)
> model and holy shit. It gives properly formatted long responses to sensitive topics,
> using the exact uncensored words that you would expect from an uncensored model,
> produces markdown format tables with details and whatnot. Looks like this is
> the best abliterated version of this model so far..."
> [*(Link to comment)*](https://old.reddit.com/r/LocalLLaMA/comments/1oymku1/heretic_fully_automatic_censorship_removal_for/np6tba6/)
Heretic is a unique tool that lets you do what only corporations with access
to massive computing power usually do: *Modify,* rather than merely run,
language models. It does not perform expensive training; rather, it uses
a collection of mathematical techniques to steer behavior based on contrasting
example prompts and matching scorers.
> "[**Heretic GPT 20b**](https://huggingface.co/p-e-w/gpt-oss-20b-heretic)
> seems to be the best uncensored model I have tried yet. It doesn't destroy a
> the model's intelligence and it is answering prompts normally would be
> rejected by the base model."
> [*(Link to comment)*](https://old.reddit.com/r/LocalLLaMA/comments/1oymku1/heretic_fully_automatic_censorship_removal_for/npe9jng/)
Heretic can, depending on the configuration:
> "[[**Qwen3-4B-Instruct-2507-heretic**](https://huggingface.co/p-e-w/Qwen3-4B-Instruct-2507-heretic)]
> Has been the best unquantized abliterated model that I have been able to run on 16gb vram."
> [*(Link to comment)*](https://old.reddit.com/r/LocalLLaMA/comments/1phjxca/im_calling_these_people_out_right_now/nt06tji/)
* **Suppress refusals/remove censorship** (this is the [default action](/config.default.toml))
* Reduce slop ([`config.noslop.toml`](/config.noslop.toml))
* Reduce humor ([`config.nohumor.toml`](/config.nohumor.toml))
* Reduce sycophancy ([`config.nosyco.toml`](/config.nosyco.toml))
* Alter emotional alignment ([`config.emotions.toml`](/config.emotions.toml))
Heretic models have also been independently benchmarked using standard metrics
like MMLU and GSM8K, and have been found to compare favorably with models
produced by competing abliteration tools:
[1](https://old.reddit.com/r/LocalLLaMA/comments/1sojjoc/abliterlitics_benchmark_and_tensor_analysis/),
[2](https://old.reddit.com/r/LocalLLaMA/comments/1sy18lx/abliterlitics_benchmarks_and_tensor_comparison/).
and many, many other things.
### :bangbang: Using Heretic does NOT require understanding how language models work internally :bangbang:
In fact, you can go from zero to removing censorship from your first model
[in a matter of seconds](#usage). Heretic supports most dense models, including
many multimodal models, several different MoE architectures, and many modern
hybrid models.
The community has created and published
[well over 5000](https://huggingface.co/models?other=heretic)
models with Heretic.
[thousands](https://huggingface.co/models?other=heretic)
of models with Heretic.
Heretic models have been independently benchmarked using standard metrics
like MMLU and GSM8K, and have been found to compare favorably against models
produced with competing abliteration tools.[^2][^3]
[^2]: https://old.reddit.com/r/LocalLLaMA/comments/1sojjoc/abliterlitics_benchmark_and_tensor_analysis/
[^3]: https://old.reddit.com/r/LocalLLaMA/comments/1sy18lx/abliterlitics_benchmarks_and_tensor_comparison/
&nbsp;
<img width="600" alt="Heretic screenshot" src="https://github.com/user-attachments/assets/a030f595-67ef-49a6-9d9a-779fdf752b58" />
&nbsp;
## Usage
Prepare a Python 3.10+ environment with PyTorch 2.2+ installed as appropriate
Prepare a Python 3.10+ environment with PyTorch 2.6+ installed as appropriate
for your hardware. Then run:
```sh
@@ -91,87 +81,176 @@ pip install -U heretic-llm
heretic Qwen/Qwen3-4B-Instruct-2507
```
Replace `Qwen/Qwen3-4B-Instruct-2507` with whatever model you want to decensor.
Replace `Qwen/Qwen3-4B-Instruct-2507` with whatever model you want to process.
**By default, Heretic performs censorship removal (refusal suppression).**
If you want to do something else, choose one of the configuration files linked
above, or write your own. See [`config.default.toml`](/config.default.toml)
for available configuration options.
> [!IMPORTANT]
>
> While PyTorch 2.2 is the minimum version of PyTorch needed for Heretic to work,
> some models and configurations might require features only found in
> later versions. For example, loading MXFP4-quantized models like gpt-oss
> uses `torch.accelerator`, which was added in PyTorch 2.6.
> [!TIP]
>
> Heretic uses [uv](https://docs.astral.sh/uv/) for dependency management,
> and the repository includes a `uv.lock` file pinning every package version.
> If you already use uv (and you probably should!), you can just clone the repo
> and run Heretic with `uv run heretic`, which ensures that your dependencies
> match those used by the developers, improving reliability and security.
The process is fully automatic and does not require configuration; however,
Heretic has a variety of configuration parameters that can be changed for
greater control. Run `heretic --help` to see available command-line options,
or look at [`config.default.toml`](config.default.toml) if you prefer to use
a configuration file.
> Configuration files made for Heretic 1.x are **not** compatible with Heretic 2.x!
> See the [migration guide](/docs/migration_v1_to_v2.md) for what you need to change
> in order to make your old configurations work.
At the start of a program run, Heretic benchmarks the system to determine
the optimal batch size to make the most of the available hardware.
On an RTX 3090, with the default configuration, decensoring
On an RTX 3090, with the default configuration, processing
[Qwen3-4B-Instruct-2507](https://huggingface.co/Qwen/Qwen3-4B-Instruct-2507)
takes about 20-30 minutes. Note that Heretic supports model quantization with
bitsandbytes, which can drastically reduce the amount of VRAM required to process
models. Set the `quantization` option to `bnb_4bit` to enable quantization.
takes about 30-40 minutes.
After Heretic has finished decensoring a model, you are given the option to
After Heretic has finished processing a model, you are given the choice to
save the model, upload it to Hugging Face, chat with it to test how well it works,
run standard benchmarks on it, or any combination of those actions.
## Controlling what Heretic does using scorer plugins
Heretic steers model behavior by optimizing one or multiple scores. Scores are
computed by scorer plugins. You can easily write your own scorers to get full
control over what Heretic does to models.
The `Scorer` interface (abstract base class) your scorer needs to inherit from
is defined in [`scorer.py`](/src/heretic/scorer.py). The only required method
is `get_score`, but there is more machinery (such as settings management)
available when you need it.
By default, Heretic scores models by refusal rate (implemented in
[`keyword_rate.py`](/src/heretic/scorers/keyword_rate.py)) and KL divergence
(implemented in [`kl_divergence.py`](/src/heretic/scorers/kl_divergence.py)).
Additional scorers are available in the [`scorers` directory](/src/heretic/scorers/).
These scorers can serve as examples for your own implementations, and can easily
be adapted to your needs.
Scorers are configured through the [main configuration file](/config.default.toml).
Which scorer plugins are active is determined by the `scorers` setting, which
also controls whether a scorer's score should be minimized or maximized during
optimization. Any number of scorers can be used simultaneously, and their scores
will be co-optimized. Multiple instances of the same scorer can be configured
with different settings. See the configuration file for the full documentation
of this mechanism.
The path to a scorer plugin can be specified either as a fully qualified import
path (`fully.qualified.module.MyScorerClass`) or as a file path followed by
a class name (`path/to/plugin.py:MyScorerClass`). You do **not** have to modify
the Heretic package code in order to use your own plugins.
Heretic also has modifier plugins, which are described in
[the next section](#how-heretic-works).
## How Heretic works
Heretic implements a parametrized variant of directional ablation. For each
supported transformer component (currently, attention out-projection and
MLP down-projection), it identifies the associated matrices in each transformer
layer, and orthogonalizes them with respect to the relevant "residual direction",
inhibiting the expression of that direction in the result of multiplications
with that matrix.
Heretic combines a pluggable modifier (interface in
[`modifier.py`](/src/heretic/modifier.py)) with a TPE-based hyperparameter optimizer
powered by [Optuna](https://optuna.org/). The optimizer finds a set of parameters that,
when passed to the modifier, minimize or maximize a set of configurable scores on the resulting model ([see above](#controlling-what-heretic-does-using-scorer-plugins)).
Residual directions are computed for each layer as a difference-of-means between
the first-token residuals for "harmful" and "harmless" example prompts.
Heretic ships with two modifiers:
The ablation process is controlled by several optimizable parameters:
* **Arbitrary-Rank Ablation (ARA)**[^4]: This is the default modifier, and was
specifically developed for use in Heretic. You can find an overview of how ARA
works in [the original pull request](https://github.com/p-e-w/heretic/pull/211),
and see the precise implementation in [`ara.py`](/src/heretic/modifiers/ara.py).
* `direction_index`: Either the index of a residual direction, or the special
value `per layer`, indicating that each layer should be ablated using the
residual direction associated with that layer.
* `max_weight`, `max_weight_position`, `min_weight`, and `min_weight_distance`:
For each component, these parameters describe the shape and position of the
ablation weight kernel over the layers. The following diagram illustrates this:
* **Directional ablation aka "abliteration"**[^5]: The classic method for refusal
suppression. Heretic's implementation uses a flexible ablation weight kernel over
the layers, and supports both projected abliteration[^6] and norm preservation (MPOA)[^7].
The complete code is in [`abliteration.py`](/src/heretic/modifiers/abliteration.py).
<img width="800" height="500" alt="Explanation" src="https://github.com/user-attachments/assets/82e4b84e-5a82-4faf-b918-ac642f9e4892" />
[^4]: *Weidmann 2026.* A preprint explaining the technique will be available soon.
[^5]: *[Arditi et al. 2024](https://arxiv.org/abs/2406.11717)*
[^6]: *[Lai 2025 (1)](https://huggingface.co/blog/grimjim/projected-abliteration)*
[^7]: *[Lai 2025 (2)](https://huggingface.co/blog/grimjim/norm-preserving-biprojected-abliteration)*
&nbsp;
You can use the `modifiers` setting to switch between modifier implementations.
Despite the name of the setting using a plural form, Heretic currently allows
only a single modifier for a given processing run. This may change in the future.
Heretic's main innovations over existing abliteration systems are:
* The shape of the ablation weight kernel is highly flexible, which, combined with
automatic parameter optimization, can improve the compliance/quality tradeoff.
Non-constant ablation weights were previously explored by Maxime Labonne in
[gemma-3-12b-it-abliterated-v2](https://huggingface.co/mlabonne/gemma-3-12b-it-abliterated-v2).
* The residual direction index is a float rather than an integer. For non-integral
values, the two nearest residual direction vectors are linearly interpolated.
This unlocks a vast space of additional directions beyond the ones identified
by the difference-of-means computation, and often enables the optimization
process to find a better direction than that belonging to any individual layer.
* Ablation parameters are chosen separately for each component. I have found that
MLP interventions tend to be more damaging to the model than attention interventions,
so using different ablation weights can squeeze out some extra performance.
## Reproducibility and the Heretic Grimoire
Heretic has the ability to create *reproducible models* whose repositories contain
all information required to produce a byte-for-byte identical model on demand,
provided that the environment is perfectly identical to the original one. PyTorch
doesn't guarantee that operations return identical outputs unless hardware, drivers,
operating system, and the entire software stack including all package versions
are exactly the same.
Heretic manages all that complexity for you. When uploading a processed model to
Hugging Face, Heretic offers to include reproducibility information. This is entirely
optional, but if you choose to do so, the uploaded repository will contain a
`reproduce` folder with detailed instructions for recreating the model
([example](https://huggingface.co/heretic-org/LFM2.5-VL-3B-heretic/tree/main/reproduce)).
This folder contains both human-readable instructions and a machine-readable manifest
file named `reproduce.json`, which includes all the information Heretic needs to
**automatically** reproduce the model.
Automatic reproduction can be performed with
```sh
heretic --reproduce path/to/reproduce.json
```
Heretic will guide you through the process, checking your environment against the one
that was used to create the model, and pointing out potentially problematic mismatches.
The multi-hour computations that were required to make the original model do **not**
have to be re-done, and the entire process typically takes a few minutes. After you
have exported the resulting model, Heretic will verify the hashes of the weight files
against those stored in the reproduction manifest (they may or may not be identical,
depending on how closely your system resembles the original one).
Many people have uploaded models with reproducibility information to Hugging Face.
Since a reproduction manifest is only around 9 kilobytes in size, these manifests
form a portable library of models that can be reproduced at will.
### That library is called the Heretic Grimoire. You can view it [here](https://huggingface.co/spaces/heretic-org/Heretic-Grimoire).
But you don't have to rely on an externally hosted web application to access the
library of manifests: The Grimoire is fundamentally designed as a *distributed* system,
and you can fetch your own local copies of publicly available manifests from
Hugging Face whenever you want by running
```sh
heretic --collect-reproducibles path/to/target/folder/
```
You now have a local backup of all reproducible Heretic models, properly catalogued.
To update this collection, simply run the command again. It functions as an
append-only backup, never deleting files even if the corresponding model no longer
exists on Hugging Face.
## Heretic is made by humans!
Unlike lots of AI-related software today (and indeed lots of software in general),
Heretic is **not** "vibe-coded".
All of [my](https://github.com/p-e-w) commits in this project so far were written
100% by hand, the way I have been doing programming for decades, and while some
Heretic contributors use coding agents, I review every single line of code that I
merge very carefully. There's no "LGTM" here!
Don't believe me? Check out [this pull request](https://github.com/p-e-w/heretic/pull/53),
which accumulated **almost 350 human-written comments** over more than 7 months
as we discussed the implementation.
And [here is another PR](https://github.com/p-e-w/heretic/pull/191) with
**more than 200 comments.**
I am the opposite of a luddite and I have used agents for other projects, but
I am proud of the code I write and so far can't quite bring myself to let a machine
write it for me in a project I care so much about. As a result, Heretic has a lean,
relatively simple codebase that in my opinion, and in that of some others,
is a pleasure to work on.
If you like that, join us! Hop on the Discord and tell us about your ideas for
improvements, or directly file an issue or open a PR.
## Prior art
I'm aware of the following publicly available implementations of abliteration
techniques:
I'm aware of the following implementations of abliteration techniques
that were publicly available when Heretic was first released (November 2025):
* [AutoAbliteration](https://huggingface.co/posts/mlabonne/714992455492422)
* [abliterator.py](https://github.com/FailSpy/abliterator)
@@ -188,11 +267,13 @@ any of those projects.
The development of Heretic was informed by:
* [The original abliteration paper (Arditi et al. 2024)](https://arxiv.org/abs/2406.11717)
* [The original abliteration paper *(Arditi et al. 2024)*](https://arxiv.org/abs/2406.11717)
* [Maxime Labonne's article on abliteration](https://huggingface.co/blog/mlabonne/abliteration),
as well as some details from the model cards of his own abliterated models (see above)
as well as some details from the model cards of his own abliterated models, such as
the use of non-constant ablation weights
* Jim Lai's articles describing ["projected abliteration"](https://huggingface.co/blog/grimjim/projected-abliteration)
and ["norm-preserving biprojected abliteration"](https://huggingface.co/blog/grimjim/norm-preserving-biprojected-abliteration)
* Thousands of interactions with members of the community
## Citation
@@ -202,7 +283,7 @@ If you use Heretic for your research, please cite it using the following BibTeX
```bibtex
@misc{heretic,
author = {Weidmann, Philipp Emanuel},
title = {Heretic: Fully automatic censorship removal for language models},
title = {Heretic: Training-free language model modification},
year = {2025},
publisher = {GitHub},
journal = {GitHub repository},
@@ -230,3 +311,10 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
**By contributing to this project, you agree to release your
contributions under the same license.**
&nbsp;
&nbsp;
&nbsp;
+67
View File
@@ -0,0 +1,67 @@
# Migrating from Heretic 1.x to Heretic 2.x
Heretic 2.x is not backwards compatible with Heretic 1.x configurations.
If you have existing configuration files written to work with a Heretic 1.x release,
you need to make the following changes before using them with a Heretic 2.x release.
Only settings that are actually in your configuration file must be updated;
defaults are automatically set to the current values. Of course, you can also simply
start with [an up-to-date default configuration](/config.default.toml), and modify
it to match your requirements.
## Remove settings for research features
Research features have been removed in Heretic 2.0. The following settings
are no longer recognized:
* `print_residual_geometry`
* `plot_residuals`
* `residual_plot_path`
* `residual_plot_title`
* `residual_plot_style`
* `residual_plot_label` and `residual_plot_color` in prompt sections
## Remove `kl_divergence_scale` and `kl_divergence_target`
KL divergence balancing has been removed and these settings
are no longer recognized.
## Rename `chain_of_thought_skips` to `chain_of_thought_blocks` and update its structure
The new setting `chain_of_thought_blocks` contains pairs of the form
`[cot_initializer, cot_finalizer]` instead of `[cot_initializer, closed_cot_block]`.
## Move abliteration settings to the `[modifier.Abliteration]` section
This includes the following settings:
* `orthogonalize_direction`
* `row_normalization`
* `full_normalization_lora_rank`
* `winsorization_quantile`
* `[good_prompts]` (renamed to `[modifier.Abliteration.good_prompts]`)
* `[bad_prompts]` (renamed to `[modifier.Abliteration.bad_prompts]`)
> [!IMPORTANT]
>
> Heretic 2.x defaults to using ARA for modifying models, not abliteration.
> To continue using abliteration, edit the `modifiers` setting accordingly.
> To configure ARA, edit the `[modifier.ARA]` section.
## Move refusal evaluation settings to the `[scorer.KeywordRate]` section
This includes the following settings:
* `print_responses`
* `refusal_markers` (renamed to `keyword_markers`)
* `[bad_evaluation_prompts]` (renamed to `[scorer.KeywordRate.prompts]`)
## Rename `[good_evaluation_prompts]` to `[scorer.KLDivergence.prompts]`
KL divergence is now computed by a scorer plugin.
+7 -5
View File
@@ -1,7 +1,7 @@
[project]
name = "heretic-llm"
version = "2.0.0.dev0"
description = "Fully automatic censorship removal for language models"
version = "2.0.0"
description = "Training-free language model modification"
readme = "README.md"
license = "AGPL-3.0-or-later"
authors = [
@@ -10,7 +10,7 @@ authors = [
requires-python = ">=3.10"
keywords = ["llm", "transformer", "abliteration"]
classifiers = [
"Development Status :: 4 - Beta",
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: GPU",
"Intended Audience :: Science/Research",
@@ -19,6 +19,9 @@ classifiers = [
"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",
"Programming Language :: Python :: 3.15",
]
dependencies = [
"accelerate~=1.15",
@@ -72,8 +75,7 @@ ignore = [
]
[tool.uv]
# TODO: Re-enable before 2.0 release!
#exclude-newer = "7 days"
exclude-newer = "7 days"
[tool.uv.sources]
torch = { index = "pytorch" }
Generated
+5 -1
View File
@@ -18,6 +18,10 @@ resolution-markers = [
"python_full_version < '3.11' and sys_platform == 'darwin'",
]
[options]
exclude-newer = "0001-01-01T00:00:00Z" # This has no effect and is included for backwards compatibility when using relative exclude-newer values.
exclude-newer-span = "P7D"
[[package]]
name = "absl-py"
version = "2.5.0"
@@ -1078,7 +1082,7 @@ wheels = [
[[package]]
name = "heretic-llm"
version = "2.0.0.dev0"
version = "2.0.0"
source = { editable = "." }
dependencies = [
{ name = "accelerate" },