# History of changes

Contributers:

  PyTango Team - see source repo history for full details.

Last Update:

  Apr 01, 2024

## Document revisions

Date | Revision | Description | Author
--- | --- | --- | ---
18/07/03 | 1.0 | Initial Version | M. Ounsy
06/10/03 | 2.0 | Extension of the “Getting Started” paragraph | A. Buteau/M. Ounsy
14/10/03 | 3.0 | Added Exception Handling paragraph | M. Ounsy
13/06/05 | 4.0 | Ported to Latex, added events, AttributeProxy and ApiUtil | V. Forchì
13/06/05 | 4.1 | fixed bug with python 2.5 and and state events new Database constructor | V. Forchì
15/01/06 | 5.0 | Added Device Server classes | E.Taurel
15/03/07 | 6.0 | Added AttrInfoEx, AttributeConfig events, 64bits, write_attribute | T. Coutinho
21/03/07 | 6.1 | Added groups | T. Coutinho
15/06/07 | 6.2 | Added dynamic attributes doc | E. Taurel
06/05/08 | 7.0 | Update to Tango 6.1. Added DB methods, version info | T. Coutinho
10/07/09 | 8.0 | Update to Tango 7. Major refactoring. Migrated doc | T. Coutinho/R. Suñe
24/07/09 | 8.1 | Added migration info, added missing API doc | T. Coutinho/R. Suñe
21/09/09 | 8.2 | Added migration info, release of 7.0.0beta2 | T. Coutinho/R. Suñe
12/11/09 | 8.3 | Update to Tango 7.1. | T. Coutinho/R. Suñe
??/12/09 | 8.4 | Update to PyTango 7.1.0 rc1 | T. Coutinho/R. Suñe
19/02/10 | 8.5 | Update to PyTango 7.1.1 | T. Coutinho/R. Suñe
06/08/10 | 8.6 | Update to PyTango 7.1.2 | T. Coutinho
05/11/10 | 8.7 | Update to PyTango 7.1.3 | T. Coutinho
08/04/11 | 8.8 | Update to PyTango 7.1.4 | T. Coutinho
13/04/11 | 8.9 | Update to PyTango 7.1.5 | T. Coutinho
14/04/11 | 8.10 | Update to PyTango 7.1.6 | T. Coutinho
15/04/11 | 8.11 | Update to PyTango 7.2.0 | T. Coutinho
12/12/11 | 8.12 | Update to PyTango 7.2.2 | T. Coutinho
24/04/12 | 8.13 | Update to PyTango 7.2.3 | T. Coutinho
21/09/12 | 8.14 | Update to PyTango 8.0.0 | T. Coutinho
10/10/12 | 8.15 | Update to PyTango 8.0.2 | T. Coutinho
20/05/13 | 8.16 | Update to PyTango 8.0.3 | T. Coutinho
28/08/13 | 8.13 | Update to PyTango 7.2.4 | T. Coutinho
27/11/13 | 8.18 | Update to PyTango 8.1.1 | T. Coutinho
16/05/14 | 8.19 | Update to PyTango 8.1.2 | T. Coutinho
30/09/14 | 8.20 | Update to PyTango 8.1.4 | T. Coutinho
01/10/14 | 8.21 | Update to PyTango 8.1.5 | T. Coutinho
05/02/15 | 8.22 | Update to PyTango 8.1.6 | T. Coutinho
03/02/16 | 8.23 | Update to PyTango 8.1.8 | T. Coutinho
12/08/16 | 8.24 | Update to PyTango 8.1.9 | V. Michel
26/02/16 | 9.2.0a | Update to PyTango 9.2.0a | T. Coutinho
15/08/16 | 9.2.0 | 9.2.0 Release | V. Michel
23/01/17 | 9.2.1 | 9.2.1 Release | V. Michel
27/09/17 | 9.2.2 | 9.2.2 Release | G. Cuni/V. Michel/J. Moldes
30/05/18 | 9.2.3 | 9.2.3 Release | V. Michel
30/07/18 | 9.2.4 | 9.2.4 Release | V. Michel
28/11/18 | 9.2.5 | 9.2.5 Release | A. Joubert
13/03/19 | 9.3.0 | 9.3.0 Release | T. Coutinho
08/08/19 | 9.3.1 | 9.3.1 Release | A. Joubert
30/04/20 | 9.3.2 | 9.3.2 Release | A. Joubert
24/12/20 | 9.3.3 | 9.3.3 Release | A. Joubert
14/06/22 | 9.3.4 | 9.3.4 Release | A. Joubert
07/09/22 | 9.3.5 | 9.3.5 Release | Y. Matveev
28/09/22 | 9.3.6 | 9.3.6 Release | Y. Matveev
15/02/23 | 9.4.0 | 9.4.0 Release | A. Joubert
15/03/23 | 9.4.1 | 9.4.1 Release | A. Joubert
27/07/23 | 9.4.2 | 9.4.2 Release | Y. Matveev
23/11/23 | 9.5.0 | 9.5.0 Release | A. Joubert

## Version history

Version | Changes
--- | ---

