No project description provided
Project description
Elvis 0.1.3
A simple LVS (Layout vs. Schematic) tool for GDSFactory.
Features
- Extract netlists from GDS files (kfactory/gdsfactory format)
- Run LVS comparison between schematic and layout
- Graph-based connectivity tracing through 2-port routing components
- Hierarchical LVS with explicit child netlist files
- Open detection for dangling ports, with equivalent port grouping
- Geometric short detection with per-layer and cross-layer support
- Array instance support (GDS
AREFexpansion) - Output errors in KLayout lyrdb format, YAML, or JSON
- Convert between netlist formats
- CLI and Python bindings
Building
cargo build --release
Quickstart
1. Extract a netlist from a GDS file
elvis extract path/to/layout.gds
Output:
instances:
mmi: mmi1x2
wg_in: straight
wg_out1: straight
nets:
- p1: wg_in,o2
p2: mmi,o1
- p1: mmi,o2
p2: wg_out1,o1
ports:
o1: wg_in,o1
o2: wg_out1,o2
2. Run LVS
Compare a schematic netlist (.pic.yml) against a layout (GDS):
elvis lvs layout.gds schematic.pic.yml
Output formats:
# KLayout lyrdb (default) - viewable in KLayout
elvis lvs layout.gds schematic.pic.yml -o report.lyrdb
# YAML
elvis lvs layout.gds schematic.pic.yml -f yaml
# JSON
elvis lvs layout.gds schematic.pic.yml -f json
# Custom port matching tolerance (default: 1nm)
elvis lvs layout.gds schematic.pic.yml -t 10
# Geometric short detection on layer 1/0
elvis lvs layout.gds schematic.pic.yml --short-layer 1,0
# Cross-layer short detection (e.g., M1 connects to M2 through VIA)
elvis lvs layout.gds schematic.pic.yml \
--short-layer 1,0 --short-layer 3,0 \
--connected-layers 1,0:2,0 --connected-layers 2,0:3,0
# Equivalent port grouping (suppress opens for equivalent ports)
elvis lvs layout.gds schematic.pic.yml --equivalent-ports pad:e1,e2,e3,e4
# Hierarchical LVS (pass all child .pic.yml files explicitly)
elvis lvs layout.gds mzi.pic.yml mmi1x2.pic.yml
# Override component name for a schematic file
elvis lvs layout.gds my_mzi:mzi.pic.yml
# Override top cell name for hierarchical schematics
elvis lvs layout.gds mzi.pic.yml --top-cell mzi
Configuration file
LVS settings can be stored in elvis.toml or in pyproject.toml under [tool.elvis],
so you don't have to repeat flags on every invocation. Elvis looks for elvis.toml first,
then falls back to pyproject.toml. CLI flags and Python kwargs override config values.
elvis.toml:
tolerance = 1
top-cell = "my_design"
short-layers = [[49, 0], [45, 0], [41, 0], [44, 0], [1, 0]]
connected-layers = [[[44, 0], [41, 0]], [[44, 0], [45, 0]]]
[equivalent-ports]
pad = ["e1", "e2", "e3", "e4", "pad"]
pyproject.toml:
[tool.elvis]
short-layers = [[49, 0], [45, 0]]
[tool.elvis.equivalent-ports]
pad = ["e1", "e2", "e3", "e4", "pad"]
With a config file, elvis lvs layout.gds schematic.pic.yml picks up all settings
automatically. Pass a flag explicitly to override a specific config value.
Example YAML output:
ok: false
error_count: 2
instance_errors:
- error_type: missing_in_layout
name: mmi1
component: mmi1x2
net_errors:
- error_type: missing_in_schematic
p1: wg_in,o2
p2: mmi,o1
3. Extract component ports from a GDS file
List the ports defined on each component cell (from kfactory metadata):
elvis extract-ports layout.gds
Output:
mmi1x2:
- o1
- o2
- o3
straight:
- o1
- o2
pad:
- e1
- e2
- e3
- e4
- pad
4. Convert netlist formats
Convert a GDSFactory netlist (.pic.yml) to the simplified elvis-netlist format:
elvis convert schematic.pic.yml
5. Output formats
# YAML (default)
elvis extract layout.gds
# JSON
elvis extract layout.gds -f json
# Save to file
elvis extract layout.gds -o netlist.yml
6. Python usage
Install with maturin:
maturin develop
import elvis
# Extract netlist from GDS (returns dict)
netlist = elvis.extract_netlist("layout.gds")
# {'instances': {'mmi': 'mmi1x2', ...}, 'nets': [...], 'ports': {...}}
# Extract component port table from GDS (returns dict)
ports = elvis.extract_ports("layout.gds")
# {'mmi1x2': ['o1', 'o2', 'o3'], 'straight': ['o1', 'o2'], ...}
# Load schematic from .pic.yml file(s) (returns GDSFactory netlist dict)
schematic = elvis.load_schematic("schematic.pic.yml")
# Run LVS comparison (returns dict)
result = elvis.lvs("layout.gds", schematic)
# {'ok': False, 'error_count': 2, 'instance_errors': [...], ...}
# Run LVS comparison (returns klayout.rdb.ReportDatabase)
report = elvis.lvs_rdb("layout.gds", schematic)
report.save("report.lyrdb") # save for viewing in KLayout
# Custom port matching tolerance (default: 1nm)
result = elvis.lvs("layout.gds", schematic, tolerance_nm=10)
# Geometric short detection
result = elvis.lvs("layout.gds", schematic, short_layers=[(1, 0)])
# Cross-layer short detection (M1 ↔ VIA ↔ M2)
result = elvis.lvs("layout.gds", schematic,
short_layers=[(1, 0), (3, 0)],
connected_layers=[((1, 0), (2, 0)), ((2, 0), (3, 0))])
# Equivalent port grouping
result = elvis.lvs("layout.gds", schematic,
equivalent_ports=[("pad", ["e1", "e2", "e3", "e4"])])
# Hierarchical LVS — pass all child files explicitly
schematic = elvis.load_schematic("mzi.pic.yml", "mmi1x2.pic.yml")
result = elvis.lvs("layout.gds", schematic)
# Quick pass/fail check
if elvis.lvs_ok("layout.gds", schematic):
print("LVS passed!")
# Pass a flat schematic dict directly (no file needed)
result = elvis.lvs("layout.gds", {
"instances": {"mmi": {"component": "mmi1x2"}, "wg": {"component": "straight"}},
"connections": {"wg,o2": "mmi,o1"},
"ports": {"o1": "wg,o1", "o2": "mmi,o2"},
})
# Convert GDSFactory netlist to elvis format (returns dict)
converted = elvis.convert("schematic.pic.yml")
How it works
Netlist Extraction
Elvis extracts connectivity information from GDS files through a multi-step process:
1. Parsing GDS Structure
The GDS file contains a hierarchy of cells (structures). Elvis identifies the top cell - the cell that is not instantiated by any other cell. This is the design being verified.
GDS File
├── top_cell (not referenced by others → this is extracted)
│ ├── instance: mmi (references mmi1x2 cell)
│ ├── instance: wg_in (references straight cell)
│ └── instance: wg_out1 (references straight cell)
├── mmi1x2 (component cell)
├── straight (component cell)
└── bend_euler (component cell)
2. Extracting Port Metadata
kfactory/gdsfactory stores port information in GDS PROPATTR records with a specific format:
kfactory:ports:0')={'name'=>'o1','port_type'=>'optical','trans'=>[trans:r180 -35500,625]}
Elvis parses these properties to extract:
- name: Port identifier (e.g.,
o1,o2) - position: X, Y coordinates in database units
- orientation: Rotation angle (0°, 90°, 180°, 270°)
- port_type: Optional type (e.g.,
optical,electrical)
3. Instance Name Resolution
Each cell reference (SREF) in the GDS becomes an instance. The instance name is determined by:
- Explicit name: From GDS property with
attr=0(if present) - Generated name:
{cell_name}_{x}_{y}[_r{rotation}][_m]as fallback
The generated name includes rotation and mirror suffixes to ensure uniqueness when multiple instances of the same cell exist at the same position with different transforms.
4. Port Transformation
Each instance's ports are transformed from local (cell) coordinates to global (layout) coordinates:
Global Position = Instance Position + Rotate(Local Position, Instance Rotation)
Global Orientation = Local Orientation + Instance Rotation (± mirror)
5. Connection Detection
Two ports are considered connected when ALL of the following conditions are met:
| Condition | Requirement |
|---|---|
| Position | Within tolerance (default: 1nm) |
| Orientation | Facing opposite directions (180° ± 1°) |
| Port type | Same type, or either type is unknown |
| Instance | On different instances (no self-connections) |
┌─────────┐ ┌───────┐
│ mmi │ o2 ←→ o1 │ wg │
│ │─────●─────│ │
└─────────┘ 180° 0° └───────┘
Connected: same position, opposite orientation
The port type check ensures that only compatible ports connect:
optical↔optical: ✓ Connectedelectrical↔electrical: ✓ Connectedoptical↔electrical: ✗ Not connected (will appear as open)unknown↔anything: ✓ Connected (permissive fallback)
LVS Algorithm
Elvis uses a graph-based connectivity comparison where 2-port routing instances are removed from the net-comparisons.
The Problem with Naive Comparison
A direct comparison would fail on any routed design:
Schematic (what the designer specified):
┌──────────┐ ┌──────────┐
│ splitter │──────│ arm_top │
└──────────┘ └──────────┘
2 instances, 1 net
Layout (after auto-routing):
┌──────────┐ ┌──────┐ ┌────────┐ ┌──────┐ ┌──────────┐
│ splitter │───│ bend │───│straight│───│ bend │───│ arm_top │
└──────────┘ └──────┘ └────────┘ └──────┘ └──────────┘
5 instances, 4 nets
Naive LVS: FAILED - 3 extra instances, 3 extra nets
The Solution: Graph-Based Tracing
Elvis treats the layout as a connectivity graph and traces through 2-port components (which act as "wires") to find connections between reference instances (components from the schematic).
Key insight: A 2-port component (like a waveguide or bend) doesn't change connectivity - it just extends a path. Only components with 3+ ports (like splitters, couplers) are true circuit elements that define the topology.
Algorithm Steps
Step 1: Identify Reference Instances
Reference instances are those that appear in the schematic. These are the "real" components we care about - they define the circuit topology.
reference_instances = {name for name in schematic.instances}
# e.g., {"splitter", "arm_top", "arm_bottom", "combiner"}
Step 2: Build Connectivity Graph
Create a graph from the layout where:
- Nodes are
(instance, port)pairs - Edges connect ports that are physically connected
Layout connectivity graph:
(splitter,o2) ─── (bend_1,o1)
(bend_1,o2) ─── (straight_1,o1)
(straight_1,o2) ─── (bend_2,o1)
(bend_2,o2) ─── (arm_top,o1)
Step 3: Classify Traversable Instances
An instance is traversable if:
- It has exactly 2 ports (it's a "wire-like" component)
- It is NOT a reference instance (not in the schematic)
def is_traversable(instance):
return port_count[instance] == 2 and instance not in reference_instances
Reference instances are never traversable - they are endpoints where tracing stops.
Step 4: Trace Through 2-Port Intermediates
For each connection in the schematic, verify it exists in the layout by tracing through traversable instances:
def trace_to_endpoint(start_instance, start_port):
current = get_connected_port(start_instance, start_port)
while is_traversable(current.instance):
# Find the other port on this 2-port instance
other_port = get_other_port(current.instance, current.port)
# Follow the connection from that port
current = get_connected_port(current.instance, other_port)
return current # Returns the endpoint (a reference instance)
Example trace:
Start: (splitter, o2)
→ connected to (bend_1, o1)
→ bend_1 is traversable, other port is o2
→ (bend_1, o2) connected to (straight_1, o1)
→ straight_1 is traversable, other port is o2
→ (straight_1, o2) connected to (bend_2, o1)
→ bend_2 is traversable, other port is o2
→ (bend_2, o2) connected to (arm_top, o1)
→ arm_top is NOT traversable (it's a reference instance)
End: (arm_top, o1) ✓
Step 5: Mark Valid Intermediates
All 2-port instances encountered on valid paths are marked as valid intermediates. These won't trigger "missing in schematic" errors.
Valid intermediates: {bend_1, straight_1, bend_2}
These exist in layout but not schematic - that's OK, they're routing.
Step 6: Check for Extra Connections
Also verify that the layout doesn't have extra connections between reference instances that aren't in the schematic (topological shorts).
Array Instance Support
GDS array references (AREF) are expanded into individual instances with <col.row>
naming (e.g., pads<0.0>, pads<1.0>). Schematic array instances are likewise
expanded during netlist conversion, so both sides use the same naming convention.
Visual Example
SCHEMATIC:
┌─────────┐
┌─────┤ arm_top ├─────┐
│ └─────────┘ │
┌─────┴─────┐ ┌─────┴─────┐
───○─┤ splitter │ │ combiner ├─○───
└─────┬─────┘ └─────┬─────┘
│ ┌─────────┐ │
└─────┤ arm_bot ├─────┘
└─────────┘
4 reference instances, 4 nets
LAYOUT (with routing):
╭───────────────────╮
┌────┤ arm_top ├────┐
│ └───────────────────┘ │
╭─────╯ ╰─────╮
│ (bends and straights) │
┌─────┴─────┐ ┌──────┴────┐
───○─┤ splitter │ │ combiner ├─○───
└─────┬─────┘ └─────┬─────┘
│ (bends and straights) │
╰─────╮ ╭────╯
│ ┌───────────────────┐ │
└────┤ arm_bot ├────┘
└───────────────────┘
64 instances total (4 reference + 60 routing), 64 nets
LVS RESULT: PASSED
- All 4 schematic connections verified through routing
- 60 routing instances are valid intermediates
Error Types
| Error | Description | Geometric Marker |
|---|---|---|
instance.missing_in_layout |
Schematic instance not found in layout | Box at schematic placement |
instance.missing_in_schematic |
Layout instance not in schematic AND not a valid intermediate | Box around instance ports |
instance.component_mismatch |
Instance exists but wrong component type | Box around instance ports |
net.missing_in_layout |
Schematic connection not found (even through routing) | Edge between the two ports |
net.missing_in_schematic |
Extra connection between reference instances | Edge between the two ports |
port.missing_in_layout |
Top-level port in schematic but not layout | Point at port position |
port.missing_in_schematic |
Top-level port in layout but not schematic | Point at port position |
open |
Dangling port not connected and not a top-level port | Box around instance ports |
short |
Polygons from different chains overlap unexpectedly | Polygon at overlap region |
Open Detection
After tracing, any port that is neither connected to another port nor exposed as a top-level port is flagged as an open. This catches dangling ports that the designer likely forgot to connect.
Equivalent Port Grouping
Components like pads may have multiple ports that are electrically equivalent (e.g.,
e1, e2, e3, e4). When any port in such a group is connected, the others
shouldn't be flagged as open. Use --equivalent-ports to declare these groups:
elvis lvs layout.gds schematic.pic.yml --equivalent-ports pad:e1,e2,e3,e4
Unconnected ports within a group are merged into a single open error (with markers for each port) rather than generating one error per port.
Hierarchical LVS
Elvis supports hierarchical schematics where the design is split across multiple
.pic.yml files. Pass all required schematic files explicitly on the command line:
# mzi.pic.yml references "mmi1x2" → pass mmi1x2.pic.yml as well
elvis lvs layout.gds mzi.pic.yml mmi1x2.pic.yml
For flat netlists, the filename stem (e.g. mzi from mzi.pic.yml) is used as the
component name. You can override this with the name:path syntax:
elvis lvs layout.gds my_mzi:mzi.pic.yml mmi1x2.pic.yml
The hierarchy expansion is controlled by which components have sub-netlists. Instances
whose component matches a loaded sub-netlist are expanded in both the schematic
(flattened with ~ separator) and the layout (hierarchical polygon/instance extraction).
Use --top-cell to override the top cell name when it differs from the filename:
elvis lvs layout.gds mzi.pic.yml mmi1x2.pic.yml --top-cell mzi_optimized
Geometric Short Detection
Elvis can detect geometric shorts: polygon overlaps between different chains (routes or
reference instances) on specified layers. Enable with --short-layer:
elvis lvs layout.gds schematic.pic.yml --short-layer 1,0
How it works
-
Chain assignment: Each instance in the layout is assigned to a chain. A route chain is the path of 2-port instances between two reference instance ports. A reference instance forms its own chain.
-
Polygon collection: For each specified layer, polygons are collected per chain and tracked by layer.
-
Per-layer-pair detection: For each same-layer pair (from
--short-layer) and each cross-layer pair (from--connected-layers), polygon intersections between different chains are computed. Overlaps at port locations (where chains connect) are excluded. Overlaps smaller than 0.001 um² are filtered as slivers. -
Schematic-aware suppression: A short between two chains induces cross-connections between all pairs of their endpoints. If ALL of these cross-connections exist as direct nets in the schematic, the short is suppressed (it's intentional). Any "missing in layout" net errors satisfied by suppressed shorts are also removed.
Cross-layer shorts
In multi-layer designs, layers may be electrically connected through vias. Use
--connected-layers to declare pairwise layer connectivity:
# M1 (1,0) connects to VIA (2,0), VIA connects to M2 (3,0)
elvis lvs layout.gds schematic.pic.yml \
--short-layer 1,0 --short-layer 3,0 \
--connected-layers 1,0:2,0 --connected-layers 2,0:3,0
Each --short-layer checks for same-layer shorts independently. Each
--connected-layers pair adds cross-layer overlap checks between the two specified
layers. Without --connected-layers, layers are checked in isolation (no cross-layer
false positives).
Output Formats
KLayout lyrdb (default)
The lyrdb format is viewable in KLayout's marker browser. Each error includes:
- Category hierarchy for filtering
- Text description
- Geometric markers you can click to navigate to the error location
<item>
<category>LVS.net.missing_in_layout</category>
<cell>top_cell</cell>
<values>
<value>text: Net splitter,o2 <-> arm_top,o1 missing</value>
<value>edge: (10.5,0.625;25.0,15.5)</value>
</values>
</item>
YAML/JSON
Structured reports for programmatic processing:
ok: false
error_count: 1
net_errors:
- error_type: missing_in_layout
p1: splitter,o2
p2: arm_top,o1
Crates
- gf-netlist - GDSFactory netlist schema (input .pic.yml format)
- elvis-netlist - Extracted netlist schema (simplified subset for LVS)
- elvis-rdb - KLayout Report Database (lyrdb) format
- elvis-core - Core extraction and LVS functionality
- elvis-cli - Command-line interface
- elvis-python - Python bindings via PyO3
License
Apache 2.0 License. See LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 elvis_lvs-0.1.3-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba03b220f5d5331194186025166cbfbf98073a6e1eb69adfe82cbca839ee265b
|
|
| MD5 |
9b2684b97fa68d950148388cfb30b17c
|
|
| BLAKE2b-256 |
978da5338e96e2462892bf6a65ad2ddbb517b1e6c8c8b55fa91259c32471e978
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp314-cp314-win_amd64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp314-cp314-win_amd64.whl -
Subject digest:
ba03b220f5d5331194186025166cbfbf98073a6e1eb69adfe82cbca839ee265b - Sigstore transparency entry: 952464613
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff5f702db178b1e5f2bd1c4f48cc61961319c13778e45e6507a3b090437ce9f1
|
|
| MD5 |
49a8c85c4ef2e5cc1604c4b9c1a1ca28
|
|
| BLAKE2b-256 |
5a3e221dfaf1c2c0e8ee7e0e50f41994e3ffc991dbdc24fc7a90ec471445a175
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl -
Subject digest:
ff5f702db178b1e5f2bd1c4f48cc61961319c13778e45e6507a3b090437ce9f1 - Sigstore transparency entry: 952464605
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.14, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f1770d89fe58fc37c0e71a0dab050e0f1556487ae4787f03877e5ce0c79cf65
|
|
| MD5 |
8168b67438a8a34b91ed7f15bac758b8
|
|
| BLAKE2b-256 |
1798d7379d61d81efb175904d8ce1cead6a176efaa7ed1b25f5e4a93120a49b8
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl -
Subject digest:
3f1770d89fe58fc37c0e71a0dab050e0f1556487ae4787f03877e5ce0c79cf65 - Sigstore transparency entry: 952464606
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.14, 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 |
6332e81039ce354e3481ac2150b1106d2d12b152cd1854141e6056fa76cbaf15
|
|
| MD5 |
3442bc469356846323df393918a7494f
|
|
| BLAKE2b-256 |
3d6cdca9fee908fd878b181702f501615c26f31a31afbcab84de17e79a2888e7
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp314-cp314-macosx_11_0_arm64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp314-cp314-macosx_11_0_arm64.whl -
Subject digest:
6332e81039ce354e3481ac2150b1106d2d12b152cd1854141e6056fa76cbaf15 - Sigstore transparency entry: 952464609
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp313-cp313-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.13, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d6d81bb6268b9322485b565aba4786140d1510cdc2c9965bb9413efa714c0f21
|
|
| MD5 |
65ced5e620221b1c95bb4ad149cb431d
|
|
| BLAKE2b-256 |
92f27dd8fd447c1a76e3cbe1aed9c4a619ab7574b71315591f243a7988633350
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp313-cp313-win_amd64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp313-cp313-win_amd64.whl -
Subject digest:
d6d81bb6268b9322485b565aba4786140d1510cdc2c9965bb9413efa714c0f21 - Sigstore transparency entry: 952464608
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d9dd5daa91f6549c349332d7142b9d45335f5748a2e7f887e880d7762e87ca3
|
|
| MD5 |
9ba3be10d5b7f92eb93e9b5a549fa662
|
|
| BLAKE2b-256 |
83e0ae7897d0e9015aa938b810675b7391a3dd66951593a362b0cbc98d199221
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl -
Subject digest:
1d9dd5daa91f6549c349332d7142b9d45335f5748a2e7f887e880d7762e87ca3 - Sigstore transparency entry: 952464610
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b05a5daff0528eaeb92cd9e3992eb6baffec6892bcc626c7fd299d59745f08fd
|
|
| MD5 |
5ddfdfdb5d56fdb6de8afb58fa7649a2
|
|
| BLAKE2b-256 |
6a7095f78a50f84f427fcf9dc8a1c8ac2ad761c9d4b83deda2e6142fea75894c
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl -
Subject digest:
b05a5daff0528eaeb92cd9e3992eb6baffec6892bcc626c7fd299d59745f08fd - Sigstore transparency entry: 952464618
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, 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 |
f31bba81a9628a0b8666794ece66016388fc0869aefd2bbae95e2a3c615c173e
|
|
| MD5 |
4f7af62213382792fe909eb6386df0d5
|
|
| BLAKE2b-256 |
7056f3ed5bb901f424b111c324b63f5590186fbfd62ac86a50c7aec1b05fcb61
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp313-cp313-macosx_11_0_arm64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp313-cp313-macosx_11_0_arm64.whl -
Subject digest:
f31bba81a9628a0b8666794ece66016388fc0869aefd2bbae95e2a3c615c173e - Sigstore transparency entry: 952464616
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- 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 |
273d3914fef54f98bb122bae66b60540bb47e79777a57b1ac44b48cbbdcb6e75
|
|
| MD5 |
a5ef8bc82d3944adb2d392c17911af4f
|
|
| BLAKE2b-256 |
a321137464fe5538f8b2693e5e0e4666d597ff3d0fc140a84a9ebe59b81e04cc
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp312-cp312-win_amd64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp312-cp312-win_amd64.whl -
Subject digest:
273d3914fef54f98bb122bae66b60540bb47e79777a57b1ac44b48cbbdcb6e75 - Sigstore transparency entry: 952464615
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.2 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b61bed61ec3e4c4346f87d87f7afd8500860893130fb6ca7356bea96c32f53c9
|
|
| MD5 |
1f63063db8c750701cbdb55df3b3d14c
|
|
| BLAKE2b-256 |
3998d379eb743f61e2ba7ee745c41263fd9a09c89a9b81874b23ce22b79bc2d8
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl -
Subject digest:
b61bed61ec3e4c4346f87d87f7afd8500860893130fb6ca7356bea96c32f53c9 - Sigstore transparency entry: 952464617
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 2.1 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2311a9e42d36e1f172973fa1754fd4a175c59e4cf065a52abb40595e7e3033f9
|
|
| MD5 |
d2d2553d424075b3682c8194276759ea
|
|
| BLAKE2b-256 |
02bd657112cf463a852f91458ca16dbfbbdc5710a45d62589cbbf8c67d942af1
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl -
Subject digest:
2311a9e42d36e1f172973fa1754fd4a175c59e4cf065a52abb40595e7e3033f9 - Sigstore transparency entry: 952464614
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type:
File details
Details for the file elvis_lvs-0.1.3-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: elvis_lvs-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.9 MB
- 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 |
b77df2b47ab86ab5b2ad495308abc002c651d4a3e92dc8acc56d890c790b6535
|
|
| MD5 |
377dca8606a467bc9ebb6d51844ef250
|
|
| BLAKE2b-256 |
f250f46bb2c72f995420d384448f5da89f55ece4ff537505fd7b8f704573f18b
|
Provenance
The following attestation bundles were made for elvis_lvs-0.1.3-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
release.yml on doplaydo/elvis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
elvis_lvs-0.1.3-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
b77df2b47ab86ab5b2ad495308abc002c651d4a3e92dc8acc56d890c790b6535 - Sigstore transparency entry: 952464611
- Sigstore integration time:
-
Permalink:
doplaydo/elvis@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Branch / Tag:
refs/tags/0.1.3 - Owner: https://github.com/doplaydo
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@4905cfe91c7a5b12aa473102d8ae437f36da1708 -
Trigger Event:
push
-
Statement type: