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

During installation leap-ie does not modify any dependencies related to PyTorch or Tensorflow in order to preserve your development environment. However, leap-ie requires that the following version requirements are met:

PyTorch

Library Version
torch >=1.13.0
torchvision >=0.14.0

Tensorflow

Library Version
tensorflow >=2.12.0

If you do not have the required libraries installed, you can quickly install them by specifying them as extras:

PyTorch

pip install leap-ie[with-torch]

Tensorflow

pip install leap-ie[with-tensorflow]

Generating an API Key

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

Get started!

from leap_ie.vision import engine
from leap_ie.vision.models import get_model

preprocessing_fn, model, class_list = get_model('torchvision.resnet18')

config = {"leap_api_key": "YOUR_API_KEY"}

results_df, results_dict = engine.generate(project_name="leap!", model=model, class_list=class_list, config = config, target_classes=[1], preprocessing=preprocessing_fn)

We provide easy access to all image classification torchvision models via leap_ie.models.get_model(torchvision.[name of model]). We can also automatically pull image classification models from huggingface - just use the model id: get_model('nateraw/vit-age-classifier')

Usage

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

from leap_ie.vision import engine

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"},
)

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 most models this will work out of the box, but if your model returns something else (e.g. a dictionary, or probabilities) you might have to edit it, or add a wrapper before passing it to engine.generate().

class ModelWrapper(nn.Module):
    def __init__(self, model):
        super().__init__()
        self.model = model

    def forward(self, x):
        x = self.model(x)
        return x["logits"]

model = ModelWrapper(your_model)

Results

The generate function returns a pandas dataframe and a dictionary of numpy arrays. If you're in a jupyter notebook, you can view these dataframe inline using engine.display_df(df_results), but for the best experience we recommend you head to the leap app, or log directly to your weights and biases dashboard.

For more information about the data we return, see 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.

Supported Frameworks

We support both pytorch and tensorflow! Specify your package with the mode parameter, using 'tf' for tensorflow and 'pt' for pytorch.

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",
}
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.vision import engine
from leap_ie.vision.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).
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_df(df_results)

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.vision import engine
from leap_ie.vision.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).
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_df(df_results)

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.vision.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 predicted 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.

  • 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 a microscope. Best practice is to start with zero, and gradually increase.

    • Default: 0
  • 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
  • find_lr_steps (int): How many steps to tune the learning rate over at the start of the generation process. We do this automatically for you, but if you want to tune the learning rate manually, set this to zero and provide a learning rate with lr.

    • Default: 500
  • 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: 1500

Here are all of the config options currently available:

