{ "info": { "author": "Jean-Charles Lefebvre", "author_email": "polyvertex@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.6" ], "description": "=========\nfitdecode\n=========\n\n.. image:: https://readthedocs.org/projects/fitdecode/badge/?version=latest\n :target: http://fitdecode.readthedocs.io/\n :alt: Latest Docs\n\n.. image:: https://travis-ci.org/polyvertex/fitdecode.svg\n :target: https://travis-ci.org/polyvertex/fitdecode\n\n\nA `FIT `_ file parsing and decoding library written in\n`Python3 `_ (3.6+ only).\n\n\nUsage Example\n=============\n\nRead a FIT file, frame by frame:\n\n.. code:: python\n\n import fitdecode\n\n with fitdecode.FitReader(src_file) as fit:\n for frame in fit:\n # The yielded *frame* object is of one of the following types:\n # * fitdecode.FitHeader\n # * fitdecode.FitDefinitionMessage\n # * fitdecode.FitDataMessage\n # * fitdecode.FitCRC\n #\n # A fitdecode.FitDataMessage object contains decoded values that are\n # directly usable in your script logic.\n pass\n\n\nInstallation\n============\n\nfitdecode is available on `PyPI `_::\n\n $ pip install fitdecode\n\n\nOr, to get the latest working version, you can clone fitdecode's `source code\nrepository `_ before installing it::\n\n $ git clone git@github.com:polyvertex/fitdecode.git\n $ cd fitdecode\n $ python setup.py test # optional step to run unit tests\n $ python setup.py install\n\n\nNote that for convenience, the ``cmd`` directory located at the root of the\nsource code tree can safely be added to your ``PATH``, so that fitdecode\ncommands can be called without the package to be installed.\n\n\nOverview\n========\n\nfitdecode is a non offensive and incompatible rewrite of the fitparse_ library,\nwith some improvements and additional features, as well as efforts made to\noptimize both speed and memory usage.\n\nMain differences between fitdecode and fitparse:\n\n* fitdecode requires Python version 3.6 or greater\n\n* fitdecode is faster\n\n* fitdecode allows concurrent reading of multiple files by being thread-safe, in\n the sense that fitdecode's objects keep their state stored locally\n\n* fitdecode high-level interface - FitReader - is not compatible with fitparse's\n FitFile\n\n* fitdecode does not discard the FIT header and the CRC footer while iterating\n a file, which allow to get a complete 1:1 representation of the file that is\n being read\n\n* This also allows the client to easily deal with so-called chained FIT files,\n as per FIT SDK definition (i.e. concatenated FIT files)\n\n* CRC computation and matching are both optional. CRC can be matched, only\n computed, or fully ignored for faster reading.\n\n* fitdecode offers optional access to records, headers and footers in their\n binary form, to allow FIT file cutting, stitching and filtering at binary\n level\n\n\nWhy a new library?\n==================\n\nA new library has been created instead of just offering to patch fitparse_\nbecause many changes and adds in fitdecode break fitparse's backward\ncompatibilty and because it allowed more freedom during the development of\nfitdecode.\n\n\nDocumentation\n=============\n\nDocumentation is available at ``_\n\n\nLicense\n=======\n\nThis project is distributed under the terms of the MIT license.\nSee the `LICENSE.txt `_ file for details.\n\n\nCredits\n=======\n\nfitdecode is largely based on the generic approach adopted by fitparse_ to\ndefine FIT types and to decode raw values. That includes the module\n``profile.py`` and all the classes it refers to, as well as the script\n``generate_profile.py``.\n\n\n\n.. _fitparse: https://github.com/dtcooper/python-fitparse\n\n\n.. :changelog:\n\n==========\nChange Log\n==========\n\n\nv0.5.0 (2019-04-11)\n===================\n\n* Added `fitdecode.DataProcessorBase` class\n* ``check_crc`` - the parameter to `fitdecode.FitReader`'s constructor - can now\n be either \"enabled\", \"read-only\" or \"disabled\" (fix #1)\n* Minor speed improvements\n\n\nv0.4.0 (2019-04-10)\n===================\n\n* Added `fitdecode.FitDataMessage.has_field`\n* `fitdecode.FitDataMessage.get_fields` is now a generator\n* `fitdecode.FitDataMessage.get_values` is now a generator\n* `fitdecode.DefaultDataProcessor` now converts ``hr.event_timestamp`` values\n that were populated from ``hr.event_timestamp_12`` components to\n `datetime.datetime` objects for convenience\n* ``fitjson`` and ``fittxt`` utilities:\n * Added support for input files with Unicode characters\n * Still write output file even if an error occurred while parsing FIT file\n* Fixed handling of some FIT fields that are both scaled and components.\n See https://github.com/dtcooper/python-fitparse/issues/84\n* Improved support for malformed FIT files.\n See https://github.com/dtcooper/python-fitparse/issues/62\n* ``generate_profile`` utility slightly improved\n* Added some unit tests\n* Minor improvements and corrections\n\n\nv0.3.0 (2018-07-27)\n===================\n\n* Added `fitdecode.utils.get_mesg_field`\n* Added `fitdecode.utils.get_mesg_field_num`\n* Minor improvements and corrections\n\n\nv0.2.0 (2018-07-16)\n===================\n\n* Added `FieldData.name_or_num`\n* Added `FitDataMessage.get_fields`\n* Added `FitDataMessage.get_values`\n* Improved `FitDataMessage.get_field` (*idx* arg)\n* Improved `FitDataMessage.get_value` (*idx* arg)\n* Completed documentation of `FitDataMessage`\n* Improved documentation of `FieldData`\n* `FitReader`'s internal state is reset as well after a `FitCRC` has been\n yielded (i.e. not only when a FIT header is about to be read), in order to\n avoid incorrect behavior due to malformed FIT stream\n\n\nv0.1.0 (2018-07-14)\n===================\n\n* Added class property ``frame_type`` (read-only) to `FitHeader`, `FitCRC`,\n `FitDefinitionMessage` and `FitDataMessage` (``records`` module) to ease and\n speed up type checking\n* Added `FitDataMessage.get_value` method\n* ``string`` values with no null byte are still decoded (in full length)\n* ``cmd`` directory added to the source code tree for convenience\n\n\nv0.0.1 (2018-07-08)\n===================\n\n* First release\n\n\nv0.0.0 (2018-05-31)\n===================\n\n* Birth!\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/polyvertex/fitdecode", "keywords": "fit,ant,file,parse,parser,decode,decoder", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "fitdecode", "package_url": "https://pypi.org/project/fitdecode/", "platform": "", "project_url": "https://pypi.org/project/fitdecode/", "project_urls": { "Homepage": "https://github.com/polyvertex/fitdecode" }, "release_url": "https://pypi.org/project/fitdecode/0.5.0/", "requires_dist": [ "sphinx; extra == 'docs'", "sphinx-rtd-theme; extra == 'docs'" ], "requires_python": ">=3.6", "summary": "FIT file parser and decoder", "version": "0.5.0" }, "last_serial": 5128697, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "bd6319c9d150ac4537137366b4eb2d9b", "sha256": "dd6b258b822b4d9636d733ac76786daeedf2e8ed5045cd6bbdd8a36e2801fa12" }, "downloads": -1, "filename": "fitdecode-0.0.0.tar.gz", "has_sig": false, "md5_digest": "bd6319c9d150ac4537137366b4eb2d9b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 2098, "upload_time": "2018-06-08T20:46:12", "url": "https://files.pythonhosted.org/packages/f5/c9/59cd7371c66173c89783f6fedc66035edd7a0b59a9bfcc06d5b48e7db90c/fitdecode-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "40ea816adeefb97245dde53401e95233", "sha256": "3849fb536134ee039c5408be72c6287e19cacfdbda55f8ddb47bb1e590a6521b" }, "downloads": -1, "filename": "fitdecode-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "40ea816adeefb97245dde53401e95233", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 79631, "upload_time": "2018-07-08T21:28:20", "url": "https://files.pythonhosted.org/packages/9c/db/849b4ccca569d1957e4a650ba5b19350a9c742dc5d755385747c1cd419c1/fitdecode-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3d5974df79f41bdd8801b31760a96413", "sha256": "a9393436e193831b1f92fb8f12ca5444edd51a02ee1cc87c6f977be5a510e5bf" }, "downloads": -1, "filename": "fitdecode-0.0.1.tar.gz", "has_sig": false, "md5_digest": "3d5974df79f41bdd8801b31760a96413", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 71083, "upload_time": "2018-07-08T21:28:23", "url": "https://files.pythonhosted.org/packages/ae/7b/21e29b06a03c93c7802d9ab42054ce605e39603b4a072878508f164744a7/fitdecode-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "941cc5273cb6214cc1f40f77dcdef845", "sha256": "0ffa6286a5feec93c237f969d392bdcb62b9d3d92050c28fbde6e05f823e9f47" }, "downloads": -1, "filename": "fitdecode-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "941cc5273cb6214cc1f40f77dcdef845", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 81875, "upload_time": "2018-07-14T15:01:46", "url": "https://files.pythonhosted.org/packages/2c/74/2073e4af1457c2716ea83e07662dcff602c26afac3beebcf4e2411135685/fitdecode-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e975fac7cabb867a9dfd2148a7f656d", "sha256": "95d92b15b1aae109f355bd3a2bf0ae8a0618d4e4d684e3804d50dc103baa0f47" }, "downloads": -1, "filename": "fitdecode-0.1.0.tar.gz", "has_sig": false, "md5_digest": "6e975fac7cabb867a9dfd2148a7f656d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 72701, "upload_time": "2018-07-14T15:01:48", "url": "https://files.pythonhosted.org/packages/b7/4b/5d1d5ccfc4a6ab2dbc8abf3dde909845d0378e923a02b06cdcdd577a43e3/fitdecode-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "72e8c5770d894ef4a7a81fd637232289", "sha256": "2efb8b929a11139dd784c0e2eee6fc816c15d4409ae7b401b980e580fd978f02" }, "downloads": -1, "filename": "fitdecode-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "72e8c5770d894ef4a7a81fd637232289", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 83420, "upload_time": "2018-07-16T20:16:48", "url": "https://files.pythonhosted.org/packages/42/f6/d932b7ea185342c05b00ad1a93e583d5a91d8ba0f361c1f9d1bdb8886ab0/fitdecode-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd1b4079d7db36dc92d0b2d43ff0e45a", "sha256": "c3bdcbce9e1ebe77f7c475cdd9bfc8bef4eed32b381d092a7112efa4baf70449" }, "downloads": -1, "filename": "fitdecode-0.2.0.tar.gz", "has_sig": false, "md5_digest": "bd1b4079d7db36dc92d0b2d43ff0e45a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 74138, "upload_time": "2018-07-16T20:16:50", "url": "https://files.pythonhosted.org/packages/c6/e8/ff518e8e74aaabc6366560a6f537f496bf5050bd64b405aa17ba82eb3f28/fitdecode-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "8d7b8e2a554ed99926661c47551a7dc1", "sha256": "481bf5c26b22cd7a89987a941cc67bb0a43eeb733f41993573cd7925dc14080b" }, "downloads": -1, "filename": "fitdecode-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8d7b8e2a554ed99926661c47551a7dc1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 83725, "upload_time": "2018-07-27T06:58:45", "url": "https://files.pythonhosted.org/packages/65/cd/03bd62982da283bbf8fd88d438784cb213b59eba610e3ae45510e2211de9/fitdecode-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "51130765db91007f0bbfd1c12806bcb8", "sha256": "0ee96fc7d8224851df7cf27f75fafdb3f6c93b62a318c5a29160f6052fd4c622" }, "downloads": -1, "filename": "fitdecode-0.3.0.tar.gz", "has_sig": false, "md5_digest": "51130765db91007f0bbfd1c12806bcb8", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 74388, "upload_time": "2018-07-27T06:58:47", "url": "https://files.pythonhosted.org/packages/95/fb/218fb76f8c7269bbb8f9ad70e4e254de9b81258d73b9630e0a729ba960fe/fitdecode-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a7382c8ff4d227794381dcc142b095c7", "sha256": "8ddbac518370ecf797c4abc0f096a6770ef20b5256a0a35f2128611a2244dda9" }, "downloads": -1, "filename": "fitdecode-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a7382c8ff4d227794381dcc142b095c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 82001, "upload_time": "2019-04-10T10:52:00", "url": "https://files.pythonhosted.org/packages/fc/e7/5a78266d09a7a89c7523abac6f722d18e47ec70395938c0f0f33865ec534/fitdecode-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fb3f884e916ae8689b4ba246f3f47480", "sha256": "9d22af5f2966dae14e57af898d4da93d2c4161481d7c96893eab18588b9eb607" }, "downloads": -1, "filename": "fitdecode-0.4.0.tar.gz", "has_sig": false, "md5_digest": "fb3f884e916ae8689b4ba246f3f47480", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 78046, "upload_time": "2019-04-10T10:52:03", "url": "https://files.pythonhosted.org/packages/2e/e7/350a2e02312aa9321d13c59c5021d2b091c36d8b3e987234523bb0a85460/fitdecode-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "004260ce1e31841a8a87695a96dbf357", "sha256": "9dee953394a79adf37d32277c382ad747b0866b2b549f0b2fa22809c37e6828b" }, "downloads": -1, "filename": "fitdecode-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "004260ce1e31841a8a87695a96dbf357", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 82709, "upload_time": "2019-04-11T12:07:17", "url": "https://files.pythonhosted.org/packages/02/27/75deecbbac3f4cc3c47b5a871166ae1d177b621365778524a77c0d93101d/fitdecode-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "544eb4e63b5bac6acac8efdad5195e2b", "sha256": "474dddd6ba174ba9aaf4df8bc7f3e4a505974ff4540ff947df6c2d5b8d6cc0a3" }, "downloads": -1, "filename": "fitdecode-0.5.0.tar.gz", "has_sig": false, "md5_digest": "544eb4e63b5bac6acac8efdad5195e2b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 78984, "upload_time": "2019-04-11T12:07:19", "url": "https://files.pythonhosted.org/packages/84/73/ce6d2e1f55d8ddc2107d3cec24122a30be85c5a5f61dab7513cd2401fa27/fitdecode-0.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "004260ce1e31841a8a87695a96dbf357", "sha256": "9dee953394a79adf37d32277c382ad747b0866b2b549f0b2fa22809c37e6828b" }, "downloads": -1, "filename": "fitdecode-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "004260ce1e31841a8a87695a96dbf357", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 82709, "upload_time": "2019-04-11T12:07:17", "url": "https://files.pythonhosted.org/packages/02/27/75deecbbac3f4cc3c47b5a871166ae1d177b621365778524a77c0d93101d/fitdecode-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "544eb4e63b5bac6acac8efdad5195e2b", "sha256": "474dddd6ba174ba9aaf4df8bc7f3e4a505974ff4540ff947df6c2d5b8d6cc0a3" }, "downloads": -1, "filename": "fitdecode-0.5.0.tar.gz", "has_sig": false, "md5_digest": "544eb4e63b5bac6acac8efdad5195e2b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 78984, "upload_time": "2019-04-11T12:07:19", "url": "https://files.pythonhosted.org/packages/84/73/ce6d2e1f55d8ddc2107d3cec24122a30be85c5a5f61dab7513cd2401fa27/fitdecode-0.5.0.tar.gz" } ] }