A single-fix release. If you lift plant genomes — or any annotation produced with -copies — upgrade.
pip install -U lifton
Fixed
UNIQUE constraint failed: features.id aborted the run on some annotations v1.0.8 handled.
gffutils disambiguates a repeated cds-X by renaming it to cds-X_1 — which is exactly the suffix Liftoff's -copies mode gives extra gene copies. When that generated name already belonged to a real feature, the insert failed and LiftOn exited. Two ids in the rice benchmark trigger it, and two is enough to lose a whole genome.
v1.0.8 recovered because its fallback renamed repeats into a _dup<n> namespace that cannot collide. v1.0.10 replaced that with a no-op to stop rewriting logical IDs — a sound goal, since renaming the segments of one discontinuous CDS splits a single feature in two — but it left the fallback identical to the strategy that had just failed.
LiftOn now renames only ids that are both repeated and whose <id>_<n> already exists in the file, using facts the preflight scan already collects. On the rice input that is 2 ids; the other 4,677 shared CDS ids, which are legitimate discontinuous CDS, are untouched.
Measured across the benchmark corpus: v1.0.8 ingests 34 of 34 inputs, v1.0.10 ingested 31, v1.0.11 ingests 34. Same error class as #47, #12 and #7.
A defect in the database-build fallback is no longer reported as a bad input file. The strategy handlers catch Exception so a malformed annotation falls through to the next strategy; that breadth also swallowed programming errors raised inside the fallback itself. NameError, AttributeError, TypeError and ImportError now propagate.
Everything else
Unchanged from v1.0.10 — see its release notes and CHANGELOG.md.
Found by re-benchmarking the release against v1.0.8 across the full corpus.