Skip to main content

emend

A Python refactoring CLI built on tree-sitter with a Rust backend. The name means "to make corrections to a text" — which is what it does, but with AST-aware precision instead of find-and-replace.

Two complementary systems: structured edits use selectors like file.py::func[params][0] for precise changes to symbol metadata, and pattern transforms use capture variables like print($X) → logger.info($X) for code-pattern search and replace.

Installation

Using uv with free-threaded Python (recommended for best performance)

uv tool install --python 3.14t emend

Python 3.13+ ships a free-threaded variant (3.13t, 3.14t) that removes the GIL. emend's Rust core (emend_core) is already GIL-free (built with #[pymodule(gil_used = false)]), so on free-threaded Python it can run parallel file scans with no lock contention — meaning find, lint, analyze refs, and edit rename across large codebases are significantly faster.

We recommend 3.14t for the latest free-threaded runtime. Python 3.13t remains supported, and both variants can run the optional MCP server:

uv tool install --python 3.14t emend   # latest free-threaded runtime
uv tool install --python 3.13t emend   # free-threaded 3.13

Using uv (standard Python)

uv tool install emend

Using pip

pip install emend

MCP server

To use emend as an MCP server for LLM-based clients, install the optional mcp extra:

pip install emend[mcp]

Then start the server:

emend mcp                              # stdio transport (default)
emend mcp --transport sse --port 8080  # SSE transport

The optional extra installs MCP SDK v2 (mcp>=2.0).

Adding emend to Claude Code

The quickest way is the claude mcp add CLI:

# Add for the current project (default scope: local)
claude mcp add --transport stdio emend -- emend mcp

# Or share with your team via .mcp.json (project scope)
claude mcp add --transport stdio --scope project emend -- emend mcp

If you installed with uv tool install, make sure the emend binary is on your PATH, or use the full path:

claude mcp add --transport stdio emend -- uvx emend mcp

You can also add it by editing configuration JSON directly. For a personal setup, run:

claude mcp add-json emend '{"type":"stdio","command":"emend","args":["mcp"]}'

For a team-shared setup, add a .mcp.json file to your project root (and commit it to version control):

{
  "mcpServers": {
    "emend": {
      "type": "stdio",
      "command": "emend",
      "args": ["mcp"]
    }
  }
}

Verify it's connected:

claude mcp list          # from the terminal

Or inside Claude Code, type /mcp to see all connected servers and their status.

See the Claude Code MCP documentation for details on scopes, environment variables, and managed configurations.

Run emend --help to verify. Full documentation at lucaswiman.github.io/emend.

Vim / Neovim plugin

emend ships with a Vim/Neovim plugin for interactive code search. Install with vim-plug:

Plug 'lucaswiman/emend', { 'rtp': 'vim' }

Then use :Emend to open the search prompt, or :Emend parse to search directly. The plugin communicates with emend tool editor-server via JSON-RPC over stdio pipes — the server stays warm for sub-5ms lookups.

For local development, point to your checkout:

Plug '~/src/emend', { 'rtp': 'vim' }
let g:emend_command = '~/src/emend/.venv/bin/emend'

See vim/README.md for full documentation.

Indexing (recommended for large codebases)

After installing, run emend tool index in your project root to pre-build caches:

emend tool index                  # index current directory
emend tool index src/ --jobs 8    # index specific directory with 8 workers

This parses every Python file and builds a qualified-name index, so subsequent cross-project operations (analyze refs, edit rename, analyze graph, analyze deadcode) are significantly faster. The cache is stored in .emend/cache/parse.db (automatically gitignored and dockerignored) and is keyed by file content hash, so it self-invalidates when files change. Each Git worktree keeps its own mutable parse.db and facts.db snapshots so switching branches cannot contaminate another worktree's analysis.

The MCP server (emend mcp) starts without eagerly indexing the whole project; analysis tools build or refresh the facts they need on demand.

MCP Server

