Skip to main content

An extension of fabricatio, which brings up the diff edit capabilities

Project description

fabricatio-diff

MIT Python Versions PyPI Version PyPI Downloads PyPI Downloads Bindings: PyO3 Build Tool: uv + maturin

Intelligent diff-based editing for LLM-driven text transformations. Combines fuzzy line matching, hashline-anchored edits, and LLM-generated search-and-replace operations into a single package.

Installation

This package is part of the fabricatio monorepo and can be installed as an optional dependency:

pip install fabricatio[diff]
# or
uv pip install fabricatio[diff]

For a full installation:

pip install fabricatio[full]
# or
uv pip install fabricatio[full]

Overview

fabricatio-diff provides two complementary layers for text editing:

  1. Rust-accelerated primitive operations — hashline anchoring, fuzzy line matching, unified diffs, and similarity measurement, exposed via PyO3 bindings.
  2. Python orchestration — a Diff model and DiffEdit capability that use LLMs to generate search/replace operations from natural language requirements and apply them with configurable precision.

Key Components

Diff model

Represents a text transformation as a search / replace pair with optional line-range anchoring.

from fabricatio_diff.models.diff import Diff

# Pattern-matching diff
d = Diff(search="old text", replace="new text")
result = d.apply(source_text, match_precision=0.9)

# Anchor-based line-range diff (stable against content shifts)
d = Diff.from_anchors(start_anchor="10:a1b2", end_anchor="15:c3d4", replace="new lines")

# Line-number-based range diff
d = Diff.from_line_range(start=10, end=15, replace="new lines")

# Reverse a diff
rev = d.reverse()

# Format content with LINE:HASH anchors for LLM prompt context
hashed = d.format_with_hashes(source_text)

DiffEdit capability

Mixin class that delegates diff generation to an LLM via prompt templates. Parses the LLM response for <<<<SEARCH / <<<<REPLACE blocks and constructs a validated Diff.

from fabricatio_diff.capabilities.diff_edit import DiffEdit

class MyAgent(DiffEdit, SomeOtherCapability):
    pass

agent = MyAgent()
result = await agent.diff_edit(source_text, "rename variable x to count")

Rust Primitives (imported from fabricatio_diff.rust)

Function Description
rate(a, b) Normalized Damerau-Levenshtein similarity (0.0–1.0)
match_lines(haystack, needle, precision=0.9) Find a fuzzy-matching block of lines
show_diff(a, b) Generate a unified diff between two strings
compute_hash(line) xxHash-based per-line hash
format_hashes(content, start_line=1) Annotate each line with LINE:HASH
parse_hashline_anchor(anchor) Parse "42:ab12" into (line, hash)
apply_set_line(content, anchor, new_text) Replace one line by anchor
apply_insert_after(content, anchor, text) Insert after an anchored line
apply_replace(content, old, new, all=False) Simple text substitution
apply_replace_lines(content, start, end, text) Replace a range between two anchors

Configuration

from fabricatio_diff.config import DiffConfig

# Match precision threshold (1.0 = exact, lower = fuzzier)
diff_config.match_precision = 0.85

# Prompt template for diff generation
diff_config.diff_template = "my/custom/template"

The DiffConfig dataclass is loaded from the global Fabricatio configuration system under the "diff" key.

Dependencies

  • fabricatio-core — core interfaces, configuration system, and prompt template manager
  • Rust crates: strsim (similarity), similar (unified diffs), rho-hashline (line hashing), rayon (parallel search)

License

MIT — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fabricatio_diff-0.2.11-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

fabricatio_diff-0.2.11-cp314-cp314-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fabricatio_diff-0.2.11-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

fabricatio_diff-0.2.11-cp313-cp313-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fabricatio_diff-0.2.11-cp312-cp312-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.12Windows x86-64

fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_x86_64.whl (2.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_aarch64.whl (1.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio_diff-0.2.11-cp312-cp312-macosx_11_0_arm64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file fabricatio_diff-0.2.11-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0683d8d8cc9d47dbf70f36bc92d00379fd9d098bdbbfd3a75b19878105f336b8
MD5 390730a9e4c78327a45995d9fddfc31c
BLAKE2b-256 26a0bf50b5a40044dd76e651dc43d6a077f06629058e4032c1361857342b994b

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 e0571a18511957ebfe127071b2b79de780c911fe11ab6d67636ff99770183832
MD5 f1ff163b908916740316db28c239434a
BLAKE2b-256 09c2cb881d21c0997bb516e6dec19cdb033f5d259fd6118cf49cfcdca4c3e623

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 3bf8ac8cf3addd1e76816e87365fd83baed9cd93b0b393099e8035083c6ef8cc
MD5 316db131303bdc1e5926e34ec9e8bace
BLAKE2b-256 8e920c6c2d18a9cdf7a58f87bbe2b5f35a8f71467f3b1c6bb6dba159942f2cf4

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbebea48f91566a757d8a4783c3ffba841a2b570f47f6250e3980cc093d56788
MD5 c7fe6de3d67747c4b9c20f0aba0df582
BLAKE2b-256 a013911fc124c3bb1327f2312055b983b16d79a9e4722a3cb3906ed6b85e90cf

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 b28d6f787d175f8ebf2dc9a436a81537cd98c3f5175665249e4e9958d0c24393
MD5 53cf4a17f45099cd49662db3818b6808
BLAKE2b-256 744d6dd9750543b6cb1c4c8e40df239382fea97dec4aaececfb66399c1f36d6c

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 3f7b29907fb7367799e8c31e5421f39bd21c025cb238c091978c29fe71ef273e
MD5 9bcf01f4ea6671d3cb451d3a218e559a
BLAKE2b-256 f02a9b47763bf96a5e471561609411754de0e6dc3a72e70ca0e5fb433f863bfc

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 fed4e692ba4836d220172c4c42d90f3ca3ba067b377dc1f027ad7f67e1c85c4e
MD5 f2bccbde14ddda1e576ab9b6eac89bab
BLAKE2b-256 c1291eef541523eac07314e4728378db80d2fcb0d3e4f41664d547cd18306026

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd69b687fec020af567c7f1f16733167241e924e7e43476e012ef7a4a6e0c555
MD5 595e9ff0f689cadaaaee8ce8d3b64371
BLAKE2b-256 446408789fdc304caf91d3639f62664a023b5751f1dc40af3d3235a6d451ec01

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e858bd89f0da9dfead6cf8be7b0dcc42970720228bf2195596840f71a43e0bfe
MD5 d3386415f7d30a6de7c59faee55edb8a
BLAKE2b-256 52d26443be3ed4df34ce84f82d4413c46ed0ad87cb320b98438b0400e5ab8060

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 2.2 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 0b6abe463b3eb7af429a3185ba34e466d90bb1b79a0698e4ad8663430c3aa166
MD5 e89940d0f59ea4af5bd452415fe717bd
BLAKE2b-256 4a90f5d4a53b0ea11cc9f5a03ee6e253c06c3e76876d892347c9ba5cc94611bb

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 3ccea871487e5aa89336d10950591c54c2ce64d7633bc3800fca3050fa69ee18
MD5 b53c112f4ee8c1400b1114e0a7e4a1bb
BLAKE2b-256 3a07c406203494ff3761cf9e2db303dc0af4ecbe278ee8586c1bb44196cc2099

See more details on using hashes here.

File details

Details for the file fabricatio_diff-0.2.11-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_diff-0.2.11-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_diff-0.2.11-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd53740af1770b019859bd2b9210dd9d4d193f5b8317e6549c07824ea55d6c91
MD5 30461bd6f0398aa12728375acd356626
BLAKE2b-256 05c0eeeda5cd1bf4b6488efcb08e66141c646d086a67bdeec326a59dddaa8ffa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page