Skip to main content

OTLiNGAM logo

OT-LiNGAM

Optimal Transport LiNGAM.
Scikit-learn-compatible causal discovery for linear non-Gaussian systems.

Documentation · PyPI

PyPI version Supported Python versions: 3.11–3.14 Lint status Coverage Documentation status License

otlingam is a Python package for causal discovery in linear non-Gaussian structural equation models. It learns causal orders by maximizing the Wasserstein non-Gaussianity of standardized regression residuals and estimates edge weights with adaptive Lasso.


✨ Features

  • Exhaustive causal-order learning: ExhaustiveOTLiNGAM uses subset dynamic programming to find a globally optimal order.
  • Scalable greedy learning: GreedyOTLiNGAM constructs an order by sequentially selecting the most non-Gaussian residual.
  • Optimal transport ICA: OTICALiNGAM uses OTICA with FastICA initialization in the classical ICA-LiNGAM pipeline.
  • Exact empirical criterion: Computes one-dimensional Wasserstein scores directly from ordered residuals and Gaussian quantiles.
  • LiNGAM integration: Exposes causal orders and weighted adjacency matrices through the established LiNGAM estimator API.
  • scikit-learn integration: Native BaseEstimator integration with familiar fit, get_params, set_params, and clone support.

The exhaustive estimator uses djbsort for double-precision residual sorting and Google Highway for SIMD kernels. Both projects are tracked as Git submodules; the sorter selects a portable fallback or the CPU's AVX2/NEON implementation at runtime.


⚡ Method

The estimators assume the linear structural equation model

$$ X_j = \sum_{k \in \mathrm{Pa}(j)} B_{jk} X_k + \varepsilon_j, $$

where the graph is acyclic and the structural noises are mutually independent, centered, and have finite nonzero variances. Causal-order identification additionally requires at most one Gaussian structural noise.

For a candidate order $\sigma$, let $R_j(\sigma)$ be the population residual obtained by regressing $X_j$ on its predecessors under $\sigma$. The oracle Wasserstein order objective is

$$ G(\sigma) = \sum_{j = 1}^{d} \mathcal{W}_2\left( \mathrm{std}(R_j(\sigma)), \mathcal{N}(0, 1) \right)^2. $$

Given $n$ observations, let $\widehat{R}_j^{(i)}(\sigma)$ be the ordinary least-squares residual for observation $i$. OTLiNGAM maximizes the empirical order objective

$$ \widehat{G}n(\sigma) = \sum{j = 1}^{d} \mathcal{W}2\left( \mathrm{std}\left( \frac{1}{n} \sum{i = 1}^{n} \delta_{\widehat{R}_j^{(i)}(\sigma)} \right), \mathcal{N}(0, 1) \right)^2. $$

At the population level, the maximizers of $G$ are exactly the topological orders under the stated assumptions. A topological order exposes the independent structural noises as regression residuals, whereas an incorrect order may mix several noises and reduce the total objective. Each empirical one-dimensional Wasserstein distance is evaluated exactly by sorting the standardized residuals and comparing them with the Gaussian reference quantiles.


🚀 Installation

python -m pip install otlingam

🔧 Usage

Example

The following example simulates a linear non-Gaussian structural equation model, learns a causal order with GreedyOTLiNGAM, and compares the true and estimated weighted adjacency matrices.

import matplotlib.pyplot as plt
import numpy as np
from otlingam import GreedyOTLiNGAM, disorder

rng = np.random.default_rng(42)
n_samples = 5000
adjacency_matrix = np.array(
    [
        [0.0, 0.0, 0.0, 0.0, 0.0],
        [0.8, 0.0, 0.0, 0.0, 0.0],
        [0.0, -0.7, 0.0, 0.0, 0.0],
        [0.5, 0.0, 0.9, 0.0, 0.0],
        [0.0, -0.6, 0.0, 0.7, 0.0],
    ]
)
noise = rng.uniform(-1.0, 1.0, size=(n_samples, 5))
X = noise @ np.linalg.inv(np.eye(5) - adjacency_matrix).T

model = GreedyOTLiNGAM().fit(X)