9.5.0

9.5.0

Changed:

  - !558: Check if user’s class methods are coroutines in Async mode

  - !614: Require cppTango 9.5.0, bump to 9.5.0.dev0, doc fixes

  - !617: Use 127.0.0.1 as default TestContext host instead of external IP

Added:

  - !388: Enable short-name access to TestContext devices

  - !568: Declaration of properties, attributes and command type with typing hints

  - !580: IMAGEs support added to set_write_value

  - !581: Support forwarded attributes in TestContext

  - !582: Add support for EncodedAttribute in high-level API device

  - !592: Expose complete API of DeviceImpl.remove_attribute()

  - !616: Support server debugging with PyCharm and VS Code (pydevd)

  - !618: Resolve “Python 3.12 support”

Fixed:

  - !591: Handle spaces in Python path in winsetup (Windows only)

  - !600: Fix green_mode bug in TestContext

  - !612: Close socket in get_host_ip() (as used by DeviceTestContext)

  - !625: Ignore gevent when using TestContext if not installed

  - !627: Fix problem if self has a type hint

  - !634: Fix SegFault if set_value was called with None

Removed:

  - !602: Remove CmdArgType.DevInt (cppTango DEV_INT)

  - !604: Deprecated signature for WAttribute.get_write_value() removed

Documentation:

  - !615: Update docs and migration guide for 9.5.0-rc1

  - !628: Update docs and bump for 9.5.0rc2

  - !636: Update docs and bump for 9.5.0rc3

  - !638: Update docs and bump for 9.5.0

DevOps and code maintenance changes:

  - !569: New build system using cmake

  - !590: Test all wheels as part of default branch CI

  - !596: Bump 9.4.3 dev version

  - !598: Compile TangoTest so test-main-cpptango uses latest cpptango

  - !599: Fix micromamba installation

  - !601: Update triage message

  - !603: Test against cpptango 9.5.0rc2

  - !605: Solve init hook test error on windows

  - !606: Test against cpptango 9.5.0rc3

  - !607: CI: Allow numpy without blas when testing Linux i686 wheels

  - !608: Cleanup outdated code

  - !609: Skip more tests on AppVeyor

  - !610: Update cpptango to 9.5.0rc4

  - !611: Mark test_server_init_hook_subscribe_event_multiple_devices xfail

  - !613: Build against cpptango 9.5.0

  - !619: Bump pytango-builder image (libzmq-4.3.5 for Linux wheels)

  - !620: Reduce compiler warnings and pin scikit-build-core

  - !621: Change relative imports to absolute and unpin scikit-build-core

  - !622: Update Boost to 1.83.0 for Windows builds

  - !623: CI: Allow numpy without blas when building Linux i686 Py 3.12 wheels

  - !624: Force C++ standard to 14

  - !629: CI: Add support for zmq 4.3.5 in Windows builds

  - !630: CI: Enable DESY Windows Runner

  - !632: CI: Use latest TangoTest for linux:test-main-cpptango job

  - !635: CI: Update macOS image used

More details in the full changelog 9.4.2…9.5.0

9.4.2

9.4.2 release.

Features:

  - !578: Add server init hook to high-level and low-level devices

  - !562: Check code coverage

  - !577: Implement new python and NumPy version policy

Bug fixes and changes:

  - !551: Handle unsupported DeviceTestContext properties gracefully

  - !556: Fix source location recorded by logging decorators

  - !564: Asyncio server doesn’t change state to ALARM with AttrQuality <https://gitlab.com/tango-controls/pytango/-/merge_requests/564>

  - !557: Fix DevEncoded attributes and commands

  - !565: Raise UnicodeError instead of segfaulting when Latin-1 encoding fails

  - !570: Fix linter problem in winsetup.py

  - !579: Extend “empty string workaround” to sequences for DeviceTestContext properties

Doc fixes:

  - !571: Update new build system doc

  - !572: Improve docs for push_data_ready_event and EnsureOmniThread

  - !587: Update docs and bump version for 9.4.2rc1

  - !595: Fixed history of changes

DevOps changes:

  - !563: Skip log location tests in AppVeyor CI

  - !566: Add AppVeyor Windows builds for Python 3.9 to 3.11, Boost 1.82.0

  - !575: Add job to test main cpptango branch

  - !574: Added test for checking default and non-default units

  - !576: Add macOS wheels + gitlab-ci cleaning

  - !585: Move to cppTango 9.4.2, drop Python<3.9 on Win, update wheel deps

  - !588: Skip failing test in Winodws

  - !593: Test_server_init_hook_subscribe_event_multiple_devices skipped

More details in the full changelog 9.4.1…9.4.2

9.4.1

9.4.1 release.

Bug fixes and changes:

  - !547: Fix attributes with device inheritance and repeated method wrapping regression in 9.4.0

  - !548: Fix decorated attribute methods regression in 9.4.0

Doc fixes:

  - !546: Add note about pip version for binary packages

  - !544: Bump version to 9.4.1dev0

  - !555: Update docs and bump version for 9.4.0rc1

  - !559: Groom docstrings

  - !560: Bump for 9.4.1

Deprecation fixes:

  - !553: Remove compiler version check from setup.py

DevOps changes:

  - !545: Run black on repo and add to pre-commit-config

  - !554: Update to omniorb 4.2.5 for Linux wheels

  - !549: Use new tango-controls group runners

  - !550: Update mambaforge image and use conda instead of apt packages in CI

  - !552: Run gitlab-triage to update old issues/MRs

More details in the full changelog 9.4.0…9.4.1

9.4.0

9.4.0 release (not recommended due to significant regressions).

Features:

  - !522: Support of non-bound methods for attributes

  - !535: Allow developer to optionally add attributes to a DeviceProxy instance

  - !515: DevEnum spectrum and image attributes support added

  - !502: Provide binary wheels on PyPI using pytango-builder images

  - !510: Added high level API for dynamic attributes

  - !511: Added fisallowed kwarg for static/dynamic commands and is_allowed method for dynamic commands

  - !528: Added getter, read and is_allowed attribute decorators

  - !542: Improve device types autocompletion in IDEs

Changes:

  - !490: Drop Python 2.7 and 3.5 support

  - !486: Switch support from cppTango 9.3 to 9.4

  - !536: Require cppTango>=9.4.1 to import the library

  - !489: Make numpy a hard requirement

  - !493: Improve spectrum and image attribute behaviour with empty lists (breaking change to API!)

  - !492: Change DServer inheritance from Device_4Impl to Device_5Impl

  - !514: Remove Python 2 compatibility code

  - !539: Update CI to cppTango 9.4.1, change default ORBendpoint host to 0.0.0.0, fix tests

  - !541: Workaround cppTango#1055 for DatabaseDS startup

Bug fixes:

  - !495: Fix log streams with % and no args

  - !516: Resolve “Crash when writing numpy.array to DeviceProxy string array attributes”

  - !533: Fix high-level enum read exception when quality is ATTR_INVALID

Doc fixes:

  - !505: Fix some docs related to Tango.Util

  - !523: Document set_write_value WAttribute method

  - !524: Fixed documentation for DeviceProxy.get_attribute_config_ex

  - !526: Clarify gevent dependency

  - !487: Bump for 9.4.0

  - !500: Update docs for 9.3 to 9.4 changes

  - !501: Update version for 9.4.0rc1

  - !507: Update version for 9.4.0rc2

  - !538: Update version for 9.4.0rc3

  - !512: Add some more training examples

  - !540: Update docs and bump version for 9.4.0 release

Deprecation fixes:

  - !491: Remove unused method CppDeviceClassWrap::delete_class

  - !494: Remove unnecessary constants TANGO_LONG32 and TANGO_LONG64

  - !497: Replace pytest-xdist with pytest-forked for testing

  - !498: Fix Python 3.11 compatibility

  - !513: Replace deprecated distutils.version

  - !534: Replace deprecated numpy.bool8 alias

DevOps changes:

  - !531: Configure unit tests report in gitlab-ci

  - !532: Run ruff via pre-commit

  - !519: Testing: improve error message for event test failures

  - !530: Unnecessary tests removed

  - !496: Force numpy installation with help of pyproject.toml (PEP 518) before build

  - !509: Prefer binary dependencies for test-wheel

  - !508: Allow failure for aarch64 test

  - !488: Add cpptango_rc to the Dockerfile

  - !520: Devcontainer fix for Mac M1 host

  - !525: Git ignore code-workspace and .DS_Store files

  - !499: Disable AppVeyor but keep the config file

  - !503: Disable AppVeyor builds temporarily

  - !504: Update AppVeyor CI for cppTango 9.4.0

  - !506: Update AppVeyor cppTango 9.4.0.windows1 package

  - !543: Fix readme syntax and add twine check

More details in the full changelog 9.3.6…9.4.0

9.3.6

9.3.6 release.

Changes:

  - Pull Request #482: Use cpptango 9.3.5 for Widows wheels (except Py27 x64)

Bug fixes:

  - Pull Request #477: Resolve “Dynamic attribute in 9.3.5 fails”

  - Pull Request #479: Fix green mode usage from run method kwarg

  - Pull Request #480: Resolve “read-only dynamic attribute with dummy write function fails in 9.3.5”

9.3.5

9.3.5 release.

Features:

  - Pull Request #470: Add set_data_ready_event method to Device

Changes:

  - Pull Request #471: Fail if mixed green modes used in device server

Bug fixes:

  - Pull Request #461: Fix handling of -ORBEndPointX command line options

  - Pull Request #462: Ensure PYTANGO_NUMPY_VERSION is stringized to support newer C++ compilers

  - Pull Request #465: Restore dynamic attribute functionality with unbound methods

  - Pull Request #466: Explicit boost::python::optional template usage to fix compilation with gcc>10

Doc fixes:

  - Pull Request #467: Better MultiDeviceTestContext workaround

  - Pull Request #474: Update documentation for tango.Database

DevOps features:

  - Pull Request #473: Make universal dockerfile

9.3.4

9.3.4 release.

Changes:

  - Pull Request #430: Raise when setting non-existent DeviceProxy attr

  - Pull Request #444: Add “friendly” argparser for device server arguments (#132, #354)

Bug fixes:

  - Pull Request #401: Fix read/write/is_allowed not called for dynamic attribute in async mode server (#173)

  - Pull Request #417: Fix DeviceProxy constructor reference cycle (#412)

  - Pull Request #418: Release GIL in DeviceProxy and AttributeProxy dtor

  - Pull Request #434: Fix Device green_mode usage in MultiDeviceTestContext

  - Pull Request #436: Fix MSVC 9 syntax issue with shared pointer deletion

  - Pull Request #438: Add unit tests for device server logging

  - Pull Request #446: Allow pipes to be inherited by Device subclasses (#439)

Deprecation fixes:

  - Pull Request #414: Fix deprecated warning with numpy 1.20

  - Pull Request #424: tango/pytango_pprint.py: Use correct syntax for comparing object contents

  - Pull Request #425: Fix some and silence some C++ compiler warnings

  - Pull Request #439: Fix asyncio Python 3.10 compatibility (#429)

  - Pull Request #449: Use Py_ssize_t for all CPython indexing

Doc fixes:

  - Pull Request #404: Typo on Sphinx documentation (#173)

  - Pull Request #406: Fix docs - missing DbDevExportInfos and DbDevImportInfos

  - Pull Request #420: Fix broken link: no s in gevent

  - Pull Request #422: Uncomment docs of tango.Util.instance() and build docs for other static methods

  - Pull Request #426: [docs] Fixed arguments name when calling command decorator

  - Pull Request #427: [docs] Fixed variables name in a tango.Database.add_server method example

  - Pull Request #429: Add training material examples

  - Pull Request #433: Fix server method in DevEnum example in doc/data_types.rst

  - Pull Request #440: Resolve “Missing methods in Documentation” (#217)

  - Pull Request #442: Invalid escape fix

  - Pull Request #453: Remove docs generation from build

  - Pull Request #454: Debian/Ubuntu installation docs updated

  - Pull Request #455: Update contribution guidelines, drop stable branch

DevOps fixes:

  - Pull Request #409: Enable CI/CD in Gitlab (#399)

  - Pull Request #410: Replace github links

  - Pull Request #411: Build and upload source distribution to pypi

  - Pull Request #423: Use numpy parallel compilation if available (#416)

  - Pull Request #428: Gitlab CI image build + push

  - Pull Request #445: Split Gitlab CI caches per job

  - Pull Request #448: Add missing cmake files to sdist

9.3.3

9.3.3 release.

Features:

  - Pull Request #378: Add string support for MultiDeviceTestContext devices_info class field

  - Pull Request #384: Add test context support for memorized attributes

  - Pull Request #395: Fix Windows build and add CI test suite (#355, #368, #369)

Changes:

  - Pull Request #365: Preserve cause of exception when getting/setting attribute in DeviceProxy (#364)

  - Pull Request #385: Improve mandatory + default device property error message (#380)

  - Pull Request #397: Add std namespace prefix in C++ code

Bug/doc fixes:

  - Pull Request #360: Fix convert2array for Unicode to DevVarStringArray (Py3) (#361)

  - Pull Request #386: Fix DeviceProxy repr/str memory leak (#298)

  - Pull Request #352: Fix sphinx v3 warning

  - Pull Request #359: MultiDeviceTestContext example

  - Pull Request #363: Change old doc links from ESRF to RTD

  - Pull Request #370: Update CI to use cppTango 9.3.4rc6

  - Pull Request #389: Update CI and dev Docker to cpptango 9.3.4

  - Pull Request #376: Update Windows CI and dev containers to boost 1.73.0

  - Pull Request #377: VScode remote development container support

  - Pull Request #391: Add documentation about testing

  - Pull Request #393: Fix a typo in get_server_info documentation (#392)

9.3.2

9.3.2 release.

Features:

  - Pull Request #314: Add MultiDeviceTestContext for testing more than one Device

  - Pull Request #317: Add get_device_attribute_list and missing pipe methods to Database interface (#313)

  - Pull Request #327: Add EnsureOmniThread and is_omni_thread (#307, #292)

Changes:

  - Pull Request #316: Reduce six requirement from 1.12 to 1.10 (#296)

  - Pull Request #326: Add Docker development container

  - Pull Request #330: Add enum34 to Python 2.7 docker images

  - Pull Request #329: Add test to verify get_device_properties called on init

  - Pull Request #341: Build DevFailed origin from format_exception (#340)

Bug/doc fixes:

  - Pull Request #301: Fix documentation error

  - Pull Request #334: Update green mode docs and asyncio example (#333)

  - Pull Request #335: Generalise search for libboost_python on POSIX (#300, #310)

  - Pull Request #343: Extend the info on dependencies in README

  - Pull Request #345: Fix power_supply client example PowerOn -> TurnOn

  - Pull Request #347: Fix memory leak for DevEncoded attributes

  - Pull Request #348: Fix dynamic enum attributes created without labels (#56)

