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.1.0-cp312-cp312-win_arm64.whl (913.0 kB view details)

Uploaded CPython 3.12Windows ARM64

leap_ie-0.1.0-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12Windows x86-64

leap_ie-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

leap_ie-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 10.9+ x86-64

leap_ie-0.1.0-cp311-cp311-win_arm64.whl (938.9 kB view details)

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

leap_ie-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

leap_ie-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

leap_ie-0.1.0-cp310-cp310-win_arm64.whl (935.8 kB view details)

Uploaded CPython 3.10Windows ARM64

leap_ie-0.1.0-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

leap_ie-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

leap_ie-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

leap_ie-0.1.0-cp39-cp39-win_arm64.whl (938.2 kB view details)

Uploaded CPython 3.9Windows ARM64

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

Uploaded CPython 3.9Windows x86-64

leap_ie-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.9+ x86-64

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

Uploaded CPython 3.8Windows x86-64

leap_ie-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.8macOS 11.0+ ARM64

leap_ie-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 913.0 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.1.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 5dd539826552d7f674fd3d0b4b330b41e9ff9d85686d8e153f4a6d4168ac042e
MD5 3ca5d78cb38ec0d5ba68eebd62aad318
BLAKE2b-256 0cc9da5b8504dfc9e119a76916e9ca1984e21a5f42ae8ee0165604b4a2103fa4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.1 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.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6199e76058838d31dbbbf0768896591ca7ec06d7236686c5c567e217d5530217
MD5 cb43345fea648e37397b8a7879902773
BLAKE2b-256 d3cb960d8dde34ad7b55a5186c82e19df9eb98f497984b75152a2b04c1eebbac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6e720aa878fe3fd1470b04923de8bbf942c821313eb8d8a75e3ab818f1766201
MD5 9b2fa5394d7f1384f6dee4952b38019c
BLAKE2b-256 715d96e6133435d25697d9faabadcda2e2cda7da00d17e90224ddbff3c6714bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 18c071f071c46036195e84f338b4c021f9e834f1e65b2ef24b64f54dc21f9fbe
MD5 6b55b3292511dd5e652f49b84a7fd4e6
BLAKE2b-256 5309efcbabd1853830526b047661a9b6259d92e833c19cb4249188cebf696498

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4fa5ee5366f1279979f0fdd91216d339950f29362bb532230d0475df83a13b62
MD5 4667415ee92da7cb7b5dc06eaf72631f
BLAKE2b-256 8c5e81988ee1e4f6f1ae23a4b4adc683a4a292b102c61150905998796e480458

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 938.9 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.1.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 c1f366f1d1afe86d9e7630ae8ace534c322ea44df86503a51399ec315b7d578a
MD5 54261a1bdbbe3f30829e2d430e087b3a
BLAKE2b-256 db46caa5a690567d26024428991eb3c0bb25fd25526c69692f67d41fcf7d4b4f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-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.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 a324f10b59b6c2602aa1216876e54b6b857169069a856cc39e5645828809979e
MD5 c17ebc67674a04480e7976ad75665cc2
BLAKE2b-256 dab1bb077959db91cabce66d8f01c0cc80d1e12de87919125b05f61848029436

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0318f21206f00f41c3a91579970733a0b479686c4a5fffbc83dcc1b4ffe96108
MD5 77833dead07971609b115caa6b293753
BLAKE2b-256 986fda9517c1e30e9d49737872b1d98828e52c384b63bd0b6a5f7c1adffb9da7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f834f86c3bd72500a7f8ff95f342a5d2bc74d62b9bfa449a5c7f467b624fd06b
MD5 dd3c42faf314c4c034e28ce87a3f1e51
BLAKE2b-256 89bfdd1660555caf3bae1b2d6752bff495657560fa74af81431d04a0654a49f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7cb0ca1d110dbadc54a87afb8fbccbd5d6d1ef8c1ab133ddedc1b20483512f29
MD5 07e910dc2a394c043ec7375a90176fd0
BLAKE2b-256 f63a03982d52ef23930ba1fb63e3d2f8e48b85a6b52fd907b25a3b8f8e94cf73

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-cp310-cp310-win_arm64.whl
  • Upload date:
  • Size: 935.8 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.1.0-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 442577dc12c825a9341532397fb419e1cad0b8595ada3bcc36c0baff419e8dc8
