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 is the reference implementation for the paper "LGPA: Log-Gravity Propagation Algorithm for Community Detection in Complex Networks" (ASONAM 2026, Research Track). See Citation.


Installation

LGPA is on PyPI with prebuilt wheels for Windows, macOS, and Linux (Python 3.8–3.13), so the normal install needs no compiler:

pip install LGPA

That's it — networkx is pulled in automatically, and LGPA is importable from any folder in that Python environment.

Other installation options

From GitHub (latest, unreleased changes):

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

From source (clone, then install):

git clone https://github.com/tahbounanas/LGPA.git
cd LGPA
pip install .          # or: pip install -e .  to develop in place

Installing from GitHub or source compiles the C++ extension locally, so it requires a C++ compiler: on Windows the Microsoft C++ Build Tools ("Desktop development with C++" workload), on macOS xcode-select --install, and on Linux sudo apt install build-essential (or your distro's equivalent). pip install LGPA avoids this entirely by using a prebuilt wheel.


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  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 uses the dataset files from the GitHub repository, and additionally scikit-learn and scipy for the metrics (pip install scikit-learn scipy); neither is 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.133 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.3.tar.gz (8.6 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.3-cp313-cp313-win_amd64.whl (111.4 kB view details)

Uploaded CPython 3.13Windows x86-64

lgpa-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

lgpa-1.0.3-cp313-cp313-macosx_10_13_x86_64.whl (105.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lgpa-1.0.3-cp312-cp312-win_amd64.whl (111.4 kB view details)

Uploaded CPython 3.12Windows x86-64

lgpa-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

lgpa-1.0.3-cp311-cp311-win_amd64.whl (110.5 kB view details)

Uploaded CPython 3.11Windows x86-64

lgpa-1.0.3-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.3-cp311-cp311-macosx_11_0_arm64.whl (99.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

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

Uploaded CPython 3.10Windows x86-64

lgpa-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

lgpa-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl (103.2 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

lgpa-1.0.3-cp39-cp39-win_amd64.whl (109.4 kB view details)

Uploaded CPython 3.9Windows x86-64

lgpa-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (141.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.9+ x86-64

lgpa-1.0.3-cp38-cp38-win_amd64.whl (109.0 kB view details)

Uploaded CPython 3.8Windows x86-64

lgpa-1.0.3-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.3-cp38-cp38-macosx_11_0_arm64.whl (97.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

lgpa-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl (102.8 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: lgpa-1.0.3.tar.gz
  • Upload date:
  • Size: 8.6 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.3.tar.gz
Algorithm Hash digest
SHA256 fd003aae9f9684e613187128a0da271a42a052d3f74bb8776f583f98620a1209
MD5 c91ef08bee9005837066f7041ca7d40f
BLAKE2b-256 9f9db40df84420ea8daeb76cf86c89679bb829f08972185cb0d0b3f8da2f6465

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3.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.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.3-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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 065022d8df7f724176ba9010eca5df7bdf8a3a9f580f09707fdafc9730bebc46
MD5 bf4f7cb25aeaed2c235cfa8d4734e64f
BLAKE2b-256 2f49a3c19cc58f39570839893163c96e001a9b3bb3da1b48355b6dad9930e07f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f1b7a9ee1e546b9ff58f89d8d84a40661969677bf1b4e41ba9f8fac17b2458e8
MD5 20bac94c8902c84a049ac7537616bf3a
BLAKE2b-256 94f2aa74e57b3d973852cbf76645b6a738090090d5c35693a0d0dcd1f156bac2

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fd86959e3c89d173cdbd5eb82f3a463dd34a63ee3559a30667055ff9382d80a
MD5 768e120419be6dc928098fd1c61c772c
BLAKE2b-256 e95bf0ad99d34bc9859436daf21c0a4689a6b16990d72f287da9de0949a3dd79

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 dfe5e99aaee7817a4de41bf13d593f4f79c3093616f9e8bc11d3733cd28103ff
MD5 8e7f464fc7e75fdd6538c395b9e49239
BLAKE2b-256 533ce50bc15eae61900272d5e17551765290b5a275baa72fc4d52a4fd449b38b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 111.4 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4b09d211315f75ce2f9c580791b8df6ed970a2368b58b3111b6a37a116109319
MD5 a1ac59b337b6268934a5463fe28be38c
BLAKE2b-256 a9259d56a7d46b34c3bd239623ff4cbd8511bab1b2a9b9034599fbcbf467397b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ab49e08723281480053e1b2a6de68f6a9e9bdf39b22016041097dcfd774421af
MD5 9728f3ac12174423a93198ce447a88f2
BLAKE2b-256 ada821c374cfa0fd322ebfeaaf468ea57c619f7b0c07692008adab6685bbb611

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e21bf4dd25c81f5dca8696fdb22c724a53cbafc53e3db44d44eb3b7e926543c
MD5 a954838460d6f25a1d3bc3506e705419
BLAKE2b-256 15210a82190fb02367552bcd6b1cd7627b25045c440adb3818dfeb7533e55636

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 72268ca579007b8bb05fbb630018c55667af005a21e1b96f859c660fad332b29
MD5 66b89aac6d5e51e8c35de11bec93e528
BLAKE2b-256 d6da5d6796d116bfa050ffd476758b0632847a6e841d47cb8e06128177a1c804

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 110.5 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7b988db64651f9f4a03c404518c42f85360b5ae66c0e13336e3142192250796b
MD5 10fe94b7dd0c0f5b84eb6d92d15298fc
BLAKE2b-256 5d676dd867c33fd8fd843aaef3d1296f846a2d4cfd180d9e99732ff088824df5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9fd7f24c109b8efd63ff0243f9193b583ed868f178ee16fae3a568579aeb4fb1
MD5 ee60388ea244f7563ce54fa139f2019b
BLAKE2b-256 5bcdaef3deff569b380d3e419ed0b61a4f069a884fb20e5aeb796b234abd1eba

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 545f5890b7314a8a5689b71437731c6ff3fe789852990706446c734e2b32ad87
MD5 02a2fdde9dd93f6a5c4698d410e35e14
BLAKE2b-256 4b7163b88bbe0cabd233c533c70a7f9392c66a6a5f19135453575ebe7e74cb8d

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7a93b3d0808c4f5d215118532d7519991f1097c7ae5212c17ec9a082199b733d
MD5 dabf5ec3b34fcde3a73e90d586132efd
BLAKE2b-256 01cecedc2447e3157d8c87ddfd61c6291762920100f5d16507d6536671a03ee4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.3-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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 14014422970f798314ce8e2070dee765764bafc22ac6fa672bbedcec2f8a2203
MD5 24e4ebdfa547a3b6e185528b0760671b
BLAKE2b-256 41d6bdb04f30ec703732da74bb1a2196eb10f70bfa949f3087e2b2049053c45d

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 153339401f35d5dfb2d3db790588ce84d544e91620a57c12faa758482fae876d
MD5 093ca4dad5f09489bd1ea028d9317783
BLAKE2b-256 c8c36b98e9e0df27579e94580852f69c5f023f11738245aea96cfd55a9af16a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 506175285c6bdef06b0050a6215dd82e2ec8b4236b135a67f24d6f8376339dae
MD5 1cd98899cb076364b8b5290a33d04a22
BLAKE2b-256 0e822482da4b3f5e6790808412a62e4e29c67943925e5eecf3c91c98e94ac0df

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0f7929052161417826eb62a9dca990348538e7248b6d8f2f901548afad6e8140
MD5 bbcd7117bec999d042905b5c6adbb11d
BLAKE2b-256 16f734e2bacca4aafb8d0991d2dfbc6d4f298f3e4007e550adc89538f9291f4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 109.4 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.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 460e512e8eda7a69ad97c8a0147904def097aa078b1ef269021d709d8d091c35
MD5 177f1ca689c6d565222793fd5d0d6b00
BLAKE2b-256 68e650fd5a5e6b065a5e52a8a3706ce61d71400f8a13a9a74d78ffca35a8e04e

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5b2020a375996ae954195f4f5b03bb7b96f141aa7eb791b60b0838a7a569523f
MD5 8c49949583d586ccb6ba32522c4f91d4
BLAKE2b-256 66fb420442fb4a27826e4b58dae7f1218f4d88cbcf3f09f913e6c12bbb0a780a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lgpa-1.0.3-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.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ba7ae06bf5756c2f0108c4afb14dc6bad036887fb4058736a0e0d4d633c7392
MD5 af052483a67d6a9266e3893424d26632
BLAKE2b-256 1e77ada58f8552076688877ca8921e2afa26b7dd999d11485cd9fbb17b4b4784

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lgpa-1.0.3-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.3-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 90ba5e3876cacbdcaa388c7ec6610c5de66294cdc93892b4ae659e21ee3c6dc8
MD5 7a8b1bb78443266830c1cac183f54504
BLAKE2b-256 51eb98b939b39e7ea5bfe72e16114d0a7c85b83b02dee1df57b49684a1f7b310

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: lgpa-1.0.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 109.0 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.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7f7dbb27d8e86c0bb6df73ba901a4688652046eb593009e3bf5673c83a08b380
MD5 9d750619b35e9d9ee1f6c87d938b4423
BLAKE2b-256 61842fc7b900eaa01f8010bc87f830a795eb411472a92965e94dbe5901ff5680

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lgpa-1.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2b3cd9cabc8ef460d59e8da7ef8baf70b1f1baf9ecc72bcf77325b53da83fe58
MD5 df2d87bd3e2e9f337950e4cc7118ab9e
BLAKE2b-256 2b8c342d6ec5a86ef1e6599d9b89b2c2a86631a0a005a79960883978a60cdbce

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: lgpa-1.0.3-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 97.8 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.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58824bb8b081c5ccba3ac44552721e8d079f5f872365e11d671f6200bc3603e4
MD5 ee92f38febfe8b13a73e26cec1d5c96a
BLAKE2b-256 ff4a9badc19133af96466692b0fc037417f8c2a9fe119289ce392e836a9a7546

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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.3-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: lgpa-1.0.3-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 102.8 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.3-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 da3cff7ec417c6b725e49a195b374361fcc14d1b51340c5aa6f59944e7cc9bae
MD5 3d102a71ec97f64caed4b5a83ee681c7
BLAKE2b-256 9a6c08861acf0dd2e1440fd075bfd55b2ae189b8a1c9483a2eb38bb7262bd69a

See more details on using hashes here.

Provenance

The following attestation bundles were made for lgpa-1.0.3-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