<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/ce3/log-file-tools/asammdf-gui/
# Documentation
http://asammdf.readthedocs.io/en/master
And a nicely written tutorial on the [CSS Electronics site](https://canlogger.csselectronics.com/canedge-getting-started/ce3/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": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"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/6a/5c/5173d96d95dbb75f2700baf2e30ab71d91326b9187c993b44ad2730a8733/asammdf-8.0.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/ce3/log-file-tools/asammdf-gui/\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/ce3/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": "8.0.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": "810372d977a800ccfd727b2b1433ba9df1a6f60d425978e4f944b195f66f2000",
"md5": "d99b37aa060f8beb1d9c5407f5f858fb",
"sha256": "9154985456d0c918b02345467d9507dc9f45a44aa06360a2c33e861c1e3b8ea7"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d99b37aa060f8beb1d9c5407f5f858fb",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 888178,
"upload_time": "2024-10-01T13:27:21",
"upload_time_iso_8601": "2024-10-01T13:27:21.996480Z",
"url": "https://files.pythonhosted.org/packages/81/03/72d977a800ccfd727b2b1433ba9df1a6f60d425978e4f944b195f66f2000/asammdf-8.0.1-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a0f800afd48da235a4a2a2fe1d360d127c678c064c127c59f15b6428b1398d08",
"md5": "98cb792d62dd5ee6f2e03f21794d8a58",
"sha256": "ea4e877daa191769ea7b5f793d221e870679c8b49e173641e929c3154b8d7c4f"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "98cb792d62dd5ee6f2e03f21794d8a58",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 920189,
"upload_time": "2024-10-01T13:27:28",
"upload_time_iso_8601": "2024-10-01T13:27:28.062111Z",
"url": "https://files.pythonhosted.org/packages/a0/f8/00afd48da235a4a2a2fe1d360d127c678c064c127c59f15b6428b1398d08/asammdf-8.0.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": "ba9e88f823f42896d7b1c19219c45800342eccf32e424540459261b4d6594d1f",
"md5": "684e1a072abec7f84beb0bfd72e0537f",
"sha256": "2a662e782fe8bb70ece1a7c491c16db354fbc70a594a20da7ab0f5c7fb72c17d"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "684e1a072abec7f84beb0bfd72e0537f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 891317,
"upload_time": "2024-10-01T13:27:35",
"upload_time_iso_8601": "2024-10-01T13:27:35.134637Z",
"url": "https://files.pythonhosted.org/packages/ba/9e/88f823f42896d7b1c19219c45800342eccf32e424540459261b4d6594d1f/asammdf-8.0.1-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "42c7ab728e41912a3cfe0e5298067cee8adbec94bce8f6ae51b5bec6562e63fc",
"md5": "5917146c4b14f9260928be362b6c4234",
"sha256": "ac0991237ff05c2e49df02a8dd8c678510f690834e243e1d80e63e3155d4d7b0"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "5917146c4b14f9260928be362b6c4234",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 888179,
"upload_time": "2024-10-01T13:27:39",
"upload_time_iso_8601": "2024-10-01T13:27:39.613091Z",
"url": "https://files.pythonhosted.org/packages/42/c7/ab728e41912a3cfe0e5298067cee8adbec94bce8f6ae51b5bec6562e63fc/asammdf-8.0.1-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa3344389149c25305301a7889b7b69c3cf49675c7159af236dd502ed31e7a97",
"md5": "e7d774db4434f3897c6a1c408dfecd85",
"sha256": "7238f979c63eace224b950c26c9dce42f7c7beaeb93a1a13a6579f3f927f8257"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "e7d774db4434f3897c6a1c408dfecd85",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 920270,
"upload_time": "2024-10-01T13:27:45",
"upload_time_iso_8601": "2024-10-01T13:27:45.249533Z",
"url": "https://files.pythonhosted.org/packages/fa/33/44389149c25305301a7889b7b69c3cf49675c7159af236dd502ed31e7a97/asammdf-8.0.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": "051755ead6eb4f7ee972597c0e3a4ee61c26e12352e30cf5cc9ad9a3521bce70",
"md5": "6dc29a9ee40b9cce49e198e77ac3b501",
"sha256": "d9638e8c3e68c835334df9921269481d05fa315b58383ae36c24565ff2e0a7e4"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "6dc29a9ee40b9cce49e198e77ac3b501",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 891312,
"upload_time": "2024-10-01T13:27:53",
"upload_time_iso_8601": "2024-10-01T13:27:53.121757Z",
"url": "https://files.pythonhosted.org/packages/05/17/55ead6eb4f7ee972597c0e3a4ee61c26e12352e30cf5cc9ad9a3521bce70/asammdf-8.0.1-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5238db219cbbe76dbcb1d32dba768fc4fca192c098b6fca1862805a06e0c1fc0",
"md5": "d186db9d5d8d861bbcd03db426b70453",
"sha256": "e70cfc85a16e96569d45e304796d4401b5e3796d7f846d6f66da44b6baf77aec"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "d186db9d5d8d861bbcd03db426b70453",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 888265,
"upload_time": "2024-10-01T13:27:59",
"upload_time_iso_8601": "2024-10-01T13:27:59.663371Z",
"url": "https://files.pythonhosted.org/packages/52/38/db219cbbe76dbcb1d32dba768fc4fca192c098b6fca1862805a06e0c1fc0/asammdf-8.0.1-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "448c5b2385bc3b0511a2a96ed8e1643df64dcf190d60cfb95849625a9ab7c8b4",
"md5": "bb4f6f0eb29eba1e73d1c9ca2b106050",
"sha256": "a07ebbbf1f4f6f724a2f992eaff809a4f6000e7e9a1796657e9857e589529e57"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "bb4f6f0eb29eba1e73d1c9ca2b106050",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 920715,
"upload_time": "2024-10-01T13:28:06",
"upload_time_iso_8601": "2024-10-01T13:28:06.293141Z",
"url": "https://files.pythonhosted.org/packages/44/8c/5b2385bc3b0511a2a96ed8e1643df64dcf190d60cfb95849625a9ab7c8b4/asammdf-8.0.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": "f4a96ad9208ed9f5ed077dddca45c12b192e3b1c9641e959742cdede549c0e49",
"md5": "82aa2ce99598779f09497a2991486e60",
"sha256": "d9685e07503671816680b485c7032716acac72fd31e247a6acb059a775cd2100"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "82aa2ce99598779f09497a2991486e60",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 891332,
"upload_time": "2024-10-01T13:28:13",
"upload_time_iso_8601": "2024-10-01T13:28:13.363993Z",
"url": "https://files.pythonhosted.org/packages/f4/a9/6ad9208ed9f5ed077dddca45c12b192e3b1c9641e959742cdede549c0e49/asammdf-8.0.1-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "75299ba06bec84c81cb5d6d0dec7324fd18a474221cd75f929f082d4427b9a03",
"md5": "88f40e98fa6bb03fb4a6d7bc7b9341a5",
"sha256": "fb63b3c072a8f3c5c0d3afa26284e5e281fbd73e191ab6e8f7941e69333fd16e"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "88f40e98fa6bb03fb4a6d7bc7b9341a5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 888173,
"upload_time": "2024-10-01T13:28:17",
"upload_time_iso_8601": "2024-10-01T13:28:17.567999Z",
"url": "https://files.pythonhosted.org/packages/75/29/9ba06bec84c81cb5d6d0dec7324fd18a474221cd75f929f082d4427b9a03/asammdf-8.0.1-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "58bf502b837b0f687d6e13cca1634a64be6c00f0751a723f909685ef0b191e3e",
"md5": "0ac9f5b76acb86096d9e7151252bd4eb",
"sha256": "3f7cc100be038d95a3928f31ca90fef66a80fdfaaee0f8f96b424e240ccf9b72"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl",
"has_sig": false,
"md5_digest": "0ac9f5b76acb86096d9e7151252bd4eb",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 920162,
"upload_time": "2024-10-01T13:28:20",
"upload_time_iso_8601": "2024-10-01T13:28:20.350117Z",
"url": "https://files.pythonhosted.org/packages/58/bf/502b837b0f687d6e13cca1634a64be6c00f0751a723f909685ef0b191e3e/asammdf-8.0.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": "9784434c0ab921f52eaedecbd94a0314ba64d6c73b55fa512694f7ac0c6489ea",
"md5": "b5ea34125b30b0b76eee38c6d395da5e",
"sha256": "b704b637bb773d32b5166e597f1b398eaedcf2dd365f184412732257a34cd9ac"
},
"downloads": -1,
"filename": "asammdf-8.0.1-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "b5ea34125b30b0b76eee38c6d395da5e",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 891307,
"upload_time": "2024-10-01T13:28:24",
"upload_time_iso_8601": "2024-10-01T13:28:24.128823Z",
"url": "https://files.pythonhosted.org/packages/97/84/434c0ab921f52eaedecbd94a0314ba64d6c73b55fa512694f7ac0c6489ea/asammdf-8.0.1-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6a5c5173d96d95dbb75f2700baf2e30ab71d91326b9187c993b44ad2730a8733",
"md5": "00a69b0fe768bf5cc39db5206a4f1c6b",
"sha256": "aa40bb4103aefbea75777ff4888c8ee20089e62f0c141f7e07c01de1beb93247"
},
"downloads": -1,
"filename": "asammdf-8.0.1.tar.gz",
"has_sig": false,
"md5_digest": "00a69b0fe768bf5cc39db5206a4f1c6b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 805124,
"upload_time": "2024-10-01T13:28:29",
"upload_time_iso_8601": "2024-10-01T13:28:29.812401Z",
"url": "https://files.pythonhosted.org/packages/6a/5c/5173d96d95dbb75f2700baf2e30ab71d91326b9187c993b44ad2730a8733/asammdf-8.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-01 13:28:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "danielhrisca",
"github_project": "asammdf",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "canmatrix",
"specs": [
[
">=",
"1.0"
]
]
},
{
"name": "lz4",
"specs": []
},
{
"name": "numexpr",
"specs": []
},
{
"name": "numpy",
"specs": [
[
"<",
"2.0.0"
],
[
">=",
"1.23.0"
]
]
},
{
"name": "pandas",
"specs": []
},
{
"name": "typing_extensions",
"specs": []
},
{
"name": "python-dateutil",
"specs": []
},
{
"name": "isal",
"specs": []
},
{
"name": "lxml",
"specs": [
[
">=",
"4.9.3"
]
]
}
],
"tox": true,
"lcname": "asammdf"
}