edgetpu (10-2) mendel-chef; urgency=medium

  * Bump version for point release

 -- Coral <coral-support@google.com>  Thu, 18 Apr 2019 13:37:19 -0700

edgetpu (9-2) mendel-chef; urgency=medium

  * Add flag '--enable_assertion' to enable assertion in benchmark tests
  * Properly test installed edgetpu library (-i option)
  * Use public names
  * Use USB accelerator instead of internal name
  * Add uninstall.sh script
  * Improve edgetpu python versioning style

 -- Coral <coral-support@google.com>  Wed, 03 Apr 2019 14:11:47 -0800

edgetpu (8-2) mendel-chef; urgency=medium

  * Update libraries
  * Update install.sh to install to /usr/lib instead of /lib
  * Add exception tests for multiple TPUs

 -- Coral <coral-support@google.com>  Tue, 02 Apr 2019 14:11:47 -0800

edgetpu (7-2) mendel-chef; urgency=medium

  * Update libedgetpu with soname.
  * Store exception related tests into exception_test.py and disable it on
    Raspberry Pi.
  * Include demo files in distribution
  * Rename EdgeTpuState_kXXX to EDGE_TPU_STATE_XXX
  * remove test_data dependency from imprinting demo
  * Update ListEdgeTpuPaths comment
  * Better recognize devboard by checking existence of mendel_version
    file.
  * Proper symlinks for shared libraries.
  * Update edgetpu runtime with throttling turned off for PCI-e
  * Bump changelog and version for Chef release #2.

 -- Coral <coral-support@google.com>  Thu, 28 Mar 2019 14:11:47 -0800

edgetpu (6-2) mendel-chef; urgency=medium

  * Add script to analyze Multiple Edge TPU performance on Python side.
  * Add missing python3-tk package.
  * Change matplotlib backend instead of configuring tk.
  * Update libedgetpu.so
  * Getting rid of colors.sh.
  * Install throttled libedgetpu.so on Dev Board by default.
  * Add python 3.6 support.
  * Test data is not included in the runtime distribution.
  * Use wheel instead of plain python files for installation.
  * Updates edgetpu_cpp_wrapper and adds tests for exception handling.
  * Rename AIY to Coral.
  * Add multiple Edge TPU demo.
  * Update multiple_tpus_performance_analysis.py
  * Simplifies benchmark set.
  * Separate deb packages for std and max libedgetpu runtime.
  * Proper deb package generation for py35 and py36 wrappers.
  * Adds version check function and constants into Python API.

 -- Coral <coral-support@google.com>  Tue, 19 Mar 2019 17:08:25 -0700

edgetpu (5-2) mendel-beaker; urgency=medium

  * Update libedgetpu binaries

 -- Coral <coral-support@google.com>  Fri, 08 Mar 2019 14:11:47 -0800

edgetpu (4-2) mendel-beaker; urgency=medium

  * Use different working directory for unittests.
  * Update bazel invocation and io_bazel_rules_closure
  * Skip bad image when loading test dataset.
  * Fix coco eval test on gLinux
  * Copying .py files is not needed anymore in qa_test.sh.
  * Reduce test_utils redundancy.
  * Disable coco test temporarily
  * Move benchmark code into /benchmarks dir.
  * Move all unit tests to /tests folder.
  * beef up edgetpu/classification/engine_test.py
  * Update package list for Dev Board running Python API tests.
  * Slightly lower test tolerances.
  * Update QA test script to test default frequency.
  * Add auto-confirm for test automation.

 -- Coral <coral-support@google.com>  Wed, 27 Feb 2019 11:00:25 -0800

edgetpu (3-2) mendel-beaker; urgency=medium

  * Add LICENSE to package.

 -- Coral <coral-support@google.com>  Mon, 04 Feb 2019 11:20:13 -0800

edgetpu (3-1) mendel-beaker; urgency=medium

  * Replace SeeFood with iNat bird model

 -- Coral <coral-support@google.com>  Mon, 28 Jan 2019 14:10:00 -0800

edgetpu (2-1) mendel-beaker; urgency=medium

  * Update libedgetpu binaries

 -- Coral <coral-support@google.com>  Tue, 22 Jan 2019 10:42:07 -0800

edgetpu (1-1) mendel-beaker; urgency=medium

  * Cut for beaker release and normalization of version.

 -- Coral <coral-support@google.com>  Wed, 16 Jan 2019 12:00:00 -0800

edgetpu (0.1) UNRELEASED; urgency=medium

  * Initial release.

 -- Coral <coral-support@google.com>  Mon, 04 Jun 2018 16:14:00 -0800
