* Start and end timestamps are now optional when reading .rdvxz files from a range. For timestamps that are not supplied, the timestamps are parsed from the data file names to find the earliest and latest timestamp. * Fixed a bug that created a cyclic dependency between the reader and concat modules.
2.0.0
Not secure
* Add ability concatenate multiple .rdvxz files together [(docs)](https://bitbucket.org/redvoxhi/redvox-api900-python-reader/src/master/docs/v2.0.0/redvox-api900-docs.md#markdown-header-concatenating-wrappedredvoxpackets) * Add ability to identify gaps in continuous data when concatenating multiple files * Read a range of .rdvxz files from a directory with a given time window and optional redvox ids to filter against [(docs)](https://bitbucket.org/redvoxhi/redvox-api900-python-reader/src/master/docs/v2.0.0/redvox-api900-docs.md#markdown-header-loading-redvox-api-900-files-from-a-range) * Read a range of .rdvxz files from a structured directory with a given time window and optional redvox ids to filter against * Deprecated several public API methods for setting and accessing sensor fields * Add objects for summarizing RedVox data ranges [(docs)](https://bitbucket.org/redvoxhi/redvox-api900-python-reader/src/master/docs/v2.0.0/redvox-api900-docs.md#markdown-header-summarizing-wrappedredvoxpackets) * Add ability to plot summary RedVox data ranges * Refactor reader.py into several modules * Update dependency versions
1.5.0
Not secure
* Add setters for all fields * Add the ability to easily create sensor channels and RedVox packets * Add CLI that * Converts .rdvxz files to .json files * Displays the contents of .rdvxz files * Add ability to compare files and sensor channels * Update documentation and API documentation * Add more examples
1.4.1
Not secure
* Update required libraries * Add ability to get original compressed buffer from WrappedRedvoxPacket * Add utility functions for LZ4 compression
1.4.0
Not secure
* Added support for serializing to/from JSON * Fixed bug where has_time_synchronization_channel() would return true even if the payload was empty