The following is a summary of the user-visible changes for each of
python-microscope releases.

Version 0.3.0 (2019/11/07)
--------------------------

* Selected most important, backwards incompatible, changes:

  * `microscope.device`, function used to create a device definition,
    changed signature.  The arguments to the device constructor must
    now be passed as a dictionary.

  * Python 2 is no longer supported.

  * New requirements:

    * Python >= 3.5
    * hidapi

* New devices supported:

  * Andor (EM)CCD cameras (requires Andor's atmcd C library)
  * Aurox Clarity (requires hidapi Python package)
  * Imagine Optic Mirao 52-e deformable mirror (requires mirao52e C library)
  * Linkam Correlative Microscopy Stage (requires LinkamSDK C library)
  * Ximea cameras (requires Ximea's xiAPI Python package)

* Changes to device ABCs:

  * New ABC `ControllerDevice` for controller devices.

  * Laser devices:

    * New abstract methods:

      * `LaserDevice.get_min_power_mw`
      * `LaserDevice.is_alive`

    * `LaserDevice.set_power_mw` now clips the set value to the device
      actual range.  Previously, the behaviour was undefined and
      device specific.

  * Camera devices:

    * Added ROIs and binning support.

    * New abstract methods:

      * `CameraDevice._get_binning`
      * `CameraDevice._get_roi`
      * `CameraDevice._set_binning`
      * `CameraDevice._set_roi`

  * DataDevices:

    * Data clients are now on a stack to facilitate temporary
      redirection of data to some other client.

  * Filterwheel devices:

    * New method `FilterWheelBase.get_num_positions`

    * New abstract methods:

      * `FilterWheelBase.get_position`
      * `FilterWheelBase.set_position`

* Device specific changes:

  * Omicron TA Deepstar laser:

    * Now returns actual laser power instead of the set laser power.
      Requires device to be fitted with the APC option.

  * Test camera:

    * Added new setting to control created image.  In addition of
      noise, can also return stripes, spots, or gradients.  See
      `microscope.testsuite.devices.ImageGenerator`.

* Removed requirements:

  * enum34
  * six

* The `deviceserver` program can now be used as a Windows service.

* Fixed PyPI releases to include the `microscope.mirrorq and
  `microscope.filterwheels` subpackages.

* New `microscope.devices.ROI` and `microscope.devices.Binning`
  classes to represent those camera settings.


Version 0.2.0 (2018/06/13)
--------------------------

* New classes:

  * DeformableMirror
  * TriggerTargetMixIn
  * SerialDeviceMixIn
  * TriggerType
  * TriggerMode

* New hardware supported:

  * Alpao deformable mirrors
  * Boston Micromachines Corporation (BMC) deformable mirrors
  * Thorlabs filter wheels

* Abstract class for FilterWheel moved to the `microscope.devices`
  module, where all other abstract device class are.

* New module `microscope.gui` for simple testing of individual
  devices.

* Now dependent on the enum34 package for python pre 3.4.

* Multiple fixes to support Python 3.

* This is the last release with planned support for Python 2.


Version 0.1.0 (2017/05/04)
--------------------------

* New abstract class FilterWheel.

* New classes Client and DataClient.

* New dependency on six.

* Removed dependency on PyME.

* Now works in Linux too.

* Start writing of user documentation.


Version 0.0.1 (2016/11/24)
--------------------------

* Initial release of python-microscope.
