Skip to main content

Graph-indexing wavelet matrix for similarity search over large graph databases

Project description

gWM

gWM finds every graph in a database whose similarity to a query graph is at least a given threshold — it answers threshold queries, not top-k or approximate nearest-neighbor search.

It encodes each graph as a binary set of Weisfeiler-Lehman (WL) subtree features and indexes that feature space with a wavelet matrix. Queries are answered by traversing the wavelet matrix rather than explicitly scoring every database graph. It has no Python runtime dependencies.

gWM is the reference implementation of Tabei and Tsuda's graph-kernel similarity search method (SDM 2011; full citation below). The package was previously distributed as gWT; gWM is the same algorithm and input format under a new name (the on-disk index format is an internal implementation detail and isn't guaranteed to match gWT's).

Installation

pip install gwm

Prebuilt wheels are provided for Linux (x86_64, aarch64) and macOS (x86_64, arm64) on CPython 3.9–3.14. There are no Windows wheels; other platforms may be able to build from the source distribution, which needs only a C++17 compiler (see Building from source).

Quickstart

Build an index from a database file and search it with a query file, both in gSpan format:

import gwm

index = gwm.Index.build("db.gsp", iteration=2)
index.save("index.bin")

index = gwm.Index.load("index.bin")
for hits in index.search_file("query.gsp", threshold=0.8):
    print(hits)  # [(graph_id, similarity), ...], one list per query graph

graph_id is always the graph's 0-based position in the database (file order, or list order for in-memory graphs) — not the id written on a gSpan file's t # line, which gWM ignores (see Graph file format).

Graphs can also be built and searched entirely in memory. Each graph is a (labels, edges) pair: labels is a 0-based list of integer vertex labels, edges is a list of (u, v, edge_label) triples (also 0-based, undirected):

import gwm

graphs = [
    ([6, 6, 6, 6], [(0, 1, 1), (1, 2, 1), (2, 3, 1), (3, 0, 1)]),
    ([6, 6, 7],    [(0, 1, 1), (1, 2, 2)]),
]

index = gwm.Index.build_from_graphs(graphs, iteration=2)
hits = index.search_graphs(graphs, threshold=0.8)

gwm.from_networkx() converts a networkx.Graph (read from label node/edge attributes by default) into that same (labels, edges) form:

import networkx as nx
import gwm

g = nx.Graph()
g.add_node(0, label=6)
g.add_node(1, label=6)
g.add_edge(0, 1, label=1)

index = gwm.Index.build_from_graphs([gwm.from_networkx(g)], iteration=2)

networkx itself is not a dependency — from_networkx() only relies on the standard .nodes(data=True) / .edges(data=True) protocol.

Index reference

  • Index.build(path, iteration=2), Index.build_from_graphs(graphs, iteration=2) — construct.
  • Index.load(path) / index.save(path) — the two sides of the on-disk index format.
  • index.search_file(path, threshold), index.search_graphs(graphs, threshold) — encode queries with the index's own label dictionary and search in one call.
  • index.encode_query_file(path), index.encode_query_graphs(graphs) — encode only, returning each query graph's WL code set (list[list[int]]) for reuse with search_encoded.
  • index.search_encoded(labels, threshold) — search a single already-encoded query, where labels is one WL code set returned by encode_query_file/encode_query_graphs.
  • index.num_graphs, index.iterations, index.matrix_depth, index.index_length, index.memory_bytes — index statistics.

threshold must be in (0, 1]; it is the cosine-similarity cutoff, not a count.

Command line

The pip package installs a gwm command:

# build an index (-iteration = number of WL relabeling rounds, default 2)
gwm build -iteration 2 db.gsp index.bin

# search (-kthreshold = cosine similarity threshold, default 0.8)
gwm search -kthreshold 0.8 index.bin query.gsp

The single-dash -iteration / -kthreshold flags (not --iteration) match the legacy gWT CLI. Building from source (see below) also produces standalone gwm-build / gwm-search binaries with no external library dependencies and the same options; these are not part of the pip package.

Graph file format

Both the CLI and Index.build/search_file read databases and queries in gSpan format — one record per graph, starting with a t # line; blank lines between records are optional (a new t # line is itself enough to end the previous record):

t # <anything ignored by gWM>
v <vertex-id> <vertex-label>
e <from> <to> <edge-label>

The tokens after t # (conventionally a graph id, a class label, and a name) are ignored by the index — as noted above, a graph's graph_id in results is its 0-based position in the file, not this field. Vertex ids are 1-based positive integers and must be declared with v before they appear in an e line; vertex and edge labels must be non-negative integers. Vertex ids should be contiguous starting at 1 — gaps are not rejected, but are silently filled with extra zero-label, edgeless vertices that then contribute their own WL features. Graphs are treated as undirected, and self-loops and repeated edges are read as given (not rejected or merged). gwm.read_gspan(path) parses this format into a list of (labels, edges) graphs used by the in-memory API.