9.3.1

9.3.1 release.

Changes:

  - Pull Request #277: Windows builds using AppVeyor (#176)

  - Pull Request #290: Update docs: int types maps to DevLong64 (#282)

  - Pull Request #293: Update exception types in proxy docstrings

Bug fixes:

  - Pull Request #270: Add six >= 1.12 requirement (#269)

  - Pull Request #273: DeviceAttribute.is_empty not working correctly with latest cpp tango version (#271)

  - Pull Request #274: Add unit tests for spectrum attributes, including empty (#271)

  - Pull Request #281: Fix DevEncoded commands on Python 3 (#280)

  - Pull Request #288: Make sure we only convert to string python unicode/str/bytes objects (#285)

  - Pull Request #289: Fix compilation warnings and conda build (#286)

9.3.0

9.3.0 release.

Changes:

  - Pull Request #242: Improve Python version check for enum34 install

  - Pull Request #250: Develop 9.3.0

  - Pull Request #258: Change Travis CI builds to xenial

Bug fixes:

  - Pull Request #245: Change for collections abstract base class

  - Pull Request #247: Use IP address instead of hostname (fix #246)

  - Pull Request #252: Fix wrong link to tango dependency (#235)

  - Pull Request #254: Fix mapping of AttrWriteType WT_UNKNOWN

  - Pull Request #257: Fix some docs and docstrings

  - Pull Request #260: add ApiUtil.cleanup()

  - Pull Request #262: Fix compile error under Linux

  - Pull Request #263: Fix #251: Python 2 vs Python 3: DevString with bytes

9.2.5

9.2.5 release.

Changes:

  - Pull Request #212: Skip databaseds backends in PyTango compatibility module

  - Pull Request #221: DevEnum attributes can now be directly assigned labels

  - Pull Request #236: Cleanup db_access module

  - Pull Request #237: Add info about how to release a new version

Bug fixes:

  - Pull Request #209 (issue #207): Fix documentation warnings

  - Pull Request #211: Yet another fix to the gevent threadpool error wrapping

  - Pull Request #214 (issue #213): DevEncoded attribute should produce a bytes object in python 3

  - Pull Request #219: Fixing icons in documentation

  - Pull Request #220: Fix ‘DevFailed’ object does not support indexing

  - Pull Request #225 (issue #215): Fix exception propagation in python 3

  - Pull Request #226 (issue #216): Add missing converter from python bytes to char*

  - Pull Request #227: Gevent issue #1260 should be fixed by now

  - Pull Request #232: use special case-insensitive weak values dictionary for Tango nodes

9.2.4

9.2.4 release.

Changes:

  - Pull Request #194 (issue #188): Easier access to DevEnum attribute using python enum

  - Pull Request #199 (issue #195): Support python enum as dtype argument for attributes

  - Pull Request #205 (issue #202): Python 3.7 compatibility

Bug fixes:

  - Pull Request #193 (issue #192): Fix a gevent green mode memory leak introduced in v9.2.3

9.2.3

9.2.3 release.

Changes:

  - Pull Request #169: Use tango-controls theme for the documentation

  - Pull Request #170 (issue #171): Use a private gevent ThreadPool

  - Pull Request #180: Use same default encoding for python2 and python3 (utf-8)

Bug fixes:

  - Pull Request #178 (issue #177): Make CmdDoneEvent.argout writable

  - Pull Request #178: Add GIL control for ApiUtil.get_asynch_replies

  - Pull Request #187 (issue #186): Fix and extend client green mode

9.2.2

9.2.2 release.

Features:

  - Pull Request #104: Pipe Events

  - Pull Request #106: Implement pipe write (client and server, issue #9)

  - Pull Request #122: Dynamic commands

  - Pull Request #124: Add forward attribute

  - Pull Request #129: Implement mandatory property (issue #30)

Changes:

  - Pull Request #109: Device Interface Change Events

  - Pull Request #113: Adding asyncio green mode documentation and a how-to on contributing

  - Pull Request #114: Added PEP8-ified files in tango module.

  - Pull Request #115: Commands polling tests (client and server)

  - Pull Request #116: Attribute polling tests (client and server)

  - Pull Request #117: Use official tango-controls conda channel

  - Pull Request #125: Forward attribute example

  - Pull Request #134: Linting pytango (with pylint + flake8)

  - Pull Request #137: Codacy badge in README and code quality policy in How to Contribute

  - Pull Request #143: Added missing PipeEventData & DevIntrChangeEventData

Bug fixes:

  - Pull Request #85 (issue #84): Fix Gevent ThreadPool exceptions

  - Pull Request #94 (issue #93): Fix issues in setup file (GCC-7 build)

  - Pull Request #96: Filter badges from the long description

  - Pull Request #97: Fix/linker options

  - Pull Request #98: Refactor green mode for client and server APIs

  - Pull Request #101 (issue #100) check for None and return null string

  - Pull Request #102: Update server tests

  - Pull Request #103: Cache build objects to optimize travis builds

  - Pull Request #112 (issue #111): Use _DeviceClass as tango device class constructor

  - Pull Request #128 (issue #127): Set default worker in server.py

  - Pull Request #135: Better exception handling in server.run and test context (issue #131)

  - Pull Request #142 (issue #142): Added missing PipeEventData & DevIntrChangeEventData

  - Pull Request #148 (issue #144): Expose utils helpers

  - Pull Request #149: Fix return value of proxy.subscribe_event

  - Pull Request #158 (issue #155): Fix timestamp and casing in utils.EventCallback

9.2.1

9.2.1 release.

Features:

  - Pull Requests #70: Add test_context and test_utils modules, used for pytango unit-testing

Changes:

  - Issue #51: Refactor platform specific code in setup file

  - Issue #67: Comply with PEP 440 for pre-releases

  - Pull Request #70: Add unit-testing for the server API

  - Pull Request #70: Configure Travis CI for continuous integration

  - Pull Request #76: Add unit-testing for the client API

  - Pull Request #78: Update the python version classifiers

  - Pull Request #80: Move tango object server to its own module

  - Pull Request #90: The metaclass definition for tango devices is no longer mandatory

Bug fixes:

  - Issue #24: Fix dev_status dangling pointer bug

  - Issue #57: Fix dev_state/status to be gevent safe

  - Issue #58: Server gevent mode internal call hangs

  - Pull Request #62: Several fixes in tango.databaseds

  - Pull Request #63: Follow up on issue #21 (Fix Group.get_device method)

  - Issue #64: Fix AttributeProxy.__dev_proxy to be initialized with python internals

  - Issue #74: Fix hanging with an asynchronous tango server fails to start

  - Pull Request #81: Fix DeviceImpl documentation

  - Issue #82: Fix attribute completion for device proxies with IPython >= 4

  - Issue #84: Fix gevent threadpool exceptions

9.2.0

9.2.0 release.

Features:

> - Issue #37: Add display_level and polling_period as optional arguments to command decorator

Bug fixes:

> - Fix cache problem when using DeviceProxy through an AttributeProxy

> - Fix compilation on several platforms

> - Issue #19: Defining new members in DeviceProxy has side effects

> - Fixed bug in beacon.add_device

> - Fix for get_device_list if server_name is ‘*’

> - Fix get_device_attribute_property2 if prop_attr is not None

> - Accept StdStringVector in put_device_property

> - Map ‘int’ to DevLong64 and ‘uint’ to DevULong64

> - Issue #22: Fix push_data_ready_event() deadlock

> - Issue #28: Fix compilation error for constants.cpp

> - Issue #21: Fix Group.get_device method

> - Issue #33: Fix internal server documentation

Changes:

  - Move ITango to another project

  - Use setuptools instead of distutils

  - Add six as a requirement

  - Refactor directory structure

  - Rename PyTango module to tango (import PyTango still works for backward compatibility)

  - Add a ReST readme for GitHub and PyPI

ITango changes (moved to another project):

  - Fix itango event logger for python 3

  - Avoid deprecation warning with IPython 4.x

  - Use entry points instead of scripts

9.2.0a

9.2 alpha release. Missing:

> - writtable pipes (client and server)

> - dynamic commands (server)

> - device interface change event (client and server)

> - pipe event (client and server)

Bug fixes:

> - 776: [pytango][8.1.8] SyntaxError: invalid syntax

8.1.9

Features:

> - PR #2: asyncio support for both client and server API

> - PR #6: Expose AutoTangoMonitor and AutoTangoAllowThreads

Bug fixes:

> - PR #31: Get -l flags from pkg-config

> - PR #15: Rename itango script to itango3 for python3

> - PR #14: Avoid deprecation warning with IPython 4.x

8.1.8

Features:

> - PR #3: Add a run_server class method to Device

> - PR #4: Add device inheritance

> - 110: device property with auto update in database

Bug fixes:

> - 690: Description attribute property

> - 700: [pytango] useless files in the source distribution

> - 701: Memory leak in command with list argument

> - 704: Assertion failure when calling command with string array input type

> - 705: Support boost_python lib name on Gentoo

> - 714: Memory leak in PyTango for direct server command calls

> - 718: OverflowErrors with float types in 8.1.6

> - 724: PyTango DeviceProxy.command_inout(<str>) memory leaks

> - 736: pytango FTBFS with python 3.4

> - 747: PyTango event callback in gevent mode gets called in non main thread

8.1.6

Bug fixes:

> - 698: PyTango.Util discrepancy

> - 697: PyTango.server.run does not accept old Device style classes

8.1.5

Bug fixes:

> - 687: [pytango] 8.1.4 unexpected files in the source package

> - 688: PyTango 8.1.4 new style server commands don’t work

8.1.4

Features:

> - 107: Nice to check Tango/PyTango version at runtime

Bug fixes:

> - 659: segmentation fault when unsubscribing from events

> - 664: problem while installing PyTango 8.1.1 with pip (using pip 1.4.1)

> - 678: [pytango] 8.1.2 unexpected files in the source package

> - 679: PyTango.server tries to import missing __builtin__ module on Python 3

> - 680: Cannot import PyTango.server.run

> - 686: Device property substitution for a multi-device server

8.1.3 | SKIPPED

8.1.2

Features:

> - 98: PyTango.server.server_run needs additional post_init_callback parameter

> - 102: DevEncoded attribute should support a python buffer object

> - 103: Make creation of *EventData objects possible in PyTango

Bug fixes:

> - 641: python3 error handling issue

> - 648: PyTango unicode method parameters fail

> - 649: write_attribute of spectrum/image fails in PyTango without numpy

> - 650: [pytango] 8.1.1 not compatible with ipyton 1.2.0-rc1

> - 651: PyTango segmentation fault when run a DS that use attr_data.py

> - 660: command_inout_asynch (polling mode) fails

> - 666: PyTango shutdown sometimes blocks.

8.1.1

Features:

> - Implemented tango C++ 8.1 API

Bug fixes:

> - 527: set_value() for ULong64

> - 573: [pytango] python3 error with unregistered device

> - 611: URGENT fail to write attribute with PyTango 8.0.3

> - 612: [pytango][8.0.3] failed to build from source on s390

> - 615: Threading problem when setting a DevULong64 attribute

> - 622: PyTango broken when running on Ubuntu 13

> - 626: attribute_history extraction can raised an exception

> - 628: Problem in installing PyTango 8.0.3 on Scientific Linux 6

> - 635: Reading of ULong64 attributes does not work

> - 636: PyTango log messages are not filtered by level

> - 637: [pytango] segfault doing write_attribute on Group

8.1.0 | SKIPPED

8.0.3

Features:

  - 88: Implement Util::server_set_event_loop method in python

Bug fixes:

> - 3576353: [pytango] segfault on ‘RestartServer’

> - 3579062: [pytango] Attribute missing methods

> - 3586337: [pytango] Some DeviceClass methods are not python safe

> - 3598514: DeviceProxy.__setattr__ break python’s descriptors

> - 3607779: [pytango] IPython 0.10 error

> - 598: Import DLL by PyTango failed on windows

> - 605: [pytango] use distutils.version module

8.0.2

Bug fixes:

> - 3570970: [pytango] problem during the python3 building

> - 3570971: [pytango] itango does not work without qtconsole

> - 3570972: [pytango] warning/error when building 8.0.0

> - 3570975: [pytango] problem during use of python3 version

> - 3574099: [pytango] compile error with gcc < 4.5

8.0.1 | SKIPPED

8.0.0

Features:

> - Implemented tango C++ 8.0 API

> - Python 3k compatible

Bug fixes:

> - 3023857: DevEncoded write attribute not supported

> - 3521545: [pytango] problem with tango profile

> - 3530535: PyTango group writting fails

> - 3564959: EncodedAttribute.encode_xxx() methods don’t accept bytearray

7.2.4

Bug fixes:

> - 551: [pytango] Some DeviceClass methods are not python safe

7.2.3

Features:

> - 3495607: DeviceClass.device_name_factory is missing

Bug fixes:

> - 3103588: documentation of PyTango.Attribute.Group

> - 3458336: Problem with pytango 7.2.2

> - 3463377: PyTango memory leak in read encoded attribute

> - 3487930: [pytango] wrong python dependency

> - 3511509: Attribute.set_value_date_quality for encoded does not work

> - 3514457: [pytango] TANGO_HOST multi-host support

> - 3520739: command_history(…) in PyTango

7.2.2

Features:

> - 3305251: DS dynamic attributes discards some Attr properties

> - 3365792: DeviceProxy.<cmd_name> could be documented

> - 3386079: add support for ipython 0.11

> - 3437654: throw python exception as tango exception

> - 3447477: spock profile installation

Bug fixes:

> - 3372371: write attribute of DevEncoded doesn’t work

> - 3374026: [pytango] pyflakes warning

> - 3404771: PyTango.MultiAttribute.get_attribute_list missing

> - 3405580: PyTango.MultiClassAttribute missing

7.2.1 | SKIPPED

7.2.0

Features:

> - 3286678: Add missing EncodedAttribute JPEG methods

7.1.6

Bug fixes:

> - 7.1.5 distribution is missing some files

7.1.5

Bug fixes:

> - 3284174: 7.1.4 does not build with gcc 4.5 and tango 7.2.6

> - 3284265: [pytango][7.1.4] a few files without licence and copyright

> - 3284318: copyleft vs copyright

> - 3284434: [pytango][doc] few ERROR during the doc generation

> - 3284435: [pytango][doc] few warning during the doc generation

> - 3284440: [pytango][spock] the profile can’t be installed

> - 3285185: PyTango Device Server does not load Class Properties values

> - 3286055: PyTango 7.1.x DS using Tango C++ 7.2.x seg faults on exit

7.1.4

Features:

> - 3274309: Generic Callback for events

Bug fixes:

> - 3011775: Seg Faults due to removed dynamic attributes

> - 3105169: PyTango 7.1.3 does not compile with Tango 7.2.X

> - 3107243: spock profile does not work with python 2.5

> - 3124427: PyTango.WAttribute.set_max_value() changes min value