The MCP server now uses a smaller discriminated tool surface:

  1. search — Code search, symbol lookup, and summary listing
  2. transform — Pattern replace plus selector-based edits, adds, removes, copies, moves, and renames
  3. references — References, callers, and callees
  4. analyze — Graph, deadcode, impact, semantic context, and flow analysis
  5. check — Unified project rules from .emend/rules.yaml
  6. mappings — Cross-repo identifier and module mappings
  7. grammar_and_cookbook — Syntax reference and cookbook text

See the grammar_and_cookbook.rst reference for full command documentation.

Usage

emend <command> [options]

Workflow

All mutating commands default to dry-run, showing a diff of proposed changes. Re-run with --apply to write them. You'll probably want to run a formatter (black/ruff/isort) afterward, since emend doesn't try to preserve exact formatting.

Selector Syntax

Three types of selectors:

Symbol Selectors

file.py::Class.method.nested   # Nested symbol path
file.py::func                  # Module-level symbol

Extended Selectors (with components)

file.py::func[params]           # Function parameters
file.py::func[params][ctx]      # Specific parameter (by name)
file.py::func[params][0]        # Specific parameter (by index)
file.py::func[returns]          # Return annotation
file.py::func[decorators]       # Decorator list
file.py::MyClass[bases]         # Base classes
file.py::func[body]             # Function body

Pseudo-class Selectors

file.py::func[params]:KEYWORD_ONLY       # Keyword-only parameter slot
file.py::func[params]:POSITIONAL_ONLY    # Positional-only parameter slot

Line Selectors

file.py:42                      # Single line
file.py:42-100                  # Line range

Wildcard Selectors

file.py::*[params]              # All function parameters
file.py::Test*[decorators]      # Test class parameters
file.py::*.*[returns]           # All method return types
file.py::Class.*[body]          # All method bodies in Class

Wildcards support glob patterns:

  • * - Match any symbol at this level
  • Test* - Match symbols starting with Test
  • *.* - Match any method in any class
  • Class.* - Match any method in Class

Selector Grammar (Lark)

start: selector

selector: file_path DOUBLE_COLON symbol_path? component*

file_path: PATH
symbol_path: symbol_segment ("." symbol_segment)*
symbol_segment: WILDCARD | IDENTIFIER
component: "[" COMPONENT_NAME "]" accessor? pseudo_class?
accessor: "[" (IDENTIFIER | INT) "]"
pseudo_class: PSEUDO_CLASS

COMPONENT_NAME: "params" | "returns" | "decorators" | "bases" | "body" | "imports"
DOUBLE_COLON: "::"
PATH: /[^:]+/
WILDCARD: "*" | /[a-zA-Z_*][a-zA-Z0-9_*]*/
IDENTIFIER: /[a-zA-Z_][a-zA-Z0-9_]*/
INT: /-?\d+/
PSEUDO_CLASS: /:KEYWORD_ONLY|:POSITIONAL_ONLY|:POSITIONAL_OR_KEYWORD/

Commands

The public CLI is organized around a small set of top-level commands:

  • find — Search for patterns, selectors, symbols, or summaries.
  • edit — Code changes and refactors. Subcommands: set, rm, delete, add, replace, cp, rename, mv, batch, saturate.
  • analyze — Read-only analysis. Subcommands: refs, graph, deadcode, impact, types, trace, facts, cfg, dsl.
  • tool — Operational and debugging commands. Subcommands: index, editor-search, editor-server.
  • check — Unified project rules from .emend/rules.yaml.
  • lint / policy — Focused rule runners kept for compatibility and targeted workflows.
  • map — Identifier and module mappings.
  • mcp — Start the MCP server.

Hidden compatibility aliases still work. For example, emend rm ... maps to emend edit rm ..., and old read commands like search, grep, show, get, and lookup route to emend find.

Examples

Search & Read Examples

# Search by pattern (pattern mode)
emend find 'print($X)' src/
emend find 'assertEqual($A, $B)' tests/ --output count

# Search by symbol (lookup mode)
emend find file.py::func
emend find src/ --kind function --name test_*
emend find file.py --output json

# Extract function parameters
emend find api.py::handler[params]
emend find 'api.py::*[params]'  # Wildcard: all function params in file

