Skip to content

Tags

Tags give the ability to mark specific points in history as being important
  • v0.9.2

    protected
    3f550091 · pySHV version 0.9.2 ·
    Release: Release 0.9.2
    pySHV version 0.9.2
    
    The rename change should have no effect on the users as that is not
    technically an API expected to be used externally that much. Thus this
    release is considered a fixup and not a minor release.
    
    Changed
    * Renamed `RpcProtocolStream` to `RpcProtocolBlock` to match rename in the SHV
      standard.
    
    Fixed
    * Reduced performance impact of unpacking bytes read due to unnecessary
      abstraction
    * Omission of AccessLevel in `RpcMessage`
    
  • v0.9.1

    protected
    87418c00 · pySHV version 0.9.1 ·
    Release: Release 0.9.1
    pySHV version 0.9.1
    
    Fixed
    * Performance issue caused by conversion of transported data for logging
      even if logs were not generated.
    * Performance issue caused by too deep check when `SHVMeta` was being
      created for IMap and Map.
    
  • v0.9.0

    protected
    3a4a9e57 · pySHV version 0.9.0 ·
    Release: Release 0.9.0
    pySHV version 0.9.0
    
    Added
    * Support for scientific notation for SHV Double in CPON.
    * `SHVPath` and its usage in `SHV*` classes
    * `SHVBase` now has `user_id` property that is default user ID used with
      `call` method
    * `RpcRequestInvalidError` and `RpcTryAgainLaterError`
    * `RpcTypeOptional` as easier alternative to `RpcTypeOneOf` when
      combining only with `rpctype_null`.
    * properties `RpcMessage.abort`, `RpcMessage.delay`, and
      `RpcMessage.repeat`
    * `RpcMessage.make_response_delay` and `RpcMessage.request_abort`
      methods
    
    Changed
    * Websockets RPC Transport now requires `shv3` to be used as
      subprotocol. Connections failing to select this subprotocol won't be
      established.
    * `RpcClient.receive` no longer accepts argument `raise_error`.
    * `RpcMessage.is_*` methods are replaced with `RpcMessage.type`
    * `RpcMessage.is_valid` checks highly expanded
    * `RpcMessage.make_response` no longer accepts `error` argument. Pass
      `RpcError` to `result` parameter instead.
    * `RpcMessage.request` has new parameter `cids` and `user_id` is moved.
    * `RpcMessage.rpc_error` is now `RpcMessage.error` and original error
      access is no longer available.
    * `RpcMethodDesc` was renamed to `RpcDir`
    * `RpcMethodFlags` was moved to `RpcDir.Flag`
    * `RpcMethodAccess` was renamed to `RpcAccess`
    * `SHVBase.peer_is_shv3` is replaced with more generic
      `SHVBase.peer_shv_version`
    
    Fixed
    * type hint for `dir` result (corrected against SHV standard).
    * default parameter type hint for getters is now correctly `i(0,)|n`
      instead of plain `i`.
    * SHV Map no longer accept SHV UInt as key (SHV standard correct).
    * CPON now represents SHV Double in hexadecimal format thus bypassing
      float to decimal conversion issue
    * Error reported on Python 3.12 when `RpcClientPipe.fdopen` is used
    * SHV RPC Type representation for standard types `!historyRecords`,
      `!getLogR`.
    * Usage of `SHVMethods` with parents defining private attributes
    * Unpack of CPON floats failing for some allowed formats
    
  • v0.8.0

    protected
    c38e0300 · pySHV version 0.8.0 ·
    Release: Release 0.8.0
    pySHV version 0.8.0
    
    Added
    * utility class `SHVMethods` providing easier and less error-prone way
      of declaring methods and properties
    * User's ID for signal messages (this was added as an option in SHV
      standard)
    * `SHVBase._ls_node_for_path` helper
    * Support for alerts in `SHVDevice`
    * `RpcAlert` as abstraction for device alerts
    * `shvtypes` module with utilites to work with RPC type hints
    * `.device:uptime` and `.device:reset`
    
    Changed
    * "Simple" API was renamed to SHV and thus `SimpleClient` is now
      `SHVClient`
    * `SHVBase._method_call` now accepts `SHVBase.Request` as a single
      argument instead of previously passed five arguments.
    * `SHVBase._got_signal` now accepts `SHVBase.Signal` as a single
      argument instead of previously passed four arguments.
    * method `_value_update` was moved from `SHVBase` to `SHVValueClient`
    * `RpcMessage.next_request_id` now roll overs after fifteen minutes
    
    Removed
    * `RpcMessage.last_request_id`
    
    Removed
    * `SHVBase._signal` as it can be easily replaced by `SHVBase._send` in
      combination with `RpcMessage.signal`
    * `SHVBase._lsmod` and replaced by `RpcMessage.lsmod` in combination
      with `SHVBase._send`
    
    Fixed
    * Close of TTY client causing `TypeError` to be raised in receive task
    * Unpacking blobs of zero length from ChainPack
    
  • v0.7.3

    protected
    2c02d6d6 · pySHV version 0.7.3 ·
    Release: Release 0.7.3
    pySHV version 0.7.3
    
    Fixed
    * Invalid unpack of date and time from ChainPack for dates before
      2018-02-02
    
  • v0.7.2

    protected
    000817ae · pySHV version 0.7.2 ·
    Release: Release 0.7.2
    pySHV version 0.7.2
    
    Fixed
    * Re-release due to error in this file causing deployment failure
    
  • v0.7.1

    protected
    984480c1 · pySHV version 0.7.1 ·
    pySHV version 0.7.1
    
    Fixed
    * `RpcMethodDesc` now correctly handles `null` for the signal parameter
    * `CancelledError` raised from login task when reset is received before
      login is finished
    
  • v0.7.0

    protected
    afe9817a · pySHV version 0.7.0 ·
    Release: Release 0.7.0
    pySHV version 0.7.0
    
    Added
    * Support for WebSockets transport
    * NixOS module for pyshvbroker
    * `RpcLogin` now provides password validation algorithm and conversion
      from and to SHV login parameter
    * RPC servers now have `terminate` and `wait_terminated` method that
      terminates not server but also its clients
    * Support for string arguments in places where `RpcUrl` is being used
    
    Changed
    * Broker's configuration format changed from INI to TOML as well as the
      concept of the configuractuion changed. Please update your
      configuration according to the new documentation.
    * Broker now filters signals based on the source method not signal name
    * `RpcBrokerConfig` completely rewritten
    * `RpcBroker` client are now registered only if they are active
    * `RpcProtocol.SERIAL` renamed to `RpcProtocol.TTY`
    * `RpcInvalidParamsError` was renamed to `RpcInvalidParamError`
    * `RpcErrorCode.INVALID_PARAMS` was renamed to
      `RpcErrorCode.INVALID_PARAM`
    
    Removed
    * `RpcRI` in favor of using strings and `rpcri_*` functions
    
    Fixed
    * `SimpleBase.ping` now uses `.broker/app` instead of
      `.broker/currentClient` on pre-SHV3 brokers
    * `is_shvlist` now excludes strings and bytes to not invalidly classify
      them as lists
    * `shvarg` and `shvargt` now correctly manages single values and
      provides them only as for zero index (was for all indexes)
    * `RpcServerTTY` no longer raise `asyncio.CancelledError` when its being
      closed
    
  • v0.6.1

    protected
    8a1da8c1 · pySHV version 0.6.1 ·
    Release: Release 0.6.1
    pySHV version 0.6.1
    
    Added
    * `is_shvtype` and `is_shvlist` functions that validates Python object
      as being `SHVType` and `SHVListType` respectively
    
    Changed
    * `is_shvmap` and `is_shvimap` now inspect also values with `is_shvtype`
    
    Fixed
    * Compatibility for `RpcSubscription` when all methods are requested
    * `SimpleBase` sometimes causing error on exit due to not having any
      task to finish
    
  • v0.6.0

    protected
    84bfbc70 · pySHV version 0.6.0 ·
    Release: Release 0.6.0
    pySHV version 0.6.0
    
    Added
    * Automatic reconnects for `SimpleClient`
    * `init_rpc_client` that only initializes `RpcClient` without connecting
      it
    * `RpcMessage.make_response` now accepts result as argument so you can
      use it as initializator
    * Support for Access Level for RPC messages
    * Support for Client's ID in `SimpleBase` as well as in `RpcBroker`.
    * New RPC error `RpcUserIDRequiredError`
    * RPC Broker configuration option `config.name`
    * SHV value getting utilities for common parameter formats (`shvarg`,
      `shvgett`)
    * `SimpleBase.dir_exists` that is consistent with
      `SimpleBase.ls_has_child`
    * `RpcNotImplementedError`
    
    Changed
    * `SimpleBase` and thus `SimpleClient` method `_method_call` has new
      argument `user_id` and order of old arguments changes. Please update
      your code!
    * `RpcUrl` login specific options were moved to `RpcLogin`
    * `.app/broker` and `.app/device` were moved to `.broker` and `.device`
      according to the SHV 3.0 standard
    * `RpcMethodDesc.SIGNAL` renamed to `RpcMethodDesc.NOT_CALLABLE` and
      should not be used and at the same time new field
      `RpcMethodDesc.signals` was added. Signals now should be specified
      there and not as a separate items.
    * `SimpleClient` has now new base `SimpleBase`
    * `RpcClient.reset` no longer disconnects and instead sends reset signal
      to peer. The `RpcClient.receive` now receives not only messages but
      also these control signals.
    * `RpcBroker` now lowers access level instead of overwriting it
    * Command `pycp2cp` renamed to more appropriate `pycpconv`
    * `RpcBroker.Client` and `RpcBroker` API changed to center mount point
      management in `RpcBroker`.
    * `RpcSubscription` has now different fields due to subscription changes
    * The format of logging changed to identify different clients from each
      other
    * Access level numerical values adjusted to match SHV standard
    * `SimpleBase` and thus `SimpleClient` no longer provides public ability
      to send messages and signals. Instead it is now implemented as
      protected methods and implementations based on it must expose them
      appropriately if that is required.
    * `.app:date` SHV RPC method to `SimpleBase`
    
    Fixed
    * Failing import on Windows
    * Subscription are now compared case sensitive (as it should have been)
    * `ValueClient` documentation for `prop_change_wait` timeout parameter
    * `ValueClient.prop_get` now uses `max_age` for `get` and correctly uses
      local cache
    
    Removed
    * `rpc_login` and `rpc_login_url` in favor of `RpcLogin`
    * `SimpleClient.dir_description` that is replaced with
      `SimpleBase.dir_exists`
    * `RpcMethodDesc.signal` as it is invalid with latest changes
    * `RpcMethodDesc.description` that was replaced with
      `RpcMethodDesc.extra["description"]`
    * Broker no longer provides `.app/broker/clientInfo`
    * Broker no longer provides method
      `.app/broker/currentClient:rejectNotSubscribed`
    * `RpcMessage.chng` because that is now default for `RpcMessage.signal`
    
  • v0.5.0

    protected
    71d5af3f · pySHV version 0.5.0 ·
    Release: Release 0.5.0
    pySHV version 0.5.0
    
    Added
    * Broker now has ability to establish connection on its own instead of
      just listening for them
    * `RpcClientPipe` that supports working with Unix pipes
    * `RpcServerTTY` that waits for TTY to appear
    
    Changed
    * `RpcUrl.password` is now expected to be only string and default value
      is empty string. `RpcUrl.login_type` is now `PLAIN` to be valid for
      default password value.
    * `rpclogin` replaces `PLAIN` login with `SHA1` for increased security.
      The new parameter `force_plain` was added to actually use `PLAIN`
      anyway.
    * `connect_rpc_client` now uses `RpcProtocolSerialCRC` instead of
      `RpcProtocolSerial` for `RpcProtocol.SERIAL`.
    * `RpcUrl.parse` now enforces that `shapass` must have 40 characters.
    * `.app/broker:mountPoints` renamed to `.app/bnroker:mounts` according
      to the standard update.
    * All methods working with subscription in `.app/broker/currentClient`
      now use keyword `paths` instead of `pattern` (change in SHV standard)
    * Methods in `.app/broker` now have access level Super-Service according
      to the SHV standard
    * Methods in `.app/broker/currentClient` are now reported with Browse
      access level but on access the level is not verified at all and thus
      access is not limited
    
    Fixed
    * Login to RPC Broker with PLAIN password when server has SHA1
      configured for that user
    * `.app/broker:mountedClientInfo` is now reported by `.app/broker:dir`
    * `RpcUrl` now correctly escapes options when converting to URL string
      and supports `user` option
    
  • v0.4.0

    protected
    f4e8f9e3 · pySHV version 0.4.0 ·
    Release: Release 0.4.0
    pySHV version 0.4.0
    
    pySHV now conforms with work in progress SHV standard 3.0!
    
    Added
    * `SimpleClient.ls_has_child` to query if child node exists
    * `SimpleClient.dir_description` to get description of a single method
    * `SimpleClient` now supports multiple call attempts
    * `SimpleDevice` that should be used with devices
    
    Changed
    * `RpcMessage` API to now use properties instead of methods
    * Removed unused argument `login_options` for `SimpleClient.connect`
    * `SimpleClient.dir_details` is now `SimpleClient.dir` and old `dir`
      implementation is removed
    * `RpcClientStream` is replaced with `RpcClientTCP` and `RpcClientUnix`
    * `RpcClientSerial` is replaced with `RpcClientTTY`
    * `RpcServerStream` is not replaced with `RpcServerTCP` and
      `RpcServerUnix`
    * Broker configuration now no longer contains `rules` sections and
      instead we specify `methods` in `roles` sections. Methods are
      combination of path and method that is used to identify methods this
      role is applied to.
    * `RpcClient.connected` is not property instead of plain method
    * Broker now allows all users browse access to the `.app` and read
      access to the `.app/broker/currentClient`.
    * Received invalid messages are now skipped instead of raising
      exception.
    * `SimpleClient.login` and `SimpleClient.urllogin` renamed and moved to
      `rpclogin` and `rpclogin_url` respectively
    
    Removed
    * `SimpleClient.ls_with_children` as that is now invalid with SHV 3.0
    * Support of UDP (not part of standard)
    
  • v0.3.0

    protected
    6994594b · pySHV version 0.3.0 ·
    Release: Release 0.3.0
    pySHV version 0.3.0
    
    Added
    * `ValueClient.wait_for_change` that blocks task until value change is
      detected.
    * `ValueClient.prop_change_wait` that simplifies a common operation of
      waiting for a new value.
    * `ValueClient.get_snapshot` is now able to snapshot multiple paths or
      subscribed paths if no path is given.
    * `ValueClient.clean_cache` method to remove old entried for no longer
      subscribed paths.
    * `ValueClient.prop_get` now supports `max_age` parameter
    * Support for UDP/IP protocol
    * Initial support for Serial protocol
    * Ability to reset the client connection (`RpcClient.reset`)
    
    Changed
    * URL now uses field `location` instead of `host` as it is more
      descriptive considering the usage.
    * Login is now allowed for local socket because it can be used to
      elevate access rights of some clients without need to have multiple
      sockets.
    * `ValueClient` now caches new value for subscribed paths when
      `prop_get` is used and optionally right on `prop_set`.
    * `ValueClient.unsubscribe` now calls `ValueClient.clean_cache` on
      successful unsubscribe (this can be suppressed with argument).
    * `create_rpc_server` returns `RpcServer` instead of `asyncio.Server`
    
    Fixed
    * Running pyshvbroker as a standalone application not working
    * Packing of `Decimal` in ChainPack that in some cases packed invalid
      value
    * Unpacking of strings in Cpon that mangled UTF-8 encoding.
    * Packing of `str` in Cpon that invalidly escaped some characters.
    * `ValueClient.get_snapshot` no longer fails when node is not
      implementing `ls` method.
    * `ValueClient.is_subscribed` now correctly matches only paths for
      subscribed nodes and its children instead of just generic string
      prefix.
    * `ValueClient.prop_get` reports value change only when it really
      happened.
    * `ValueClient.prop_change_wait` implementation
    * `RpcUrl` uses local user's name instead of empty string
    * Handling of idle ping for `SimpleClient` when used only to listen
    * `pycp2cp` invocation with file
    
  • v0.2.0

    protected
    7dc8e78e · pySHV version pySHV 0.2.0 ·
    Release: Release 0.2.0
    pySHV version pySHV 0.2.0
    
    Added
    * `SimpleClient` that provides simple API to connect to the broker and
      perform calls as well as to handle requests and signals
    * `RpcError` that represents SHV RPC errors
    * `SHVMeta` and variation on SHV types based on it with companion
      functions to manage these custom extended types
    * Small broker implemented purely in Python
    
    Changed
    * `RpcMessage.ErrorCode` moved and renamed to `RpcErrorCode`
    * `RpcClient.read_rpc_message` now raises `RpcError` instead of
      `RpcClient.MethodCallError`
    *  `ChainPackWriter`, `ChainPackReader`, `CponWriter` and `CponReader`
       now require `io.BytesIO` instead of `UnpackContext` and `PackContext`
    * `RpcMessage` has now attribute `value` instead of `rpcValue` (this is
      intentional break to force users to review their code due to the type
    change)
    * `RpcClient` methods for sending and receiving RPC messages were
      replaced with `send` and `receive` methods.
    * `rpcclient.get_next_rpc_request_id` was moved to
      `RpcMessage.next_request_id`
    
    Removed
    * `ClinetConnection`, please use `SimpleClient` or `ValueClient` instead
    * `RpcClient.LoginType.NONE` as login needs to be always performed even
      when any authentication is accepted to actually pass options
    * `RpcValue` and instead native types or `SHVMeta` based types are used
    * `cpcontext` and `ctx` attributes of `ChainPackWriter`,
      `ChainPackReader`, `CponWriter` and `CponReader`
    * `ChainPack.is_little_endian` as it can be easilly done directly
    
  • v0.1.1

    protected
    d0b51f3a · pySHV version 0.1.1 ·
    Release: Release 0.1.1
    pySHV version 0.1.1
    
    Fixed
    * Handler lookup in `ClientConnection` now correctly selects longest
      match rather than shortest
    
  • v0.1.0

    protected
    28ef26fa · pySHV version 0.1.0 ·
    Release: Release 0.1.0
    pySHV version 0.1.0
    
    Added:
    * The original implementation under name `libshv-py`
    * Methods `shverror` and `set_shverror` to `RpcMessage` with an
      appropriate SHV error format
    * `RpcServer` that listens for new client connections
    * `RpcClient.disconnect` method to disconnect the connection
    
    Changed:
    * Top-level package `chainpack` renamed to `shv`
    * `RpcValue` now explicitly converts Python representation to its
      internal one and also back
    * Tags and Keys in `RpcMessage` are now in Enum instead of being
      constants
    * `RpcClient`'s method `connect` is now class method that creates new
      instance
    * `RpcClient` now has to he initialized with writter and reader
    * `RpcClient.LoginType` are now capitalized to match Python paradigm
    * `RpcClient.State` is removed
    
    Fixed:
    - Terminate loop of `RpcClient` on EOF
    - Packing of empty string