> - 3170399: Missing documentation about is_<attr>_allowed method

> - 3189082: Missing get_properties() for Attribute class

> - 3196068: delete_device() not called after server_admin.Kill()

> - 3257286: Binding crashes when reading a WRITE string attribute

> - 3267628: DP.read_attribute(, extract=List/tuple) write value is wrong

> - 3274262: Database.is_multi_tango_host missing

> - 3274319: EncodedAttribute is missing in PyTango (<= 7.1.3)

> - 3277269: read_attribute(DevEncoded) is not numpy as expected

> - 3278946: DeviceAttribute copy constructor is not working

Documentation:

> - Added The Utilities API chapter

> - Added Encoded API chapter

> - Improved Write a server (original API) chapter

7.1.3

Features:

> - tango logging with print statement

> - tango logging with decorators

> - from sourceforge:

> - 3060380: ApiUtil should be exported to PyTango

Bug fixes:

> - added licence header to all source code files

> - spock didn’t work without TANGO_HOST env. variable (it didn’t recognize tangorc)

> - spock should give a proper message if it tries to be initialized outside ipython

> - 3048798: licence issue GPL != LGPL

> - 3073378: DeviceImpl.signal_handler raising exception crashes DS

> - 3088031: Python DS unable to read DevVarBooleanArray property

> - 3102776: PyTango 7.1.2 does not work with python 2.4 & boost 1.33.0

> - 3102778: Fix compilation warnings in linux

7.1.2

Features:

> - 2995964: Dynamic device creation

> - 3010399: The DeviceClass.get_device_list that exists in C++ is missing

> - 3023686: Missing DeviceProxy.<attribute name>

> - 3025396: DeviceImpl is missing some CORBA methods

> - 3032005: IPython extension for PyTango

> - 3033476: Make client objects pickable

> - 3039902: PyTango.Util.add_class would be useful

Bug fixes:

> - 2975940: DS command with DevVarCharArray return type fails

> - 3000467: DeviceProxy.unlock is LOCKING instead of unlocking!

> - 3010395: Util.get_device_* methods don’t work

> - 3010425: Database.dev_name does not work

> - 3016949: command_inout_asynch callback does not work

> - 3020300: PyTango does not compile with gcc 4.1.x

> - 3030399: Database put(delete)_attribute_alias generates segfault

7.1.1

Features:

> - Improved setup script

> - Interfaced with PyPI

> - Cleaned build script warnings due to unclean python C++ macro definitions

> - 2985993: PyTango numpy command support

> - 2971217: PyTango.GroupAttrReplyList slicing

Bug fixes:

> - 2983299: Database.put_property() deletes the property

> - 2953689: can not write_attribute scalar/spectrum/image

> - 2953030: PyTango doc installation

7.1.0

Features:

> - 2908176: read_*, write_* and is_*_allowed() methods can now be defined

> - 2941036: TimeVal conversion to time and datetime

> - added str representation on Attr, Attribute, DeviceImpl and DeviceClass

Bug fixes:

> - 2903755: get_device_properties() bug reading DevString properties

> - 2909927: PyTango.Group.read_attribute() return values

> - 2914194: DevEncoded does not work

> - 2916397: PyTango.DeviceAttribute copy constructor does not work

> - 2936173: PyTango.Group.read_attributes() fails

> - 2949099: Missing PyTango.Except.print_error_stack

7.1.0rc1

Features:

> - v = image_attribute.get_write_value() returns square sequences (arrays of arrays, or numpy objects) now instead of flat lists. Also for spectrum attributes a numpy is returned by default now instead.

> - image_attribute.set_value(v) accepts numpy arrays now or square sequences instead of just flat lists. So, dim_x and dim_y are useless now. Also the numpy path is faster.

> - new enum AttrSerialModel

> - Attribute new methods: set(get)_attr_serial_model, set_change_event, set_archive_event, is_change_event, is_check_change_event, is_archive_criteria, is_check_archive_criteria, remove_configuration

> - added support for numpy scalars in tango operations like write_attribute (ex: now a DEV_LONG attribute can receive a numpy.int32 argument in a write_attribute method call)

Bug fixes:

> - DeviceImpl.set_value for scalar attributes

> - DeviceImpl.push_***_event

> - server commands with DevVar***StringArray as parameter or as return type

> - in windows,a bug in PyTango.Util prevented servers from starting up

> - DeviceImpl.get_device_properties for string properties assigns only first character of string to object member instead of entire string

> - added missing methods to Util

> - exported SubDevDiag class

> - error in read/events of attributes of type DevBoolean READ_WRITE

> - error in automatic unsubscribe events of DeviceProxy when the object disapears (happens only on some compilers with some optimization flags)

> - fix possible bug when comparing attribute names in DeviceProxy

> - pretty print of DevFailed -> fix deprecation warning in python 2.6

> - device class properties where not properly fetched when there is no property value defined

> - memory leak when converting DevFailed exceptions from C++ to python

> - python device server file without extension does not start

Documentation:

> - Improved FAQ

> - Improved compilation chapter

> - Improved migration information