# Get return types
emend find 'src/**/*.py::*[returns]' --output metadata

# List symbols in a module
emend find file.py                          # Tree view
emend find file.py --output summary::flat   # Flat list
emend find file.py --depth 2                # Limit nesting depth

Edit Examples

# Update return type
emend edit set api.py::handler[returns] "Response" --apply

# Add parameter with default value
emend edit add api.py::handler[params] "timeout: int = 30" --apply

# Add keyword-only parameter
emend edit add "api.py::handler[params]:KEYWORD_ONLY" "debug: bool" --apply

# Insert parameter before specific param
emend edit add api.py::handler[params] "ctx: Context" --before user_id --apply

# Remove a specific parameter
emend edit rm api.py::handler[params][deprecated_arg] --apply

# Edit multiple symbols at once (wildcards)
emend edit set 'file.py::*[decorators]' "@dataclass" --apply

Pattern Transform Examples

# Simple find and replace (dry-run by default)
emend edit replace 'print($X)' 'logger.info($X)' file.py

# Replace within a specific scope
emend edit replace 'old_var' 'new_var' api.py --where process --apply

# Replace with pattern capture
emend edit replace 'get_field($N)' 'field$N' api.py --where process --apply

# String content interpolation: ${X.content} strips quotes from a captured string literal
emend edit replace 'Union["$X", $Y]' '$X | $Y' src/ --apply

# Find all pattern matches
emend find 'print($X)' src/ --output location

# Multi-rule batch operations
emend edit batch rules.json --apply

Symbol Management Examples

# Find all references to a symbol
emend analyze refs models.py::User --json
emend analyze refs models.py::User --writes-only    # Only write references
emend analyze refs models.py::User --calls-only     # Only function calls

# Rename a symbol project-wide
emend edit rename models.py::User --to Account --apply

# Move a symbol to another file (updates imports)
emend edit mv utils.py::parse_date helpers/dates.py --apply

# Copy a symbol to another file
emend edit cp workflow.py::Builder._build.helper tasks.py --dedent --apply

# Remove a symbol or component
emend edit rm file.py::deprecated_func --apply

# List symbols using find
emend find workflow.py --depth 3

Pattern Syntax

Patterns support metavariables for capturing:

# Single expression
emend find 'print($MSG)' src/

# Multiple arguments with capture
emend find 'func($A, $B)' src/

# Variable arguments
emend find 'func($...ARGS)' src/

# Type constraints
emend find 'range($N:int)' src/

# Anonymous metavariables
emend find 'func($_, $ARG)' src/

# Structural constraints (via --where)
emend find 'print($X)' src/ --within 'async def'
emend find 'await $X' src/ --where 'not if __debug__'

# Supported pattern types:
#   Literals: $X, $MSG:str, $N:int, 3.14
#   Calls: func($X), obj.method($A, $B)
#   Operations: $A + $B, $A and $B, not $X, $X[$Y]
#   Collections: ($A, $B), [$X, $Y], {$K: $V}
#   Control: return $X, assert $A == $B, raise $EXC

Pattern Grammar (Lark)

start: pattern

pattern: (code_chunk | metavar)+

metavar: DOLLAR (ELLIPSIS)? METAVAR_NAME TYPE_CONSTRAINT?
       | DOLLAR UNDERSCORE

DOLLAR: "$"
ELLIPSIS: "..."
UNDERSCORE: "_"
METAVAR_NAME: /[A-Z][A-Z0-9_]*/
TYPE_CONSTRAINT: /:!?(?:expr|stmt|identifier|int|str|float|call|attr|any)/
code_chunk: /[^$:]+/ | ":"

The code_chunk rule excludes colons (/[^$:]+/) to prevent consuming colons that are part of type constraints (e.g., $MSG:str). A standalone colon is matched by the alternative | ":" for patterns containing colons outside of type constraints.

Diff Patch Format

- pattern_to_find
+ replacement_pattern

- another_pattern
+ another_replacement