config = {
    alpha_mask: bool = False
    alpha_only: bool = False
    alpha_weight: int = 1
    baseline_init: int = 0
    diversity_weight: int = 0
    find_lr_steps: int = 500
    hf_weight: int = 0
    input_dim: tuple = [3, 224, 224]
    isolate_classes: list = None
    isolation: bool = True
    isolation_hf_weight: int = 1
    isolation_lr: float = 0.05
    log_freq: int = 100
    lr: float = 0.05
    max_isolate_classes: int = 3
    max_lr: float = 1.0
    max_steps: int = 1500
    min_lr: float = 0.0001
    mode: str = "pt"
    num_lr_windows: int = 50
    project_name: str
    samples: list = None
    seed: int = 0
    stop_lr_early: bool = True
    transform: str = "xl"
    use_alpha: bool = False
    use_baseline: bool = False
    use_hipe: bool = 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
  • find_lr_steps (int): How many steps to tune the learning rate over at the start of the generation process. We do this automatically for you, but if you want to tune the learning rate manually, set this to zero and provide a learning rate with lr.

    • Default: 500
  • 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]
  • isolate_classes (list): If you'd like to isolate features for specific classes, rather than the top n, specify their indices here for EACH target, e.g. [[2,7,8], [2,3]].

    • Default: None
  • isolation (bool): Whether to isolate features for entangled classes. Set to False if you want prototypes only.

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

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

    • Default: 0.05
  • 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. We find this for you automatically between max_lr and min_lr, but if you would like to tune it manually, set find_lr_steps to zero and provide it here.

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

    • Default: min(3, len(class_list))
  • max_lr (float): Maximum learning rate for learning rate finder.

  • Default: 1.0

  • 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
  • min_lr (float): Minimum learning rate for learning rate finder.

  • Default: 0.0001

  • seed (int): Random seed for initialisation.

    • Default: 0
  • transform (str): Random affine transformation to guard against adversarial noise. You can also experiment with the following options: ['s', 'm', 'l', 'xl']. You can also set this to None and provide your own transformation in `engine.generate(preprocessing=your transformation).

    • Default: xl
  • 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
  • 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
  • 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.31-cp312-cp312-win_arm64.whl (863.7 kB view details)

Uploaded CPython 3.12Windows ARM64

leap_ie-0.0.31-cp312-cp312-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.12Windows x86-64

leap_ie-0.0.31-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.2 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

leap_ie-0.0.31-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

leap_ie-0.0.31-cp312-cp312-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

leap_ie-0.0.31-cp311-cp311-win_arm64.whl (887.8 kB view details)

Uploaded CPython 3.11Windows ARM64

leap_ie-0.0.31-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

leap_ie-0.0.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

leap_ie-0.0.31-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

leap_ie-0.0.31-cp311-cp311-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

leap_ie-0.0.31-cp310-cp310-win_arm64.whl (884.7 kB view details)

Uploaded CPython 3.10Windows ARM64

leap_ie-0.0.31-cp310-cp310-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.10Windows x86-64

leap_ie-0.0.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

leap_ie-0.0.31-cp310-cp310-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

leap_ie-0.0.31-cp310-cp310-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

leap_ie-0.0.31-cp39-cp39-win_arm64.whl (886.9 kB view details)

Uploaded CPython 3.9Windows ARM64

leap_ie-0.0.31-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

leap_ie-0.0.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

leap_ie-0.0.31-cp39-cp39-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

leap_ie-0.0.31-cp39-cp39-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

leap_ie-0.0.31-cp38-cp38-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.8Windows x86-64

leap_ie-0.0.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

leap_ie-0.0.31-cp38-cp38-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

leap_ie-0.0.31-cp38-cp38-macosx_10_9_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

Details for the file leap_ie-0.0.31-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 863.7 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 eab7122046b80d6406eee398632aae8dfa5e9befc76ec417999b4afe816e20e0
MD5 d38ac2383c2e6cd240fe5972080d9243
BLAKE2b-256 bba331bb48fac7462cc490ea797478306eb5a259251ca8a75b5c40f0fc09b53d

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e3561a31dde6d08f8546507f2d211a81b4add595e5fce6ecf3a43cf90a6b6a80
MD5 ac4e15ef164a8b467a901e7d162fd5f2
BLAKE2b-256 d1855214905122e707e7e364ae5aeb1fe8596695925b267ee48b7950677a8c77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00f21862ae426177f00c7d776051e7ff077a4a7087047237e8e3c4bf410c3909
MD5 67e3e0fc49d736dcc5b0cc7a63580f17
BLAKE2b-256 f84d2097bac0a324bed087ec33b6b2d40c3b311a0a3e37c8d16512241e2c194e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 12df5927d88cd16d49350ce19e52fdcb2fcae9328a6a6392e8d9a5352ff02e78
MD5 63d0d4d8a78f2e2334b950f51bb3d25a
BLAKE2b-256 fd3233a1ef42a5db16efc64ae97592fabd9a444982ef4e025fd3bd9acebca04c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 0b075fddb3c7e1b752dc0f447a1b89d332a54de2c8cd77c1c09e95d781a22df8
MD5 cc0becbb9338800098ea831eaba0a3e0
BLAKE2b-256 8b107be5efed06c8f46d74528bc15a9c49614d2c5f6856ca90baf9ca6fabcfad

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 887.8 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 fe73d94e3b7b09cdb5e3b3c888324c684545226e9a2b4901efecf10a313cb0c7
MD5 66241cc49752096aa305abbd7d9ac244
BLAKE2b-256 8f8cc6e20f719fb9e40accca82e71ccb6bdda5c82c12edf5afc07d38557f1416

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2cd7c7e8507fb796960c68c6711b2134578903f5bba76baa5828d7e90304f031
MD5 94291e0fb3464ff4e76a85490e93efd4
BLAKE2b-256 830e816d7180e4c17cb9b349a38e491a68eaac5e7ef5dd6b5106cdd40f54e33a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14836c25f1c4e560a271a30d792ea08e68377cd20318543044e9c4c60dea2ff3
MD5 170e234fbf8a9ea186358e0e14816055
BLAKE2b-256 db82d9e5eba2cb88d9e431fef232ee8bad77faaaff3439a82c49e4c0597bf4cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 410c09a0cef7cb308317aab4d0f05ff5dae9834241ebbb9723009c46b9c72738
MD5 5b48d3b47591f61c16468f3bd2c38dd3
BLAKE2b-256 accbf2af95b4af49b574cf49ec8adf638023230cf43ee7cae90d27aa2a622cd8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 9eed93f05624f38a9553c6f64c2d6ea3329840e30b608ffc75f0b90a19da30a3
MD5 68bea9816ef2b9fc89388045bd1daaf0
BLAKE2b-256 0de57e7b516cd6a826a29cc800fdca2b9342cf1513afaffc44405cb747ffe757

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp310-cp310-win_arm64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 884.7 kB
  • Tags: CPython 3.10, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 a6508c030040602bfa0ed1dc184a08e02fa481bbdfa5c78a46fcb576646b9e4c
MD5 2027d370782a59bbf904968ba0abe279
BLAKE2b-256 861e3ba155640b3f4c54df9c2d9137e7bca52ce8f8a3fc9f8dbbfec155f47b6c

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d78c18f1d0070bafb402c11f00254b4a36df65bd731a0ad0c1286ec50230100f
MD5 ef9f4fc64f59339c0287423cc3b89605
BLAKE2b-256 a40f9b618aca24ec92f616fc9583639070adcdf524928f72758b7e30c6a4127f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f2aeb05a0b762f3f880d74a1bbb4ab14fe96dfb1c24afefac960b46707fecf5
MD5 e807b24aad380614f35a4689824e1e52
BLAKE2b-256 1c406dded5e9edfb6fe9cd8fa007c6cb7bc65f453dafe0a4435de3b5b6be7bfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9f4f122eb504bb6bc1b88f9e94f7fcd35e0242a208419ff9cf5df4aec92f051
MD5 bd5b9d25435c2aade388f323fa66d4f7
BLAKE2b-256 3d29cae36ba23e3959964bb03725f2580906604f7dcb2138f3843939f249184e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 556b8eaec47415dc63cdccf8c63d4d054912cf7575a3feaecf9a8182456bbe78
MD5 0ec8406445f39f05bafd8698f18c08ce
BLAKE2b-256 f774f5b59076f21c8bf59d1346ddffaad5af35a33c97e9e589623cf46859ec41

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 886.9 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 c9a263dfc0359c21f8337b7ddb14d0855648791edcb582fc49ef402a873fc358
MD5 08d8b95968e07a17a3fa5ab064f719d2
BLAKE2b-256 d16a67dedd0ec70f24d8ae94db124d2ba444b4e2fca41737794043ab2167cc3f

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b964ed72d694c482cb372c9ee862d80fa2582afef7e1874eccc4157bbc2b4397
MD5 d1781fd6be1f45a3addafe7386ee8fcc
BLAKE2b-256 a458059c13c26a1e4d13e52f7619c9cf88ef1e956a497549912975003d4b043f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 588291f44e8a0bc4f7852a7fdc5d85d5d301c2607bba578f4a47cecbc9d251a9
MD5 78227ca3750ef3804f9b0f8402792a4b
BLAKE2b-256 41a62422b99fd32b405e2b971a2fa2fc03680703110dd446b23c4f18ec04bea0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2e27a00a95ade5701c0e66a85f2e533753797e28922c1b5eeddb0e09da7e6d4e
MD5 9f79942f78863b2f67ca2cdcc3d6d438
BLAKE2b-256 ca049e5fbb9e8b6232ab4016afa1a92357db4ebc02784b06c2d32839800790dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bc1bb874f2714cd014ac62f1590f7d21f4f67238267b319f4f6df7dbe9d9cd8c
MD5 e985eb4f8d986f8cb1e6615a91e95124
BLAKE2b-256 0b861c61b67fa3193860dc93f16c5d3428d41812b45b1f52a30acde994de953c

See more details on using hashes here.

File details

Details for the file leap_ie-0.0.31-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: leap_ie-0.0.31-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for leap_ie-0.0.31-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2e00ec92c925902faffb6f72f12f6f63540e664d690ba5fb471ec5cbe8790204
MD5 3cbcdc90fb380342b1eec3d1c6203f80
BLAKE2b-256 24b4a145b2a06adfdd81752262418dbd75f09046b9c823a65d460f2060ea5d0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f17107b10f875c816a34385a13b1c95901c8f29bb9a47f59d34df8c8eef0fa0c
MD5 208ff4acd7631c26438150348208f755
BLAKE2b-256 bd9971cc5e284c7776bc6f7b7527daff2b1a734b95b59b9e9f57405f5a675d29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b493ecad798c7be46d188a871362e5527a3eb2644cdc64f94a1ce22ad5574e17
MD5 c1ae906c9ac7e2c685f0823674fa67a9
BLAKE2b-256 c7a3fd912c6eed528fcb163a609a77ac37799b0a17ff7d3ae7bcec85e94c87ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.0.31-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 99064d84d81319a3e19474804b0d17c218ceba0f93a9ee0e9a6b460eea3b7c65
MD5 922a3442b611f6a4ca1d612b6f85bcb3
BLAKE2b-256 e08006151becb9813188621be41e3b8ca0110e1099e5ba75d651a7682446fab0

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