# IMCtermite
_IMCtermite_ provides access to the proprietary data format
_IMC Bus Format_ with the file extension _.raw_ introduced and developed by
[imc Test & Measurement GmbH](https://www.imc-tm.de/). This data format is
employed i.a. by the measurement hardware
[imc CRONOSflex](https://www.imc-tm.de/produkte/messtechnik-hardware/imc-cronosflex/ueberblick/)
to dump and store data and the software packages
[imc Studio](https://www.imc-tm.de/produkte/messtechnik-software/imc-studio/ueberblick/)
& [imc FAMOS](https://www.imc-tm.de/produkte/messtechnik-software/imc-famos/)
for measurement data control and analysis. Thanks to the integrated Python module,
the extracted measurement data can be stored in any open-source file format
accessible by Python like i.a. _csv_, _json_ or _parquet_.
On the [Record Evolution Platform](https://www.record-evolution.de/en/home-en/), the library can be used both as a command line tool for interactive usage and as a Python module to integrate the _.raw_ format into any ETL workflow.
## Overview
* [File format](#Fileformat)
* [Build and Installation](#Installation)
* [Usage and Examples](#Usage)
* [References](#References)
## File format
[Warning: Take a look at [this issue](https://github.com/RecordEvolution/IMCtermite/issues/14) when reading this section regarding the file format.]
A data file of the _IMC Bus Format_ type with the extension _.raw_ is a _mixed text/binary
file_ featuring a set of markers (keys) that indicate the start of various blocks
of data that provide meta information and the actual measurement data. Every single
marker is introduced by the character `"|" = 0x 7c` followed by two uppercase letters that characterize the type of marker. Each block is further divided into several
parameters separated by commata `"," = 0x 2c` and terminated by a semicolon
`";" = 0x 3b`. For instance, the header - first 600 bytes - of a raw file may
look like this (in UTF-8 encoding):
```
|CF,2,1,1;|CK,1,3,1,1;
|NO,1,86,0,78,imc STUDIO 5.0 R10 (04.08.2017)@imc DEVICES 2.9R7 (25.7.2017)@imcDev__15190567,0,;
|CG,1,5,1,1,1; |CD,2, 63, 5.0000000000000001E-03,1,1,s,0,0,0, 0.0000000000000000E+00,1;
|NT,1,16,1,1,1980,0,0,0.0; |CC,1,3,1,1;|CP,1,16,1,4,7,32,0,0,1,0;
|CR,1,60,0, 1.0000000000000000E+00, 0.0000000000000000E+00,1,4,mbar;|CN,1,27,0,0,0,15,pressure_Vacuum,0,;
|Cb,1, 117,1,0, 1, 1, 0, 9608, 0, 9608,1, 2.0440300000000000E+03, 1.2416717060000000E+09,;
|CS,1, 9619, 1,�oD �nD6�nD)�nD�
```
Line breaks are introduced for readability. Most of the markers introduce
blocks of text, while only the last block identified by `|CS` contains binary data.
The format supports the storage of _multiple data sets (channels)_ in a single
file. The channels may be ordered in _multiplex_ mode (ordering w.r.t. time) or
_block_ mode (ordering w.r.t. to channels).
The markers (keys) are introduced by `"|" = 0x 7c` followed by two uppercase
letters. There are _two types_ of markers distinguished by the first letter:
1. _critical_ markers: introduced by `|C` featuring uppercase `C`
1. _noncritical_ markers: introduced by `|N` featuring uppercase `N`
The second letter represents further details of the specific key. Note that
while the _noncritical_ keys are optional, any _.raw_ file _cannot be_ correctly
decoded if any of the _critical_ markers are misinterpreted, invalid or damaged.
The second uppercase letter is followed by the first comma and the _version_
of the key starting from 1. After the next comma, an _(long) integer_ (in text
representation) specifies the length of the entire block, i.e. the number of
bytes between the following comma and the block-terminating semicolon. The further
structure of a block is not defined and may feature different numbers of additional
parameters. The format allows for any number of carriage returns (`CR = 0x0d`)
and line feeds (`LF = 0x 0a`) between keys, i.e. the block-terminating semicolon
and the vertical bar (pipe) of the next key. The following _critical markers_
are defined:
| marker | description |
|--------|-----------------------------------------------------------------------------------------------------|
| CF | format version and processor |
| CK | start of group of keys, no. parameters = 3, indicates (in)correct closure of the measurement series |
| CB | defines a group of channels |
| CT | text definition including group association index |
| CG | introduces group of components corresponding to CC keys |
| CD1,2 | old/new version of abscissa description |
| CZ | scaling of z-axis for segments |
| CC | start of a component |
| CP | information about buffer, datatype and samples of component |
| Cb | buffer description |
| CR | permissible range of values in component |
| CN | name and comment of channel |
| CS | raw binary data |
| CI | single numerical value (including unit) |
| Ca | add reference key |
Among the _noncritical_ markers, there are
| marker | description |
|--------|--------------------------------------------|
| NO | origin of data |
| NT | timestamp of trigger |
| ND | (color) display properties |
| NU | user defined key |
| Np | property of a channel |
| NE | extraction rule for channels from BUS data |
The format loosely defines some rules for the ordering of the markers in the
file stream. The rules for critical keys include: _CK_ has to follow up on _CF_,
_CK_ may be followed by any number of _CG_ blocks, each _CG_ has to be followed
by (any number of) component sequences comprised of the series _CC_ , _CP_,
(_CR_), (_ND_) and terminated by either _CS_ or the start of a new group,
component, text field or buffer.
## Installation
The _IMCtermite_ library may be employed both as a _CLI_ tool and a _python_
module.
### CLI tool
To build the CLI tool locally, use the default target `make` resulting
in the binary `imctermite`. To ensure system-wide availability, the installation
of the tool (in the default location `/usr/local/bin`) is done via
```
make install
````
which may require root permissions.
### Python
To integrate the library into a customized ETL toolchain, several cython targets
are available. For a local build that enables you to run the examples, use:
```
make cython-build
```
However, in a production environment, a proper installation of the module with
`make cython-install` is recommended for system-wide availability of the module.
#### Installation with pip
The package is also available in the [Python Package Index](https://pypi.org)
at [IMCtermite](https://pypi.org/project/IMCtermite/).
To install the latest version simply do
```Shell
python3 -m pip install IMCtermite
```
which provides binary wheels for multiple architectures on _Windows_ and _Linux_
and most _Python 3.x_ distributions. However, if your platform/architecture is
not supported you can still compile the source distribution yourself, which
requires _python3_setuptools_ and an up-to-date compiler supporting C++11
standard (e.g. _gcc version >= 10.2.0_).
## Usage
### CLI
The usage of the `imctermite` binary looks like this:
```
imctermite <raw-file> [options]
```
You have to provide a single _raw_ file and any option to specify what
to do with the data. All available options can be listed with `imctermite --help`:
```
Options:
-c, --listchannels list channels
-b, --listblocks list IMC key-blocks
-d, --output output directory to print channels
-s, --delimiter csv delimiter/separator char for output
-h, --help show this help message
-v, --version display version
```
For instance, to show a list of all channels included in `sample-data.raw`, you
do `imctermite sample-data.raw --listchannels`. No output files are
written by default. Output files are written only when an existing (!) directory
is provided as argument to the `--output` option. By default, every output file
is written using a `,` delimiter. You may provide any custom separator with the
option `--delimiter`. For example, in order to use `|`, the binary is called with
options `imctermite sample-data.raw -b -c -s '|'`.
### Python
Given the `IMCtermite` module is available, we can import it and declare an instance
of it by passing a _raw_ file to the constructor:
```Python
import IMCtermite
imcraw = IMCtermite.imctermite(b"sample/sampleA.raw")
```
An example of how to create an instance and obtain the list of channels is:
```Python
import IMCtermite
# declare and initialize instance of "imctermite" by passing a raw-file
try :
imcraw = IMCtermite.imctermite(b"samples/sampleA.raw")
except RuntimeError as e :
print("failed to load/parse raw-file: " + str(e))
# obtain list of channels as list of dictionaries (without data)
channels = imcraw.get_channels(False)
print(channels)
```
A more complete [example](python/examples/usage.py), including the methods for
obtaining the channels, i.a. their data and/or directly printing them to files,
can be found in the `python/examples` folder.
## References
- https://www.imc-tm.de/produkte/messtechnik-software/imc-famos/funktionen/im-und-export/
- https://www.imc-tm.de/produkte/messtechnik-hardware/imc-cronosflex/ueberblick/
- https://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html
- https://github.com/Apollo3zehn/ImcFamosFile
- https://apollo3zehn.github.io/ImcFamosFile/api/ImcFamosFile.FamosFileKeyType.html
- https://pypi.org/help/#apitoken
- https://sgoel.dev/posts/uploading-binary-wheels-to-pypi-from-github-actions/
- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml
- https://cibuildwheel.readthedocs.io/en/stable/deliver-to-pypi/
- https://www.gnu.org/software/libiconv/
- https://vcpkg.io/en/packages.html
- https://vcpkg.io/en/getting-started
Raw data
{
"_id": null,
"home_page": "https://github.com/RecordEvolution/IMCtermite.git",
"name": "IMCtermite",
"maintainer": "Record Evolution GmbH",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "IMC,raw,imcFAMOS,imcSTUDIO,imcCRONOS",
"author": "Record Evolution GmbH",
"author_email": "mario.fink@record-evolution.de",
"download_url": "https://files.pythonhosted.org/packages/92/e9/076e7baef093aea76601834e05682fc38778b5d63b55a22f2feaafe9812c/IMCtermite-2.0.16.tar.gz",
"platform": null,
"description": "# IMCtermite\n\n_IMCtermite_ provides access to the proprietary data format\n_IMC Bus Format_ with the file extension _.raw_ introduced and developed by\n[imc Test & Measurement GmbH](https://www.imc-tm.de/). This data format is\nemployed i.a. by the measurement hardware\n[imc CRONOSflex](https://www.imc-tm.de/produkte/messtechnik-hardware/imc-cronosflex/ueberblick/)\nto dump and store data and the software packages\n[imc Studio](https://www.imc-tm.de/produkte/messtechnik-software/imc-studio/ueberblick/)\n& [imc FAMOS](https://www.imc-tm.de/produkte/messtechnik-software/imc-famos/)\nfor measurement data control and analysis. Thanks to the integrated Python module,\nthe extracted measurement data can be stored in any open-source file format\naccessible by Python like i.a. _csv_, _json_ or _parquet_.\n\nOn the [Record Evolution Platform](https://www.record-evolution.de/en/home-en/), the library can be used both as a command line tool for interactive usage and as a Python module to integrate the _.raw_ format into any ETL workflow. \n\n## Overview\n\n* [File format](#Fileformat)\n* [Build and Installation](#Installation)\n* [Usage and Examples](#Usage)\n* [References](#References)\n\n## File format\n\n[Warning: Take a look at [this issue](https://github.com/RecordEvolution/IMCtermite/issues/14) when reading this section regarding the file format.]\n\nA data file of the _IMC Bus Format_ type with the extension _.raw_ is a _mixed text/binary\nfile_ featuring a set of markers (keys) that indicate the start of various blocks\nof data that provide meta information and the actual measurement data. Every single\nmarker is introduced by the character `\"|\" = 0x 7c` followed by two uppercase letters that characterize the type of marker. Each block is further divided into several\nparameters separated by commata `\",\" = 0x 2c` and terminated by a semicolon\n`\";\" = 0x 3b`. For instance, the header - first 600 bytes - of a raw file may\nlook like this (in UTF-8 encoding):\n\n```\n|CF,2,1,1;|CK,1,3,1,1;\n|NO,1,86,0,78,imc STUDIO 5.0 R10 (04.08.2017)@imc DEVICES 2.9R7 (25.7.2017)@imcDev__15190567,0,;\n|CG,1,5,1,1,1; |CD,2, 63, 5.0000000000000001E-03,1,1,s,0,0,0, 0.0000000000000000E+00,1;\n|NT,1,16,1,1,1980,0,0,0.0; |CC,1,3,1,1;|CP,1,16,1,4,7,32,0,0,1,0;\n|CR,1,60,0, 1.0000000000000000E+00, 0.0000000000000000E+00,1,4,mbar;|CN,1,27,0,0,0,15,pressure_Vacuum,0,;\n|Cb,1, 117,1,0, 1, 1, 0, 9608, 0, 9608,1, 2.0440300000000000E+03, 1.2416717060000000E+09,;\n|CS,1, 9619, 1,\ufffdoD\t\ufffdnD6\ufffdnD)\ufffdnD\ufffd\n```\n\nLine breaks are introduced for readability. Most of the markers introduce\nblocks of text, while only the last block identified by `|CS` contains binary data.\nThe format supports the storage of _multiple data sets (channels)_ in a single\nfile. The channels may be ordered in _multiplex_ mode (ordering w.r.t. time) or\n_block_ mode (ordering w.r.t. to channels).\n\nThe markers (keys) are introduced by `\"|\" = 0x 7c` followed by two uppercase\nletters. There are _two types_ of markers distinguished by the first letter:\n\n1. _critical_ markers: introduced by `|C` featuring uppercase `C`\n1. _noncritical_ markers: introduced by `|N` featuring uppercase `N` \n\nThe second letter represents further details of the specific key. Note that\nwhile the _noncritical_ keys are optional, any _.raw_ file _cannot be_ correctly\ndecoded if any of the _critical_ markers are misinterpreted, invalid or damaged.\nThe second uppercase letter is followed by the first comma and the _version_\nof the key starting from 1. After the next comma, an _(long) integer_ (in text\nrepresentation) specifies the length of the entire block, i.e. the number of\nbytes between the following comma and the block-terminating semicolon. The further\nstructure of a block is not defined and may feature different numbers of additional\nparameters. The format allows for any number of carriage returns (`CR = 0x0d`)\nand line feeds (`LF = 0x 0a`) between keys, i.e. the block-terminating semicolon\nand the vertical bar (pipe) of the next key. The following _critical markers_\nare defined:\n\n\n| marker | description |\n|--------|-----------------------------------------------------------------------------------------------------|\n| CF | format version and processor |\n| CK | start of group of keys, no. parameters = 3, indicates (in)correct closure of the measurement series |\n| CB | defines a group of channels |\n| CT | text definition including group association index |\n| CG | introduces group of components corresponding to CC keys |\n| CD1,2 | old/new version of abscissa description |\n| CZ | scaling of z-axis for segments |\n| CC | start of a component |\n| CP | information about buffer, datatype and samples of component |\n| Cb | buffer description |\n| CR | permissible range of values in component |\n| CN | name and comment of channel |\n| CS | raw binary data |\n| CI | single numerical value (including unit) |\n| Ca | add reference key |\n\nAmong the _noncritical_ markers, there are\n\n| marker | description |\n|--------|--------------------------------------------|\n| NO | origin of data |\n| NT | timestamp of trigger |\n| ND | (color) display properties |\n| NU | user defined key |\n| Np | property of a channel |\n| NE | extraction rule for channels from BUS data |\n\nThe format loosely defines some rules for the ordering of the markers in the\nfile stream. The rules for critical keys include: _CK_ has to follow up on _CF_,\n_CK_ may be followed by any number of _CG_ blocks, each _CG_ has to be followed\nby (any number of) component sequences comprised of the series _CC_ , _CP_,\n(_CR_), (_ND_) and terminated by either _CS_ or the start of a new group,\ncomponent, text field or buffer.\n\n## Installation\n\nThe _IMCtermite_ library may be employed both as a _CLI_ tool and a _python_\nmodule.\n\n### CLI tool\n\nTo build the CLI tool locally, use the default target `make` resulting\nin the binary `imctermite`. To ensure system-wide availability, the installation\nof the tool (in the default location `/usr/local/bin`) is done via\n\n```\nmake install\n````\n\nwhich may require root permissions.\n\n### Python\n\nTo integrate the library into a customized ETL toolchain, several cython targets\nare available. For a local build that enables you to run the examples, use:\n\n```\nmake cython-build\n```\n\nHowever, in a production environment, a proper installation of the module with\n`make cython-install` is recommended for system-wide availability of the module.\n\n#### Installation with pip\n\nThe package is also available in the [Python Package Index](https://pypi.org)\nat [IMCtermite](https://pypi.org/project/IMCtermite/).\nTo install the latest version simply do\n\n```Shell\npython3 -m pip install IMCtermite\n```\n\nwhich provides binary wheels for multiple architectures on _Windows_ and _Linux_\nand most _Python 3.x_ distributions. However, if your platform/architecture is\nnot supported you can still compile the source distribution yourself, which\nrequires _python3_setuptools_ and an up-to-date compiler supporting C++11\nstandard (e.g. _gcc version >= 10.2.0_).\n\n## Usage\n\n### CLI\n\nThe usage of the `imctermite` binary looks like this:\n\n```\nimctermite <raw-file> [options]\n```\n\nYou have to provide a single _raw_ file and any option to specify what\nto do with the data. All available options can be listed with `imctermite --help`:\n\n```\nOptions:\n\n -c, --listchannels list channels\n -b, --listblocks list IMC key-blocks\n -d, --output output directory to print channels\n -s, --delimiter csv delimiter/separator char for output\n -h, --help show this help message\n -v, --version display version\n```\n\nFor instance, to show a list of all channels included in `sample-data.raw`, you\ndo `imctermite sample-data.raw --listchannels`. No output files are\nwritten by default. Output files are written only when an existing (!) directory\nis provided as argument to the `--output` option. By default, every output file\nis written using a `,` delimiter. You may provide any custom separator with the\noption `--delimiter`. For example, in order to use `|`, the binary is called with\noptions `imctermite sample-data.raw -b -c -s '|'`.\n\n### Python\n\nGiven the `IMCtermite` module is available, we can import it and declare an instance\nof it by passing a _raw_ file to the constructor:\n\n```Python\nimport IMCtermite\n\nimcraw = IMCtermite.imctermite(b\"sample/sampleA.raw\")\n```\n\nAn example of how to create an instance and obtain the list of channels is:\n\n```Python\nimport IMCtermite\n\n# declare and initialize instance of \"imctermite\" by passing a raw-file\ntry :\n imcraw = IMCtermite.imctermite(b\"samples/sampleA.raw\")\nexcept RuntimeError as e :\n print(\"failed to load/parse raw-file: \" + str(e))\n\n# obtain list of channels as list of dictionaries (without data)\nchannels = imcraw.get_channels(False)\nprint(channels)\n```\n\nA more complete [example](python/examples/usage.py), including the methods for\nobtaining the channels, i.a. their data and/or directly printing them to files,\ncan be found in the `python/examples` folder.\n\n## References\n\n- https://www.imc-tm.de/produkte/messtechnik-software/imc-famos/funktionen/im-und-export/\n- https://www.imc-tm.de/produkte/messtechnik-hardware/imc-cronosflex/ueberblick/\n- https://cython.readthedocs.io/en/latest/src/userguide/wrapping_CPlusPlus.html\n- https://github.com/Apollo3zehn/ImcFamosFile\n- https://apollo3zehn.github.io/ImcFamosFile/api/ImcFamosFile.FamosFileKeyType.html\n- https://pypi.org/help/#apitoken\n- https://sgoel.dev/posts/uploading-binary-wheels-to-pypi-from-github-actions/\n- https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#jobsjob_idstepsrun\n- https://github.com/pypa/cibuildwheel/blob/main/examples/github-deploy.yml\n- https://cibuildwheel.readthedocs.io/en/stable/deliver-to-pypi/\n- https://www.gnu.org/software/libiconv/\n- https://vcpkg.io/en/packages.html\n- https://vcpkg.io/en/getting-started\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Enables extraction of measurement data from binary files with extension 'raw' used by proprietary software imcFAMOS and imcSTUDIO and facilitates its storage in open source file formats",
"version": "2.0.16",
"project_urls": {
"Homepage": "https://github.com/RecordEvolution/IMCtermite.git"
},
"split_keywords": [
"imc",
"raw",
"imcfamos",
"imcstudio",
"imccronos"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "9503c7b22d7c3c1ae2391fc6ea97d7e1a14869059005ff5c90caa30b8cd7922b",
"md5": "a3bf284bb96b5acc446e2580871270bd",
"sha256": "36beb4aa2bf4f3929b6dc4ba74d4c19666a001ec932ab07654c2eb5bdda87e6b"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "a3bf284bb96b5acc446e2580871270bd",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1056533,
"upload_time": "2023-08-08T22:02:14",
"upload_time_iso_8601": "2023-08-08T22:02:14.886292Z",
"url": "https://files.pythonhosted.org/packages/95/03/c7b22d7c3c1ae2391fc6ea97d7e1a14869059005ff5c90caa30b8cd7922b/IMCtermite-2.0.16-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6384b5d00f67bcc1faf17da218a1cb5f3cc08a7395aec44edbc18b3651ca6493",
"md5": "d2503c5acb9a85e19a3c21b3a8c40af6",
"sha256": "d9db2cf9007cffa9d77217b0be759697d992f1887dec0568f4ee553b7a85f518"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "d2503c5acb9a85e19a3c21b3a8c40af6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 1093426,
"upload_time": "2023-08-08T22:02:17",
"upload_time_iso_8601": "2023-08-08T22:02:17.110278Z",
"url": "https://files.pythonhosted.org/packages/63/84/b5d00f67bcc1faf17da218a1cb5f3cc08a7395aec44edbc18b3651ca6493/IMCtermite-2.0.16-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c84b15f117a39c25c28c9d61bda98c3489f2b1a7f0ae1757f3bc0014a7ff7b46",
"md5": "a52c2295022eaf9fe171e81e480feeb7",
"sha256": "aafaa4203508a1130d656eb431b0d007286eefb48c7a36be880cc449b8a24d3a"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "a52c2295022eaf9fe171e81e480feeb7",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 86519,
"upload_time": "2023-08-08T22:02:18",
"upload_time_iso_8601": "2023-08-08T22:02:18.556973Z",
"url": "https://files.pythonhosted.org/packages/c8/4b/15f117a39c25c28c9d61bda98c3489f2b1a7f0ae1757f3bc0014a7ff7b46/IMCtermite-2.0.16-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4206db3d9ab7c2920f22e59b9f6d210bfba3394a81c1aa4d9131e138b593bc7e",
"md5": "20d3a0fe3c9e8f9b48633435f1df57e4",
"sha256": "bf7352b09f016876810fcee1cc4042e5613da9fbe9f79f55a2f3c66b33ace20f"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "20d3a0fe3c9e8f9b48633435f1df57e4",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": null,
"size": 94151,
"upload_time": "2023-08-08T22:02:20",
"upload_time_iso_8601": "2023-08-08T22:02:20.219481Z",
"url": "https://files.pythonhosted.org/packages/42/06/db3d9ab7c2920f22e59b9f6d210bfba3394a81c1aa4d9131e138b593bc7e/IMCtermite-2.0.16-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6f20b2ca494705da2fc0aba36164bf335a77092c687f9a53bb5af141b476a121",
"md5": "524707bacb1fbf24bb068c9812f2b9b7",
"sha256": "db3c6f2a9da61a5d75747e1a0242cad1c3caeb7a5864e6a95b57987b886658e0"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "524707bacb1fbf24bb068c9812f2b9b7",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 1045375,
"upload_time": "2023-08-08T22:02:22",
"upload_time_iso_8601": "2023-08-08T22:02:22.190923Z",
"url": "https://files.pythonhosted.org/packages/6f/20/b2ca494705da2fc0aba36164bf335a77092c687f9a53bb5af141b476a121/IMCtermite-2.0.16-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9729c83145002400dc8c2aef2bc5851951d1a1c98533f879b680fd023c9392f1",
"md5": "316e644b10f2109565a779932fd8305a",
"sha256": "465a8dd36c7626257a329edc7902151e8192d4418fcc0fc150f7b53a0b727a8f"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "316e644b10f2109565a779932fd8305a",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 1076800,
"upload_time": "2023-08-08T22:02:24",
"upload_time_iso_8601": "2023-08-08T22:02:24.393413Z",
"url": "https://files.pythonhosted.org/packages/97/29/c83145002400dc8c2aef2bc5851951d1a1c98533f879b680fd023c9392f1/IMCtermite-2.0.16-cp36-cp36m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "50cba18d3a00278d665c2c1df7a2c770e790fdcb6a7a03f5841fc8d1fd569e3e",
"md5": "77b31a2baf8f60b2e7fc217bb776676f",
"sha256": "310a233b887611052f83a15a27cdfe94511d59046af8ebccb557425645358711"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp36-cp36m-win32.whl",
"has_sig": false,
"md5_digest": "77b31a2baf8f60b2e7fc217bb776676f",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 88748,
"upload_time": "2023-08-08T22:02:25",
"upload_time_iso_8601": "2023-08-08T22:02:25.820567Z",
"url": "https://files.pythonhosted.org/packages/50/cb/a18d3a00278d665c2c1df7a2c770e790fdcb6a7a03f5841fc8d1fd569e3e/IMCtermite-2.0.16-cp36-cp36m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bcd3a4f430b1ff42e31140b951ed9dad84be52ce7271ff20e47cf25b8787256a",
"md5": "d3ccda446748c3c6434d8ef7df9dca39",
"sha256": "0aba6c3c94da6a95d1c7c4e02910e20ea77e3b53431cac751935d7237fa751f8"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp36-cp36m-win_amd64.whl",
"has_sig": false,
"md5_digest": "d3ccda446748c3c6434d8ef7df9dca39",
"packagetype": "bdist_wheel",
"python_version": "cp36",
"requires_python": null,
"size": 99274,
"upload_time": "2023-08-08T22:02:27",
"upload_time_iso_8601": "2023-08-08T22:02:27.618670Z",
"url": "https://files.pythonhosted.org/packages/bc/d3/a4f430b1ff42e31140b951ed9dad84be52ce7271ff20e47cf25b8787256a/IMCtermite-2.0.16-cp36-cp36m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "728a3743f6cf04c002841951e54016fa4a55a0535fefe928bb36cbbee8df712d",
"md5": "24c932dd245f8157bbe44564873725ea",
"sha256": "2593591d0e8734d8a8d43c55f3eadeb444dc339da19de9590eb0d348171e1ae7"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "24c932dd245f8157bbe44564873725ea",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 1052003,
"upload_time": "2023-08-08T22:02:29",
"upload_time_iso_8601": "2023-08-08T22:02:29.151465Z",
"url": "https://files.pythonhosted.org/packages/72/8a/3743f6cf04c002841951e54016fa4a55a0535fefe928bb36cbbee8df712d/IMCtermite-2.0.16-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0ae9303a721de4f57c6affbfdd3eaf5e5caf58fd904603bac2ac8bae475300a9",
"md5": "20b72eeafa6c74129a2abca618a212bc",
"sha256": "010d7f72a379d44bbf701c846b02cd8c04770f79273f7159ec15229222b238f7"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "20b72eeafa6c74129a2abca618a212bc",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 1084935,
"upload_time": "2023-08-08T22:02:30",
"upload_time_iso_8601": "2023-08-08T22:02:30.943700Z",
"url": "https://files.pythonhosted.org/packages/0a/e9/303a721de4f57c6affbfdd3eaf5e5caf58fd904603bac2ac8bae475300a9/IMCtermite-2.0.16-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bf8d0043bd8318f453fbef40d7107e41e6c4cd266260e24d4e0d26c93c2572ca",
"md5": "77ca8f84d9b8d2d22531d01260e1aad5",
"sha256": "b57b2ee90634458d31ad97fd97f4b5eee21cfa59ad67cc941db0c060d2bf5cf7"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp37-cp37m-win32.whl",
"has_sig": false,
"md5_digest": "77ca8f84d9b8d2d22531d01260e1aad5",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 86714,
"upload_time": "2023-08-08T22:02:32",
"upload_time_iso_8601": "2023-08-08T22:02:32.979725Z",
"url": "https://files.pythonhosted.org/packages/bf/8d/0043bd8318f453fbef40d7107e41e6c4cd266260e24d4e0d26c93c2572ca/IMCtermite-2.0.16-cp37-cp37m-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8660b1b4f4b439a486db79598b74342a2173d0b214151af69e80d683126152f5",
"md5": "8dfa893f433bcf5a2ad132ade1362520",
"sha256": "99856e0261885380928c697c7284db946a72a1b2754a552271dac7e5ce58233d"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp37-cp37m-win_amd64.whl",
"has_sig": false,
"md5_digest": "8dfa893f433bcf5a2ad132ade1362520",
"packagetype": "bdist_wheel",
"python_version": "cp37",
"requires_python": null,
"size": 94950,
"upload_time": "2023-08-08T22:02:34",
"upload_time_iso_8601": "2023-08-08T22:02:34.162487Z",
"url": "https://files.pythonhosted.org/packages/86/60/b1b4f4b439a486db79598b74342a2173d0b214151af69e80d683126152f5/IMCtermite-2.0.16-cp37-cp37m-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "014b223edaf8c4491166bef3ce75386ae6e502366abb6d8a9bba270e36c02c76",
"md5": "fa1b98e562ac305d852176049beabb9a",
"sha256": "0fd9fd9cb49edb54c1e20e35cb5ab56fd52040659cf8a0f68b2dfffaad945c7c"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "fa1b98e562ac305d852176049beabb9a",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 1070205,
"upload_time": "2023-08-08T22:02:35",
"upload_time_iso_8601": "2023-08-08T22:02:35.596193Z",
"url": "https://files.pythonhosted.org/packages/01/4b/223edaf8c4491166bef3ce75386ae6e502366abb6d8a9bba270e36c02c76/IMCtermite-2.0.16-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e1c3865c95345e6563a2e81c59a05c2aa6b27d63880cc4b5f91dab5ebe9fc82",
"md5": "9f802294d0b450599191e9f1e1d825d4",
"sha256": "e3d6a250d2c30a662a2e8bcd0db6183c22ac3341b2a2bfdf692a02c4c08e78e2"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "9f802294d0b450599191e9f1e1d825d4",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 1105651,
"upload_time": "2023-08-08T22:02:37",
"upload_time_iso_8601": "2023-08-08T22:02:37.756007Z",
"url": "https://files.pythonhosted.org/packages/4e/1c/3865c95345e6563a2e81c59a05c2aa6b27d63880cc4b5f91dab5ebe9fc82/IMCtermite-2.0.16-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e23b11f5b33983a8b46ce09a2afd799a66a35aa60ce83fc04c009ba944eb0229",
"md5": "b6ab9197e78b87a8932cd518e3abda68",
"sha256": "4f9ac42a14f346ed43a6c399c331bbc057df0e80560a8c0177aee10690dcafc1"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp38-cp38-win32.whl",
"has_sig": false,
"md5_digest": "b6ab9197e78b87a8932cd518e3abda68",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 87138,
"upload_time": "2023-08-08T22:02:39",
"upload_time_iso_8601": "2023-08-08T22:02:39.020811Z",
"url": "https://files.pythonhosted.org/packages/e2/3b/11f5b33983a8b46ce09a2afd799a66a35aa60ce83fc04c009ba944eb0229/IMCtermite-2.0.16-cp38-cp38-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f197bbbe05d76fe3f7c32a79763c156a91511daeef177d20f6ada54774c32079",
"md5": "393722cd11569e10a3eeeb23ed8fc5fa",
"sha256": "4ca2611f8d483b8bf3b3cf3c6ee028c76fba3c1802009d8c557c75ff7b79d6cb"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp38-cp38-win_amd64.whl",
"has_sig": false,
"md5_digest": "393722cd11569e10a3eeeb23ed8fc5fa",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": null,
"size": 94850,
"upload_time": "2023-08-08T22:02:40",
"upload_time_iso_8601": "2023-08-08T22:02:40.681663Z",
"url": "https://files.pythonhosted.org/packages/f1/97/bbbe05d76fe3f7c32a79763c156a91511daeef177d20f6ada54774c32079/IMCtermite-2.0.16-cp38-cp38-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a5bd47af4afaec34092c0790b7260480e87d5b6165f9ea1b1f1a5907b68c83a8",
"md5": "f7b812691be56d46c9134dfe747e949a",
"sha256": "8bac5608f4929c340b9626c54771082d3ea9ccb603cabf1e003ff581fa4ef64b"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "f7b812691be56d46c9134dfe747e949a",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1060080,
"upload_time": "2023-08-08T22:02:42",
"upload_time_iso_8601": "2023-08-08T22:02:42.723859Z",
"url": "https://files.pythonhosted.org/packages/a5/bd/47af4afaec34092c0790b7260480e87d5b6165f9ea1b1f1a5907b68c83a8/IMCtermite-2.0.16-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e81cab016e4f19de92ee8be6f825a7d0d7bd02537accfe7646b7f612e7d2df4",
"md5": "534d29a67b883e27c6989d091e64ac84",
"sha256": "22cce5280bd6356d400d67cc8138f1188eaefe41dfb86dcaa3fd04eb1cf7a02b"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "534d29a67b883e27c6989d091e64ac84",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 1095533,
"upload_time": "2023-08-08T22:02:44",
"upload_time_iso_8601": "2023-08-08T22:02:44.891616Z",
"url": "https://files.pythonhosted.org/packages/4e/81/cab016e4f19de92ee8be6f825a7d0d7bd02537accfe7646b7f612e7d2df4/IMCtermite-2.0.16-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "189ea16880213078abeee0a077f62076acdb304b51831552ccdfb711739c263c",
"md5": "b08912bb35894386e0757945ed9e5164",
"sha256": "8a41e2770aff53d57c0c771020cda7f86a8dc4451910135a004b8d5c64abf2e7"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "b08912bb35894386e0757945ed9e5164",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 87069,
"upload_time": "2023-08-08T22:02:47",
"upload_time_iso_8601": "2023-08-08T22:02:47.235407Z",
"url": "https://files.pythonhosted.org/packages/18/9e/a16880213078abeee0a077f62076acdb304b51831552ccdfb711739c263c/IMCtermite-2.0.16-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d463381c673c87418cac0b8751eac86bcf3fef5567be6ccaa87a42ad6056a185",
"md5": "79695addbc2086b5063462f0d430651b",
"sha256": "e582946fb06d85382433213475a41c1118de302c554f7f99929aaee34fc237f4"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "79695addbc2086b5063462f0d430651b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": null,
"size": 94775,
"upload_time": "2023-08-08T22:02:48",
"upload_time_iso_8601": "2023-08-08T22:02:48.414397Z",
"url": "https://files.pythonhosted.org/packages/d4/63/381c673c87418cac0b8751eac86bcf3fef5567be6ccaa87a42ad6056a185/IMCtermite-2.0.16-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "42525a02fab54d092a267cf62cc97462e78fde1154e2e07236d533399387a819",
"md5": "651a58218732d2ebef9ae3c2c362ae86",
"sha256": "65017529124c30e05d7d22bc613368b147b2424216fc18a6070ff6cf17234840"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl",
"has_sig": false,
"md5_digest": "651a58218732d2ebef9ae3c2c362ae86",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": null,
"size": 129602,
"upload_time": "2023-08-08T22:02:49",
"upload_time_iso_8601": "2023-08-08T22:02:49.642726Z",
"url": "https://files.pythonhosted.org/packages/42/52/5a02fab54d092a267cf62cc97462e78fde1154e2e07236d533399387a819/IMCtermite-2.0.16-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e3a766ad8c6b02a74654ec9795a6e0bf61d8d38df8f5695bfc3229d188684d21",
"md5": "1c54e85cefce9f9dbc55e01f7b6092cf",
"sha256": "65ca1c544bf126157a061ed9d1cf94d29fe47116eb5cd76c80e3465ecb3ad7f5"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"has_sig": false,
"md5_digest": "1c54e85cefce9f9dbc55e01f7b6092cf",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": null,
"size": 123296,
"upload_time": "2023-08-08T22:02:50",
"upload_time_iso_8601": "2023-08-08T22:02:50.877219Z",
"url": "https://files.pythonhosted.org/packages/e3/a7/66ad8c6b02a74654ec9795a6e0bf61d8d38df8f5695bfc3229d188684d21/IMCtermite-2.0.16-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0ade6884d90d01d43c17711b1a03c59814143026b1e38d9ed040101d812c9d24",
"md5": "b513572201d412ea4824fa75b8bc8a8d",
"sha256": "afa49ec512636b198bd8ddaa741f6f95ff095085578ff3699b7de273bcf13b19"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16-pp37-pypy37_pp73-win_amd64.whl",
"has_sig": false,
"md5_digest": "b513572201d412ea4824fa75b8bc8a8d",
"packagetype": "bdist_wheel",
"python_version": "pp37",
"requires_python": null,
"size": 87977,
"upload_time": "2023-08-08T22:02:52",
"upload_time_iso_8601": "2023-08-08T22:02:52.793393Z",
"url": "https://files.pythonhosted.org/packages/0a/de/6884d90d01d43c17711b1a03c59814143026b1e38d9ed040101d812c9d24/IMCtermite-2.0.16-pp37-pypy37_pp73-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "92e9076e7baef093aea76601834e05682fc38778b5d63b55a22f2feaafe9812c",
"md5": "2e2fa2d14ff0089bfcc67b1ca15ac537",
"sha256": "d376fd1cd199c437faa5b51e55227a623440a29ea30e348c6ce728233d4749c7"
},
"downloads": -1,
"filename": "IMCtermite-2.0.16.tar.gz",
"has_sig": false,
"md5_digest": "2e2fa2d14ff0089bfcc67b1ca15ac537",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 72349,
"upload_time": "2023-08-08T22:02:53",
"upload_time_iso_8601": "2023-08-08T22:02:53.847135Z",
"url": "https://files.pythonhosted.org/packages/92/e9/076e7baef093aea76601834e05682fc38778b5d63b55a22f2feaafe9812c/IMCtermite-2.0.16.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-08 22:02:53",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "RecordEvolution",
"github_project": "IMCtermite",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "imctermite"
}