Lines prefixed with - are matched; corresponding + lines are the replacement. Blank lines separate rules.

Linting

emend's canonical rules file is .emend/rules.yaml. emend check is the unified entry point, while emend lint and emend policy remain available for focused workflows and compatibility.

# .emend/rules.yaml
macros:
  print_call: "print($...ARGS)"

rules:
  no-print:
    match: "{print_call}"
    not-within: "def test_*"
    message: "Use logger instead of print"
    fix: "logger.info($...ARGS)"

  no-open-without-encoding:
    match: "open($PATH)"
    message: "Specify encoding when calling open()"
    fix: "open($PATH, encoding='utf-8')"
# Run all configured checks
emend check src/

# Auto-fix match rules that have a fix
emend check src/ --fix

# Focus on match-style lint rules only
emend lint src/ --rule no-print

Suppress violations inline with # noqa comments:

print("keep this")  # noqa
print("keep this")  # noqa: emend:no-print
print("keep this")  # noqa: E501, emend:no-print  # mixed with other linters

Dead code detection

Configure dead-code rules for emend check/emend lint in .emend/rules.yaml. The standalone emend analyze deadcode command uses the equivalent CLI flags shown below:

# .emend/rules.yaml
deadcode: true

# Or with options:
deadcode:
  enabled: true
  kind: function                          # Only functions (or "class")
  include-private: true                   # Default: include private symbols/methods
  exclude-test-references: true           # Default: ignore refs from tests
  unused-modules: true                    # Default: report unimported modules
  strings-count-as-references: true       # String literals count as refs
  message: "Symbol appears to be unused"
# Run as part of unified checks
emend check src/

# Or use the standalone command
emend analyze deadcode src/
emend analyze deadcode src/ --include-test-references --json
emend analyze deadcode src/ --exclude-private --no-unused-modules

Suppress false positives inline:

def my_entry_point():  # noqa: emend:deadcode
    ...

Mapping Store

emend includes a built-in mapping store for cross-service identifier mappings and module-to-repo mappings. Stored in .emend/mappings.yaml.

# Identifier mappings — cross-service relationships
emend map add backend "UserService.create" gateway "POST /api/v1/users" \
    --source-kind function --target-kind endpoint
emend map search "UserService"

# Module mappings — map module prefixes to repos or local dirs
emend map add-module payments --repo org/payments-service
emend map add-module shared.utils --path /home/user/shared-utils
emend map resolve payments.models.Order

Module mappings that reference GitHub repos are automatically cloned (via gh) and checked out as git worktrees under ~/.cache/emend/repo-checkouts/. Set EMEND_CACHE_DIR to relocate this cache.

pre-commit integration

emend can run as a pre-commit hook. Add to your .pre-commit-config.yaml:

repos:
  - repo: https://github.com/lucaswiman/emend
    rev: v0.5.0  # replace with desired version tag
    hooks:
      - id: emend-lint

This runs emend lint on staged Python files using your .emend/rules.yaml config.

To auto-fix violations, add args: ["--fix"] to the hook configuration.

Development

Installing from Source

Clone the repository and install for development:

git clone https://github.com/lucaswiman/emend
cd emend

# Using make (creates a free-threaded venv, compiles the Rust extension, installs dev deps)
make venv

# Or manually (requires maturin and a Rust toolchain):
uv venv .venv --python 3.13t
uv pip install maturin
.venv/bin/maturin develop -E dev

Running Tests

# Run all tests
make test

# Run specific test file
make test TESTS=tests/test_emend/test_add_parameter.py

# Run specific test
make test TESTS="tests/test_emend/test_add_parameter.py::test_add_parameter_with_default"

Project Structure

