Changes#

3.1.1#

  • Launching applications with minimized=False no longer uses SW_SHOWNOACTIVATE, which no longer seems to be obeyed, and was preventing the application window position from being preserved between launches.

3.1.0#

3.0.3#

  • Version now treats ` (Beta)` as .99

  • Reintroduce support for ‘allow_beta’ in find_exe()

3.0.2#

  • unused_tcp_port() now allows restricted port ranges

  • Added LingeringCache

  • Live proxy objects are cached and returned where possible.

  • Improved IPv4/IPv6 support

3.0.1#

  • Fix: Cached exceptions needed to be raised, not returned.

3.0.0#

  • Drops support for Python 3.5 and 3.6

  • Add @rmi(fallback=True) option for remote methods.

2.5.1#

2.5.0#

2.4.5#

2.4.4#

  • When listener is bound to port 0, expose actual port number used.

2.4.3#

  • Replaced set[bool] with Set[bool] to restore Python 3.5 compatibility.

2.4.2#

  • (recalled)

2.4.1#

  • Added default module help command subprocessor

  • Only retry SystemError(‘Could not queue task’) instead of all SystemError exceptions.

2.4.0#

  • Add support for auto-retry of RMI requestes

  • Add CodecMap

2.3.11#

  • Version class is now hashable

  • py -m mhi.common.process show PIDs, etc.

  • Removed Thread.isAlive call (deprecated in 3.8)

2.3.10#

  • Version class is now hashable

2.3.9#

  • Added Application.is_embedded() method

  • Fixed crash when an uncomparible version identifier is found.

  • Fixed packaging module requirement

2.3.8#

  • Added Application.server_address() method

  • Added Application.secondary_connection() method

2.3.7#

  • Replaced deprecated distutils package.

2.3.6#

  • Corrected Windows pathname accidently resulting in illegal escapes.

  • Replaced f-strings, to restore Python 3.5 compatibility.

2.3.5#

  • Added requires attribute for rmi_properties.

  • Added shell_folder(…) function.

2.3.4#

  • Fix Enerplot 1.0.0 legacy communication issue.

2.3.3#

  • Optimized communication memory buffer usage.

2.3.2#

  • Python server kept awake one additional task cycle, to improve responsiveness.

2.3.1#

  • Removed Python 3.9 specific typehint syntax from LibraryZipper.

2.3.0#

  • Added mhi.common.zipper.LibraryZipper to support updating embedded libraries with versions downloaded from PyPI.

2.2.1#

  • Added type-hints for mypy type checking.

  • Allow Remotable objects to override their persistent id module name.

  • Clear the linecache after each program execution, to avoid tracebacks from showing old file contents.

2.2.0#

  • Renamed from mhi.*.common namespace submodules to mhi.common.

2.1.3#

  • Input to BooleanCodec restricted to booleans, integers 0 and 1, and the strings “true”, “false”, “0”, “1”, “yes”, “no”. Additionally, emits a warning if the input is not a boolean.

  • Update rmi_property to work with newer versions of Sphinx

2.1.2#

  • Added repr to MapCodec

2.1.1#

2.1.0#

  • Added minimum, maximum, allow_alpha and allow_beta to find_exe.

  • Added user configuration readers

2.0.1#

  • Added Application.minimum_version(version) and Application.requires(version) methods

  • Added @requires(version) and @deprecated decorators

  • Increased socket throughput (disable Nagling, use MSG_WAITALL flag with recv())