How it works

For each graph, the initial vertex labels are used as round-0 features; each subsequent WL relabeling round then produces one signature string per vertex (its own label, then its sorted (neighbor label, edge label) multiset). Each distinct signature is assigned a dense integer code shared across the whole database. A graph's feature set is the deduplicated set of codes seen across all rounds. Unlike the counted feature vectors some WL subtree-kernel implementations use, this is a binary feature vector — a code is either in a graph's set or it isn't — so a feature set's squared L2 norm is simply its size.

iteration (default 2) is the number of WL relabeling rounds run after the initial vertex labels, so iteration=2 contributes three rounds of features per graph: the initial labels, plus two rounds of relabeling.

At build time, every code's posting list (the graphs containing it) is concatenated into one sequence and stored as a wavelet matrix. At query time, each of the query's codes contributes its interval in that sequence; a DFS over the matrix intersects those intervals level by level, pruning any subtree whose surviving range is already too small to reach the threshold. At a leaf, the surviving range size is the number of codes shared between the query's feature set Q and the graph's feature set G, giving the cosine similarity between them directly: |Q ∩ G| / sqrt(|Q| · |G|), without explicitly scoring every database graph one by one.

Limitations

  • Graphs are treated as undirected; edges are stored symmetrically regardless of a gSpan file's from/to order.
  • Similarity is computed over binary WL subtree-feature sets (present or absent), not per-code counts.
  • gWM supports threshold search, not top-k or approximate nearest-neighbor search.
  • The on-disk index format is an internal detail and isn't guaranteed to be stable across gWM versions or compatible with indexes produced by the original gWT package.

When to use

gWM is useful when you have a mostly-static graph database and need to run many threshold-similarity queries against it. For a one-off query against a small database, a plain linear scan may be simpler and just as fast.

Building from source

make                  # from the repo root; produces src/gwm-build and src/gwm-search
make test             # build + output-parity regression

or with CMake:

cmake -S . -B build && cmake --build build

Both require only a C++17 compiler; all non-standard code the build uses is vendored in the repository (see License).

Citation

If you use gWM in published work, please cite:

Yasuo Tabei and Koji Tsuda. Kernel-based Similarity Search in Massive Graph Databases with Wavelet Trees. Proceedings of the 2011 SIAM International Conference on Data Mining (SDM), pp. 154–163. https://doi.org/10.1137/1.9781611972818.14

@inproceedings{tabei2011kernel,
  author    = {Yasuo Tabei and Koji Tsuda},
  title     = {Kernel-based Similarity Search in Massive Graph Databases with Wavelet Trees},
  booktitle = {Proceedings of the Eleventh SIAM International Conference on Data Mining (SDM)},
  pages     = {154--163},
  publisher = {SIAM},
  year      = {2011},
  doi       = {10.1137/1.9781611972818.14},
}

License

gWM's own code is MIT licensed (see LICENSE). It vendors Sebastiano Vigna's sux rank/select library (src/rank9sel.{h,cpp}, src/macros.h, src/popcount.h), which is LGPL-2.1-or-later (see LICENSES/LGPL-2.1-or-later.txt). The distribution as a whole is therefore MIT AND LGPL-2.1-or-later; full source for every component, including the vendored library, ships in the source distribution.

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

gwm-3.1.5.tar.gz (83.8 kB view details)

Uploaded Source

Built Distributions

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