emend/
├── src/emend/
│   ├── cli.py                # CLI assembly and compatibility layer
│   ├── cli_find.py           # `find`
│   ├── cli_edit.py           # `edit` subcommands
│   ├── cli_analysis.py       # `analyze` subcommands
│   ├── cli_tooling.py        # `tool` and `mcp`
│   ├── cli_checks.py         # `check`, `lint`, `policy`
│   ├── cli_map.py            # `map`
│   ├── transform.py          # Core search/edit/analysis engine
│   ├── pattern.py            # Pattern parsing and compilation
│   ├── query.py              # Symbol querying with filters
│   ├── ast_commands.py       # AST-based command implementations
│   ├── ast_utils.py          # AST traversal utilities
│   ├── component_selector.py # Extended selector parsing
│   ├── lint.py               # Pattern-based linter engine
│   ├── mcp_server.py         # MCP server (optional, requires emend[mcp])
│   └── grammars/
│       ├── selector.lark     # Extended selector grammar
│       └── pattern.lark      # Pattern grammar
├── rust/                     # emend_core Rust extension (bundled in wheel)
│   ├── src/lib.rs            # PyO3 bindings, GIL-free module definition
│   └── Cargo.toml
├── vim/                      # Vim/Neovim plugin (JSON-RPC over stdio)
│   ├── plugin/emend.vim      # Commands (:Emend, :EmendSearch, etc.)
│   ├── autoload/emend.vim    # RPC client, server lifecycle
│   ├── autoload/emend/ui.vim # Split-pane search UI
│   └── doc/emend.txt         # Vim help (:help emend)
├── tests/test_emend/         # Test suite
├── Makefile
└── pyproject.toml            # maturin build (bundles Rust + Python in one wheel)

License

MPL 2.0

Release files for emend 0.5.1

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

Source distribution (sdist)

Source distribution for emend 0.5.1
File Size Uploaded
emend-0.5.1.tar.gz 500.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for emend 0.5.1
File
emend-0.5.1-cp314-cp314t-win_amd64.whl CPython 3.14 CPython 3.14 free-threading Windows x86-64 Details
emend-0.5.1-cp314-cp314t-manylinux_2_39_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ x86-64 Details
emend-0.5.1-cp314-cp314t-manylinux_2_39_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ ARM64 Details
emend-0.5.1-cp314-cp314t-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 Details
emend-0.5.1-cp314-cp314t-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64 Details
emend-0.5.1-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
emend-0.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
emend-0.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
emend-0.5.1-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
emend-0.5.1-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
emend-0.5.1-cp313-cp313t-win_amd64.whl CPython 3.13 CPython 3.13 free-threading Windows x86-64 Details
emend-0.5.1-cp313-cp313t-manylinux_2_39_x86_64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.39+ x86-64 Details
emend-0.5.1-cp313-cp313t-manylinux_2_39_aarch64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.39+ ARM64 Details
emend-0.5.1-cp313-cp313t-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 free-threading macOS 11.0+ ARM64 Details
emend-0.5.1-cp313-cp313t-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 free-threading macOS 10.12+ x86-64 Details
emend-0.5.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
emend-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
emend-0.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
emend-0.5.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
emend-0.5.1-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
emend-0.5.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
emend-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
emend-0.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
emend-0.5.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
emend-0.5.1-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
emend-0.5.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
emend-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
emend-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
emend-0.5.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
emend-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
emend-0.5.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
emend-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
emend-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
emend-0.5.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
emend-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details

Total release size: 319.6 MB

Release files / emend-0.5.1.tar.gz

Download URL emend-0.5.1.tar.gz
Size 500.2 kB
Tags Source
SHA-256 checksum
How to use checksums
034a000886becbe5bd474a1c1cca648d58e88e18c8c6819ee76602a443b493f6
BLAKE2b-256 checksum
How to use checksums
2e252db9fc90d7b8e774767cd5d7428b4f2d88823be4827dee0f8646ac880834
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314t-win_amd64.whl

Download URL emend-0.5.1-cp314-cp314t-win_amd64.whl
Size 8.6 MB
Tags CPython 3.14 CPython 3.14 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
be6c30c5033f1c85229b9bf7240d986fccdc0dab3860197291904fa8fc6e6ac2
BLAKE2b-256 checksum
How to use checksums
58ba646f2e64f457b5329a9d529d5dd242130daa87a7c09fab72dcc714f78632
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314t-manylinux_2_39_x86_64.whl

Download URL emend-0.5.1-cp314-cp314t-manylinux_2_39_x86_64.whl
Size 9.5 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
cbff3fd1ef32475adbc690e9a827a4a0d3ecff0349521ca7d36ea1770e73da8c
BLAKE2b-256 checksum
How to use checksums
4194d55a4aaa91ac3e5628c06f30e1775e89f21f957047854289542d04182c54
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314t-manylinux_2_39_aarch64.whl

Download URL emend-0.5.1-cp314-cp314t-manylinux_2_39_aarch64.whl
Size 9.8 MB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
ba22942ca1686c1ad1de3824990ba8aa475eae89bbc73d63cf78a0303c499f27
BLAKE2b-256 checksum
How to use checksums
090b4ffe2e27077a551989c06d3c25380b6da5f979ef66a905c145635f4660cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314t-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp314-cp314t-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0444f5b5615d008db4220b557314a20eb95d0b3da6fd29acdb3471fe4a6bafbb
BLAKE2b-256 checksum
How to use checksums
7cf02832ff044665a2c26db3a92e1f4a7d7aa5471df2efc30d41c17a8ba866b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314t-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp314-cp314t-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.14 CPython 3.14 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
b7c08af8ae46d531c48f968d2a645395b7de70a052f67c00640dfca2d1a13050
BLAKE2b-256 checksum
How to use checksums
e1324006d07b10360c5c82ae5395e017ee9af1f69c76eedbe87232e7abfad353
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314-win_amd64.whl

Download URL emend-0.5.1-cp314-cp314-win_amd64.whl
Size 8.6 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
69b4e0f45f7b1f74394d4c8ff124c65b2d931699b3e61c54234e098fa7015d26
BLAKE2b-256 checksum
How to use checksums
672e884914c278a3d5a88c8bcdcd6f88d050fc0b8f1fe599e0a0f0ead89bb0d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL emend-0.5.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.5 MB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e04c36bdbef8071d4905585432801c26e013c9f6d64c232104811f095c932165
BLAKE2b-256 checksum
How to use checksums
cc186276f4b5116c2855a79dcc0914323780093f20d9ba037b133df7006f9f1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL emend-0.5.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.6 MB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
180d8327064cdd3c4e551cbe1133752bd5c79d61ff5c8966dbb161b969dc0b7c
BLAKE2b-256 checksum
How to use checksums
9bd005d1cec5251d416720cf64139b65d0225d298276689b2b8c5b8d5b7b6e57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp314-cp314-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
e52e023baf754aa0491bfd6fa9afea8ec6d6b08def6b3f04b0a0eb8ac051914a
BLAKE2b-256 checksum
How to use checksums
0982fe1c83a95275d11ff97aacc10a1b958917e453a521609b08cb2ab6b2b246
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp314-cp314-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp314-cp314-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
7cdf358065494d7c16b9c8cc7aec4846ab36105c34f12e7a80be09520a1ec985
BLAKE2b-256 checksum
How to use checksums
4ce5616aa9dca3a5faeccb5c2b8e40bca885314de8e7c5749f869bf48bb6612c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313t-win_amd64.whl

Download URL emend-0.5.1-cp313-cp313t-win_amd64.whl
Size 8.6 MB
Tags CPython 3.13 CPython 3.13 free-threading Windows x86-64
SHA-256 checksum
How to use checksums
2976b66d4197de617851e19bba8d4f79a08b2dac1fad78d0272dd90dc7e7f486
BLAKE2b-256 checksum
How to use checksums
b9927e5b68f41e0cf7408d46241ff497720229abc4b44c24758f8c469d0ff394
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313t-manylinux_2_39_x86_64.whl

Download URL emend-0.5.1-cp313-cp313t-manylinux_2_39_x86_64.whl
Size 9.5 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.39+ x86-64
SHA-256 checksum
How to use checksums
85bed23ceff014cefd2bad4714d9a3e8a7f6ee6e3583b01c1e4ab527080d0b84
BLAKE2b-256 checksum
How to use checksums
454f4b968093f972c652b6ffe94234385168a3a9f75fd640599d9a16c88ce4ac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313t-manylinux_2_39_aarch64.whl