print("Estimated causal order:", model.causal_order_)
print("Disorder:", disorder(model.causal_order_, adjacency_matrix))

fig, axes = plt.subplots(1, 2, figsize=(10, 4), layout="constrained")
matrices = (adjacency_matrix, model.adjacency_matrix_)
titles = ("True adjacency matrix", "Estimated adjacency matrix")
for ax, matrix, title in zip(axes, matrices, titles, strict=True):
    image = ax.imshow(matrix, cmap="RdBu_r", vmin=-1.0, vmax=1.0)
    ax.set_title(title)
    ax.set_xlabel("Parent")
    ax.set_ylabel("Child")
fig.colorbar(image, ax=axes, label="Edge weight")

plt.show()

ExhaustiveOTLiNGAM provides global order optimization at an exponential cost in the number of variables. GreedyOTLiNGAM provides a quadratic-time alternative. Set fit_intercept=False when the observations are already centered. The default fit_intercept=True centers the data and exposes the fitted intercepts through intercept_.


📊 Reproducing Results

Clone the repository, create and activate a virtual environment, then install the exact package versions used for the paper:

python -m pip install -r scripts/requirements.txt

Keep the repository folder layout unchanged: do not move, rename, or flatten its folders, because the experiment scripts resolve paths relative to their file locations.

Run the experiment scripts from the repository root:

python scripts/statistical-performance.py --nd
python scripts/statistical-performance.py --heterogeneity
python scripts/statistical-performance.py --k
python scripts/runtime-scaling.py

Alternatively, run all experiments sequentially on Windows, Linux, or macOS:

python run-all.py

The runner uses the active Python interpreter and stops if an experiment fails.

These commands write varying-nd-disorder.pdf, noise-heterogeneity-disorder.pdf, varying-k-performance.pdf, and runtime-scaling.pdf to figures/. The paper settings (including random seed 42, sample sizes, dimensions, graph configurations, and run counts) are defined as constants near the top of each script.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

otlingam-0.5.12-cp314-cp314-win_arm64.whl (686.3 kB view details)

Uploaded CPython 3.14Windows ARM64

otlingam-0.5.12-cp314-cp314-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.14Windows x86-64

otlingam-0.5.12-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (273.4 kB view details)

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

otlingam-0.5.12-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (220.6 kB view details)

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

otlingam-0.5.12-cp314-cp314-macosx_11_0_arm64.whl (163.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

otlingam-0.5.12-cp314-cp314-macosx_10_15_x86_64.whl (214.9 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

otlingam-0.5.12-cp313-cp313-win_arm64.whl (664.3 kB view details)

Uploaded CPython 3.13Windows ARM64

otlingam-0.5.12-cp313-cp313-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.13Windows x86-64

otlingam-0.5.12-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (273.3 kB view details)

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

otlingam-0.5.12-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (220.5 kB view details)

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

otlingam-0.5.12-cp313-cp313-macosx_11_0_arm64.whl (163.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

otlingam-0.5.12-cp313-cp313-macosx_10_13_x86_64.whl (214.8 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

otlingam-0.5.12-cp312-cp312-win_arm64.whl (664.0 kB view details)

Uploaded CPython 3.12Windows ARM64

otlingam-0.5.12-cp312-cp312-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.12Windows x86-64

otlingam-0.5.12-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (273.0 kB view details)

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

otlingam-0.5.12-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (220.1 kB view details)

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

otlingam-0.5.12-cp312-cp312-macosx_11_0_arm64.whl (163.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

otlingam-0.5.12-cp312-cp312-macosx_10_13_x86_64.whl (214.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

otlingam-0.5.12-cp311-cp311-win_arm64.whl (662.6 kB view details)

Uploaded CPython 3.11Windows ARM64

otlingam-0.5.12-cp311-cp311-win_amd64.whl (1.3 MB view details)

Uploaded CPython 3.11Windows x86-64

otlingam-0.5.12-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl (272.0 kB view details)

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

otlingam-0.5.12-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl (219.1 kB view details)

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

otlingam-0.5.12-cp311-cp311-macosx_11_0_arm64.whl (162.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

otlingam-0.5.12-cp311-cp311-macosx_10_9_x86_64.whl (215.4 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file otlingam-0.5.12-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 686.3 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 b4df942da9d3bf15ee81de29acc4c14ed75439527cffa069cf8093815dd69c5f
MD5 fc4c2c510cbf7efd1bbc00e329221484
BLAKE2b-256 3572330e3bbb9b2e730c6f02e7679d3c603b251390a43c27faa7c7a88f231ae6

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 e59caa7b81c5dfe5560d05d211c8da12788cd5afd10d9f44ff45912b12d1d92c
MD5 a42a37268e98b1734f62057105dadcc6
BLAKE2b-256 9bb0d2b0f9b28e7b6f55bb6acb7fab0992ff1e43929a6c04f02edf0920b0c24b

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dbd5b40abf7c0eb68c38f428dc2681cc28c7fa6c4053f1fb20fcce3aab513598
MD5 2947d74714c2d5c8b2b819483e67c9f2
BLAKE2b-256 162f1c1696c23c3c6de5a470663eacfdd6ae7c0ea1ec38bbe87f4666ac85f7e5

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 726e1ea8046450a8cd476a0f151fdd6a01b836edbc08a44c8a19e7cad1f60cc0
MD5 059fd8ed28b0a4d22bd152733e56e7fa
BLAKE2b-256 db15b114be37dd7d08badcaaa4eec3191be3c8ae858d6f28f061bf8497a132a0

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 11a75f10fc6bfa058115a1ef312e09f277c510c5668add43c408ff6b071d1caf
MD5 720f7dbeaf319824396f893dd0754b57
BLAKE2b-256 ce6cb9cf55b53ea6e93e7c54444cbe7218f449ba051bcb96ae1ece8e62b26236

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c7a1e7f7cc5921eea16c11a8f4bcd0079ed7279dc65a3d443fdc9193c9f4a94d
MD5 41ecde69d08139163583757feb8126fe
BLAKE2b-256 ef97c7b0183e2129272ab17e16ee964ee2df037f4efb80e27b690ed47d2f6e59

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 664.3 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 a438a7e80612361ea96f33191a32c0e4d156df290d2853d98b6666ce0de1ee4a
MD5 3d1c42bb59080dd6cec13aca37fd9510
BLAKE2b-256 1d761e6256fbceec4de83bc0ecb2898465e1c6112c2486a33b24c2b497705be1

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bd4f948bdf5484d8e2daaff70e73e2093b41b1dc0801a841c465fdf562e5194f
MD5 aa1ce3d3293ed06d02e8d42721acc1fc
BLAKE2b-256 70c9073dec52754959a6fbc3a5454c1e6a6a433e711c31b3b87018b426071258

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 023391a603e0c99437e6dcee04405e54e735e4819cfd0125d0be425f5630c71d
MD5 b4318b96002b4c02b1a260961cae417e
BLAKE2b-256 b7b3970ffb6d8553da8d6a36f5e152f89fe3387b1748702466d5b62e3e4e4ba9

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bdf471a1be711dac13daec7bd8e6a46e9f31b601d88aa2eea56047e55f26bd0c
MD5 28faad7e6cd8a65f297f0207a18afe9b
BLAKE2b-256 89baec21506354f84beb11eb8b6f4581753d588234200a4a3f245c473e2199e0

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0e5cebca95eb4f161293b0eeef77b4fdf804493916d9364054a5b8d56d509ac5
MD5 3b0a7be5b4189c57cc7afa41534a9f7f
BLAKE2b-256 f62b9241a3dbbf81e180c7e0333bc1fbed0e64d03d6f7ecdfc692404fbb4e6c5

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 f5b419b9d020507de55d43b8f4a78770329c44c3dd2aadd6498b83f05c9a71ab
MD5 4b9cfde0a861cb07cbe3fcbb8f3b7a86
BLAKE2b-256 31fe7a323c77300159ac6dce9c7b3934c87ad8a5516fe637f390dae2478453aa

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 664.0 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 f39b3235744aa8b616ed7a834c509798f9c31aad97bfefa320946ed8aa0f90e2
MD5 5b141b7bb215c2752290469677e272a1
BLAKE2b-256 658452d0a4baefa8ef6081d9ed5fa6ab96ac5b9e2017e86aab538150c952ce22

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 18b0ace41bdea781d64dcea61f45cad1f3fe3650b90202d7a383fa719f093ba0
MD5 40c7a19bb0144ad717be4dc3e3960fae
BLAKE2b-256 8cec80eb984faa1dd52cc400941635167b6db93d5c9454e6b4ae2d078ce3aa2a

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 393c262d5040749a908d219f754da6dde79fe87b052573681b4ebf54c1be80ab
MD5 572a10bed8b6147b25892fe0051c4d22
BLAKE2b-256 4a261ad5c89113b4a5a7668ab9a53a15f1fbaf27718614c54f1eea3d9371ece5

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fe9be074affa7bf8425ccc47edb3680533bb16c0dd964c6e11381a989e9ee89f
MD5 e7929cb8abe875112b2263de1e97cb93
BLAKE2b-256 402929934314bfa5bde1f4999ae78dd2c7cde0e6155bfe857ba08a8088f07e94

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15ccdfea25ae3073b20bde197458a550dcacc3a959cbfb44cfd58e253a1c5164
MD5 5a7fbfeb91105d0eaf592bc0fb32123d
BLAKE2b-256 fa650495baabef02d4e6351bfeebf0ac5d577843388232035566200b48ade3af

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 34561a0fdfd3c933d427f7ea67fcc7905b8a76412dcfc798ae8940704cd9dafc
MD5 f6f5fdba619966e77834cbd71a1d675e
BLAKE2b-256 fdcaa46c92cb39ce1fda2e3105e9523435e60f2c83ff73aacfbe7ee1c4674244

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 662.6 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 6542efcd8777b66bf152d9c0861ae2b91f17a05a99f59196317c69977e47f202
MD5 75a53587407aae2828e824d0fcb8cddd
BLAKE2b-256 bd35e9e10724a1cb2dda3ff6180eaedb08db1e765a2beef3e9d5dd7f0f509ba4

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: otlingam-0.5.12-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for otlingam-0.5.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8a9c23631135e3c7ed4665886fe4c7139500fa62930062d10e8d29a13288e984
MD5 3b007ed95594f72c3eb209a3544f874f
BLAKE2b-256 67ef12aa8defe23415d851f13baf319b76474798b22bf75b64324af9c22edacd

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp311-cp311-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b197caead76d5268e8689f02615ccac3fcd43736a76728a05d5f358c9808fc57
MD5 38813ac40b1d1c0d96fb3ea18c9121b7
BLAKE2b-256 947c1c41a5fb4e1af49d4bb5c2ed36d675e63c06a09de41bc1b0c94fc9d601c9

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp311-cp311-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b9fde543548781bdb32f021a10a1f2056b4b79095272f1aae15a6c38e97b8db9
MD5 3272c82414d5a83b912eb6b26be75d4d
BLAKE2b-256 9ae1565f12c34160243dd4df33991e2efea5b97df6ac6054477c46b4de8ed5a6

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 73815d3cc5976f8131ae2dfcc32dd1c2c08d25b236e9bb95b388303827cf4663
MD5 8130242d95bc1b57e6f6287efa74fa66
BLAKE2b-256 fd5251b9e3b42aed958cbfd8884e7510a913dbe9dda1f560eea582534e8dd689

See more details on using hashes here.

File details

Details for the file otlingam-0.5.12-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for otlingam-0.5.12-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ad30a80b095c8ee17d79099be1a6a3747ee0c818970bd3c5f49c194619ea250e
MD5 d6102c4921511da3d8ee481361245e4e
BLAKE2b-256 b96e79e18726a317fc77abb72acc658e8b57a25794eae44cc72101d63788564e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.5.12 This release

24 files

0.5.11

24 files

0.5.8

24 files

0.5.3

30 files

0.5.2

30 files

0.5.1

30 files

0.5.0

30 files

0.4.3

2 files

0.3.1

2 files

0.3.0

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page