Skip to main content

Mpatch (Python)

PyPI version Python versions Type Hints License: MIT

mpatch is a blazing-fast, context-aware patching library made with Rust. It applies diffs using fuzzy matching, making it the perfect tool for processing patches generated by LLMs (ChatGPT, Claude, Gemini, etc.) that often hallucinate line numbers or drift in context.

Standard patch or git apply fails if the target file has been modified even slightly. mpatch looks for the surrounding lines, dynamically adjusts indentation, and applies the change safely.

🦀 Looking for the CLI tool or Rust library? This is the documentation for the Python bindings. Check out the main mpatch repository and CLI documentation.


💡 The Problem vs. The Solution

When an AI tries to edit a file that has been modified locally since the AI last saw it, standard tools fail.

Original File AI-Generated Patch Standard patch mpatch
def main():
# Updated comment
print("Hello")
 def main():
- print("Hello")
+ print("World")
❌ Failed
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED
def main():
# Updated comment
print("World")

✨ Features

  • 🧠 Fuzzy Matching: Resilient to stale context, whitespace changes, and minor code drift.
  • 🔒 Atomic (All-or-Nothing) Mode: Pass atomic=True to only write changes to disk if all patches and hunks succeed cleanly.
  • 🤖 Format Independent: Automatically recognizes Unified Diffs, Markdown code blocks (```diff), Aider Search/Replace blocks (<<<<<<< ORIGINAL ======= >>>>>>> UPDATED and variants), and Conflict Markers (<<<< ==== >>>>).
  • 🔍 Wildcard & Ellipsis Support: Supports ... and comment-wrapped ellipsis lines (e.g. // ... existing code ...) in search/replace blocks, preserving unchanged code gaps.
  • 🔀 Three-Way Line Merge: Built-in line-level 3-way merge via mpatch.merge_three_way with Diff3 conflict markers.
  • 💡 Sub-Line Word Diffs: Highlighting word-level additions/deletions via mpatch.format_inline_diff.
  • ✨ Smart Indentation: Automatically translates tabs/spaces and aligns injected code to match the target file perfectly.
  • 🛡️ Secure: Built-in protection against directory traversal attacks (e.g., --- a/../../../etc/passwd).
  • ⚡ Blazing Fast & Concurrent: Written in Rust. It heavily optimizes the diffing algorithms and releases the GIL during patching, allowing true multithreading in Python.
  • 🐍 Pythonic & Typed: Supports slice indexing, unaries (~patch to invert), rich error handling, and ships with comprehensive .pyi stubs.

📦 Installation

Install directly from PyPI (pre-compiled wheels are provided for macOS, Linux, and Windows):

pip install mpatch

🚀 Quick Start

The simplest way to use mpatch is the high-level patch_content function. It takes a diff (even one wrapped in Markdown) and applies it to a string.

import mpatch

original_code = """\
def greet():
    print("Hello, old friend")
"""

# Input can be a raw diff, or a diff wrapped in Markdown (common chat output)
diff = """\
Here is the fix:
```diff
--- a/greet.py
+++ b/greet.py
@@ -1,2 +1,2 @@
 def greet():
-    print("Hello, old friend")
+    print("Hello, new world!")
```
"""

# Apply the patch in-memory!
new_code = mpatch.patch_content(diff, original=original_code)

print(new_code)
# Output:
# def greet():
#     print("Hello, new world!")

🛠️ Advanced API Tour

For tool builders and Agent frameworks, mpatch provides a rich Object-Oriented API for parsing, inspecting, and applying patches.

1. Parsing Diffs

You can parse a diff string into a list of Patch objects. mpatch automatically detects the format.

import mpatch

patches = mpatch.parse_auto(diff_string)

for patch in patches:
    print(f"Target file: {patch.file_path}")
    print(f"Number of hunks: {len(patch)}")

    if patch.is_creation:
        print("This patch creates a new file.")

2. Inspecting Hunks

Patches are composed of Hunk objects. You can slice, index, and inspect the exact lines added or removed.

patch = mpatch.parse_auto(diff_string)[0]

for i, hunk in enumerate(patch):
    print(f"Hunk {i + 1} changes:")
    print(f"  Removed: {hunk.removed_lines}")
    print(f"  Added:   {hunk.added_lines}")
    print(f"  Required match span: {hunk.required_match_span} lines")

To parse a diff that is expected to contain exactly one patch:

try:
    patch = mpatch.parse_single_patch(single_diff_str)
    print(f"Parsed single patch targeting: {patch.file_path}")
except mpatch.ParseError as e:
    print(f"Expected single patch, but failed: {e}")

3. Applying to the Filesystem (Batch Processing)

Apply patches directly to a directory on disk. mpatch handles file reading, writing, creation, and deletion automatically.

from pathlib import Path
import mpatch

diff = """... your diff here ..."""
target_directory = Path("./my_project")

# Apply all patches in a diff directly to the filesystem
success = mpatch.apply_directory(diff, target_directory)

# Or ensure all-or-nothing atomicity (no disk changes if any hunk fails):
success = mpatch.apply_directory(diff, target_directory, atomic=True)

if success:
    print("All files updated successfully!")

For granular control over multiple patches, use apply_patches_to_dir:

patches = mpatch.parse_auto(diff)
batch_result = mpatch.apply_patches_to_dir(patches, target_directory)

if not batch_result.all_succeeded:
    # Inspect hard failures (e.g., IO errors, Permission denied, Path traversal)
    for path, error_msg in batch_result.hard_failures:
        print(f"Critical error on {path}: {error_msg}")

if batch_result.has_failures:
    print("One or more patches or hunks failed to apply cleanly.")
    # Dedicated atomic function also available: mpatch.apply_patches_to_dir_atomic(...)

4. Detailed Reporting & Error Handling

When applying a specific Patch, you receive a rich PatchResult or InMemoryResult detailing exactly what happened to every hunk.

patch = mpatch.parse_auto(diff)[0]
result = patch.apply_to_file("./my_project")

if result.report.has_failures:
    print(f"Patch partially failed. {result.report.failure_count} hunks failed.")

    for failure in result.report.failures:
        print(f"Hunk {failure.hunk_index} failed due to: {failure.error_type}")

        # If it was a fuzzy match that didn't meet the threshold:
        if failure.error_type == "FuzzyMatchBelowThreshold":
            print(f"Best score was {failure.best_score}, needed {failure.threshold}")
            if (
                failure.location_start is not None
                and failure.location_length is not None
            ):
                print(
                    f"Near-miss candidate located at lines {failure.location_start + 1}..{failure.location_start + failure.location_length}"
                )

5. Dry Runs & Fuzz Factor

Want to see what would happen without modifying your files? Use dry_run=True. You can also tweak the fuzz_factor (0.0 to 1.0, default is 0.7).

result = patch.apply_to_file(
    "./my_project",
    fuzz_factor=0.5,  # Lower is more lenient, higher is stricter (0.0 is exact match only)
    dry_run=True,  # Generate a diff without writing to disk
)

if result.diff:
    print("Proposed changes:")
    print(result.diff)

6. Reversing Patches

You can reverse a patch (swap additions and deletions) easily using Python's bitwise NOT operator (~) or the invert() method.

patch = mpatch.parse_auto(diff)[0]

# Invert the patch
reversed_patch = ~patch

# Apply the reversed patch to undo changes
reversed_patch.apply_to_file("./my_project")

7. Deduplicating and Merging Patches

Consolidate multiple patches or blocks targeting the same file into unified Patch objects:

import mpatch

# Combine all patches targeting the same file path
consolidated = mpatch.merge_patches(patches)

# Or merge an individual patch into another:
patch1.merge(patch2)

8. Creating Diffs Programmatically

Need to generate a unified diff between two strings? You can generate the raw string representation or get a Patch object directly.

old_text = "apple\nbanana\npineapple\n"
new_text = "apple\norange\npineapple\n"

# 1. Generate a raw unified diff string
diff_str = mpatch.create_unified_diff("fruits.txt", old_text, new_text)
print(diff_str)
# --- a/fruits.txt
# +++ b/fruits.txt
# @@ -1,3 +1,3 @@
#  apple
# -banana
# +orange
#  pineapple

# 2. Generate a Patch object directly for programmatic manipulation
patch = mpatch.Patch.from_texts("fruits.txt", old_text, new_text)
print(patch[0].removed_lines)  # ['banana']

9. Aider Search/Replace Blocks with Wildcards

Apply Aider-style search/replace blocks directly. The parser automatically detects file paths and supports wildcard ellipsis lines (...) to preserve intermediate code gaps.

import mpatch

original_code = """\
def process_data(data):
    validate(data)
    # Step 1: Normalize
    normalized = [x.strip() for x in data]
    # Step 2: Transform
    transformed = [x.upper() for x in normalized]
    # Step 3: Output
    return transformed
"""

diff = """\
process.py
<<<<<<< SEARCH
def process_data(data):
    ...
    # Step 2: Transform
    transformed = [x.upper() for x in normalized]
=======
def process_data(data):
    ...
    # Step 2: Transform
    transformed = [x.lower() for x in normalized]
>>>>>>> REPLACE
"""

result = mpatch.patch_content(diff, original=original_code)
# Normalization and output steps are preserved; Step 2 is updated!

10. Three-Way Line Merging

Perform line-level 3-way merges between an ancestor (base), local code (ours), and incoming changes (theirs):

import mpatch

base = "Apples\nBananas\nCherries\nDates\n"
ours = "Apples\nBlueberries\nCherries\nDates\n"
theirs = "Apples\nBananas\nCherries\nDragonfruit\n"

merged, is_conflicted = mpatch.merge_three_way(base, ours, theirs)
assert not is_conflicted
print(merged)
# Apples
# Blueberries
# Cherries
# Dragonfruit

# If there is a conflict, standard Diff3 markers are inserted:
conflict_merged, is_conflicted = mpatch.merge_three_way(
    "val = 1\n",
    "val = 2\n",
    "val = 3\n",
    labels=("base", "ours", "theirs"),
)
assert is_conflicted
print(conflict_merged)
# <<<<<<< ours
# val = 2
# ||||||| base
# val = 1
# =======
# val = 3
# >>>>>>> theirs

11. Sub-Line Word Diff Visualization

Format near-miss comparisons or word-level diffs with highlighted changes:

import mpatch

expected = ["def calculate(val: int, factor: float = 1.0) -> float:"]
actual = ["def calculate(val: int, factor: float = 2.5) -> float:"]

diff_view = mpatch.format_inline_diff(expected, actual)
print(diff_view)

12. Format Detection

Inspect the format of an incoming patch string before processing:

import mpatch

fmt = mpatch.detect_patch(diff_string)
# Returns: 'Markdown', 'Unified', 'Aider', 'Conflict', or 'Unknown'

13. Path Validation & Missing Target Suggestions

Suggest close matching files in the target directory when a patch specifies an unknown or misspelled file path:

import mpatch
from pathlib import Path

# Suggest close matches in ./src for a misspelled filename:
suggestions = mpatch.suggest_close_file_paths("calculate.rs", Path("./src"), limit=3)
for candidate in suggestions:
    print(f"Did you mean: {candidate}?")

# Validate that a target path remains safely inside the base directory:
safe_path = mpatch.ensure_path_is_safe("./src", "utils/helpers.py")

14. Wildcard Ellipsis & Path Utilities

Check for wildcard ellipsis lines or extract file paths from conversational prose:

import mpatch

# Ellipsis checking:
assert mpatch.is_ellipsis_line("// ... existing code ...") is True
assert mpatch.is_ellipsis_line("const copy = [...items];") is False

# Conversational path extraction:
path = mpatch.extract_file_path_from_line("In `src/server.ts`, replace the handler:")
assert path is not None and path.as_posix() == "src/server.ts"
assert mpatch.is_plausible_file_path("src/server.ts") is True

🚨 Exceptions

mpatch provides specific Python exceptions so you can handle failures gracefully:

  • mpatch.MpatchError: Base exception for all mpatch errors.
  • mpatch.ParseError: Raised when the diff format is malformed or invalid.
  • mpatch.ApplyError: Raised during strict patch application when a hunk fails.
  • mpatch.PathTraversalError: Raised when a patch attempts to modify files outside the target directory (e.g., ../../../etc/passwd).
try:
    mpatch.apply_patch_to_file(malicious_patch, "./src")
except mpatch.PathTraversalError as e:
    print(f"Security blocked path traversal: {e}")

📄 License

This project is licensed under the MIT License.

Metadata

Release files for mpatch 1.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mpatch 1.8.0
File Size Uploaded Provenance
mpatch-1.8.0.tar.gz 307.3 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for mpatch 1.8.0
File
mpatch-1.8.0-cp314-cp314t-win_arm64.whl CPython 3.14 CPython 3.14 free-threading Windows ARM64 Details
mpatch-1.8.0-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
mpatch-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
mpatch-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
mpatch-1.8.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
mpatch-1.8.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
mpatch-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
mpatch-1.8.0-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
mpatch-1.8.0-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details
mpatch-1.8.0-cp38-abi3-win_arm64.whl CPython 3.8 abi3 Windows ARM64 Details
mpatch-1.8.0-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
mpatch-1.8.0-cp38-abi3-musllinux_1_2_x86_64.whl CPython 3.8 abi3 Linux musl 1.2+ x86-64 Details
mpatch-1.8.0-cp38-abi3-musllinux_1_2_aarch64.whl CPython 3.8 abi3 Linux musl 1.2+ ARM64 Details
mpatch-1.8.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details
mpatch-1.8.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 abi3 Linux glibc 2.17+ ARM64 Details
mpatch-1.8.0-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details
mpatch-1.8.0-cp38-abi3-macosx_10_12_x86_64.whl CPython 3.8 abi3 macOS 10.12+ x86-64 Details
mpatch-1.8.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.8 abi3 macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details

Total release size: 17.8 MB

Release files / mpatch-1.8.0.tar.gz

Download URL mpatch-1.8.0.tar.gz
Size 307.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9836f3e698a53da4fd2aeffcda7e578c5e8f063b9fbc5659602d6c680428974d
BLAKE2b-256 checksum
How to use checksums
d893786e3e94ff40a813808b61fa100f7a9884a09d033fd24900a95410480a3f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-win_arm64.whl

Download URL mpatch-1.8.0-cp314-cp314t-win_arm64.whl
Size 722.6 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows ARM64
SHA-256 checksum
How to use checksums
8cf21590da7ec18459ff2a85d0ae556f0e84378e72469e6b37c1dfec02cff793
BLAKE2b-256 checksum
How to use checksums
091e4a3f33a19f3e4ee5131ae6de7d75737f33656d32aac5a6f07d329a1a9f76
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-win_amd64.whl

Download URL mpatch-1.8.0-cp314-cp314t-win_amd64.whl
Size 791.8 kB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
8f31ff8b719ebd69d1589f86f11127e52cfd1ee0a17b226c40cb249a4a2c9c1a
BLAKE2b-256 checksum
How to use checksums
6d9e09a633208c99d1de38d3d932339dd762418ae2be91e860c52c5cb2086b56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL mpatch-1.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 1.1 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
c6411bd04be6afa3a8321ea2856f73a1919da737e966fa1ad835bbb6d212b212
BLAKE2b-256 checksum
How to use checksums
eedc916a2f2881737e94a0aa85748a87e3fd798293c7fb3d9e0f50a1c5e1e471
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL mpatch-1.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 1.0 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
f9facb6cb9cb688e8916fcc91ab8f3aa9c8381e6d634fe34f984b5037a1a6fa9
BLAKE2b-256 checksum
How to use checksums
8e1319e45d7766bebd30ce57a4cbf43055c13d88b112ec2702e11202136d448b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mpatch-1.8.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 923.4 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5d150dc0159437539e545431ffffd82dcbf063487bedd0c158317a73d4939f43
BLAKE2b-256 checksum
How to use checksums
01370935b06213afe50acee346e14867d6af65ee0c45e153dcc5e2dd81ce2022
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL mpatch-1.8.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 831.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
ec98c8d45fde1a5f24e16ea31d9964f6993b248405cfa6b09f471e3a3626f64b
BLAKE2b-256 checksum
How to use checksums
92356090195ff8801e6be027cd8d0c127f96080494ae16dbc18ec7eb691d22bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl

Download URL mpatch-1.8.0-cp314-cp314t-macosx_11_0_arm64.whl
Size 781.4 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f79da0150630fea51fd7c55bdc25b7c48c79054222245d67aa269a3bdfb1bbe5
BLAKE2b-256 checksum
How to use checksums
f7cb28669323b46b25f5ef9fa684d23d41fe37b91f2a9a79add6880c87f02c79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL mpatch-1.8.0-cp314-cp314t-macosx_10_12_x86_64.whl
Size 879.2 kB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
bb023d78bc4574f48165df82195f06edc5e42d3aa26720ca87eac85ab52574c4
BLAKE2b-256 checksum
How to use checksums
958a7fd2670420f3c57cf0da1e765e50e6ee449bfe19f4f7ea758d4a51188ba1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL mpatch-1.8.0-cp314-cp314t-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 1.6 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3f32437ea0dfb5b8a712b43c8cd5f8346b7bad668bbcfcdf645ab4b1ae4ebc93
BLAKE2b-256 checksum
How to use checksums
619427eba6cb4af38c309c45d06d8728f25ddfb6f0802adea02c0bc169c157fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-win_arm64.whl

Download URL mpatch-1.8.0-cp38-abi3-win_arm64.whl
Size 728.1 kB
Tags CPython 3.8 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
c9417c5da558d576cc69266e99d5a84db555a0b8daaed1bac6203440ceceb2cb
BLAKE2b-256 checksum
How to use checksums
4b44d64a5e58521c0b9b76004dc1e9a083edd3950e05288f9cd282d81bef8a45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-win_amd64.whl

Download URL mpatch-1.8.0-cp38-abi3-win_amd64.whl
Size 795.7 kB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0b3be26bca7f1d09f4c3773606bce944c2bd64e4488e09810a87ecf8775cabbc
BLAKE2b-256 checksum
How to use checksums
ed4d17ce1b257cc3102b34393954146323960b5f3a98a49013abc45012a79f71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-musllinux_1_2_x86_64.whl

Download URL mpatch-1.8.0-cp38-abi3-musllinux_1_2_x86_64.whl
Size 1.1 MB
Tags CPython 3.8 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
d7bc944027bd5eccf19acfc0276ef57ab119f51ad7b323c68f748c3621cbb20a
BLAKE2b-256 checksum
How to use checksums
71e276c89797ab75ed114c080260b1e54667ed68ff187a5464795a772246d892
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-musllinux_1_2_aarch64.whl

Download URL mpatch-1.8.0-cp38-abi3-musllinux_1_2_aarch64.whl
Size 1.0 MB
Tags CPython 3.8 Linux musl 1.2+ ARM64 abi3
SHA-256 checksum
How to use checksums
ba9031f4320fdacbb33589687222b638f6eb60a4278d57d48925ae9835cf6692
BLAKE2b-256 checksum
How to use checksums
cd8f770084684670ce7f671e97c760cc8f09120d9d04044acde63443fe047a19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL mpatch-1.8.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 931.0 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
038ddf01da064e14e332818ad1c45eade8845f4c7117397d3b2b48686059820f
BLAKE2b-256 checksum
How to use checksums
0ffa2e4dbbfcce5ec1093b3931b9c88058163f0d361958a39087cf1f314028b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL mpatch-1.8.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 837.1 kB
Tags CPython 3.8 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
37776efabc41635f688fab16e06cab8b6a0101f7d62b442c64988323ca52e1e8
BLAKE2b-256 checksum
How to use checksums
1e30762bd8e5120cfb251c5dfd60154629144d95e7fcb5751bce343228f863c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-macosx_11_0_arm64.whl

Download URL mpatch-1.8.0-cp38-abi3-macosx_11_0_arm64.whl
Size 788.6 kB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
1950dff912114df4c645fb318189d29b295c3e4d59a4dd793a14d41b68372e7e
BLAKE2b-256 checksum
How to use checksums
d7b1b392dfd033e5f47e5b3f6092076964b8540dbc1b26cb8ffc27d9a1ea30e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-macosx_10_12_x86_64.whl

Download URL mpatch-1.8.0-cp38-abi3-macosx_10_12_x86_64.whl
Size 886.3 kB
Tags CPython 3.8 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
47da85f14f4352f4514171bfbd766160c0a24f5aafed437e7f49773b8bd15e33
BLAKE2b-256 checksum
How to use checksums
8373dcc1e8a23a0ff8980cd89aba8b5d7e71e11c7c4091a7c03426325c8e95a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Release files / mpatch-1.8.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL mpatch-1.8.0-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 1.6 MB
Tags CPython 3.8 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b46132fb80976bc9708fa6dd4809da2d313b923e9320bc66a3cb2c82a880b544
BLAKE2b-256 checksum
How to use checksums
7529b05e0acbc5e60f252499e4446d355a6720d41c16c1f4aab456b60a46ed4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

Security for mpatch 1.8.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 19 files in this release have been uploaded with provenance metadata.

Select from 19 files

Attestation for mpatch-1.8.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page