Download URL emend-0.5.1-cp313-cp313t-manylinux_2_39_aarch64.whl
Size 9.8 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.39+ ARM64
SHA-256 checksum
How to use checksums
bc9e9218eeed1cac11a3f5913f1d1ee2bdcbce00865c3539e2a563aa6b931344
BLAKE2b-256 checksum
How to use checksums
0b83418cf5ea4492ad1e4f0932730735cbcceb6831974b0695118395f489d8e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313t-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp313-cp313t-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.13 CPython 3.13 free-threading macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
939d9156e94632e29901eac86c3e3890f19f0292ebbad3ea004737cf6de34d58
BLAKE2b-256 checksum
How to use checksums
acc492767814da11af2064f01bc3f1de01e291d3ae0a1a95373a8aa0b41525c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313t-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp313-cp313t-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.13 CPython 3.13 free-threading macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
5061385f7700e3496162697bf597f73612024d3bdaeea7d1afb6c8b61648deff
BLAKE2b-256 checksum
How to use checksums
b086c57263e30402d1b868da30636bc1656fe560ff3e3e9fb948b83efaad18b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313-win_amd64.whl

Download URL emend-0.5.1-cp313-cp313-win_amd64.whl
Size 8.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
ca56fcb5980ee0f5d6f6004b38770f1386bf3e87b76d12dcbe6c587415b5b9eb
BLAKE2b-256 checksum
How to use checksums
82cdd0dcb94c9d977c543c2b9db1555859ee6a512723c3c9289a62aae8672922
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL emend-0.5.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.5 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a2e5a3617d51fa7cce827e99339c67e790fa79f2d83da864065ce9b21c88385f
BLAKE2b-256 checksum
How to use checksums
7d07f0dacd4e08dc3a4b2b757453ccbad8eaea1df7c04ec8e6b7f864f967d20b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL emend-0.5.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.6 MB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
d4b61d9e99337f2998385d134a58ad294815954ae726c855314fa3a6b3b0858a
BLAKE2b-256 checksum
How to use checksums
09ee93be0d0aed7a27c77ff93a6fc7fa1174850284a43126b21ada0b12252e16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b9535ebabe2db6e408f0c86e44efabb52c390d927390f0661b2486f655b86fa8
BLAKE2b-256 checksum
How to use checksums
207628bf40735c5ad41cc5a7942407f77570526e29b6a349bb59bc8bb6bdf131
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp313-cp313-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp313-cp313-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a22288b11e1caa4d3dcf7412df31c56685863c3013a1d4f8e872cc30c87ff8db
BLAKE2b-256 checksum
How to use checksums
c1f7cb5b3aec93839e9e3a5f0398b31a38c75c1bfba765e6073770cf68fe2833
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp312-cp312-win_amd64.whl

Download URL emend-0.5.1-cp312-cp312-win_amd64.whl
Size 8.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
85844b783dd31f80d82972e5aebfac1fd50d90f8b6832c975ab3dc9f08316b4b
BLAKE2b-256 checksum
How to use checksums
f5c3f79b2cf278aff6878f41e3cdf265ef938a6a551862bc502be1a20630c102
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL emend-0.5.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.5 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
4b35f162a795e82b86eb8b71333372ee409a8bbec5044a1b1bba49f57548abb9
BLAKE2b-256 checksum
How to use checksums
91795a187383c0d0a7dcea63e9c94c8832c17c264c562722f5a15e6b28b2eeb2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL emend-0.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.6 MB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
3e163ce7b14733e703e30f0cb91f40fd843986f82f79ab39994060840154a0a6
BLAKE2b-256 checksum
How to use checksums
387c0b65aa89b3fb447f39121f3bc51b3efbd2603df0311f43376e665e094f1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a262e015ff509b7cc6246c917d3490c05053df080f5dda73c4da7e834f9dffcc
BLAKE2b-256 checksum
How to use checksums
2498d3d38fb66408ce807497dde292e9c98e324a1727bbf13b47a232e1d2e164
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp312-cp312-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp312-cp312-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
9b48f65f565ee13bb611d9e5acc328724d57ce9360607d1cb04495123f98f0b1
BLAKE2b-256 checksum
How to use checksums
49d9900e24915cefa9e5b74eba8beafc06a50f8cd1001b6f0fa3579f58d29517
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp311-cp311-win_amd64.whl

