Skip to content

Experimental pure Python ctypes-based interface for igraph

Notifications You must be signed in to change notification settings

igraph/python-igraph-ctypes

Repository files navigation

python-igraph-ctypes

This repository contains an experimental Python API to the igraph C library, with the following goals:

  • It should contain as little hand-written C code as possible.

  • It should rely on code generation to create most of the glue code between Python and igraph's core C API to make it easier to adapt to changes in the underlying C library without having to re-write too much of the Python code.

  • It should provide full type annotations.

Status

This repo is highly experimental and currently it is only in a proof-of-concept stage. The vast majority of igraph's API is not exposed, and things may break randomly, or they may not even work.

Usage

  1. Clone the repo.

  2. Install poetry if you don't have it yet.

  3. Run poetry install to prepare a virtualenv with all the required dependencies.

  4. Run poetry run pytest to run the unit tests, or poetry run python to run a Python interpreter where you can import igraph_ctypes

Benchmarking

Benchmarks will be placed in benchmarks and they will compare the "old", official Python interface of igraph with this new implementation. To run the benchmarks, type poetry run richbench benchmarks.

Caveats

  • Apparently you'll need to ensure that the igraph shared library is built without sanitizers, otherwise the dlopen() call fails, at least on macOS.

About

Experimental pure Python ctypes-based interface for igraph

Resources

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages