A Python refactoring CLI tool with structured edits and pattern transforms
Project description
emend
A Python refactoring CLI tool built on LibCST, with AST-based commands for handling nested functions and closures.
Built on two complementary systems:
- Structured Edits - Precise changes to symbol metadata using selectors like
file.py::func[params][0] - Pattern Transforms - Code-pattern search and replace with capture variables like
print($X)→logger.info($X)
Installation
Using uv (recommended)
uv tool install emend
Using pip
pip install emend
Verify the installation:
emend --help
Usage
emend <command> [options]
Workflow
- Preview changes: Run with
--dry-run(default) to see what will change - Review the diff output
- Apply changes: Re-run with
--apply - Format code: Run formatters (black/ruff/isort) - emend may not preserve exact formatting
- Verify: Run tests/type checks
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 levelTest*- Match symbols starting with Test*.*- Match any method in any classClass.*- Match any method in Class
Selector Grammar (Lark)
start: selector
selector: file_path DOUBLE_COLON symbol_path? component*
file_path: PATH
symbol_path: IDENTIFIER ("." 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: /[^:]+/
IDENTIFIER: /[a-zA-Z_][a-zA-Z0-9_]*/
INT: /\d+/
PSEUDO_CLASS: /:KEYWORD_ONLY|:POSITIONAL_ONLY|:POSITIONAL_OR_KEYWORD/
Commands
Search & Read
search - Unified search with auto-detection
- Pattern mode:
emend search 'print($X)' file.py - Lookup mode:
emend search file.py::func - Summary mode:
emend search file.py(list symbols) - Filters:
--kind,--name,--returns,--depth,--has-param,--output,--where,--imported-from,--scope-local - Output formats:
code,location,selector,summary,metadata,json,count,summary::flat,code::dedent - Also available as:
query,show,get,lookup,findfor intuitive workflows
Edit & Transform
edit - Modify or remove existing symbol components
- Replace:
emend edit file.py::func[returns] "int" --apply - Insert:
emend edit file.py::func[params] "new_param" --before ctx --apply - Remove:
emend edit file.py::func[params][old_param] --rm --apply - Wildcards:
emend edit 'file.py::*[decorators]' "@dataclass" --apply
add - Insert new items into list components (alternative to edit)
emend add file.py::func[params] "timeout: int = 30" --applyemend add "file.py::func[params]:KEYWORD_ONLY" "debug: bool" --apply
replace - Replace pattern matches with pattern-based substitution
emend replace 'print($X)' 'logger.info($X)' file.py --apply- Scope constraints:
--in,--inside,--not-inside,--where
Symbol Management
refs - Find all references to a symbol across the project
emend refs models.py::User- Filters:
--writes-only,--reads-only,--calls-only - Output:
--output json,--output location
rename - Rename a symbol or module across the project
- Symbol:
emend rename models.py::User --to Account --apply - Module:
emend rename models.py --to accounts.py --apply - Filters:
--docs,--no-hierarchy,--unsure
move - Move a symbol or module with automatic import updates
- Symbol:
emend move utils.py::parse_date helpers/dates.py --apply - Module:
emend move utils.py helpers/utils.py --apply
copy-to - Copy a symbol to another file
emend copy-to workflow.py::Builder._build.helper tasks.py --dedent --apply
Utilities
batch - Apply multiple refactoring operations from YAML/JSON file
emend batch rules.json --apply
lint - Lint files using pattern rules from .emend/patterns.yaml
emend lint src/emend lint src/ --fix --applyto auto-fix issues
graph - Generate a call graph for functions in a file
emend graph src/module.py --format plain- Formats:
plain,json,dot
Examples
Search & Read Examples
# Search by pattern (pattern mode)
emend search 'print($X)' src/
emend search 'assertEqual($A, $B)' tests/ --output count
# Search by symbol (lookup mode)
emend search file.py::func
emend search src/ --kind function --name test_*
emend search file.py --output json
# Extract function parameters
emend search api.py::handler[params]
emend search 'api.py::*[params]' # Wildcard: all function params in file
# Get return types
emend search 'src/**/*.py::*[returns]' --output metadata
# List symbols in a module
emend search file.py # Tree view
emend search file.py --output summary::flat # Flat list
emend search file.py --depth 2 # Limit nesting depth
Edit Examples
# Update return type
emend edit api.py::handler[returns] "Response" --apply
# Add parameter with default value
emend edit api.py::handler[params] "timeout: int = 30" --apply
# Add keyword-only parameter
emend edit "api.py::handler[params]:KEYWORD_ONLY" "debug: bool" --apply
# Insert parameter before specific param
emend edit api.py::handler[params] "ctx: Context" --before user_id --apply
# Remove a specific parameter
emend edit api.py::handler[params][deprecated_arg] --rm --apply
# Edit multiple symbols at once (wildcards)
emend edit 'file.py::*[decorators]' "@dataclass" --apply
Pattern Transform Examples
# Simple find and replace (dry-run by default)
emend replace 'print($X)' 'logger.info($X)' file.py
# Replace within a specific scope
emend replace 'old_var' 'new_var' api.py --in process --apply
# Replace with pattern capture
emend replace 'get_field($N)' 'field$N' api.py --in process --apply
# Find all pattern matches
emend search 'print($X)' src/ --output location
# Multi-rule batch operations
emend batch rules.json --apply
Symbol Management Examples
# Find all references to a symbol
emend refs models.py::User --output json
emend refs models.py::User --writes-only # Only write references
emend refs models.py::User --calls-only # Only function calls
# Rename a symbol project-wide
emend rename models.py::User --to Account --apply
# Move a symbol to another file (updates imports)
emend move utils.py::parse_date helpers/dates.py --apply
# Copy a symbol to another file
emend copy-to workflow.py::Builder._build.helper tasks.py --dedent --apply
# List symbols using search
emend search 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
emend find 'print($X)' src/ --inside 'async def'
emend find 'await $X' src/ --not-inside '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.
Development
Installing from Source
Clone the repository and install for development:
git clone https://github.com/anthropics/emend
cd emend
# Using make (creates virtual environment)
make venv
# Or manually:
python3 -m venv .venv
.venv/bin/pip install -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 entry point, argument parsing
│ ├── transform.py # Transform primitives (get/set/add/remove/find/replace)
│ ├── 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
│ └── grammars/
│ ├── selector.lark # Extended selector grammar
│ └── pattern.lark # Pattern grammar
├── tests/test_emend/ # Test suite
├── Makefile
└── pyproject.toml
License
MPL 2.0
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file emend-0.1.0.tar.gz.
File metadata
- Download URL: emend-0.1.0.tar.gz
- Upload date:
- Size: 169.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1835b5da7ac856c1d973a9d731c910349095bd6445bb4ee934b099c7eb9c14aa
|
|
| MD5 |
99665a80b471456d2e2d605c74eba031
|
|
| BLAKE2b-256 |
7a4f41e49dfa9cd4f767abed256f193b0d11d8dc871c31d8e9749ed1f592258f
|
Provenance
The following attestation bundles were made for emend-0.1.0.tar.gz:
Publisher:
publish.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0.tar.gz -
Subject digest:
1835b5da7ac856c1d973a9d731c910349095bd6445bb4ee934b099c7eb9c14aa - Sigstore transparency entry: 978279083
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@8d62e97ef020b23743288cfc00de903a76d4ca16 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8d62e97ef020b23743288cfc00de903a76d4ca16 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-py3-none-any.whl.
File metadata
- Download URL: emend-0.1.0-py3-none-any.whl
- Upload date:
- Size: 80.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
535f8e320729d43ce3529fc1fb929bf322ebf1882b1fffd43187aea2c3a23394
|
|
| MD5 |
d3a4f036a6b8339f107c51e50ddb332d
|
|
| BLAKE2b-256 |
096f87b8cfd0b96a31ec17dcc1a1c420df40fc4b0dbfb92132968a204f4acbad
|
Provenance
The following attestation bundles were made for emend-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-py3-none-any.whl -
Subject digest:
535f8e320729d43ce3529fc1fb929bf322ebf1882b1fffd43187aea2c3a23394 - Sigstore transparency entry: 978279169
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@8d62e97ef020b23743288cfc00de903a76d4ca16 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@8d62e97ef020b23743288cfc00de903a76d4ca16 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 704.9 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09b5a3b16820629fd502eada2a9b5a83c9346e34b37d34a9215e8fd3fd544c3d
|
|
| MD5 |
9fafd99f5475d37e6b70d3312b0c08ec
|
|
| BLAKE2b-256 |
cd634b901eeb4e9c5a2ac74981d872347b82b38567cf9973020ece9da3f57be5
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
09b5a3b16820629fd502eada2a9b5a83c9346e34b37d34a9215e8fd3fd544c3d - Sigstore transparency entry: 1004268942
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: emend-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 667.9 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d05d74ce80e972b7a462077387b954245a4722d158b770f675798eafdf76ee7b
|
|
| MD5 |
83f337bd22eb8b73d2683fee5ad722ef
|
|
| BLAKE2b-256 |
4cef54890222c9ad6ed1d78553f2fa4d779473aa5bd6a1f0165abeb2395c46bf
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
d05d74ce80e972b7a462077387b954245a4722d158b770f675798eafdf76ee7b - Sigstore transparency entry: 1004268970
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: emend-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 504.1 kB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
945a528f8ef57e0e629e954a6439693b09544a4e6c715536edda7c41371221b2
|
|
| MD5 |
42a3cbba1c35f9f87f85372ba78fc69d
|
|
| BLAKE2b-256 |
f504ef6b2852b5f7d42a9e719be5e5908caf0e0b5e85524a975a9d3b7f6750e8
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp312-cp312-win_amd64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp312-cp312-win_amd64.whl -
Subject digest:
945a528f8ef57e0e629e954a6439693b09544a4e6c715536edda7c41371221b2 - Sigstore transparency entry: 1004268959
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 705.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
32333635ffd61bf9aaa1790e439dd9dad19b45f24aa71a8e29f28f5c472a4b07
|
|
| MD5 |
3011a27ff6e0bb4c6bb46b0c6c378cfe
|
|
| BLAKE2b-256 |
36b008cdcf00d64d8a8091dcdf65803c2f3ec90f3db5e6fe99a17aa077ad54f6
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
32333635ffd61bf9aaa1790e439dd9dad19b45f24aa71a8e29f28f5c472a4b07 - Sigstore transparency entry: 1004268967
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: emend-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 668.2 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33c5fd3ae1287c0e7c832d37bd0ea4d24635ff40845eaaae2f803f9d042c8310
|
|
| MD5 |
35d3d6f801779639a00179dc2f446e92
|
|
| BLAKE2b-256 |
b2848b3234ed30ab22f59b9570d2cf1107bba38b0f6e82fbcfe1bd206e9be69f
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
33c5fd3ae1287c0e7c832d37bd0ea4d24635ff40845eaaae2f803f9d042c8310 - Sigstore transparency entry: 1004268948
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: emend-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 618.9 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44746c43230b5b0a42c6782bf60bef4bce8bae34f7a9908844eac2e6b3221a43
|
|
| MD5 |
70b32f6874c37c2fb1b430efb5d0d1e3
|
|
| BLAKE2b-256 |
bf8aaeb4c759385edcd0c06d4a6c351942e8cb17e4dbf82d3d54259d9b707195
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
44746c43230b5b0a42c6782bf60bef4bce8bae34f7a9908844eac2e6b3221a43 - Sigstore transparency entry: 1004268733
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 630.8 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e1c457e450d85e9a5f6857b0dcc05b331a2367edb311fa8a3f3f7628bb0ed99
|
|
| MD5 |
6b68e529a3e924bb7816ffcc258294e0
|
|
| BLAKE2b-256 |
10a4cead737ced996fd1cdf794fdde0cc8c5fe6b2381942f04fbcd48b687cb8d
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl -
Subject digest:
8e1c457e450d85e9a5f6857b0dcc05b331a2367edb311fa8a3f3f7628bb0ed99 - Sigstore transparency entry: 1004268786
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: emend-0.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 505.1 kB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e700c83f9aa73ce3a288ef62feee85700b781c3ad3d9ba3ae35dec4210559e9
|
|
| MD5 |
b7752110592aeb1d0827ec73fb5ec0e6
|
|
| BLAKE2b-256 |
364ea5726621f2186aa9109e417748d0848566376b3b3f93ed0a173c20d98da3
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp311-cp311-win_amd64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp311-cp311-win_amd64.whl -
Subject digest:
6e700c83f9aa73ce3a288ef62feee85700b781c3ad3d9ba3ae35dec4210559e9 - Sigstore transparency entry: 1004268858
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 705.9 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41f3d50be9e51c997a3fc782b8e8a00750e4a0dc10bc6613a50619df76ff869e
|
|
| MD5 |
7dc26de51a6648dcdd28aa06ada0d4db
|
|
| BLAKE2b-256 |
9dd6a6ede7cc76fc12b9cdd4a3dad0f47586ab2b947eed6025f862c0989adfdd
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
41f3d50be9e51c997a3fc782b8e8a00750e4a0dc10bc6613a50619df76ff869e - Sigstore transparency entry: 1004268927
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: emend-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 668.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ec87e2b44942822ca561081042b4180c54a08e261eaf1e4df67d322a0090878
|
|
| MD5 |
122d71f9fd531f25fe8186170a419220
|
|
| BLAKE2b-256 |
0016bb6de50801c6588fb997a056574ee5247a84f035c6cf04dad67224d07537
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
2ec87e2b44942822ca561081042b4180c54a08e261eaf1e4df67d322a0090878 - Sigstore transparency entry: 1004268883
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: emend-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 621.0 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4106ee6ea827aa0d63ed0e4e0163d44fb40e68fa5e42d5b2fc9c6c8d155734db
|
|
| MD5 |
7e79656160382044153b4ee65668f20c
|
|
| BLAKE2b-256 |
aa601bc4a1ebc4dae57a94f5e6f3209c77f561c7ad2ae5e01631feba72c4de21
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
4106ee6ea827aa0d63ed0e4e0163d44fb40e68fa5e42d5b2fc9c6c8d155734db - Sigstore transparency entry: 1004268893
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 632.1 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
587b4a3442c315c197653dd3a62909b8ee017c6ac45b2780679752fededd862a
|
|
| MD5 |
06b7d52897d4e3ac4dc25c709a1d4fb5
|
|
| BLAKE2b-256 |
46787759c20c13dcf1c085dcbb5c38f46b8fc9aab2a58b12689d6fc158390187
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl -
Subject digest:
587b4a3442c315c197653dd3a62909b8ee017c6ac45b2780679752fededd862a - Sigstore transparency entry: 1004268756
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: emend-0.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 505.0 kB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f5be9124159486dea5cda1800baabfb5462709c4ce2901fc7addd3c384741ef
|
|
| MD5 |
fce4db4ba9cdce3a7ba8ba135cc327dc
|
|
| BLAKE2b-256 |
50a9821785903e210baedbee72106d197114a4d00af1c0fd64c705e2d573d61a
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp310-cp310-win_amd64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp310-cp310-win_amd64.whl -
Subject digest:
9f5be9124159486dea5cda1800baabfb5462709c4ce2901fc7addd3c384741ef - Sigstore transparency entry: 1004268840
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 705.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4749fe603a0a9b25627f2aab2ba4c075641313ab43c46ebb5556c9528686c26
|
|
| MD5 |
8b69541d74c91c3a24d0871e446a4d69
|
|
| BLAKE2b-256 |
291b391133acc553fb6b59b84bee6c064f00cca012199bb8db71256954c3e62d
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
f4749fe603a0a9b25627f2aab2ba4c075641313ab43c46ebb5556c9528686c26 - Sigstore transparency entry: 1004268765
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: emend-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 668.7 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e70cca9390334e56b168ef73a6a014c4f28107885d5c7579f186fca4b52267e
|
|
| MD5 |
a05819c80720fb868ad7196a7a7d4c4a
|
|
| BLAKE2b-256 |
f5f16247f1b022b12d7597892dbb071e73a9b3ecefc3b3be8853e5310ee5e912
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl -
Subject digest:
5e70cca9390334e56b168ef73a6a014c4f28107885d5c7579f186fca4b52267e - Sigstore transparency entry: 1004268915
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: emend-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 621.1 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4cbb2454d189bb65936b60ef3f3f5f7e91b73f93a92b8330cfa9eb4c4e278797
|
|
| MD5 |
959cdf79317cfdaf52ed1928f3101fa6
|
|
| BLAKE2b-256 |
ad62d1612de3a5d86ef2daa85244e34a32ff5a3cbf13e56fb343cccfc6a6a5a6
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
4cbb2454d189bb65936b60ef3f3f5f7e91b73f93a92b8330cfa9eb4c4e278797 - Sigstore transparency entry: 1004268824
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type:
File details
Details for the file emend-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: emend-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 632.7 kB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f161780c97dca0d3f56e366c0586c8d360f525430335d6a856409be18ab77bfe
|
|
| MD5 |
725800e6e96c3aabce64b63e7bc3145d
|
|
| BLAKE2b-256 |
3b5d39d8640199d01b0da748229af9f097d42b0a72e6a645394c6ec6f92ab684
|
Provenance
The following attestation bundles were made for emend-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl:
Publisher:
wheels.yml on lucaswiman/emend
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
emend-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl -
Subject digest:
f161780c97dca0d3f56e366c0586c8d360f525430335d6a856409be18ab77bfe - Sigstore transparency entry: 1004268934
- Sigstore integration time:
-
Permalink:
lucaswiman/emend@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/lucaswiman
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
wheels.yml@c0eaa91e0eef84b9b5ada1704bcd02c274596932 -
Trigger Event:
release
-
Statement type: