Skip to main content

Leap Labs Interpretability Engine

Project description

Leap Interpretability Engine

Congratulations on being a very early adopter of our interpretability engine! Not sure what's going on? Check out the FAQ.

Installation

Use the package manager pip to install leap-ie.

pip install leap-ie

Sign in and generate your API key in the leap app - you'll need this to get started.

Usage

Using the interpretability engine is really easy! All you need to do is import leap_ie, and wrap your model in our generate function:

df_results, dict_results = engine.generate(
    project_name="interpretability",
    model=your_model,
    class_list=["hotdog", "not_hotdog"],
    config={"leap_api_key": "YOUR_LEAP_API_KEY", "input_dim": [3, 224, 224]},
)

Currently we support image classification models only. We expect the model to take a batch of images as input, and return a batch of logits (NOT probabilities). For best results, you might have to tune the config a bit.

Results

The generate function returns a pandas dataframe, containing prototypes, entanglements, and feature isolations. If used with samples (see Sample Feature Isolation), the dataframe contains feature isolations for each sample, for the target classes (if provided), or for the top 3 predicted classes.

If you're in a jupyter notebook, you can view these inline using engine.display_results(results), but for the best experience we recommend you head to the leap app to view your prototypes and isolations, or log directly to your weights and biases dashboard.

Supported Frameworks

We support both pytorch and tensorflow! Specify your package with the mode parameter, using 'tf' for tensorflow and 'pt' for pytorch. (Defaults to pytorch if unspecified.) Tensorflow is still faily experimental and will likely require a fair amount of config tuning - sorry! We're working on it.

If using pytorch, we expect the model to take images to be in channels first format, e.g. of shape [1, channels, height, width]. If tensorflow, channels last, e.g.[1, height, width, channels].

Weights and Biases Integration

We can also log results directly to your WandB projects! To do this, set project_name to the name of the WandB project where you'd like the results to be logged, and add your WandB API key and entity name to the config dictionary:

config = {
    "wandb_api_key": "YOUR_WANDB_API_KEY",
    "wandb_entity": "your_wandb_entity",
    "leap_api_key": "YOUR_LEAP_API_KEY",
    "input_dim": [3, 224, 224],
}
df_results, dict_results = engine.generate(
    project_name="your_wandb_project_name",
    model=your_model,
    class_list=["hotdog", "not_hotdog"],
    config=config,
)

Prototype Generation

Given your model, we generate prototypes and entanglements We also isolate entangled features in your prototypes.

from leap_ie import engine
from leap_ie.models import get_model

config = {"leap_api_key": "YOUR_LEAP_API_KEY"}

# Replace this model with your own, or explore any imagenet classifier from torchvision (https://pytorch.org/vision/stable/models.html).
model = preprocessing_fn, model, class_list = get_model("torchvision.resnet18")

# indexes of classes to generate prototypes for. In this case, ['tench', 'goldfish', 'great white shark'].
target_classes = [0, 1, 2]

# generate prototypes
df_results, dict_results = engine.generate(
    project_name="resnet18",
    model=model,
    class_list=class_list,
    config=config,
    target_classes=target_classes,
    preprocessing=preprocessing_fn,
    samples=None,
    device=None,
    mode="pt",
)

# For the best experience, head to https://app.leap-labs.com/ to explore your prototypes and feature isolations in the browser!
# Or, if you're in a jupyter notebook, you can display your results inline:
engine.display_results(prototypes)

Multiple Prototype Generation

To generate multiple prototypes for the same target class, simply repeat the index of the target class, e.g.

target_classes = [0, 0, 0]

will generate three prototypes for the 0th class.

Sample Feature Isolation

Given some input image, we can show you which features your model thinks belong to each class. If you specify target classes, we'll isolate features for those, or if not, we'll isolate features for the three highest probability classes.

from torchvision import transforms
from leap_ie import engine
from leap_ie.models import get_model
from PIL import Image

config = {"leap_api_key": "YOUR_LEAP_API_KEY"}

# Replace this model with your own, or explore any imagenet classifier from torchvision (https://pytorch.org/vision/stable/models.html).
model = preprocessing_fn, model, class_list = get_model("torchvision.resnet18")

# load an image
image_path = "tools.jpeg"
tt = transforms.ToTensor()
image = preprocessing_fn[0](tt(Image.open(image_path)).unsqueeze(0))

# to isolate features:
df_results, dict_results = engine.generate(
    project_name="resnet18",
    model=model,
    class_list=class_list,
    config=config,
    target_classes=None,
    preprocessing=preprocessing_fn,
    samples=image,
    mode="pt",
)

# For the best experience, head to https://app.leap-labs.com/ to explore your prototypes and feature isolations in the browser!
# Or, if you're in a jupyter notebook, you can display your results inline:
engine.display_results(isolations)

engine.generate()

The generate function is used for both prototype generation directly from the model, and for feature isolation on your input samples.

leap_ie.engine.generate(
    project_name,
    model,
    class_list,
    config,
    target_classes=None,
    preprocessing=None,
    samples=None,
    device=None,
    mode="pt",
)
  • project_name (str): Name of your project. Used for logging.

    • Required: Yes
    • Default: None
  • model (object): Model for interpretation. Currently we support image classification models only. We expect the model to take a batch of images as input, and return a batch of logits (NOT probabilities). If using pytorch, we expect the model to take images to be in channels first format, e.g. of shape [1, channels, height, width]. If tensorflow, channels last, e.g.[1, height, width, channels].

    • Required: Yes
    • Default: None
  • class_list (list): List of class names corresponding to your model's output classes, e.g. ['hotdog', 'not hotdog', ...].

    • Required: Yes
    • Default: None
  • config (dict or str): Configuration dictionary, or path to a json file containing your configuration. At minimum, this must contain {"leap_api_key": "YOUR_LEAP_API_KEY"}.

    • Required: Yes
    • Default: None
  • target_classes (list, optional): List of target class indices to generate prototypes or isolations for, e.g. [0,1]. If None, prototypes will be generated for the class at output index 0 only, e.g. 'hotdog', and feature isolations will be generated for the top 3 classes.

    • Required: No
    • Default: None
  • preprocessing (function, optional): Preprocessing function to be used for generation. This can be None, but for best results, use the preprocessing function used on inputs for inference.

    • Required: No
    • Default: None
  • samples (array, optional): None, or a batch of images to perform feature isolation on. If provided, only feature isolation is performed (not prototype generation). We expect samples to be of shape [num_images, height, width, channels] if using tensorflow, or [1, channels, height, width] if using pytorch.

    • Required: No
    • Default: None
  • device (str, optional): Device to be used for generation. If None, we will try to find a device.

    • Required: No
    • Default: None
  • mode (str, optional): Framework to use, either 'pt' for pytorch or 'tf' for tensorflow. Default is 'pt'.

    • Required: No
    • Default: pt

Config

Leap provides a number of configuration options to fine-tune the interpretability engine's performance with your models. You can provide it as a dictionary or a path to a .json file.

Typically, you'll only change a few of these – though feel free to experiment! The key ones are as follows:

  • hf_weight (int): How much to penalise high-frequency patterns in the input. If you are generating very blurry and indistinct prototypes, decrease this. If you are getting very noisy prototypes, increase it. This depends on your model architecture and is hard for us to predict, so you might want to experiment. It's a bit like focussing binoculars. Best practice is to start with zero, and gradually increase.

    • Default: 1
  • input_dim (list): The dimensions of the input that your model expects.

    • Default: [224, 224, 3] if mode is "tf" else [3, 224, 224]
  • isolation (bool): Whether to isolate features for entangled classes. Set to False if you want prototypes only.

    • Default: True
  • lr (float): How much to update the prototype at each step during the prototype generation process. This can be tuned, but in practice is to around 1% of the expected input range. E.g. if your model was trained on images in the range -1 to 1 (prior to any preprocessing function), 0.02 is a good place to start.

    • Default: 0.005
  • max_steps (int): How many steps to run the prototype generation/feature isolation process for. If you get indistinct prototypes or isolations, try increasing this number.

    • Default: 1000

Here are all of the config options currently available:

config = {
    "use_alpha": False,
    "alpha_mask": False,
    "alpha_only": False,
    "baseline_init": 0,
    "diversity_weight": 0,
    "isolate_classes": None,
    "isolation_lr": 0.05,
    "hf_weight": 1,
    "isolation_hf_weight": 1,
    "input_dim": [224, 224, 3] if mode == "tf" else [3, 224, 224],
    "isolation": True,
    "logit_scale": 1,
    "log_freq": 100,
    "lr": 0.002,
    "max_isolate_classes": min(3, len(class_list)),
    "max_steps": 1000,
    "seed": 0,
    "use_baseline": False,
    "transform": "xl",
    "wandb_api_key": None,
    "wandb_entity": None,
}
  • use_alpha (bool): If True, adds an alpha channel to the prototype. This results in the prototype generation process returning semi-transparent prototypes, which allow it to express ambivalence about the values of pixels that don't change the model prediction.

    • Default: False
  • alpha_mask (bool): If True, applies a mask during prototype generation which encourages the resulting prototypes to be minimal, centered and concentrated. Experimental.

    • Default: False
  • alpha_only (bool): If True, during the prototype generation process, only an alpha channel is optimised. This results in generation prototypical shapes and textures only, with no colour information.

    • Default: False
  • baseline_init (int or str): How to initialise the input. A sensible option is the mean of your expected input data, if you know it. Use 'r' to initialise with random noise for more varied results with different random seeds.

    • Default: 0
  • diversity_weight (int): When generating multiple prototypes for the same class, we can apply a diversity objective to push for more varied inputs. The higher this number, the harder the optimisation process will push for different inputs. Experimental.

    • Default: 0
  • isolate_classes (list): If you'd like to isolate features for specific classes, rather than the top n, specify their indices here, e.g. [2,7,8].

    • Default: None
  • isolation_lr (float): How much to update the isolation mask at each step during the feature isolation process.

    • Default: 0.05
  • hf_weight (int): How much to penalise high-frequency patterns in the input. If you are generating very blurry and indistinct prototypes, decrease this. If you are getting very noisy prototypes, increase it. This depends on your model architecture and is hard for us to predict, so you might want to experiment. It's a bit like focussing binoculars. Best practice is to start with zero, and gradually increase.

    • Default: 1
  • isolation_hf_weight (int): How much to penalise high-frequency patterns in the feature isolation mask. See hf_weight.

    • Default: 1
  • input_dim (list): The dimensions of the input that your model expects.

    • Default: [224, 224, 3] if mode is "tf" else [3, 224, 224]
  • isolation (bool): Whether to isolate features for entangled classes. Set to False if you want prototypes only.

    • Default: True
  • log_freq (int): Interval at which to log images.

    • Default: 100
  • lr (float): How much to update the prototype at each step during the prototype generation process. This can be tuned, but in practice is to around 1% of the expected input range. E.g. if your model was trained on images in the range -1 to 1 (prior to any preprocessing function), 0.02 is a good place to start.

    • Default: 0.005
  • max_isolate_classes (int): How many classes to isolate features for, if isolate_classes is not provided.

    • Default: min(3, len(class_list))
  • max_steps (int): How many steps to run the prototype generation/feature isolation process for. If you get indistinct prototypes or isolations, try increasing this number.

    • Default: 1000
  • seed (int): Random seed for initialisation.

    • Default: 0
  • use_baseline (bool): Whether to generate an equidistant baseline input prior to the prototype generation process. It takes a bit longer, but setting this to True will ensure that all prototypes generated for a model are not biased by input initialisation.

    • Default: False
  • transform (str): If your model is trained on inputs with non-location-independent features – for example, brain scans, setting this to None will probably result in more sensible prototypes. VERY experimental. You can also experiment with the following options: ['s', 'm', 'l', 'xl'].

    • Default: xl
  • wandb_api_key (str): Provide your weights and biases API key here to enable logging results directly to your WandB dashboard.

    • Default: None
  • wandb_entity (str): If logging to WandB, make sure to provide your WandB entity name here.

    • Default: None

FAQ

What is a prototype?

Prototype generation is a global interpretability method. It provides insight into what a model has learned without looking at its performance on test data, by extracting learned features directly from the model itself. This is important, because there's no guarantee that your test data covers all potential failure modes. It's another way of understanding what your model has learned, and helping you to predict how it will behave in deployment, on unseen data.

So what is a prototype? For each class that your model has been trained to predict, we can generate an input that maximises the probability of that output – this is the model's prototype for that class. It's a representation of what the model 'thinks' that class is.

For example, if you have a model trained to diagnose cancer from biopsy slides, prototype generation can show you what the model has learned to look for - what it 'thinks' malignant cells look like. This means you can check to see if it's looking for the right stuff, and ensure that it hasn't learned any spurious correlations from its training data that would cause dangerous mistakes in deployment (e.g. looking for lab markings on the slides, rather than at cell morphology).

What is entanglement?