gwm-3.1.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (157.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gwm-3.1.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (143.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

gwm-3.1.5-cp314-cp314-macosx_11_0_arm64.whl (134.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

gwm-3.1.5-cp314-cp314-macosx_10_15_x86_64.whl (145.7 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

gwm-3.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (157.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gwm-3.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (143.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

gwm-3.1.5-cp313-cp313-macosx_11_0_arm64.whl (134.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

gwm-3.1.5-cp313-cp313-macosx_10_15_x86_64.whl (145.5 kB view details)

Uploaded CPython 3.13macOS 10.15+ x86-64

gwm-3.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (157.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gwm-3.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (143.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

gwm-3.1.5-cp312-cp312-macosx_11_0_arm64.whl (134.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

gwm-3.1.5-cp312-cp312-macosx_10_15_x86_64.whl (145.5 kB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

gwm-3.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (157.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gwm-3.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (142.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

gwm-3.1.5-cp311-cp311-macosx_11_0_arm64.whl (133.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

gwm-3.1.5-cp311-cp311-macosx_10_15_x86_64.whl (144.6 kB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

gwm-3.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (155.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gwm-3.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (141.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

gwm-3.1.5-cp310-cp310-macosx_11_0_arm64.whl (132.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

gwm-3.1.5-cp310-cp310-macosx_10_15_x86_64.whl (143.3 kB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

gwm-3.1.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (155.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

gwm-3.1.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (141.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.26+ ARM64manylinux: glibc 2.28+ ARM64

gwm-3.1.5-cp39-cp39-macosx_11_0_arm64.whl (132.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

gwm-3.1.5-cp39-cp39-macosx_10_15_x86_64.whl (143.4 kB view details)

Uploaded CPython 3.9macOS 10.15+ x86-64

File details

Details for the file gwm-3.1.5.tar.gz.

File metadata

  • Download URL: gwm-3.1.5.tar.gz
  • Upload date:
  • Size: 83.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5.tar.gz
Algorithm Hash digest
SHA256 f3d448dd3f1cd3c46c666315c5b746bb6816e51fa67fa87a0f6a15df3527d843
MD5 5c3e2a8af3e2c35e20497cd9dbe62d43
BLAKE2b-256 730ba9929065fbc3187b1a8567fb79379e2631a8c459ca9bb43bf82efb8b5477

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5.tar.gz:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21214d916fef3cf89abd9da663295f7e3b44ce5d08b470a91adec8af0c18550d
MD5 d152b53d3ac122322862cc2481197092
BLAKE2b-256 c0fe12836b11d45a018dfb4bebd53c24d4a92f26e4ed9ec7ce4a1b23a9ac2147

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34df2b1a160eb549ec23b9bb60ef62ad4fbcedeb9983cd3a1f2ffe7f48ed01ca
MD5 25df45b3775c042338fe75358eab0046
BLAKE2b-256 a44cc7eb7bbb009e8b54d5808f5a7b3611f7abf6db4386a0d9f874f95f9d8357

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 134.3 kB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 323e27ce1ddd9f187b08584f924fc29717cfcbdb755ae0eb6921691c641adf81
MD5 e7f3412b994dedbcd9385dc864f14c1d
BLAKE2b-256 6700cb18e4eb69a7acca089fefc47789d62328cc44ff5cb1d490639f0b4a76b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 1bac8ec38951c0c4f8a26dd048e8ddb51b3d24448f7c7e86e74af7cc150b48c7
MD5 b15d6aeb784a25b9fb3fa8dc3ab96357
BLAKE2b-256 e4379fcf3744397fd44d4f737a52dc514890042abdb09017253a43e2b0b23663

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a30d45871181c0e62c4441d9bd6d64f010df3744573d32428c912efcc4e140f2
MD5 2e1abfee8400c66cc936b714bd9c4c4e
BLAKE2b-256 d988e6f103481e7d9c533ee6f777fb007223f38a5527be818c88ac13c018cbbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 140283813c0bf3e4865af9ab8a8b3113f9e3c62b8109bdff735205f2b0b7157d
MD5 b833b3854035283677a4ad72c21701cd
BLAKE2b-256 ecd3b419e9ef03c0f4c60a517551aab2fc4c2c3d217347b6b5b80e51174cdbea

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 134.0 kB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f1b5273c67dc9f05d4206fc5ee79b65e6c4cefefe86f30f492c1fc25ee39082
MD5 865d0b70daed24f4a398be66c2c6dbc6
BLAKE2b-256 93e1bfef3b06e0db29e61691c15401b51fb5b682dd6bcce000db89e082653f87

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp313-cp313-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp313-cp313-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0ffa6a87a1905d96ce035cfeca002dd24a21531b74ab71670b61001b966a0e05
MD5 ff935b2c274625ba44ceed87e3e10f44
BLAKE2b-256 db37d4f365c4f00f73fc053119ea92bd00936fccf657dd3594def85b577d5b39

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp313-cp313-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c62591dcc84f6298246be757afafb30a40577970121271a4e1ce4b3629c5f7be
MD5 febf0ba6c35075f4ecee36c7e5550332
BLAKE2b-256 297815dd6194516124815269fbdcfadce36f233a976a39f3728c2d196fe06a32

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 95968dd2227e7b95f29376b73c82d1cf41e9a3b34ddfcfdc25e9c5197cbf7d41
MD5 b234db0e7cf9aa743d79afaa19b5eeb8
BLAKE2b-256 093ef303f2d0126ee147790782ffa9379f600ec719667bea6da92ac4af3699f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 134.0 kB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 023fc1ae069ce5042e2a25ee512133f3fa91e1fde5896364ee11b90c67f3e76e
MD5 dce9671b374b18552f7eb88a66b6f2de
BLAKE2b-256 a65402d86ce0e55e447fd96d99caba8ac10c90caae0a63853c33e1ba76bb1094

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 570e461ac9dca4fac620959efa4845369e949e0ffe652d15d6b54a7452d79c8a
MD5 f5a7625aa885f44a98a090607cf0dbf1
BLAKE2b-256 092d76fb4e1303bba5176bd6637e26e05ab2aa38f71862e4470aa6ed6666c9e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a1fad33395290d26c3383624b2e468986477130d116cb250633369449c447fdd
MD5 ff506e1d894e57eae420eb67b56ce65d
BLAKE2b-256 4ef7f27159f9b46e6b2db9925f7c5ac5f025c51d2b58efdc8bb1164f76d875ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2a0fa499435060b1d4eb0a26274e603e001787f97c69e148ccc84302028ded94
MD5 6e2359100987cc4d9f6ad13c1cd7740d
BLAKE2b-256 2b99e86ad85c2bc3b1fcfc3b6aa9ed78031287303a7430b137f38e39b5ebc085

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 133.9 kB
  • Tags: CPython 3.11, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5ec19b4638e053c6373a9766f6f41e7634b3daa5965d429f949772f5bc7b4fd9
MD5 b5ca90285f2d057b3c7ba5b80389fb5b
BLAKE2b-256 382d0feb3b4267e3b5069f1de96bbccbcb1f23d96b745c788a06903e222a66d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 4570f319da9b40f027a9dbf06e0d9ce7fefad9890b1800df4df06f679d5d86e8
MD5 87351c677d662740a0505e6fb175ed69
BLAKE2b-256 7ff7ea6dc76abc45a4506bf92b77aa4f06c7221d6d6229415283678a461bd42c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7e99d19315fed1aafb7b7ad5823c2dbd865ed8d4daca07a7592f7b295acf89d
MD5 32c8895c20e26932bb7f06dfd64c3983
BLAKE2b-256 dcb7a89fab9661d71d66bda38f06de228fda8e93532ea1c3e384ffaa806c978b

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eb2d20965968f09caba43d75a7b106a1f734dfc0fe8c6d3f32387444a9a6eab0
MD5 a59079542b91ab20a083fd1993b9a0cd
BLAKE2b-256 08f5171f47b2428018df305aa915e73d2354b32b8b8ded43eb504989f29cd693

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp310-cp310-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp310-cp310-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 132.7 kB
  • Tags: CPython 3.10, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d2d67d48ca328227be11c505087e9770dd734cf3aec68d27d215b2c52015aad3
MD5 bf8d91d83acfadbcf9c035a0a8968c8b
BLAKE2b-256 8ed4bdf5c1a273869c405476ac104737725b9523aead37860912c4350ae668de

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7c985de820b5036a4bf4999d46c2a418d3478ba8462b8a065b1f0fbfae986e76
MD5 74263a1c851b1d11e2a394b0bf76603c
BLAKE2b-256 ac75072142904e706d1340346c50cc1f4f86b42c033a29ffd21d7a1430c966b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fc5d9aa124e5047a8dc4bf392f7906bd8b6b1be3f8979f84484d73677def1255
MD5 85998f3114afd242aab62f82be57e4e1
BLAKE2b-256 76f4c761e7c77a0ac9d93a3a89f74b06050007f96aaae9aae2ef736d0bf7bdfa

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for gwm-3.1.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b643c656d9f750ac94643c864845d018d420a2ec77456c7ae433bffc2c4d5284
MD5 738ae17ba8c9edfe255af112864e3fd8
BLAKE2b-256 cba14206ac9352fbfd1bfd538f68dd0ed8fadd39a54442361935d509664e7c2c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp39-cp39-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 132.8 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8f2029ec4066159972b8a142a73c611d3f96ab5707e43357e4310cca0b5615bc
MD5 903bafe642f02aeb4066757d27d73369
BLAKE2b-256 5108c789bada956ae3e6e7702bb63b1e104da0ec85d4087fe37206efc92a47cb

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gwm-3.1.5-cp39-cp39-macosx_10_15_x86_64.whl.

File metadata

  • Download URL: gwm-3.1.5-cp39-cp39-macosx_10_15_x86_64.whl
  • Upload date:
  • Size: 143.4 kB
  • Tags: CPython 3.9, macOS 10.15+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for gwm-3.1.5-cp39-cp39-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 44a2bea736c2b8e8c1c31170aca8d0116f831cb532943e4fbefe79f264a94207
MD5 c627611d92b21c2a23ec3a8ec4b7bc5e
BLAKE2b-256 ab430c969e0fdfc456feed10e567e91d09f12f9bad56c5ebe4fb0fe2576e9c9c

See more details on using hashes here.

Provenance

The following attestation bundles were made for gwm-3.1.5-cp39-cp39-macosx_10_15_x86_64.whl:

Publisher: wheels.yml on tb-yasu/gwm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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