Skip to main content

Log-Gravity Propagation Algorithm (LGPA) for community detection in complex networks

Project description

LGPA — Log-Gravity Propagation Algorithm

A deterministic, tuning-free community detection algorithm for complex networks, implemented in C++ (via pybind11) with a simple Python/NetworkX interface.

LGPA resolves two well-known weaknesses of standard Label Propagation — run-to-run instability and the formation of oversized "monster" communities — using a Laplacian-smoothed Jaccard similarity, a statistical Coring phase, and a log-gravity propagation rule that logarithmically dampens the influence of high-degree hubs. Its threshold and update rule are derived entirely from the graph's own structure, so there is nothing to tune, and its native C++ core scales to networks of tens of thousands of nodes in seconds.

This repository is the reference implementation for the paper "LGPA: Log-Gravity Propagation Algorithm for Community Detection in Complex Networks" (ASONAM 2026, Research Track). See Citation.


Requirements

Installing LGPA compiles a small C++ extension, so you need a C++ compiler in addition to Python. Everything else is installed automatically.

Requirement Notes
Python 3.8 or newer
A C++ compiler Windows: Microsoft C++ Build Tools (select the "Desktop development with C++" workload). macOS: xcode-select --install. Linux: sudo apt install build-essential (or your distro's equivalent).
pybind11 Installed automatically during the build.
networkx Installed automatically as a dependency.

Installation

Option 1 — Install directly from GitHub (recommended)

pip install git+https://github.com/tahbounanas/LGPA.git

Option 2 — Clone, then install

git clone https://github.com/tahbounanas/LGPA.git
cd LGPA
pip install .

To develop (edit the C++/Python and rebuild in place), use pip install -e . instead.

pip handles pybind11, networkx, and compiling the extension. After it finishes, LGPA is importable from any folder in that Python environment.


Usage

import networkx as nx
from LGPA import LGPA

# A simple graph with two communities of 10 nodes each,
# joined by a single bridge edge.
G = nx.Graph()
for start in (0, 10):
    block = range(start, start + 10)
    for i in block:
        for j in block:
            if i < j:
                G.add_edge(i, j)   # dense links inside each community
G.add_edge(9, 10)                  # one bridge between the two communities

# Run LGPA
lgpa = LGPA(G)
partition = lgpa.fit_predict(max_iter=50) # or simply   partition = LGPA(G).fit_predict()


# partition: {node -> community_id}
print("Communities found:", len(set(partition.values())))
print(partition)

Expected output:

Communities found: 2
{0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0, 6: 0, 7: 0, 8: 0, 9: 0,
 10: 1, 11: 1, 12: 1, 13: 1, 14: 1, 15: 1, 16: 1, 17: 1, 18: 1, 19: 1}
Input graph LGPA result
Input graph LGPA communities

LGPA correctly separates the two communities (nodes 0–9 and 10–19) despite the bridge edge linking them.

fit_predict returns a dictionary mapping each node to its community id, so it works with any node labels (integers, strings, etc.), not just consecutive integers. LGPA is fully deterministic: the same graph always yields the same partition, with no random seed.

Parameters

  • max_iter (int, default 50): a safeguard cap on the number of propagation sweeps. It is not a tuned parameter — the loop stops on its own once labels stabilize, which in practice happens well before this cap.

Example on a real dataset (Thiers)

The Datasets/ folder contains the Thiers high-school contact network (327 nodes, 9 ground-truth classes): Thiers.gml is the graph and Thiers_GR.txt holds the ground-truth class label of each node (in GML node order).

This example also uses scikit-learn and scipy for the metrics (pip install scikit-learn scipy); they are not required by LGPA itself.

import json
import time
import networkx as nx
from sklearn.metrics import (
    normalized_mutual_info_score as nmi_score,
    adjusted_rand_score as ari_score,
    f1_score,
)
from scipy.optimize import linear_sum_assignment
from sklearn.metrics import confusion_matrix
import numpy as np

from LGPA import LGPA

# Load the graph and its ground-truth labels
G = nx.read_gml("Datasets/Thiers.gml", label="id").to_undirected()
G.remove_edges_from(nx.selfloop_edges(G))
gt_labels = json.load(open("Datasets/Thiers_GR.txt"))

nodes = list(G.nodes())
gt = {nodes[i]: gt_labels[i] for i in range(len(nodes))}   # GR is in GML node order

# Run LGPA (timed)
start = time.perf_counter()
partition = LGPA(G).fit_predict()
runtime = time.perf_counter() - start

# Encode labels as integers
classes = sorted(set(gt.values()))
cmap = {c: i for i, c in enumerate(classes)}
y_true = np.array([cmap[gt[n]] for n in nodes])
y_pred = np.array([partition[n] for n in nodes])

# NMI and ARI
nmi = nmi_score(y_true, y_pred)
ari = ari_score(y_true, y_pred)

# Macro-F1 (align predicted communities to ground-truth classes via Hungarian matching)
labels_p = sorted(set(y_pred))
C = confusion_matrix(y_true, [labels_p.index(x) for x in y_pred])
n = max(C.shape)
Cp = np.zeros((n, n)); Cp[:C.shape[0], :C.shape[1]] = C
r, c = linear_sum_assignment(-Cp)
mapping = {labels_p[cc]: rr for rr, cc in zip(r, c) if cc < len(labels_p)}
y_pred_aligned = np.array([mapping.get(x, -1) for x in y_pred])
f1 = f1_score(y_true, y_pred_aligned, average="macro")

print(f"Communities found: {len(set(y_pred))}")
print(f"NMI: {nmi:.3f}")
print(f"ARI: {ari:.3f}")
print(f"F1 : {f1:.3f}")
print(f"Runtime: {runtime:.3f} s")

Output:

Communities found: 9
NMI: 0.970
ARI: 0.964
F1 : 0.979
Runtime: 0.116 s

LGPA recovers all 9 classes with near-perfect agreement to the ground truth (NMI 0.970, ARI 0.964). In the two coloured figures below, each detected community has been matched to its best-corresponding ground-truth class (via Hungarian assignment) and drawn in that class's colour, so the ground-truth and LGPA plots line up directly. The metrics, not the colours, are what quantify the agreement.

Input network Ground truth LGPA communities
Thiers input Thiers ground truth Thiers LGPA

Reproducing the figures

The three plots above are produced with the snippet below (requires matplotlib, pip install matplotlib). A single shared layout is used so the input, ground-truth, and LGPA figures line up node-for-node.

import json
import networkx as nx
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from LGPA import LGPA

# Load graph + ground truth
G = nx.read_gml("Datasets/Thiers.gml", label="id").to_undirected()
G.remove_edges_from(nx.selfloop_edges(G))
gt_labels = json.load(open("Datasets/Thiers_GR.txt"))
nodes = list(G.nodes())
gt = {nodes[i]: gt_labels[i] for i in range(len(nodes))}

# Run LGPA
partition = LGPA(G).fit_predict()

# One shared layout so all three plots are comparable
pos = nx.spring_layout(G, seed=42, k=0.3, iterations=60)
cmap = plt.colormaps["tab10"]

def draw(color_by, title, filename, legend=None):
    plt.figure(figsize=(8, 8))
    nx.draw_networkx_edges(G, pos, alpha=0.15, width=0.5)
    nx.draw_networkx_nodes(G, pos, node_color=color_by, edgecolors="#333333",
                           linewidths=0.4, node_size=90)
    if legend:
        plt.legend(handles=legend, loc="upper left", fontsize=8)
    plt.title(title, fontsize=14)
    plt.axis("off"); plt.tight_layout()
    plt.savefig(filename, dpi=150, bbox_inches="tight"); plt.close()

# 1) Input graph (grey, unlabelled)
draw("#cccccc", "Thiers network - input", "thiers_before.jpg")

# 2) Ground truth (coloured by true class, with legend)
classes = sorted(set(gt.values()))
gt_colors = [cmap(classes.index(gt[n])) for n in G.nodes()]
handles = [mpatches.Patch(color=cmap(i), label=c) for i, c in enumerate(classes)]
draw(gt_colors, f"Thiers - ground truth ({len(classes)} classes)",
     "thiers_groundtruth.jpg", legend=handles)

# 3) LGPA result — colours matched to ground-truth classes via Hungarian assignment
import numpy as np
from scipy.optimize import linear_sum_assignment
from sklearn.metrics import confusion_matrix

y_true = np.array([classes.index(gt[n]) for n in nodes])
y_pred = np.array([partition[n] for n in nodes])
labels_p = sorted(set(y_pred))
C = confusion_matrix(y_true, [labels_p.index(x) for x in y_pred])
m = max(C.shape); Cp = np.zeros((m, m)); Cp[:C.shape[0], :C.shape[1]] = C
r, c = linear_sum_assignment(-Cp)
comm_to_class = {labels_p[cc]: rr for rr, cc in zip(r, c) if cc < len(labels_p)}

lgpa_colors = [cmap(comm_to_class.get(partition[n], len(classes))) for n in G.nodes()]
draw(lgpa_colors, f"Thiers - LGPA ({len(set(y_pred))} communities)",
     "thiers_after.jpg", legend=handles)

Method at a glance

  1. Preprocessing — a Laplacian-smoothed Jaccard similarity is computed for every edge, per-node structural strength is aggregated, and an adaptive threshold is derived from the graph's Structural Complexity Index.
  2. Phase 1 (Coring) — nodes are merged with their most similar neighbour, in a deterministic strength-based order, to form stable proto-communities.
  3. Phase 2 (Log-Gravity Propagation) — remaining labels are updated with a log-gravity score in which each neighbour's influence grows only logarithmically with its strength, suppressing hub dominance and preventing the avalanche effect.

Citation

If you use LGPA in your research, please cite:



License

Released under the MIT License.

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

lgpa-1.0.0.tar.gz (8.5 kB view details)

Uploaded Source

Built Distributions

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

lgpa-1.0.0-cp313-cp313-win_amd64.whl (111.4 kB view details)

Uploaded CPython 3.13Windows x86-64

lgpa-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

lgpa-1.0.0-cp313-cp313-macosx_11_0_arm64.whl (99.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

lgpa-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl (105.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lgpa-1.0.0-cp312-cp312-win_amd64.whl (111.3 kB view details)

Uploaded CPython 3.12Windows x86-64

lgpa-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lgpa-1.0.0-cp312-cp312-macosx_11_0_arm64.whl (99.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lgpa-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl (105.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

lgpa-1.0.0-cp311-cp311-win_amd64.whl (110.4 kB view details)

Uploaded CPython 3.11Windows x86-64

lgpa-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

lgpa-1.0.0-cp311-cp311-macosx_11_0_arm64.whl (99.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lgpa-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl (104.3 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

lgpa-1.0.0-cp310-cp310-win_amd64.whl (109.2 kB view details)

Uploaded CPython 3.10Windows x86-64

lgpa-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lgpa-1.0.0-cp310-cp310-macosx_11_0_arm64.whl (98.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lgpa-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl (103.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

lgpa-1.0.0-cp39-cp39-win_amd64.whl (109.3 kB view details)

Uploaded CPython 3.9Windows x86-64

lgpa-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

lgpa-1.0.0-cp39-cp39-macosx_11_0_arm64.whl (98.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

lgpa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl (103.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

lgpa-1.0.0-cp38-cp38-win_amd64.whl (108.9 kB view details)

Uploaded CPython 3.8Windows x86-64

lgpa-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141.1 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

lgpa-1.0.0-cp38-cp38-macosx_11_0_arm64.whl (97.7 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

lgpa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl (102.7 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file lgpa-1.0.0.tar.gz.

File metadata

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

File hashes

Hashes for lgpa-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bcb8ed1c86f85609016c55c3954d7c1e6f982d71b75b4060beb81679a5402440
MD5 c69dfa57353653dfa4957a80195ee26d
BLAKE2b-256 07db6eb5ffd052f8c6b193a3c5fd57c4971c47ae67ddac2070729609c47485a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0.tar.gz:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 111.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 12163756dfd0e77ceea0223a5e03588266a3764db1aa587aa56308c6678e9979
MD5 9eabfe705f4dc735ad83f46c2b608e3f
BLAKE2b-256 fe69f24762adfcf30c65800afc148debce563e531bf265401e56cb9cb450cc45

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4df197508fe2ec6ad39b78ee3a16c270b7afd571b6d45effcf00f138aacc03bb
MD5 88be767e619fff10c163d0b9a8068355
BLAKE2b-256 d655f5ab5d148c9fcb827c07d4165fcb2a0c32fe0bd3affa7dd006c023074e68

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b5e9f06e0844de9a63dd39e3074c52b3b78198fdbbb1118088bcb81146ec40e
MD5 b775bd54f550e001eea8ea2b160c4457
BLAKE2b-256 77d58eaf11c7651b00eb268f1389936924b12d191617445e4f922327e3b58fca

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 8129257167eb6640d61bf6f88d54376f401dfe3012c8510883cc82beb3611366
MD5 23d837c815baa49d016851476a34aa69
BLAKE2b-256 468c83d45fe81e1e4a7cfcf4c873074aa0b7ef7ca80cea80342cbbc383e58e0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 111.3 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 471e550e0303b656c9097b616340aa7cb82a2a17455154218cd5b1536f3775ff
MD5 2111284ec250284a2928f524329f9b32
BLAKE2b-256 ebc5d1723b78f3e53a746a0c416d3c6f8a28eb03120653ac4a549212f7ad622d

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 99abd1ca88e83f9495e762c6715850d7cc44cccd96842a39335d0e4c3a4a602d
MD5 d3b4e73d20ee3c7490dffdff32c9ffc4
BLAKE2b-256 feaeb104f64454d5f15eb2432cb9b7dbacd4f7df36e938fde18bed792f5c74de

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 563872d423cbf82cf244117517beaeda1b89d32054377117403a1933701b4070
MD5 76473296473d2f8d33f1b7806c9c3a92
BLAKE2b-256 c9931960529745bd6049a029f4724470c8d52b2e5ccec7d70c276996dbabb320

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 4f398b15364ca591c438cd0a1fa524909983cddd0c56fe324b61f4307ba0d36f
MD5 f3c3978ba3f1fe7093352389873a16a7
BLAKE2b-256 b41b3b128801ad7afafd4e13391edd8d03be013e170dc39edd4bac11c9caa5d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 110.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c8f23887172c6deeb2cd5a9b1d44d8da95ff1b60257884ce978e3207b83c8eb2
MD5 1f5f1e5eb234eb25555fc6191571e08b
BLAKE2b-256 66dde6975d7e569b47047fe1213f87c205c797a88a827711a93aadf93e7f843b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f931253843d3ebf51b2a68d89763feb42b9c2bfe52deac70b9aa0090401cfdd1
MD5 cc865aeb8f28319f4e19ca38e9d6cdb7
BLAKE2b-256 f6ce70b1a8cc32c057de4b1c5eeabec9a57df300bfb33531e56730686d765075

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6361393c14b8f7efa65e514eca6e0eb5e02a8aeb3780e394d681093ec15bd1b3
MD5 37d64b5d5cc78583d9bbfae909504fd1
BLAKE2b-256 4e0d0612c60d175198826e17bb8982da4fdbb05c2b6fb16368e22dc1a88f0971

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 74bdfaf7f84fb1c868c61f93e931b608a7b4101da601a7461fc64d2a4edcfa39
MD5 7c08ea72ce50a8fabe279790210a3eb8
BLAKE2b-256 4f059e141adbf104a917cb65a47358ec64c09c02dc225894ba43526db7e8f9e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 109.2 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 42a9434a1aa8394f60f5468b7db0b28d6523fec65f1d1926b77fbf2ef37764ee
MD5 2ffb310a80bcb4a059c33ac958b36700
BLAKE2b-256 aeb2cbaa7a7b317030fdf85d3bbad9ac8e81f9e41dfed8b7cacb3fefb8c3b0cf

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c690239491197645ee4bc861570f612a2513766ea5129d9ab4887e7a0b732445
MD5 279d3399c77edc48958552a29c30346b
BLAKE2b-256 112f238cecb67f29d0c3ebe25a9c70268c004b073dab06ce50dd57bff4592e93

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d9b946a3b793062b2dd4b97c145163bf6843d6f2fe070eba502f6aa210d3a2ce
MD5 59130f8ffc4039e29293412cb00422d4
BLAKE2b-256 415116ef0ea6bc9070d9e3475a3622a8ca11c009c05788e812d7569fb490139d

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 fc4f529b33e89caf2a37c64ab65d8b812960b93e4c0d253814f99b4a7c117a35
MD5 fc35026d2f1b754d875812845b4c86d3
BLAKE2b-256 c6b8b5e85d2bb0b955633cbf9612efa89a188d213284dc2b822e80521c1ef915

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp310-cp310-macosx_10_9_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 109.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 44f4090d2ab918ba518e166ae1053b17809e9404af0d4e12f8a3ebecb62ace50
MD5 ccf6b0c6af849fd745fe15aadbde63d2
BLAKE2b-256 2381a7061ac6a4a0be121ad18772328686a01848345a780899268ef794a5e5cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b86550b5f799535514b6f3df0d9bf440663fc129bd5316a41c1de5c70d1d83b8
MD5 d2e9e886f092512e3651c0f08d7ea346
BLAKE2b-256 c24d05ffe84586a9a11be2ab0fbb0d6e2c5f2b7f5563669bdb0ec644f77c2cf5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 98.2 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 lgpa-1.0.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a660812b7fcbef9e03212569fb23f190e730fd493e72ac129ba73064c545b16d
MD5 7e9b76efed9479816872f4223a7ba0f3
BLAKE2b-256 c6ad1b6d4d4587513ebf56c7a3c26dc2ae60e7bd252e312bca687e74b8581465

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 103.2 kB
  • Tags: CPython 3.9, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 44def74d0f4f32338a6d56d4e732f671ebca6721e37784697b3e543b5581e611
MD5 7b931e2107a5a576e34fb36415a004a2
BLAKE2b-256 e454e1ce4a66e3e6f1b59e0defd57bd1a2cce52211da6d4957c36d53d34fa1a2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp39-cp39-macosx_10_9_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 108.9 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 38c0fbe59dfdeaac69eb0025fd27261748902ee7649e1ef5c218b749fd25da2d
MD5 2e8b4712cf790f500f60140a6f0e5d13
BLAKE2b-256 abe976619cc744ecab65e7261731964ebcadf68a1872456f737fbefa005136be

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp38-cp38-win_amd64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 940cbca0c8c7aefa3b515bfb1a2fb42d2921f9c8fc5cf54561cea62a473ff1b3
MD5 3e3ac95346d432ccd21bbb53f8702b54
BLAKE2b-256 2018dcaa6f14e09fe099fdd5ed6b23fb9f8cc15b062f3853733be36e00360ccd

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 97.7 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d86f612e09410fbf85eb24e3947f556bd3c3735bb3d00d95ba76612adb11c36e
MD5 18e363b0e4559f53b962f9226281004c
BLAKE2b-256 9bf384fe20c6ceddd0aab65e56f99683c6cb49c3953832d2277531f059675e84

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: release.yml on tahbounanas/LGPA

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

File details

Details for the file lgpa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lgpa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 102.7 kB
  • Tags: CPython 3.8, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lgpa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 96ab7228eccc73f4339772a288c15d59d27f929f65ef2b0f3fd7eed38648ce78
MD5 431d229c4f7de2182dd1d4edc51c061d
BLAKE2b-256 b544fbc8c8e19368367090361768076d45ec622605d4a9db44a8b9d4d62b12b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.0-cp38-cp38-macosx_10_9_x86_64.whl:

Publisher: release.yml on tahbounanas/LGPA

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