Download URL emend-0.5.1-cp311-cp311-win_amd64.whl
Size 8.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
afdfc06be4c16c647e193cdc55f677b2b1ab9396a2e22a9068cf0088a4a7391a
BLAKE2b-256 checksum
How to use checksums
2cdf94286689a343ac70df398b19bfcd75d8262f355daa67403b3eeb80649b66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL emend-0.5.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.5 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
c888c8a5cd718b3097dd437ad8719525105f30893c396e23f162e6df224f3c3a
BLAKE2b-256 checksum
How to use checksums
c50b2132b7fd3baf497e04db8958559456db9461a864605d5042ba28fc753b42
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL emend-0.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.6 MB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
003e43cb8ffeedbaac76307667d118465854185610f0fee495701badf92d7b2f
BLAKE2b-256 checksum
How to use checksums
4c220823ec8207d1bb0a2c70164f68550b73eb55cd7aad24920743c972e302f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
56565df557ac7a8cc8260c302ad15c67a65b4ba014458ac2f18ef9c5fa2536b7
BLAKE2b-256 checksum
How to use checksums
75fcde379d19c6482e9d9f6c4c586b29103fffa6f485aedc8203b4d8994c2fd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp311-cp311-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
c9bf81d687896b9511a0e041a03edd817b19a032838d0ab04f38a4c8d1cb7300
BLAKE2b-256 checksum
How to use checksums
8072db556933222b865805eb4a35db01601724ba42340777389ab54087a9474c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp310-cp310-win_amd64.whl

Download URL emend-0.5.1-cp310-cp310-win_amd64.whl
Size 8.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
b564839246a5496f3e890d23b1fb2713ed93161b7ef6406c5ea538f1c4314990
BLAKE2b-256 checksum
How to use checksums
025256bc86bd35b811f83f0a863cb1f2cb7fb879b315a8689ffb6576d70812d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL emend-0.5.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.5 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
37fe104f5d20ce603a17c4cbac70d6f6bd9f3f8f9c84ae4d03437af9cc56a7d4
BLAKE2b-256 checksum
How to use checksums
a824d53092afc73d485ba53268062fd30a2c9680992d23f15d5089f9ca3ca75f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL emend-0.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.6 MB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4caa2fccbba09a29dc88b2eb049b52da50639c213411e1ac578874d4ada55da4
BLAKE2b-256 checksum
How to use checksums
20f0b31d1b1a1e11afa9e0b16a94a018940541c166f0b0d72c81681fc1ce9a2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL emend-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
Size 8.8 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
740ebbb9379d3184bf65e46070e2c805fa6af254b20fe3589f78229350031a48
BLAKE2b-256 checksum
How to use checksums
9d5dc8a6998a454fdb2f9630d5f8cd59685912043e73b4a3c3bf4e6431ef01b8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release files / emend-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl

Download URL emend-0.5.1-cp310-cp310-macosx_10_12_x86_64.whl
Size 9.0 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
a123a116ef21380bf11f28a0ce420767c6dca3f2d00fda4b97c6d508a3f46990
BLAKE2b-256 checksum
How to use checksums
958546f47a8c6e463978a76a7066ea5718b626937b44eb12302713c8942b263e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Sep 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.4

36 release files

0.5.3

36 release files

0.5.2

36 release files

This release

0.5.1 This release

36 release files

0.4.1

36 release files

0.4.0

36 release files

0.3.0

36 release files

0.2.3

36 release files

0.2.2

35 release files

0.2.1

17 release files

0.2.0

17 release files

0.1.0

19 release files

0.0.1

2 release files

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