During the prototype generation process we extract a lot of information from the model, including which other classes share features with the class prototype that we're generating. Depending on your domain, some entanglement may be expected - for example, an animal classifier is likely to have significant entanglement between 'cat' and 'dog', because those classes share (at least) the 'fur' feature. However, entanglement - especially unexpected entanglement, that doesn't make sense in your domain - can also be a very good indicator of where your model is likely to make misclassifications in deployment.

What is feature isolation?

Feature isolation does what it says on the tin - it isolates which features in the input the model is using to make its prediction.

We can apply feature isolation in two ways:

    1. On a prototype that we've generated, to isolate which features are shared between entangled classes, and so help explain how those classes are entangled; and
    1. On some input data, to explain individual predictions that your model makes, by isolating the features in the input that correspond to the predicted class (similar to saliency mapping).

So, you can use it to both understand properties of your model as a whole, and to better understand the individual predictions it makes.

Project details


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.

leap_ie-0.0.15-cp312-cp312-musllinux_1_1_x86_64.whl (5.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ x86-64

leap_ie-0.0.15-cp312-cp312-musllinux_1_1_i686.whl (5.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.1+ i686

leap_ie-0.0.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

leap_ie-0.0.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (5.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

leap_ie-0.0.15-cp312-cp312-macosx_11_0_arm64.whl (923.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

leap_ie-0.0.15-cp312-cp312-macosx_10_9_x86_64.whl (958.9 kB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

leap_ie-0.0.15-cp311-cp311-musllinux_1_1_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ x86-64

leap_ie-0.0.15-cp311-cp311-musllinux_1_1_i686.whl (5.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.1+ i686

leap_ie-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

leap_ie-0.0.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (5.2 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

leap_ie-0.0.15-cp311-cp311-macosx_11_0_arm64.whl (938.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

leap_ie-0.0.15-cp311-cp311-macosx_10_9_x86_64.whl (982.7 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

leap_ie-0.0.15-cp310-cp310-musllinux_1_1_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ x86-64

leap_ie-0.0.15-cp310-cp310-musllinux_1_1_i686.whl (4.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.1+ i686

leap_ie-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

leap_ie-0.0.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

leap_ie-0.0.15-cp310-cp310-macosx_11_0_arm64.whl (934.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

leap_ie-0.0.15-cp310-cp310-macosx_10_9_x86_64.whl (978.4 kB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

leap_ie-0.0.15-cp39-cp39-musllinux_1_1_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ x86-64

leap_ie-0.0.15-cp39-cp39-musllinux_1_1_i686.whl (4.8 MB view details)

Uploaded CPython 3.9musllinux: musl 1.1+ i686

leap_ie-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

leap_ie-0.0.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

leap_ie-0.0.15-cp39-cp39-macosx_11_0_arm64.whl (936.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

leap_ie-0.0.15-cp39-cp39-macosx_10_9_x86_64.whl (981.2 kB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

leap_ie-0.0.15-cp38-cp38-musllinux_1_1_x86_64.whl (6.1 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ x86-64

leap_ie-0.0.15-cp38-cp38-musllinux_1_1_i686.whl (5.3 MB view details)

Uploaded CPython 3.8musllinux: musl 1.1+ i686

leap_ie-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

leap_ie-0.0.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

leap_ie-0.0.15-cp38-cp38-macosx_11_0_arm64.whl (929.9 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

leap_ie-0.0.15-cp38-cp38-macosx_10_9_x86_64.whl (971.3 kB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file leap_ie-0.0.15-cp312-cp312-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 81d7cb74d39df685d2fe13317d815366662186c391f3529a863bc57772c96b08
MD5 7181dd44499b504a0b67efbd8d57c6c8
BLAKE2b-256 b00aba77330b1886005fefddb4ef78d14deb8903342034ef2a8345453620b267

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp312-cp312-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp312-cp312-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 a2e2e6e4d0c203064f59b8605c1ad1f1257a1326c864c09a316bc38ec7a6090e
MD5 b606ad32dca9c147b99295afc5b163f6
BLAKE2b-256 da7133a176a0bcc4e0cec78a89c44b60d8581a4d4c1f3f01004f6c3c0d538687

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfc817e25eb2e66245812007484e0fd20f9c3432954ad137ccd1f6e94be4270b
MD5 398f08dfaf153c0c9deec0552419b5fe
BLAKE2b-256 148935268b5e8f1186570a54669e81d208cd52bafefa39c0e19bd64546a0ba37

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f0d0f7a2977ab19a784562053993cb1f518a1eae5743e6c7e35b612da219792c
MD5 b790345a2173a09fa2446e4ed702aa11
BLAKE2b-256 65daf6f0f36d1a42feef8b0f5e9cf1ee19a4e9d529bc1e7a9b6a4aa1307051e4

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0aa37509ec7b5950a1e16adc0f0f61cd4615cd35668489e0fa46bef0a4221f0b
MD5 3110ce94da729eea4424cf1d82e81342
BLAKE2b-256 ce09eae4456202f8fabb82269193ca6392923b532a17660debba915667c3746e

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8ca3d15de15b3cd49563a2a1e0f089e449fae4493e1af593c926e2c7aa369ffc
MD5 3fca2fc44835a24773868ddc66cdf863
BLAKE2b-256 56a85d69b9182168c5a81d48cf8220ea6a355f324fa22a20f74f34f636fb8305

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp311-cp311-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 a27f729cb53218b8c41fc2442ac69453f87bc907dbf7914987b4830dccf32a99
MD5 5fd4bfd2dd6386389bbbc95e9c29e10e
BLAKE2b-256 fe1b529068f68c0d0d48de043213439bec7d442971d6f03874a577a498bfc169

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp311-cp311-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp311-cp311-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 f20e281206f2c4f8a695530c862ab1818311753c2284cae04dbf29cc0cb72dd3
MD5 5073d8fab4ce119e19c9a84ebdc37eab
BLAKE2b-256 64ceaabc523235e94a7a3339a217f7856a4d42c039427ef22c18177b86031cdd

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8da5a6442d2e5c286790c90ff3e1159baad8b2bf5557b1ceb8e9fb030dbe7c1c
MD5 cfbda74fa99ad1e83a104de5ae63b5da
BLAKE2b-256 e9099abca949351d4f5d9c0c0e6292278a36af86200561d09903a059336762f4

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ee8cab9c7b37377da95a32cf302ad549afd30ed56fd8678114ae538f3b7def99
MD5 5f1c23ba9704d17789a86b58a50b4cfe
BLAKE2b-256 30a8bfad7e1cde93ff4f16fc85f099e21253dfc45aa689ecb0365f036c9b8b19

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 798ad1eb971c04c4c0097d0598a780ce583ebd9a9d68dadd55fcb4f2271a2b23
MD5 4efae3a30f3ba47159da698a67bf60fd
BLAKE2b-256 1d5c16b7826b794dfc4d818af133e1778a45cbcc6a86037a76cfb2a2863d4479

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f65a2ce7bf39a03a464a2f00211b2f82189234f20b8cc1e5a8f21eb0e1150af7
MD5 f481a234b820d9d131f1f95fc68ac182
BLAKE2b-256 8e8441e8257a9a33c24543df335f241f74ac96988db0110edec81648cf5dccbf

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp310-cp310-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 0902900c623c157035eb0ccff91b745b1e1d8403cbd64689c3e080a44b84538d
MD5 0ffb250c58b57f236282ade0d8c5bc90
BLAKE2b-256 3222cf1efb1afedb5c506e634d8451f67c802501adc197961fb0163bb7f52d04

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp310-cp310-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp310-cp310-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 0e5a63d9df34663759191ea61f32cbc1dad01fb8dcd17cd59fbbf388130b8657
MD5 d32e4c09c821a124aa5747de53b090cb
BLAKE2b-256 61b1c34767db06230ce37b214394ba35262b7fc7ee3906c33c903f069368741a

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a85782a386b9d43bbcbf5f2e562b916c18f2381a617450c0e30749cd271c41a8
MD5 e915a51809178a0447c0104bf0532408
BLAKE2b-256 318f49d809a109d8b146e224c1afda71042f57914d66851b72f804c874524374

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ace4c3621cb6cb9b5c957f994e0ac59d625ee8531276c7b906d8a0673683a67a
MD5 96c641d24666b62173a9ebe79de08a4b
BLAKE2b-256 52fa74194294dafd6df5a675ac57f94b2048ae19becb3254a5145abfa93f3598

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 efed70aca0444dc5678b958fcfd9cd733b18eb8f59779235eb04ef9865f4fcbd
MD5 28a77ba7a051226eb510513adef667e8
BLAKE2b-256 d7c7386bc75891974687af053afaf68a03c768a903bcf89a111bf25db5317bf8

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 273df26be288ba85bf4b7132d17f0bfa121c4c77fe7c7628b2e1b94b0a5e05e2
MD5 47b210dbf8f77b1bbf8a0e66e450a307
BLAKE2b-256 2a305cec41fc4d8495254e49d6e55a7fe1c8608eaa21ac874b012bd29ffa9409

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp39-cp39-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 99da6b83dc061523cfb7217a3cc74dd2c1355590f12dd8394f79069bdc0cba82
MD5 8ac6d86bf6370837ffb711439f5b8bd8
BLAKE2b-256 46316935eb7b96cad2bfea725ff5f1ec1338d6dbfd40bb6d7409a81ba619c540

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 22d61dc1189613c1a1dd294c74c2f3802a1d94456882096c503e9e60e2698119
MD5 86cac4bcfa5a4ba9f104703a46ed67f9
BLAKE2b-256 3a05c1dc954e2d17b9274f63991bbb69931dbddb0904bfabaa5b2411281c356e

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 29e1881028b333ff9d57eea4210afa4896d60ecf8dda45836c418558dbdb5431
MD5 d42c940b5e85d91a050e06cee80395e3
BLAKE2b-256 c24b95733bcd270ad1dbe19c39896b875ddf7a94608357fa9847b7592c54dfca

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 ec002da4f6852e685a7da266a1470fa30c53520b0d74b49d381cca3a63204364
MD5 8e40636cd68b8dd13de713bb1e9a46e7
BLAKE2b-256 715025887cc0538e3f6ef1f1b1587afe3346f8c245d5912aa1e3740fb9f11f13

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 263269d13db0458392ed944ed8ef5abeab01b118b3339ff7245ff1da7e2c798f
MD5 38289cf33844517ad0a1190a6a950da1
BLAKE2b-256 c8953233b2f1f4dc78190d8a9b26b24df53d097e97a2a5792125dc87b162382c

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 8b0eca21271c1e095fa0d13236b33bdf5638c079c1aba0e88529cb8d0e6e3b0d
MD5 b6da78a501e91b1f9fa484fa5b17c7d6
BLAKE2b-256 644cbc2940cc7c4d03a36ccfaaa2db40448d147ae8406609db40d93998038f57

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp38-cp38-musllinux_1_1_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp38-cp38-musllinux_1_1_x86_64.whl
Algorithm Hash digest
SHA256 6f6dfb87b73586c52a0e7851fff6d2fb16ebac622dbd94059d66880dbe593906
MD5 0d684b3e8e3729745309b416af85be56
BLAKE2b-256 77433f7aa38e8119892eeab29bbcf6c1718340e1c5f48e8be213eb5e014da696

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 af7ac4dc9af5ab61305571cdda9a1009e94152891ce3578213d39ad0fe1c316b
MD5 40f8a4eac89b649fe85308e991eb3ebe
BLAKE2b-256 a0ce9dc713fa522cafd7f3c86c43f07dea00783618d953484305b5d549c0d57a

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0a3a607c4bfb6bc778c35329e1ca0239396ec40ed31f50f10da0396583a2f5e4
MD5 b7fec065414408adda7e3e595d7c9277
BLAKE2b-256 7fa6445013a5b347f103636caa90f658e363ec41dab241c37428d0c92a195e9f

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 481c73a9a33f804624f2c7ea18d13f5016bbbc55f899183d13335b00c62da024
MD5 a526ec5e63c28e6b956bd2d1ed2f4e1d
BLAKE2b-256 152752c11d1ef31fe05dd64ff607b45dbcd088ddb33e0be86d3eeb32a217fd4b

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ee8cc1aeb83bedbcfacc95a76585d7787a301690cf8ed57250a66d14c0be1189
MD5 4dc60efaff81b1c2b053e8c0de05bf7b
BLAKE2b-256 4bffa36670ca8a275bd5229f4bebf34583208a01bdf30e3b486c88d8c6f4eb83

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.15-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for leap_ie-0.0.15-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 360647f0bd2789875cd767812597af73f9f6059cf14384cdbfa078ae6b0877a4
MD5 50efbb3a74f77b6df732fc829a33dfc2
BLAKE2b-256 2116ccc2faa6e7c763745c457e453e87ab555f3b10bbe5222edc65b47780478d

See more details on using hashes here.

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