Skip to main content

Lightweight data-centric framework for working with scientific data

Project description

DLite

A lightweight data-centric framework for semantic interoperability

CI tests GitHub release PyPi Documentation

Content

DLite is a lightweight interoperability framework, for working with and sharing scientific.

About DLite

DLite is a C implementation of the SINTEF Open Framework and Tools (SOFT), which is a set of concepts and tools for how to efficiently describe and work with scientific data.

All data in DLite is represented by an Instance, which is build on a simple data model. An Instance is identified by a unique UUID and have a set of named dimensions and properties. It is described by its Metadata. In the Metadata, each dimension is given a name and description (optional) and each property is given a name, type, shape (optional), unit (optional) and description (optional). The shape of a property refers to the named dimensions.

When an Instance is instantiated, you must suply a value to the named dimensions. The shape of the properties will be set according to that. This ensures that the shape of the properties are internally consistent.

A Metadata is also an Instance, and hence described by its meta-metadata. By default, DLite defines four levels of metadata; instance, metadata, metadata schema and basic metadata schema. The basic metadata schema describes itself, so no further meta levels are needed. The idea is if two different systems describes their data model in terms of the basic metadata schema, they can easily be made semantically interoperable.

The datamodel of DLite.

An alternative and more flexible way to enable interoperability is to use a common ontology. DLite provides a specialised Instance called Collection. A collection is essentially a container holding a set of Instances and relations between them. But it can also relate an Instance or even a dimension or property of an instance to a concept in an ontology. DLite allows to transparently map an Instance whos Metadata corresponding to a concept in one ontology to an Instance whos Metadata corresponding to a concept in another ontology. Such mappings can easily be registered (in C or Python) and reused, providing a very powerful system for achieving interoperability.

DLite provides also a common and extendable API for loading/storing Instances from/to different storages. New storage plugins can be written in C or Python.

See doc/concepts.md for more details.

DLite is licensed under the MIT license.

Example

Lets say that you have the following Python class

class Person:
    def __init__(self, name, age, skills):
        self.name = name
        self.age = age
        self.skills = skills

that you want to describe semantically. We do that by defining the following metadata (using json) identifying the Python attributes with dlite properties. Here we define name to be a string, age to be a float and skills to be an array of N strings, where N is a name of a dimension. The metadata uniquely identifies itself with the "name", "version" and "namespace" fields and "meta" refers the the metadata schema (meta-metadata) that this metadata is described by. Finally are human description of the metadata itself, its dimensions and its properties provide in the "description" fields.

{
  "name": "Person",
  "version": "0.1",
  "namespace": "http://onto-ns.com/meta",
  "meta": "http://onto-ns.com/meta/0.3/EntitySchema",
  "description": "A person.",
  "dimensions": [
    {
      "name": "N",
      "description": "Number of skills."
    }
  ],
  "properties": [
    {
      "name": "name",
      "type": "string",
      "description": "Full name."
    },
    {
      "name": "age",
      "type": "float",
      "unit": "year",
      "description": "Age of person."
    },
    {
      "name": "skills",
      "type": "string",
      "dims": ["N"],
      "description": "List of skills."
    }
  ]
}

We save the metadata in file "Person.json". Back in Python we can now make a dlite-aware subclass of Person, instantiate it and serialise it to a storage:

import dlite

# Create a dlite-aware subclass of Person
DLitePerson = dlite.classfactory(Person, url='json://Person.json')

# Instantiate
person = DLitePerson('Sherlock Holmes', 34., ['observing', 'chemistry',
    'violin', 'boxing'])

# Write to storage (here a json file)
person.dlite_inst.save('json://homes.json?mode=w')

To access this new instance from C, you can first generate a header file from the meta data

$ dlite-codegen -f c-header -o person.h Person.json

and then include it in your C program:

// homes.c -- sample program that loads instance from homes.json and prints it
#include <stdio.h>
#include <dlite.h>
#include "person.h"  // header generated with dlite-codegen

int main()
{
  /* URL of instance to load using the json driver.  The storage is
     here the file 'homes.json' and the instance we want to load in
     this file is identified with the UUID following the hash (#)
     sign. */
  char *url = "json://homes.json#315088f2-6ebd-4c53-b825-7a6ae5c9659b";

  Person *person = (Person *)dlite_instance_load_url(url);

  int i;
  printf("name:  %s\n", person->name);
  printf("age:   %g\n", person->age);
  printf("skills:\n");
  for (i=0; i<person->N; i++)
    printf("  - %s\n", person->skills[i]);

  return 0;
}

Now run the python file and it would create a homes.json file, which contains an entity information. Use the UUID of the entity from the homes.json file, and update the url variable in the homes.c file.

Since we are using dlite_instance_load_url() to load the instance, you must link to dlite when compiling this program. Assuming you are using Linux and dlite in installed in $HOME/.local, compiling with gcc would look like:

$ gcc homes.c -o homes -I$HOME/.local/include/dlite -L$HOME/.local/lib -ldlite -ldlite-utils

Or if you are using the development environment , you can compile using:

$ gcc -I/tmp/dlite-install/include/dlite -L/tmp/dlite-install/lib -o homes homes.c -ldlite -ldlite-utils

Finally you can run the program with

$ DLITE_STORAGES=*.json ./homes
name:  Sherlock Holmes
age:   34
skills:
  - observing
  - chemistry
  - violin
  - boxing

Note that we in this case have to define the environment variable DLITE_STORAGES in order to let dlite find the metadata we stored in 'Person.json'. There are ways to avoid this, e.g. by hardcoding the metadata in C using dlite-codegen -f c-source or in the C program explicitely load 'Person.json' before 'homes.json'.

This was just a brief example. There is much more to dlite. Since the documentation is still not complete, the best source is the code itself, including the tests and examples.

Main features

See doc/features.md for a more detailed list.

  • Enables semantic interoperability via simple formalised metadata and data
  • Metadata can be linked to or generated from ontologies
  • Code generation for simple integration in existing code bases
  • Plugin API for data storages (json, hdf5, rdf, yaml, postgresql, blob, csv...)
  • Plugin API for mapping between metadata
  • Bindings to C, Python and Fortran

Installing DLite

Installing with pip

If you are using Python, the easiest way to install DLite is with pip:

pip install DLite-Python

Note, currently only Linux versions for Python 3.7, 3.8, 3.9 and 3.10 are available. But Windows versions will soon be available.

Docker image

A docker image is available on https://github.com/SINTEF/dlite/packages.

Compile from sources

The sources can be cloned from GitHub

git clone ssh://git@git.code.sintef.no/sidase/dlite.git

Dependencies

Runtime dependencies

  • HDF5, optional (needed by HDF5 storage plugin)
  • librdf, optional (needed by RDF (Redland) storage plugin)
  • Python 3, optional (needed by Python bindings and some plugins)
    • NumPy, required if Python is enabled
    • PyYAML, optional (used for generic YAML storage plugin)
    • psycopg2, optional (used for generic PostgreSQL storage plugin)
    • pandas, optional (used for csv storage plugin)

Build dependencies

  • cmake, required for building
  • hdf5 development libraries, optional (needed by HDF5 storage plugin)
  • librdf development libraries, optional (needed by librdf storage plugin)
  • Python 3 development libraries, optional (needed by Python bindings)
  • NumPy development libraries, optional (needed by Python bindings)
  • SWIG v3, optional (needed by building Python bindings)
  • Doxygen, optional, used for documentation generation
  • valgrind, optional, used for memory checking (Linux only)
  • cppcheck, optional, used for static code analysis

Compiling

Build and install with Python

Given you have a C compiler and Python correctly installed, you should be able to build and install dlite via the python/setup.py script:

cd python
python setup.py install

Build on Linux

Install the hdf5 (does not include the parallel component) libraries

On Ubuntu:

sudo apt-get install libhdf5-serial-dev

On Redhad-based distributions (Fedora, Centos, ...):

sudo dnf install hdf5-devel

Build with:

mkdir build
cd build
cmake ..
make

Before running make, you may wish to configure some options with ccmake ..

For example, you might need to change CMAKE_INSTALL_PREFIX to a location accessible for writing. Default is ~/.local

To run the tests, do

make test        # same as running `ctest`
make memcheck    # runs all tests with memory checking (requires
                 # valgrind)

To generate code documentation, do

make doc         # direct your browser to build/doc/html/index.html

To install dlite locally, do

make install

Build on Windows

See here for detailed instructions for building with Visual Studio.

Quick start with VS Code and Remote Container

Using Visual Studio Code it is possible to do development on the system defined in Dockerfile.

  1. Download and install Visual Studio Code.
  2. Install the extension Remote Development.
  3. Clone dlite and initialize git modules: git submodule update --init.
  4. Open the dlite folder with VS Code.
  5. Start VS Code, run the Remote-Containers: Open Folder in Container... command from the Command Palette (F1) or quick actions Status bar item. This will build the container and restart VS Code in it. This may take some time the first time as the Docker image must be built. See Quick start: Open an existing folder in a container for more information and instructions.
  6. In the container terminal, perform the first build and tests with mkdir /workspace/build; cd /workspace/build; cmake ../dlite; make && make test.

Build documentation

If you have doxygen installed, the html documentation should be generated as a part of the build process. It can be browsed by opening the following file in your browser:

<build>/doc/html/index.html

where <build> is your build folder. To only build the documentation, you can do:

cd build
cmake --build . --target doc

If you have LaTeX and make installed, you can also the latex documentation with

cd build
cmake --build . --target latex

which will produce the file

<build>/doc/latex/refman.pdf

Setting up the environment

If dlite is installed in a non-default location, you may need to set the PATH, LD_LIBRARY_PATH, PYTHONPATH and DLITE_ROOT environment variables. See the documentation of environment variables for more details.

An example of how to use dlite is shown above. See also the examples in the examples directory for how to link to dlite from C and use of the Fortran bindings.

Short vocabulary

The following terms have a special meaning in dlite:

  • Basic metadata schema: Toplevel meta-metadata which describes itself.
  • Collection: A specialised instance that contains references to set of instances and relations between them. Within a collection instances are labeled. See also the SOFT5 nomenclauture.
  • Data instance: A "leaf" instance that is not metadata.
  • Entity: May be any kind of instance, including data instances, metadata instances or meta-metadata instances. However, for historical reasons it is often used for "standard" metadata that are instances of meta-metadata "http://onto-ns.com/meta/0.3/EntitySchema".
  • Instance: The basic data object in DLite. All instances are described by their metadata which itself are instances. Instances are identified by an UUID.
  • Mapping: A function that maps one or more input instances to an output instance. They are an important mechanism for interoperability. Mappings are called translators in SOFT5.
  • Metadata: a special type of instances that describe other instances. All metadata are immutable and has an unique URI in addition to their UUID.
  • Meta-metadata: metadata that describes metadata.
  • Relation: A subject-predicate-object triplet. Relations are immutable.
  • Storage: A generic handle encapsulating actual storage backends.
  • Transaction: A not yet implemented feature, that enables to represent the evolution of the state of a software as a series of immutable instances. See also the SOFT5 nomenclauture.
  • uri: A uniform resource identifier (URI) is a generalisation of URL, but follows the same syntax rules. In dlite, the term "uri" is used as an human readable identifier for instances (optional for data instances) and has the form namespace/version/name.
  • url: A uniform resource locator (URL) is an reference to a web resource, like a file (on a given computer), database entry, web page, etc. In dlite url's refer to a storage or even an specific instance in a storage using the general syntax driver://location?options#fragment, where options and fragment are optional. If fragment is provided, it should be the uuid or uri of an instance.
  • uuid: A universal unique identifier (UUID) is commonly used to uniquely identify digital information. DLite uses the 36 character string representation of uuid's to uniquely identify instances. The uuid is generated from the uri for instances that has an uri, otherwise it is randomly generated.

License

DLite is licensed under the MIT license. However, it include a few third party source files with other permissive licenses. All of these should allow dynamic and static linking against open and propritary codes. A full list of included licenses can be found in LICENSES.txt.

Acknowledgment

In addition from internal funding from SINTEF and NTNU this work has been supported by several projects, including:

  • AMPERE (2015-2020) funded by Forskningsrådet and Norwegian industry partners.
  • FICAL (2015-2020) funded by Forskningsrådet and Norwegian industry partners.
  • SFI Manufacturing (2015-2023) funded by Forskningsrådet and Norwegian industry partners.
  • SFI PhysMet(2020-2028) funded by Forskningsrådet and Norwegian industry partners.
  • OntoTrans (2020-2024) that receives funding from the European Union’s Horizon 2020 Research and Innovation Programme, under Grant Agreement n. 862136.
  • OpenModel (2021-2025) that receives funding from the European Union’s Horizon 2020 Research and Innovation Programme, under Grant Agreement n. 953167.
  • DOME 4.0 (2021-2025) that receives funding from the European Union’s Horizon 2020 Research and Innovation Programme, under Grant Agreement n. 953163.
  • VIPCOAT (2021-2025) that receives funding from the European Union’s Horizon 2020 Research and Innovation Programme, under Grant Agreement n. 952903.

DLite is developed with the hope that it will be a delight to work with.

Project details


Download files

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

Source Distribution

DLite-Python-0.3.10.tar.gz (22.4 kB view details)

Uploaded Source

Built Distributions

DLite_Python-0.3.10-cp310-cp310-win_amd64.whl (314.7 kB view details)

Uploaded CPython 3.10 Windows x86-64

DLite_Python-0.3.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

DLite_Python-0.3.10-cp39-cp39-win_amd64.whl (314.7 kB view details)

Uploaded CPython 3.9 Windows x86-64

DLite_Python-0.3.10-cp39-cp39-musllinux_1_1_i686.whl (332.5 kB view details)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

DLite_Python-0.3.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

DLite_Python-0.3.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl (15.6 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686

DLite_Python-0.3.10-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

DLite_Python-0.3.10-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl (7.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ i686

DLite_Python-0.3.10-cp38-cp38-win_amd64.whl (314.7 kB view details)

Uploaded CPython 3.8 Windows x86-64

DLite_Python-0.3.10-cp38-cp38-musllinux_1_1_i686.whl (332.4 kB view details)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

DLite_Python-0.3.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

DLite_Python-0.3.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl (15.6 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686

DLite_Python-0.3.10-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

DLite_Python-0.3.10-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl (7.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ i686

DLite_Python-0.3.10-cp37-cp37m-win_amd64.whl (313.6 kB view details)

Uploaded CPython 3.7m Windows x86-64

DLite_Python-0.3.10-cp37-cp37m-musllinux_1_1_i686.whl (332.8 kB view details)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

DLite_Python-0.3.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

DLite_Python-0.3.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl (15.6 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686

DLite_Python-0.3.10-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (6.9 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

DLite_Python-0.3.10-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl (7.0 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ i686

File details

Details for the file DLite-Python-0.3.10.tar.gz.

File metadata

  • Download URL: DLite-Python-0.3.10.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for DLite-Python-0.3.10.tar.gz
Algorithm Hash digest
SHA256 84074be49c878bf80da4f12b8a7485437958b41df3afa49c3df082f007c82eee
MD5 a17ef93ee05c97cff9d3a618c8dd8dbe
BLAKE2b-256 7971715a89a2cfbd58ffd05bd914dfad4b7f19a2a3565f8bbbb63eaceded69ab

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 835b98090924f8c0fc6b272dcb05484a355b999700e2993beb3fcaac3378725e
MD5 9de88df0b76593e601ab05ba9b7aa708
BLAKE2b-256 02228549405fff2ed8233ea57e8de4e9f540df7b7d161540bba6f1d3be2398f8

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b9fef3033c72b89f6d4a4a541f2f9f4db73233bffcaf306dc936cfc068df3f1a
MD5 1c3aa85e008d1ab6701a21c099e0306d
BLAKE2b-256 29f2fbbfaba67c40c7902d8188c1ce80c6a5aa4960416417a729232fb9738e35

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 6f811c8a052f745546f71f81993ea27b50e342986748523b57b063e34d784760
MD5 443f74c7086e55e13b99fea040228f6b
BLAKE2b-256 84a19c9f8af0b82307b7bd7923399686bb868344167b79b905e63ad8bd4ec4cd

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp39-cp39-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp39-cp39-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 def945f4d1af36cbd2f7e0c55283fdfcaf6f26435cf9537673540dd5be54c95a
MD5 81bfae7594595cb4c548fe272a4c6200
BLAKE2b-256 117143ef51e98e0b22af8f8e151ec32e71bb7a5f62efa041efec2e6a0598f3fb

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 015fe088148739f6a0230a829c8915c25b06336ce5bcced18ea4fecdfbef8fa1
MD5 a40bcc383a31edb347a15172945b26b1
BLAKE2b-256 60a1dc3f3ac0ff97547cd47babd1ac01b60b9935bf1c6e409b746eeaf916caf1

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a4c0d54cb81c0494ce280cdaf8a0bdee51b4d6e1cecf29b9a6c73274f581e6da
MD5 a5d2a9209c64caf53dfb58b28df8b958
BLAKE2b-256 8634909c68086fd2cad4033df130ccef80b9145d541034715ed77aef4a01beab

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 bce54594e71161931f04a3771d6cf7339f22daceec8644f2a3988abaec6a88ce
MD5 e98391350fbbe3336a6f5b304ddccfa1
BLAKE2b-256 2e9cfdf7e785b772dffd92dc34bca3b77ef7694e2dfb0d549bdee755757df3a6

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 39cbd7618072d33c030f2fb39a8c0e82f686ee2917a5dcf331a48f861bb7943e
MD5 9b36016fbdc8fd6b8568f9791d1f3190
BLAKE2b-256 faaeb1e49dc3e868d71f3996f33325b836273e5823134d86eb6b47527bc0e6ed

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 03662c545ead82781f26d6bf19945984befe4d56a76dd2aada62cc2023a89a7f
MD5 69bbaa560ee645b28b8bb9b1f5441121
BLAKE2b-256 ff9a211751753d9de9ca0470ba9703058cc5c499ef07cbee05aef9a29937c4f0

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp38-cp38-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp38-cp38-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 eafba7dd020fc32899582e198c5cc38a9d70577d8aab4cf9b3aa320d2db2bade
MD5 8cdafedc1b460e1ed38f17589a5cdd5b
BLAKE2b-256 d75bc5e984a644e025e1a5fc52de954e5894bb43e84d313ce940f0f84b3efc30

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 72bb4c028652ca7e1c9b14270da6ea6ccce0a8d99e98f44ebe1808acc3769424
MD5 6efbe306a0bfe89a2ab46a023054b518
BLAKE2b-256 2e05ae430064160caabd6501618adfac6107a007bf4cee208662f0552e0d434c

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 09a9688c47d0c7b6e3193eb366a7a50f2d56f8784d854585c7bf4b2b19b7fc59
MD5 006dc2664e1dc21bf38147a2ca155524
BLAKE2b-256 945ff679da7205d2af407e2cacf622c29d37dc0ffe199875314aa260091b03c3

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e37f595cdea3f525ded6b3a763c5562fb44f4767ffd187ce91989e4f261fa96f
MD5 d7c8a9fc87f264d629c522e236f545a8
BLAKE2b-256 0b224ca537de874c850032c81db3fb425989be67c387a8fece6471cc1c312bbc

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 bfb7aece7c02194fee41201d8936b14af1450cce76f8bfe83a654d3f999add16
MD5 224dd3c70e45dbfe3595cc2ef854057e
BLAKE2b-256 d539eaccb751dc475d02e0c8410653f5dad123a72847e708938210279f7bb22c

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e833a95a5514e2fdec1a65934ca1738f63cf94f86e56cfcb94b142198a0445a5
MD5 e4aa5b35d104557ac822ce6ff24c4501
BLAKE2b-256 48acc9f28fe26d386e22267571c411cccd582bc1c41027ef7ae212467c10ce34

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp37-cp37m-musllinux_1_1_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp37-cp37m-musllinux_1_1_i686.whl
Algorithm Hash digest
SHA256 61fb1c2f6a4d4a2e6b69c56746e76fc2e19888f7261ee025a6d0d1c271b11b80
MD5 ae687eb1d0efcb334f5c5136ce244357
BLAKE2b-256 c95dfedba807e622b50a11a1e1fa6ef08f9bb503e41967075e7fdd6d0a91ac27

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 710e8a50068f5aa7d58bc07d37d0cc0693abe20eaefe723b205be64bce435d24
MD5 644db033d8b367bcb071239b04cc7813
BLAKE2b-256 413dde8ce0e69aa3962828379505f188ded5a1edab6779944e7687c89c7e5acf

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8376101df52d884e4b24dcda6938a870a191ee4564b876ac5dc50d5d1025e0e4
MD5 75134fc2dee5f1e129e8f6555679dbf4
BLAKE2b-256 62122d08229665d3bf4d51f0a0284c8cdca8901e0caab8025d961d3ebf94e23b

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e8b91b73a140e9e1ad21104713eb555a2edd1cf72f337b734180f6b47193fe2f
MD5 c981f84d6446353dbd8deb860a2ded26
BLAKE2b-256 ab07646d2a4e6333fef6b977b4160ac2833c71e24550f1e3f66982fa5e5e8c2a

See more details on using hashes here.

File details

Details for the file DLite_Python-0.3.10-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl.

File metadata

File hashes

Hashes for DLite_Python-0.3.10-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl
Algorithm Hash digest
SHA256 fc965bdde517ea7f2c9084bfe45ee475e5acb5f4ee9207617f398adf223883e6
MD5 acba499e9e36c15b7f827922dc2780c3
BLAKE2b-256 1ed108fec997537b60bc167ee854e77e663066152c13d1550dae872daf52cfb4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page