MD5 8c7b90e014b94d08bbda56e415954730
BLAKE2b-256 debe84f27c98dc09011ca73b5996e92a2b30f1f48a9e91325a26e519de0e24ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 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.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a5b08996d01da1349ceb141ea256822a59bc4cc81771227480e7bc300a948673
MD5 1ff093e37f42c694553b72b804a55ac7
BLAKE2b-256 57ce5322ee663c00cd6c7eb0681400da46656901ccfa3a8ab4157b921379b487

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3d0ca6efb1aa6a2549a10a278bd3e5aaf3d6dbaf637a21a35e7bc2a7cf94f5d8
MD5 c82a35ab8476f5b221e29b733eb9859d
BLAKE2b-256 b4f1ad88e84e674ae0b105c54e38f5808f9218f633328cdfdb4cca2bfddf9d26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9ad661ba1fa7609e6f798c24573233d6b6ba1885c74a63e5f8f9e542b49b51a0
MD5 6adcff5d3fbdfcb8c0b0b25bdb2cd9e3
BLAKE2b-256 a9c9fdceda59c7819bb86b41188d6accf77b45013683ed8102d03b1c2aa079d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bddf43b76636223cec3c26e7c497b2e2e865772b23dd3e447fd6a54d894e5c58
MD5 0a044267a0b238540d75952d546455cc
BLAKE2b-256 f14c1452338b619567a2931b852ed58174d9c804464d73e29105fdfbaba2840c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 938.2 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.1.0-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 ef1ab0d23916dff88848897a410554e39c560ff283368087d8c858600615561e
MD5 c3b7c2b731d8b5de8b049bd6a9b22653
BLAKE2b-256 0edc7d21d01e721d1dc4e6fb4728ca83e287432ac5d4169a81657d8d7fa03efa

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-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.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 87980a93d01f88a95a8afecd853ed2f6554c0a8354ce7a035b5219f16605a27d
MD5 61837cfecf80cf8b00839116b215e1ad
BLAKE2b-256 af608261d61d88513439850eb929fa8a44ed76759bf285562edd99fcf51ac269

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 db31a89ba8540573db5c970f8b42a25c1d285f24d71b7362fe210800f0845192
MD5 88a333498c28ca8a89f9e6097bed659b
BLAKE2b-256 89381408144b50c385efec255254ef0c1d1c2ed45e82c4c48fc58836d0c0c67e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 068eb28a8dfe07e804d5d182c75a24bfb566234ee0288a5aab06d4fbb4971b41
MD5 9a38b09fdeb4674ea3c7e1bc5fd2307e
BLAKE2b-256 8b03061589aff0345ff6a697a1a6b10495eb0fd0bf521c3bba7d84b4055be6e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c6444106c290edc333c62e7ad118bab2dac59875be0f1c356586e90bfe0c14f0
MD5 76392bc4a6c6db64c03ac4a4deb6da78
BLAKE2b-256 25500aca10bb09b595e7aaa2753453ea0d27c8de4ed57d7d162d83228d9905d6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: leap_ie-0.1.0-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.1.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 13ffd5d3f9220db8828d7ad678acb55a7756c2321b5d010b577f83b8dcf8b67d
MD5 dc866d0460126f17f8ae22611d50d06b
BLAKE2b-256 5f187e7f827df24519fa805414c71979436545d7a35824463795dcf2afdbad2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf611a3ce1648e024d75ce15f2a29d2dc86bcc168563a1b798c33fd9bf07e826
MD5 883c2a0e3ac3fd701a497ccf76bfdbf6
BLAKE2b-256 2e71f95c007e08b5666c1ba602e99a371f3fb397977fde147265e065ad40c5da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a38d58c9b7dba77c24e043951459c3f3198e9ff905a0e1519e65b60796ffcee
MD5 f43434dc277528b961c79b27f6f5f2a3
BLAKE2b-256 c8821a57063221f138b28d75639ddfdf8fb1af2f3c6368810e6841108baa769c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for leap_ie-0.1.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d8136c5370e3c850f18ebdab81e87aec00edd5e58d28bc74850e0b6ef823eca9
MD5 709c68b78f0b635696644425daa2b4f7
BLAKE2b-256 68d515e90bddcfc66917f14cd2cf3dd82c4b904d994620c2d9a777e36c339fdb

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