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

pip install LGPA

LGPA ships prebuilt wheels for Windows, macOS, and Linux (Python 3.8–3.13), so installing does not compile anything and does not require a C++ compiler. networkx is pulled in automatically.

Verify the install by running LGPA on two triangles joined by a single bridge edge:

python -c "import networkx as nx; from LGPA import LGPA; G = nx.Graph([(0,1),(1,2),(2,0),(3,4),(4,5),(5,3),(2,3)]); print(LGPA(G).fit_predict())"

This should print the two triangles as two separate communities:

{0: 0, 1: 0, 2: 0, 3: 1, 4: 1, 5: 1}

If you see that, the compiled core loaded correctly and you are ready to go.

Windows

Nothing extra to install. As of v1.0.4 the Windows wheels statically link the Microsoft C++ runtime, so LGPA works on a clean Windows machine with no Visual C++ Redistributable and no compiler required.

If you are on an older version (< 1.0.4) and from LGPA import LGPA crashes Python or the Jupyter kernel with no error message, the old wheel was missing that runtime. Either upgrade — pip install --upgrade LGPA — or install the Microsoft Visual C++ Redistributable (x64) and restart. Upgrading is the better fix.

Tip: test in a terminal, not a notebook — Jupyter hides native crashes, so a notebook just dies silently while a terminal shows the real error.

Linux / macOS

pip install LGPA is all you need — the required runtime (libstdc++ / libc++) is part of the system on any standard distribution or macOS install. Nothing else to do.

Jupyter / Anaconda — install into the right Python

A very common failure is installing into one Python while the notebook runs another. To be certain the package lands in the interpreter your kernel uses, run this inside a notebook cell:

import sys
!"{sys.executable}" -m pip install --upgrade LGPA

Then restart the kernel and try from LGPA import LGPA again.

Other installation options (from GitHub or source)

These build the C++ extension on your machine, so they do require a compiler: Windows → Microsoft C++ Build Tools ("Desktop development with C++" workload); macOS → xcode-select --install; Linux → sudo apt install build-essential.

From GitHub (latest, unreleased changes):

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

From source:

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

Troubleshooting

