edgetpu-api (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-api (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-api (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-api (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-api (5-2) mendel-beaker; urgency=medium

  * Update libedgetpu binaries

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

edgetpu-api (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-api (3-2) mendel-beaker; urgency=medium

  * Add LICENSE to package.

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

edgetpu-api (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-api (2-1) mendel-beaker; urgency=medium

  * Update libedgetpu binaries

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

edgetpu-api (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-api (0.1) UNRELEASED; urgency=medium

  * Initial release.

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