asammdf


Nameasammdf JSON
Version 7.4.1 PyPI version JSON
download
home_pagehttps://github.com/danielhrisca/asammdf
SummaryASAM MDF measurement data file parser
upload_time2024-01-26 19:27:54
maintainer
docs_urlNone
authorDaniel Hrisca
requires_python>=3.8
licenseLGPLv3+
keywords read reader edit editor parse parser asam mdf measurement
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
<img align=left src="https://raw.githubusercontent.com/danielhrisca/asammdf/master/asammdf.png" width="128" height="128" />

<p align=center>

*asammdf* is a fast parser and editor for ASAM (Association for Standardization of Automation and Measuring Systems) MDF (Measurement Data Format) files.

*asammdf* supports MDF versions 2 (.dat), 3 (.mdf) and 4 (.mf4).

*asammdf* works on Python >= 3.8

</p>

<img align=left src="https://raw.githubusercontent.com/danielhrisca/asammdf/master/gui.png"/>

# Status

| Continuous Integration                                                                                                                                                                      | Coveralls                                                                                                                                                            | Codacy                                                                                                                                                                                                                                                       | ReadTheDocs                                                                                                                                     |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [![continuous integration](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml) | [![Coverage Status](https://coveralls.io/repos/github/danielhrisca/asammdf/badge.svg?branch=master)](https://coveralls.io/github/danielhrisca/asammdf?branch=master) | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/a3da21da90ca43a5b72fc24b56880c99?branch=master)](https://www.codacy.com/app/danielhrisca/asammdf?utm_source=github.com&utm_medium=referral&utm_content=danielhrisca/asammdf&utm_campaign=badger) | [![Documentation Status](http://readthedocs.org/projects/asammdf/badge/?version=master)](http://asammdf.readthedocs.io/en/master/?badge=stable) |

| PyPI                                                                                      | conda-forge                                                                                                                     |
| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| [![PyPI version](https://badge.fury.io/py/asammdf.svg)](https://badge.fury.io/py/asammdf) | [![conda-forge version](https://anaconda.org/conda-forge/asammdf/badges/version.svg)](https://anaconda.org/conda-forge/asammdf) |

# Project goals
The main goals for this library are:

* to be faster than the other Python based mdf libraries
* to have clean and easy to understand code base
* to have minimal 3-rd party dependencies

# Features

* create new mdf files from scratch
* append new channels
* read unsorted MDF v3 and v4 files
* read CAN and LIN bus logging files
* extract CAN and LIN signals from anonymous bus logging measurements
* filter a subset of channels from original mdf file
* cut measurement to specified time interval
* convert to different mdf version
* export to HDF5, Matlab (v7.3), CSV and parquet
* merge multiple files sharing the same internal structure
* read and save mdf version 4.10 files containing zipped data blocks
* space optimizations for saved files (no duplicated blocks)
* split large data blocks (configurable size) for mdf version 4
* full support (read, append, save) for the following map types (multidimensional array channels):

    * mdf version 3 channels with CDBLOCK
    * mdf version 4 structure channel composition
    * mdf version 4 channel arrays with CNTemplate storage and one of the array types:

        * 0 - array
        * 1 - scaling axis
        * 2 - look-up

* add and extract attachments for mdf version 4
* handle large files (for example merging two fileas, each with 14000 channels and 5GB size, on a RaspberryPi)
* extract channel data, master channel and extra channel information as *Signal* objects for unified operations with v3 and v4 files
* time domain operation using the *Signal* class

    * Pandas data frames are good if all the channels have the same time based
    * a measurement will usually have channels from different sources at different rates
    * the *Signal* class facilitates operations with such channels

 * graphical interface to visualize channels and perform operations with the files

# Major features not implemented (yet)

* for version 3

    * functionality related to sample reduction block: the samples reduction blocks are simply ignored

* for version 4

    * experimental support for MDF v4.20 column oriented storage
    * functionality related to sample reduction block: the samples reduction blocks are simply ignored
    * handling of channel hierarchy: channel hierarchy is ignored
    * full handling of bus logging measurements: currently only CAN and LIN bus logging are implemented with the
      ability to *get* signals defined in the attached CAN/LIN database (.arxml or .dbc). Signals can also
      be extracted from an anonymous bus logging measurement by providing a CAN or LIN database (.dbc or .arxml)
    * handling of unfinished measurements (mdf 4): finalization is attempted when the file is loaded, however the
      not all the finalization steps are supported
    * full support for remaining mdf 4 channel arrays types
    * xml schema for MDBLOCK: most metadata stored in the comment blocks will not be available
    * full handling of event blocks: events are transferred to the new files (in case of calling methods
      that return new *MDF* objects) but no new events can be created
    * channels with default X axis: the default X axis is ignored and the channel group's master channel
      is used
    * attachment encryption/decryption using user provided encryption/decryption functions; this is not 
      part of the MDF v4 spec and is only supported by this library

# Usage

```python
from asammdf import MDF

mdf = MDF('sample.mdf')
speed = mdf.get('WheelSpeed')
speed.plot()

important_signals = ['WheelSpeed', 'VehicleSpeed', 'VehicleAcceleration']
# get short measurement with a subset of channels from 10s to 12s
short = mdf.filter(important_signals).cut(start=10, stop=12)

# convert to version 4.10 and save to disk
short.convert('4.10').save('important signals.mf4')

# plot some channels from a huge file
efficient = MDF('huge.mf4')
for signal in efficient.select(['Sensor1', 'Voltage3']):
   signal.plot()
```

Check the *examples* folder for extended usage demo, or the documentation
http://asammdf.readthedocs.io/en/master/examples.html

https://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-api/


# Documentation
http://asammdf.readthedocs.io/en/master

And a nicely written tutorial on the [CSS Electronics site](https://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-gui/)

# Contributing & Support
Please have a look over the [contributing guidelines](CONTRIBUTING.md)

If you enjoy this library please consider making a donation to the
[numpy project](https://numfocus.org/donate-to-numpy) or to [danielhrisca using liberapay](https://liberapay.com/danielhrisca/donate) <noscript><a href="https://liberapay.com/danielhrisca/donate"><img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg"></a></noscript>

## Contributors
Thanks to all who contributed with commits to *asammdf*:

<a href="https://github.com/danielhrisca/asammdf/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=danielhrisca/asammdf" />
</a>

# Installation
*asammdf* is available on

* github: https://github.com/danielhrisca/asammdf/
* PyPI: https://pypi.org/project/asammdf/
* conda-forge: https://anaconda.org/conda-forge/asammdf

```shell
pip install asammdf
# for the GUI 
pip install asammdf[gui]
# or for anaconda
conda install -c conda-forge asammdf
```

In case a wheel is not present for you OS/Python versions and you
lack the proper compiler setup to compile the c-extension code, then
you can simply copy-paste the package code to your site-packages. In this 
way the python fallback code will be used instead of the compiled c-extension code.

# Dependencies
asammdf uses the following libraries

* numpy : the heart that makes all tick
* numexpr : for algebraic and rational channel conversions
* wheel : for installation in virtual environments
* pandas : for DataFrame export
* canmatrix : to handle CAN/LIN bus logging measurements
* natsort
* lxml : for canmatrix arxml support
* lz4 : to speed up the disk IO performance
* python-dateutil : measurement start time handling

optional dependencies needed for exports

* h5py : for HDF5 export
* hdf5storage : for Matlab v7.3 .mat export
* fastparquet : for parquet export
* scipy: for Matlab v4 and v5 .mat export

other optional dependencies

* PySide6 : for GUI tool
* pyqtgraph : for GUI tool and Signal plotting
* matplotlib : as fallback for Signal plotting
* faust-cchardet : to detect non-standard Unicode encodings
* chardet : to detect non-standard Unicode encodings 
* pyqtlet2 : for the GPS window
* isal : for faster zlib compression/decompression
* fsspec : access files stored in the cloud

# Benchmarks

http://asammdf.readthedocs.io/en/master/benchmarks.html

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/danielhrisca/asammdf",
    "name": "asammdf",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "",
    "keywords": "read reader edit editor parse parser asam mdf measurement",
    "author": "Daniel Hrisca",
    "author_email": "daniel.hrisca@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/41/d0/4e87d0e42e0c57221ccc76685ae261c1dac89e353cefa8b2a7f7ff81c1ff/asammdf-7.4.1.tar.gz",
    "platform": null,
    "description": "\n<img align=left src=\"https://raw.githubusercontent.com/danielhrisca/asammdf/master/asammdf.png\" width=\"128\" height=\"128\" />\n\n<p align=center>\n\n*asammdf* is a fast parser and editor for ASAM (Association for Standardization of Automation and Measuring Systems) MDF (Measurement Data Format) files.\n\n*asammdf* supports MDF versions 2 (.dat), 3 (.mdf) and 4 (.mf4).\n\n*asammdf* works on Python >= 3.8\n\n</p>\n\n<img align=left src=\"https://raw.githubusercontent.com/danielhrisca/asammdf/master/gui.png\"/>\n\n# Status\n\n| Continuous Integration                                                                                                                                                                      | Coveralls                                                                                                                                                            | Codacy                                                                                                                                                                                                                                                       | ReadTheDocs                                                                                                                                     |\n| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| [![continuous integration](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/danielhrisca/asammdf/actions/workflows/main.yml) | [![Coverage Status](https://coveralls.io/repos/github/danielhrisca/asammdf/badge.svg?branch=master)](https://coveralls.io/github/danielhrisca/asammdf?branch=master) | [![Codacy Badge](https://api.codacy.com/project/badge/Grade/a3da21da90ca43a5b72fc24b56880c99?branch=master)](https://www.codacy.com/app/danielhrisca/asammdf?utm_source=github.com&utm_medium=referral&utm_content=danielhrisca/asammdf&utm_campaign=badger) | [![Documentation Status](http://readthedocs.org/projects/asammdf/badge/?version=master)](http://asammdf.readthedocs.io/en/master/?badge=stable) |\n\n| PyPI                                                                                      | conda-forge                                                                                                                     |\n| ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |\n| [![PyPI version](https://badge.fury.io/py/asammdf.svg)](https://badge.fury.io/py/asammdf) | [![conda-forge version](https://anaconda.org/conda-forge/asammdf/badges/version.svg)](https://anaconda.org/conda-forge/asammdf) |\n\n# Project goals\nThe main goals for this library are:\n\n* to be faster than the other Python based mdf libraries\n* to have clean and easy to understand code base\n* to have minimal 3-rd party dependencies\n\n# Features\n\n* create new mdf files from scratch\n* append new channels\n* read unsorted MDF v3 and v4 files\n* read CAN and LIN bus logging files\n* extract CAN and LIN signals from anonymous bus logging measurements\n* filter a subset of channels from original mdf file\n* cut measurement to specified time interval\n* convert to different mdf version\n* export to HDF5, Matlab (v7.3), CSV and parquet\n* merge multiple files sharing the same internal structure\n* read and save mdf version 4.10 files containing zipped data blocks\n* space optimizations for saved files (no duplicated blocks)\n* split large data blocks (configurable size) for mdf version 4\n* full support (read, append, save) for the following map types (multidimensional array channels):\n\n    * mdf version 3 channels with CDBLOCK\n    * mdf version 4 structure channel composition\n    * mdf version 4 channel arrays with CNTemplate storage and one of the array types:\n\n        * 0 - array\n        * 1 - scaling axis\n        * 2 - look-up\n\n* add and extract attachments for mdf version 4\n* handle large files (for example merging two fileas, each with 14000 channels and 5GB size, on a RaspberryPi)\n* extract channel data, master channel and extra channel information as *Signal* objects for unified operations with v3 and v4 files\n* time domain operation using the *Signal* class\n\n    * Pandas data frames are good if all the channels have the same time based\n    * a measurement will usually have channels from different sources at different rates\n    * the *Signal* class facilitates operations with such channels\n\n * graphical interface to visualize channels and perform operations with the files\n\n# Major features not implemented (yet)\n\n* for version 3\n\n    * functionality related to sample reduction block: the samples reduction blocks are simply ignored\n\n* for version 4\n\n    * experimental support for MDF v4.20 column oriented storage\n    * functionality related to sample reduction block: the samples reduction blocks are simply ignored\n    * handling of channel hierarchy: channel hierarchy is ignored\n    * full handling of bus logging measurements: currently only CAN and LIN bus logging are implemented with the\n      ability to *get* signals defined in the attached CAN/LIN database (.arxml or .dbc). Signals can also\n      be extracted from an anonymous bus logging measurement by providing a CAN or LIN database (.dbc or .arxml)\n    * handling of unfinished measurements (mdf 4): finalization is attempted when the file is loaded, however the\n      not all the finalization steps are supported\n    * full support for remaining mdf 4 channel arrays types\n    * xml schema for MDBLOCK: most metadata stored in the comment blocks will not be available\n    * full handling of event blocks: events are transferred to the new files (in case of calling methods\n      that return new *MDF* objects) but no new events can be created\n    * channels with default X axis: the default X axis is ignored and the channel group's master channel\n      is used\n    * attachment encryption/decryption using user provided encryption/decryption functions; this is not \n      part of the MDF v4 spec and is only supported by this library\n\n# Usage\n\n```python\nfrom asammdf import MDF\n\nmdf = MDF('sample.mdf')\nspeed = mdf.get('WheelSpeed')\nspeed.plot()\n\nimportant_signals = ['WheelSpeed', 'VehicleSpeed', 'VehicleAcceleration']\n# get short measurement with a subset of channels from 10s to 12s\nshort = mdf.filter(important_signals).cut(start=10, stop=12)\n\n# convert to version 4.10 and save to disk\nshort.convert('4.10').save('important signals.mf4')\n\n# plot some channels from a huge file\nefficient = MDF('huge.mf4')\nfor signal in efficient.select(['Sensor1', 'Voltage3']):\n   signal.plot()\n```\n\nCheck the *examples* folder for extended usage demo, or the documentation\nhttp://asammdf.readthedocs.io/en/master/examples.html\n\nhttps://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-api/\n\n\n# Documentation\nhttp://asammdf.readthedocs.io/en/master\n\nAnd a nicely written tutorial on the [CSS Electronics site](https://canlogger.csselectronics.com/canedge-getting-started/log-file-tools/asammdf-gui/)\n\n# Contributing & Support\nPlease have a look over the [contributing guidelines](CONTRIBUTING.md)\n\nIf you enjoy this library please consider making a donation to the\n[numpy project](https://numfocus.org/donate-to-numpy) or to [danielhrisca using liberapay](https://liberapay.com/danielhrisca/donate) <noscript><a href=\"https://liberapay.com/danielhrisca/donate\"><img alt=\"Donate using Liberapay\" src=\"https://liberapay.com/assets/widgets/donate.svg\"></a></noscript>\n\n## Contributors\nThanks to all who contributed with commits to *asammdf*:\n\n<a href=\"https://github.com/danielhrisca/asammdf/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=danielhrisca/asammdf\" />\n</a>\n\n# Installation\n*asammdf* is available on\n\n* github: https://github.com/danielhrisca/asammdf/\n* PyPI: https://pypi.org/project/asammdf/\n* conda-forge: https://anaconda.org/conda-forge/asammdf\n\n```shell\npip install asammdf\n# for the GUI \npip install asammdf[gui]\n# or for anaconda\nconda install -c conda-forge asammdf\n```\n\nIn case a wheel is not present for you OS/Python versions and you\nlack the proper compiler setup to compile the c-extension code, then\nyou can simply copy-paste the package code to your site-packages. In this \nway the python fallback code will be used instead of the compiled c-extension code.\n\n# Dependencies\nasammdf uses the following libraries\n\n* numpy : the heart that makes all tick\n* numexpr : for algebraic and rational channel conversions\n* wheel : for installation in virtual environments\n* pandas : for DataFrame export\n* canmatrix : to handle CAN/LIN bus logging measurements\n* natsort\n* lxml : for canmatrix arxml support\n* lz4 : to speed up the disk IO performance\n* python-dateutil : measurement start time handling\n\noptional dependencies needed for exports\n\n* h5py : for HDF5 export\n* hdf5storage : for Matlab v7.3 .mat export\n* fastparquet : for parquet export\n* scipy: for Matlab v4 and v5 .mat export\n\nother optional dependencies\n\n* PySide6 : for GUI tool\n* pyqtgraph : for GUI tool and Signal plotting\n* matplotlib : as fallback for Signal plotting\n* faust-cchardet : to detect non-standard Unicode encodings\n* chardet : to detect non-standard Unicode encodings \n* pyqtlet2 : for the GPS window\n* isal : for faster zlib compression/decompression\n* fsspec : access files stored in the cloud\n\n# Benchmarks\n\nhttp://asammdf.readthedocs.io/en/master/benchmarks.html\n",
    "bugtrack_url": null,
    "license": "LGPLv3+",
    "summary": "ASAM MDF measurement data file parser",
    "version": "7.4.1",
    "project_urls": {
        "Homepage": "https://github.com/danielhrisca/asammdf"
    },
    "split_keywords": [
        "read",
        "reader",
        "edit",
        "editor",
        "parse",
        "parser",
        "asam",
        "mdf",
        "measurement"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "25fb5955dcfe7f656744b3cc51e7cd1cbabd66deb93019e624897f7826b5bd85",
                "md5": "0c437122e852b46b51eda2269f435314",
                "sha256": "ed13374dec1efb69e1724bbce0109002f7fa15ac4dd95c488f9e336589087a35"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0c437122e852b46b51eda2269f435314",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 822275,
            "upload_time": "2024-01-26T19:27:03",
            "upload_time_iso_8601": "2024-01-26T19:27:03.790620Z",
            "url": "https://files.pythonhosted.org/packages/25/fb/5955dcfe7f656744b3cc51e7cd1cbabd66deb93019e624897f7826b5bd85/asammdf-7.4.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "539eecf7f72ec7f1347b1ebbb9631e039bb8aee199df9950bc75c034dfc4716d",
                "md5": "d50b369f3fe0950a2b87c3cb649e6a78",
                "sha256": "d05bb0f03f0679943705d21476698f47ef0e89ae26079c75373ea4f2eaf51d36"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d50b369f3fe0950a2b87c3cb649e6a78",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 852559,
            "upload_time": "2024-01-26T19:27:08",
            "upload_time_iso_8601": "2024-01-26T19:27:08.498058Z",
            "url": "https://files.pythonhosted.org/packages/53/9e/ecf7f72ec7f1347b1ebbb9631e039bb8aee199df9950bc75c034dfc4716d/asammdf-7.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "fe8b595b6963791e94cd053ec89743bba2214b47230254bd62cf31ba1cbb4e7b",
                "md5": "fc5896c8fc6934724b387988d5b3ad37",
                "sha256": "f52d54fc508292d468c7fc69592a3211913626b1dbd6905057c6d3b22986cf68"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "fc5896c8fc6934724b387988d5b3ad37",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.8",
            "size": 828580,
            "upload_time": "2024-01-26T19:27:11",
            "upload_time_iso_8601": "2024-01-26T19:27:11.371312Z",
            "url": "https://files.pythonhosted.org/packages/fe/8b/595b6963791e94cd053ec89743bba2214b47230254bd62cf31ba1cbb4e7b/asammdf-7.4.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c40fdb7b70c6ebfbd39f03b3c65d6eebd49e3e781792a72c02db44a842ea9698",
                "md5": "b4ef4f92605896147d487ebd7510a87c",
                "sha256": "cda29c7a4d9cc93785eb1d1539456c0cae2372689e8cfe44dda2c19fea2a729e"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "b4ef4f92605896147d487ebd7510a87c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 822302,
            "upload_time": "2024-01-26T19:27:14",
            "upload_time_iso_8601": "2024-01-26T19:27:14.587128Z",
            "url": "https://files.pythonhosted.org/packages/c4/0f/db7b70c6ebfbd39f03b3c65d6eebd49e3e781792a72c02db44a842ea9698/asammdf-7.4.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bf28635cd838931cc7fba5e62d4027a90617491b467d4da2e96604fa2de10d52",
                "md5": "c931c79814aff7fc32e176973cbe38a5",
                "sha256": "a3a737f64dd7af92d2cdeca60e64557a6ce69b16f06385d3a3d553eaa5445d25"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "c931c79814aff7fc32e176973cbe38a5",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 853508,
            "upload_time": "2024-01-26T19:27:17",
            "upload_time_iso_8601": "2024-01-26T19:27:17.642830Z",
            "url": "https://files.pythonhosted.org/packages/bf/28/635cd838931cc7fba5e62d4027a90617491b467d4da2e96604fa2de10d52/asammdf-7.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "cedc63fb40511be44949092b8b0debade5ef18f847435bde94d57cdf005d0ba8",
                "md5": "6c13ac41db274cc2ab70f7e6834b157b",
                "sha256": "940d2df464b9adaccb87930e5b86e204a408ab4658a09a4d31a257b521c9da8b"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "6c13ac41db274cc2ab70f7e6834b157b",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.8",
            "size": 828580,
            "upload_time": "2024-01-26T19:27:20",
            "upload_time_iso_8601": "2024-01-26T19:27:20.713995Z",
            "url": "https://files.pythonhosted.org/packages/ce/dc/63fb40511be44949092b8b0debade5ef18f847435bde94d57cdf005d0ba8/asammdf-7.4.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4dc3abc68b2371a93a4a7c1d53ba626f39670a514bd654fb7d23ad9944e2ffd2",
                "md5": "1c0af37020bdd3a317620b3af89d151d",
                "sha256": "24cd569beab821b1c6f6c4afab33cf46efb5facca1a3e8a8a348dcea3cacdc1e"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1c0af37020bdd3a317620b3af89d151d",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 822366,
            "upload_time": "2024-01-26T19:27:24",
            "upload_time_iso_8601": "2024-01-26T19:27:24.478047Z",
            "url": "https://files.pythonhosted.org/packages/4d/c3/abc68b2371a93a4a7c1d53ba626f39670a514bd654fb7d23ad9944e2ffd2/asammdf-7.4.1-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9a216aaa46a87e3288419c83b5b0f321b2ddcc802bc62c0478cc99558d36c599",
                "md5": "e1c7ff2614813e4eb5706663aea0e41e",
                "sha256": "5dac17f517b721c51a382dbb5e7df7ae06b24b1f6aff04a54c97b466db4cdf87"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "e1c7ff2614813e4eb5706663aea0e41e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 854047,
            "upload_time": "2024-01-26T19:27:28",
            "upload_time_iso_8601": "2024-01-26T19:27:28.293113Z",
            "url": "https://files.pythonhosted.org/packages/9a/21/6aaa46a87e3288419c83b5b0f321b2ddcc802bc62c0478cc99558d36c599/asammdf-7.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "00608bcc1ab5e98b2ff949eef315fbeacf148f509ae821d70b88720ec6393883",
                "md5": "71684abb70fff07fa3f81811bc2a768c",
                "sha256": "290bb64e3fc1b8b797fdca0582a8e95ed6ac0fdd32da51f30fd35448fef9e2e7"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "71684abb70fff07fa3f81811bc2a768c",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.8",
            "size": 828633,
            "upload_time": "2024-01-26T19:27:31",
            "upload_time_iso_8601": "2024-01-26T19:27:31.643102Z",
            "url": "https://files.pythonhosted.org/packages/00/60/8bcc1ab5e98b2ff949eef315fbeacf148f509ae821d70b88720ec6393883/asammdf-7.4.1-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e1f8449ecf0fe5cf236a8da36df8950f5457bab63c95f4e239f8064852962c94",
                "md5": "17b3992c4faa38152a59fd4ecb8d8bf9",
                "sha256": "c04997e9280a47f6350c43c530c59b409e48d742774edf8390918aab01711b5e"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "17b3992c4faa38152a59fd4ecb8d8bf9",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 822328,
            "upload_time": "2024-01-26T19:27:34",
            "upload_time_iso_8601": "2024-01-26T19:27:34.566457Z",
            "url": "https://files.pythonhosted.org/packages/e1/f8/449ecf0fe5cf236a8da36df8950f5457bab63c95f4e239f8064852962c94/asammdf-7.4.1-cp38-cp38-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "afd58e1f7bc4a5dd2eaf99236df49bffe20667fa73be1649e07ec365f300c40d",
                "md5": "3dee48d12a412bfc086e65e01265752b",
                "sha256": "2b29a7b00ac114fd56286e317c2a145512102fe03722e737500fb0ed4be040fc"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "3dee48d12a412bfc086e65e01265752b",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 852758,
            "upload_time": "2024-01-26T19:27:37",
            "upload_time_iso_8601": "2024-01-26T19:27:37.669586Z",
            "url": "https://files.pythonhosted.org/packages/af/d5/8e1f7bc4a5dd2eaf99236df49bffe20667fa73be1649e07ec365f300c40d/asammdf-7.4.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a4f6e546f46def72ae7cb9587757e2d1a463a37d1537e4ea54f50607e20c99a1",
                "md5": "5bfa9cdb864aae163b1e744027e934b4",
                "sha256": "42060dfd40e9cc7ec9536d3d5fe5cdc0505e69b9091c482d9e7cc05324c3ed1c"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp38-cp38-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "5bfa9cdb864aae163b1e744027e934b4",
            "packagetype": "bdist_wheel",
            "python_version": "cp38",
            "requires_python": ">=3.8",
            "size": 828625,
            "upload_time": "2024-01-26T19:27:41",
            "upload_time_iso_8601": "2024-01-26T19:27:41.475761Z",
            "url": "https://files.pythonhosted.org/packages/a4/f6/e546f46def72ae7cb9587757e2d1a463a37d1537e4ea54f50607e20c99a1/asammdf-7.4.1-cp38-cp38-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b3a50010c6c7d5bf438ae660f6fb9690559c6e370b5b21b2bbcd1f1bf0786a3f",
                "md5": "7032fa77110cc792394f8da6e9a7a348",
                "sha256": "28362b93d5c938260bedd3c428fa759d2f33fd376fb0b92241f15e30d1b3abbd"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7032fa77110cc792394f8da6e9a7a348",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 822279,
            "upload_time": "2024-01-26T19:27:44",
            "upload_time_iso_8601": "2024-01-26T19:27:44.347050Z",
            "url": "https://files.pythonhosted.org/packages/b3/a5/0010c6c7d5bf438ae660f6fb9690559c6e370b5b21b2bbcd1f1bf0786a3f/asammdf-7.4.1-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d00d13844bd8b59ca75979ba67f355a4aa5d69dd93fdbace177d4e15024461af",
                "md5": "6a1070fc15ebb805113086f07d3c39b6",
                "sha256": "271bbc5e81e0768a6c5a4b084b1016bef874735876ad568669565ab6381bca71"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6a1070fc15ebb805113086f07d3c39b6",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 852410,
            "upload_time": "2024-01-26T19:27:47",
            "upload_time_iso_8601": "2024-01-26T19:27:47.704126Z",
            "url": "https://files.pythonhosted.org/packages/d0/0d/13844bd8b59ca75979ba67f355a4aa5d69dd93fdbace177d4e15024461af/asammdf-7.4.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dee520145363337b70a198597bda66164232c5cc1406272a6d9bd2071436cc00",
                "md5": "04a9b70a5cbbd675bfdf2fce32dab35d",
                "sha256": "e1ebda63c37df4cfbf73536c7dabbef137532e746e7e86ccbc4ae6ae9ace32af"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "04a9b70a5cbbd675bfdf2fce32dab35d",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.8",
            "size": 828575,
            "upload_time": "2024-01-26T19:27:50",
            "upload_time_iso_8601": "2024-01-26T19:27:50.746079Z",
            "url": "https://files.pythonhosted.org/packages/de/e5/20145363337b70a198597bda66164232c5cc1406272a6d9bd2071436cc00/asammdf-7.4.1-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "41d04e87d0e42e0c57221ccc76685ae261c1dac89e353cefa8b2a7f7ff81c1ff",
                "md5": "4578c37fcb185fbd732cf30f43aaad8f",
                "sha256": "283734ba2922ffcef3e23aea468e8615ec8b6ea0819b2bcc2e36778b813763c9"
            },
            "downloads": -1,
            "filename": "asammdf-7.4.1.tar.gz",
            "has_sig": false,
            "md5_digest": "4578c37fcb185fbd732cf30f43aaad8f",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 747222,
            "upload_time": "2024-01-26T19:27:54",
            "upload_time_iso_8601": "2024-01-26T19:27:54.108256Z",
            "url": "https://files.pythonhosted.org/packages/41/d0/4e87d0e42e0c57221ccc76685ae261c1dac89e353cefa8b2a7f7ff81c1ff/asammdf-7.4.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-26 19:27:54",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "danielhrisca",
    "github_project": "asammdf",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "asammdf"
}
        
Elapsed time: 0.17596s