Symptom Cause Fix
Python/kernel dies on from LGPA import LGPA, no error shown Old wheel (< 1.0.4) missing the MSVC runtime pip install --upgrade LGPA (v1.0.4+ needs no runtime), or install vc_redist.x64.exe and restart
ModuleNotFoundError: No module named 'LGPA' in a notebook Installed into a different Python than the kernel Use the sys.executable cell above, restart the kernel
Install seems stale or broken Cached/partial wheel pip uninstall LGPA -y then pip install --no-cache-dir --force-reinstall LGPA

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.12 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.4.tar.gz (9.9 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.4-cp313-cp313-win_amd64.whl (246.8 kB view details)

Uploaded CPython 3.13Windows x86-64

lgpa-1.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

lgpa-1.0.4-cp313-cp313-macosx_11_0_arm64.whl (100.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

lgpa-1.0.4-cp313-cp313-macosx_10_13_x86_64.whl (106.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

lgpa-1.0.4-cp312-cp312-win_amd64.whl (246.7 kB view details)

Uploaded CPython 3.12Windows x86-64

lgpa-1.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (143.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

lgpa-1.0.4-cp312-cp312-macosx_11_0_arm64.whl (100.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

lgpa-1.0.4-cp312-cp312-macosx_10_13_x86_64.whl (105.9 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

lgpa-1.0.4-cp311-cp311-win_amd64.whl (246.1 kB view details)

Uploaded CPython 3.11Windows x86-64

lgpa-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

lgpa-1.0.4-cp311-cp311-macosx_11_0_arm64.whl (100.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

lgpa-1.0.4-cp311-cp311-macosx_10_9_x86_64.whl (105.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

lgpa-1.0.4-cp310-cp310-win_amd64.whl (244.8 kB view details)

Uploaded CPython 3.10Windows x86-64

lgpa-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

lgpa-1.0.4-cp310-cp310-macosx_11_0_arm64.whl (99.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

lgpa-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl (104.1 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

lgpa-1.0.4-cp39-cp39-win_amd64.whl (245.0 kB view details)

Uploaded CPython 3.9Windows x86-64

lgpa-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

lgpa-1.0.4-cp39-cp39-macosx_11_0_arm64.whl (99.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

lgpa-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl (104.1 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

lgpa-1.0.4-cp38-cp38-win_amd64.whl (244.6 kB view details)

Uploaded CPython 3.8Windows x86-64

lgpa-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (142.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

lgpa-1.0.4-cp38-cp38-macosx_11_0_arm64.whl (98.7 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

lgpa-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl (103.7 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: lgpa-1.0.4.tar.gz
  • Upload date:
  • Size: 9.9 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.4.tar.gz
Algorithm Hash digest
SHA256 73dc8d56a6badbd3589accb79bac9a38330747dd1352911bc81ce3553e63b635
MD5 30f265082d70ce68b705325a46bafe62
BLAKE2b-256 14392ece0f9efd20098c7171017bf6888826bb1984d3a2bb4c85389ae6a619f2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 246.8 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.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 faa37b46e02c95e6bb3d24bad3d9db0bb9ddf60cf5335f668194004459bfbcb8
MD5 cdb890ca277dff05460afd1f66cfdebb
BLAKE2b-256 6827d8759fb233fe9796c325d7a37269e530b4c16ba321f46c83b41bb2609583

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 08a17828940608fba98635604e3380d5ae737ccf57ddc3875b7de75564753ad0
MD5 bfd9553aebe2dcde5dc00d7198d443fa
BLAKE2b-256 6efa4719e861b039ab28ff19271beff13482f4e5a3c844409757c6dcd7ae8fbb

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 100.9 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 lgpa-1.0.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc65130c5959b1e5121de96409f2e0a065deb058dfcca5c7cb9eec5aa356d5b6
MD5 58f9079c96926cdba98c722a1b63532a
BLAKE2b-256 12042a9648c3b301da826e881ab66d27fd5ff665367b158b11917c34a1424098

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5d5d4c05128d8cb98b211ac76dd4c91a1bf408f6919a9318dbf31269df4fe3a2
MD5 895f89f422f36da870b8a8d56b039126
BLAKE2b-256 d091493b32a1cef34599ef37fc68d1247ef87c35cd1d0fb228ff18d997fae6cd

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 246.7 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.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8e230e7fee592edd377733bcc6ddcbf0b8be9b76de8ae83b912b7ea3708063ec
MD5 3b2624fefd770fca550ccef0990e9eae
BLAKE2b-256 4d8c9cf66015f47776aa9e7fe49f7eb7e9e8153f7803c230cd556909a9fa64b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d89e855371a6d064674ecc9f4b3e9c196dc65ec4e7b1d84ac53c4e42b1a807d
MD5 95d4fcfc3911e2051562d557b80c2fbe
BLAKE2b-256 15db63e7525b798108052397d6f1cc7c72125d98a7158764204967aa57b2f0f6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 100.8 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 lgpa-1.0.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9fd16e1458dc37b9ba513d640d1a88f56ea361b69f23655e1d43701865ddb924
MD5 b8a7b4367e83019d31e14882df7f184d
BLAKE2b-256 2107779846a27a554db4c6f8a8b5b1e08fbf666294224cac4bd3f7d07d952cab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 810a4d0f11f709a9829686f7fd4af438106b6d150e1c1cccf3017f5af11073ca
MD5 a73981bc5fbd07a07e6e563a5c13db20
BLAKE2b-256 e38a9eba8174adc73978715e51e38433ff10276c08d73b354febefb6178dc139

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 246.1 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.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c30515edb716f4f94c470d8c054f4b82134e2eee57d0ba56428b52e930d2803d
MD5 bd1693d0f9e751ab51aa88465cb9e6dc
BLAKE2b-256 e417c60f06b0f65de17eeb18735c52cb35f1094d379e6bd0b5c9e0120045f225

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 63f2a65c724d106ab3e61a6f7d6abcc681cc0edeaa227ceb46c003d1efd2d7da
MD5 345aefd3b293a3cd6e709297c43c29de
BLAKE2b-256 83050e32bc3d9c9893744c73454cef91bf2f7ef8c7be60f543cacf17270a65f0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp311-cp311-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 100.5 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 lgpa-1.0.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 048ad765860814ef02a9d53d479680fe933b9eb60f5c8ce5ee545f9b44d0fc86
MD5 55eb563ef2814bd7dec1f743df062603
BLAKE2b-256 0c0b1f7fb362645f624c7d625f755b620057393ad60af0eff44987754ddccd5e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4210e5765711ca0f484ca729e978a11641a5bad07759050dd90dc9554857abfe
MD5 27bc585b7fcdb6e6a2b9f60f3f51f85f
BLAKE2b-256 0c61c24ee8b7c4166a2ec9ca8a1afac286bd3974dc66a9d98dccf28c7a4ede12

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 244.8 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.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b80c3c3157b1d12117698515517cd72c53fe750c564a9f461f0fae66813c55c6
MD5 6d18240ab805344c484b50568e01a149
BLAKE2b-256 75a10b4760a328df1a0e6e3f54db7d988e34cd02b2ea21b870d75f0da9f67592

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 77a8ac3676016b00ec588afe76276f2a0bc075f2a0a66040053e3c92984093a0
MD5 fd3b45ea123735c36f06b33294429bc7
BLAKE2b-256 003dca50e477f3e6663718be8cf9b9e0313ea7c02fc55f77379374efe2f8754d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8a8fbf0e65063ec917c150ed50a81ea5ddc9dbdfa18e27a6a4d4959bef509e98
MD5 59d42fe768e67a2af752b336f1810ae3
BLAKE2b-256 5bbf61fc05577f4606ee75219c3a2919c2192335cc448b8fd359abba5642d9c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f141846da15b69ee611d751d05d257a9f50e21b225bfa622ebe664ac61fe9d09
MD5 1562235e62189885ddd31ef2d96862b7
BLAKE2b-256 de92f6f3ec659038cbee36968cbcea101ce2b339698d25bea002855db33e2c1b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 245.0 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.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 670fba3b923545c33abac73d3e0382dd7de3ed4fb708f1a780ac224e1d618e73
MD5 70f314c5bdd89abfc60f3efee8a161e3
BLAKE2b-256 a5850c04379aac370ff442281c6042a25bfe9fbc06cce1a0bd17340ccb2ea328

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 266a28f29086a3e831e74555f52f6de0e4c9abc7b665bb13937185161e1b616a
MD5 c314167563da995e2d4db840065d2d9d
BLAKE2b-256 2cbf8ec6189f40ac34bfd9908c5d2f3f8b05c32fb17ab3cd219e109fde034514

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 99.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.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b4e04953266034c45ba1dbe27a4442abcc7da40eb803de8a3c566891f76ac6a
MD5 1ef493dfd258a3bc2fdca7f1484f25ad
BLAKE2b-256 c3257b1989ce2ab0f3fb7524c6753daf5ef05894b3989d69cc5498d04a0b9963

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp39-cp39-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 104.1 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.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 83fdafc0d176cbfc36142cfca3c072fce2521e81f3b2396128b4ad95cf02d565
MD5 4a36ef22927386c7f3359e918e600aac
BLAKE2b-256 646d90ad639176c33f57e2c50e42d68eda779830734a2847263386b11c4c9540

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 244.6 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.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 f92304f9c52d016cf8138a744c3d7a70140f0065230ffcfeb362b2e02da7d4eb
MD5 210d5585d9fd5c958af29e261b70791c
BLAKE2b-256 85d4e118091aba56f24734d1bac4be425bbebe97eee770f58a326d0d343bc713

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for lgpa-1.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c8dccb304b47ff740f8a11497c226e6d837ebba39ab36eae2f7a1907b5972608
MD5 b0258613283cc8aac3adf6ea31c89c5d
BLAKE2b-256 a7094fcfca4e38865d3bbb5c8aededcd3d47f1e53e2e0cb78cbfe5c5031f19d0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 98.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.4-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a8e1de919efe0e7d822d43023c1aa93e1bf2666fc0a8180acafdec081bf66c4b
MD5 d3130e61372433bcc1d3b3ceb1bc8d9b
BLAKE2b-256 f9a07b924fb8ed89dbba5d4fd968b86d17de4c34685ff1453ed54b2af9984f58

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: lgpa-1.0.4-cp38-cp38-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 103.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.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7697bb251cce821e192ed356975ba6119162cf2bd2e0468fd57d4740d51b3f04
MD5 37a08c63bbafeaa8a7d26dbac8751c56
BLAKE2b-256 d718d72af7b4bbe538daf44ba096572aa2a96c718c5cee00eb3cc8ad75feb7d9

See more details on using hashes here.

Provenance

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