/  Python Yamcs Client Release Notes  /  Changes in 2.0

Changes in 2.0

Changes in 2.0.0 (2026-05-21)

  • This release removes the external dependency to the protobuf package. Instead protobuf is embedded into this yamcs-client package. This avoids issues with other installed packages depending on conflicting versions of protobuf. #32

  • This release removes old-style imports. Reminder: all classes can be imported from yamcs.client module.

    For example, instead of:

    from yamcs.core.auth import Credentials
    from yamcs.client import YamcsClient
    
    credentials = Credentials(username="admin", password="admin")
    client = YamcsClient("http://localhost:8090", credentials=credentials)
    

    do instead:

    from yamcs.client import Credentials, YamcsClient
    
    credentials = Credentials(username="admin", password="admin")
    client = YamcsClient("http://localhost:8090", credentials=credentials)
    
  • TimelineClient: Add delete_items operation to batch-delete items. This is a lot faster than deleting items one-by-one.

  • TimelineClient: Default for the ItemBand setting space_between_items was changed from 0 to 7. And space_between_lines was changed from 2 to 7. This allows for a bit more whitespace between items, which gives the Yamcs Web UI some space to draw connections between depending activities.

  • TimelineClient: The code was adjusted to API changes in Yamcs 5.13.0. Backwards compatibility with older Yamcs versions is untested (and unlikely to succeed).

  • TimelineClient: The code to add/update items to the Yamcs Timeline was changed. A best-effort was made to keep old code functional, however that will emit deprecation warnings.

    In summary, instead of:

    item = Item()
    item.name = "Test"
    item.start = now
    item.duration = timedelta(seconds=3600)
    item.tags = ["abc"]
    timeline.save_item(item)
    

    do instead:

    item = TimelineEvent(
        name="Test",
        start=now,
        duration=timedelta(seconds=3600),
        tags=["abc"],
    )
    timeline.save_item(item)
    

    New classes are available for three different kinds of items: TimelineEvent, TimelineTask and TimelineActivity. See the online documentation for more on this topic.

Changes in 1.13

Changes in 1.13.0 (2026-04-02)

  • ArchiveClient: Added source option to export_parameter_values. By default this function will now use the Parameter Archive instead of doing a packet replay.

  • MDBClient: Added version option to export_space_system. This defaults to XTCE 1.2, but you could set it to 1.3 to use the newly introduced namespace.

  • If you are still using old-style imports, you will now start seeing deprecation warnings. Reminder: all classes can be imported from yamcs.client package.

    For example, instead of:

    from yamcs.core.auth import Credentials
    from yamcs.client import YamcsClient
    
    credentials = Credentials(username="admin", password="admin")
    client = YamcsClient("http://localhost:8090", credentials=credentials)
    

    do instead:

    from yamcs.client import Credentials, YamcsClient
    
    credentials = Credentials(username="admin", password="admin")
    client = YamcsClient("http://localhost:8090", credentials=credentials)
    
  • ArchiveClient: the method sample_parameter_values was renamed to downsample_mean. The previous method still works but will generate a deprecation warning. Likewise the Sample class was renamed to MeanSample.

  • Improves error handling when querying URLs that do not appear to be Yamcs URLs.

Changes in 1.12

Changes in 1.12.1 (2026-01-05)

  • Fixes a py3.8/py3.9 setuptools compatibility issue, introduced by 1.12.0 release

Changes in 1.12.0 (2025-10-30)

  • LinkClient: Add methods for SDLS API interaction (thanks @thezeroalpha)

  • Avoid pkg_resources warnings with recent versions of setuptools #35

  • Rename yamcs.client.CommandStackActivity to yamcs.client.StackActivity. The previous name will remaining working for a while, but may generate deprecation warnings.

Changes in 1.11

Changes in 1.11.3 (2025-03-27)

  • Archive: Make start/stop arguments on rebuild_parameter_archive optional

  • Add extension mechanism for non-core activities

Changes in 1.11.2 (2025-02-24)

  • Timeline: add new band types ParameterPlot and ParameterStateBand for use with Yamcs 5.11.2 or higher

  • Parameter Archive: add operations to enable/disable automatic backfilling for use with Yamcs 5.11.1 or higher

Changes in 1.11.1 (2024-11-19)

  • Fixes an issue introduced in v1.11.0 when using string arguments #30 (thanks @AnsgarSchmidt)

Changes in 1.11.0 (2024-11-10)

  • For a few releases already, it has been possible to import all classes directly from the yamcs.client package. In this release, all docs and examples have been modified accordingly, and source files were physically moved under this package. Old-style imports continue to work, but will eventually be deprecated for removal (in the distant future).

    For example, instead of:

    from yamcs.core.auth import Credentials
    from yamcs.client import YamcsClient
    
    credentials = Credentials(username="admin", password="admin")
    client = YamcsClient("http://localhost:8090", credentials=credentials)
    

    prefer instead:

    from yamcs.client import Credentials, YamcsClient
    
    credentials = Credentials(username="admin", password="admin")
    client = YamcsClient("http://localhost:8090", credentials=credentials)
    
  • Fixes API issue when using array-type TC arguments

Changes in 1.10

Changes in 1.10.0 (2024-08-20)

  • Fix compatibility issues with Yamcs 5.10.x

  • Require Python 3.8 or higher (Python 3.7 removed)

  • Fix circularity issue when using a deep import #28

  • Fix client close issue when no creds are used

  • MDB: provide access to command arguments and types

  • Archive: add CSV command export method\

  • Link subscription was adapted to changed server API. The subscription callback returns a List[Link] now, instead of LinkEvent, containing the state of all links.

Changes in 1.9

Changes in 1.9.8 (2024-05-24)

  • YamcsClient: Add list_rdb_tablespaces and compact_rdb_column_family methods

Changes in 1.9.7 (2024-05-10)

  • YamcsClient: Add keep_alive option to keep authentication session alive, even when no requests are made. The option is enabled by default.

Changes in 1.9.6 (2024-04-18)

  • File transfer: Add run_file_action

  • Provide access to optional result of a link action

  • Add a stream option to issue_command (not functional now, for future Yamcs releases)

Changes in 1.9.5 (2024-03-25)

  • Add purge_parameter_archive to archive client

Changes in 1.9.4 (2024-03-18)

  • Add rebuild_ccsds_index to archive client

  • Add run_script to processor client

  • Fix few more typing issues

Changes in 1.9.3 (2024-03-05)

  • Everything (excluding generated protobuf classes) can now be imported directly from yamcs.client. Previous imports remain functional, but we’ll gradually start recommending to use the shorter import. This was done for ease of use, but also because the current modules are not all under yamcs.client, and we’d like to change that in a future update.

  • Many typing fixes (many more remaining)

  • Added static YamcsClient.from_environment() method which initializes the client from environment properties. The main goal here is to make it easy to instantiate a YamcsClient when used in a Python script ran by the Yamcs Activity Service (the activity service sets the necessary environment variables automatically).

  • Storage: Added capability to set an object’s metadata

  • Storage: Add create option to get_bucket()

  • Processing: Add await_first_delivery() to ParameterSubscription. This makes it easier to await an expected value update (for example following a telecommand).

  • Timeline: Add capability to schedule activities (Yamcs v5.9.0+)

  • Timeline: Allow changing the styling of individual items (Yamcs v5.9.0+)

Changes in 1.9.2 (2023-11-09)

  • Add aliases, assignments and all_assignments properties to CommandHistory and IssuedCommand classes.

  • MDB: Temporarily deprecate aliases property of MDB items, in favor of aliases_dict. Eventually aliases will become preferred again, but with a different type (dictionary instead of list of 2-tuples).

  • ArchiveClient: Fix “namespace/alias” syntax not working with list_parameter_values.

Changes in 1.9.1 (2023-11-03)

  • Add Python 3.12, drop Python 3.6

  • Bump minimum protobuf version from 3.8 to 3.11

  • Add streaming operations for packets/events/commands

  • Add method to load a large amount of parameter values into Yamcs (via client-streaming)

  • Add method to export parameter values in CSV format

  • Add methods to create Parameters and Parameter Types (in case of a writable space system)

Changes in 1.9.0 (2023-05-01)

  • This release introduces the use of Python’s typing library for better editor support. Previously, type hints were supplied in method comments.

  • YamcsClient:

    • Add method to delete a processor

  • ProcessorClient:

    • Allow setting sequence number when submitting commands

    • Use non-deprecated API to pass command arguments (the newer API was first introduced in Yamcs v5.5.4)

    • Alarm methods require passing a sequence number (used by Yamcs to validate the correct alarm instance)

    • create_packet_subscription will now default to subscribe to realtime processor, instead of the tm_realtime stream. This capability was first introduced on Yamcs v5.5.x branch.

  • ArchiveClient:

    • Add query option to dump_table

    • Add method to list alarms

  • MdbClient: Add method to export XTCE for a space system

  • FileTransferClient: Fix backwards compatibility around changes to upload options API (reliable, overwrite, createPath).

Changes in 1.8

Changes in 1.8.8 (2023-03-17)

  • Generate ConnectionFailure exception when login attempt is made and Yamcs is not available (previously this would generate an error coming from the requests dependency)

  • Fix possibility of mutation error when iterating command acknowledgements that are still being updated

  • Add a reconnection example: https://docs.yamcs.org/python-yamcs-client/examples/reconnection/ (#17)

Changes in 1.8.7 (2023-03-14)

  • Fix WebSocket connections not closed when monitoring file transfers #21

  • FileTransferClient:

    • Add support for remote file listing (requires Yamcs 5.7.10+)

    • upload(...): Arguments reliable, createPath and overwrite should be passed inside the new options argument. For example, replace:

      service.upload("somebucket", "myfile", "/CF:/mytarget", reliable=True)
      

      with:

      service.upload("somebucket", "myfile", "/CF:/mytarget", options={"reliable": True})
      

      This change was done to further make FileTransferClient independent of a specific implementation like CFDP.

    • download(...): The order of arguments was changed to allow for object_name to be optional

    • download(...): Arguments overwrite, parents and reliable should be passed inside the new options argument. For example, replace:

      service.download("somebucket", "targetfile", reliable=True)
      
      service.download("somebucket", "targetfile", options={"reliable": True})
      

      This change was done to further make FileTransferClient independent of a specific implementation like CFDP.

Changes in 1.8.6 (2023-02-21)

  • Add is_failure() to MonitoredCommand instances returned from CommandSubscription.issue(...) (to complement existing is_success()).

  • Make MonitoredCommand.is_complete() always return either True or False. Prior to this release, it was returning None when the completion could not yet be established.

  • Add support for the websocket-client dependency to releases between 0.48.0 and 0.57.0. This range of versions had a breaking change which we did not support until now (although we did support both earlier and later versions). Some LTS Linux distributions still use these versions in their standard repositories, so it made sense to add support.

Changes in 1.8.5 (2022-10-21)

  • Fix decode issue with list_items in TimelineClient

Changes in 1.8.4 (2022-06-15)

  • Add additional bucket properties: created, directory, max_size, max_object_count (Yamcs v5.6.1)

  • Add additional event property: extra (Yamcs v5.7.3)

  • Add support for tm_links filter on stream_parameter_values call (Yamcs v5.7.4)

Changes in 1.8.3 (2022-05-30)

  • Exclude protobuf >=4 from allowed dependency range

Changes in 1.8.2 (2022-05-09)

  • Fix handling of addresses with trailing slash

  • When tls_verify=False, hide urllib3 insecure warning also with requests < 2.16.0

  • If the address does not specify a port, use HTTP defaults (80 without TLS and 443 with TLS) instead of defaulting to 8090.

Changes in 1.8.1 (2022-04-11)

  • Added a TimelineClient. Usage: https://docs.yamcs.org/python-yamcs-client/timeline/

  • Increased protobuf dependency from >=3.6 to >=3.8

Changes in 1.8.0 (2022-03-02)

Update proto files for compatibility with Yamcs v5.6.0

Changes in 1.7

Changes in 1.7.6 (2022-03-02)

Add option to set generation time when writing to parameters #18

Changes in 1.7.5 (2021-10-20)

  • Add support for beta_args_v2 argument to ProcessorClient.issue_command(...) and CommandConnection.issue(...). You may use this instead of args to activate use of a new mechanism to submit command arguments. The new mechanism has better support for type conversions, but requires at least Yamcs v5.5.4. One example of such a conversion is that it accepts the numeric value of an enumeration state.

    command = processor.issue_command("/YSS/SIMULATOR/SWITCH_VOLTAGE",
                                      beta_args_v2={"voltage_num": 2})
    

    This will become the default in a future non-minor release.

Changes in 1.7.3 (2021-09-17)

  • Use double-precision when setting float parameters #16

  • Add new method stream_parameter_values to archive client. This allows fetching the historic values of multiple parameters at once, and uses server-streaming instead of pagination. #15

  • WebSocket connection attempts close immediately (instead of timing out) when server is unavailable

Changes in 1.7.2 (2021-08-05)

  • Adapt archive.list_parameter_ranges(...) to a recent API change

  • Add options min_range and max_values to archive.list_parameter_ranges(...) to allow generating smaller responses

  • Make it possible to specify a custom TLS CA bundle via the tls_verify option of a client constructor. #14

Changes in 1.7.1 (2021-07-01)

  • Parameter info additionally exposes access to engineering units, enumeration values and data encoding properties.

  • Improves error handling for unknown hosts

  • Fixes an issue with WebSocket replies ignoring the timeout parameter

Changes in 1.7.0 (2021-06-14)

  • Add compatibility with Python 3.10

  • Add create_container_subscription(...) to ProcessorClient

  • Make use of implicit namespace packages.

Note: if you do not use pip, but instead install yamcs-client from a clone of this repository (python setup.py develop or python setup.py install), remove manually any yamcs*-nspkg.pth files from your site-packages (python setup.py uninstall yamcs-client will not remove such files).

Changes in 1.6

Changes in 1.6.6 (2021-05-25)

  • Remove version restriction on websocket-client dependency

  • Add create_packet_subscription(...) to ProcessorClient #13

Changes in 1.6.5 (2021-03-19)

  • Support writing to local binary/array/aggregate/time params #10

  • Add download operations to file transfer client (in case of a supporting server implementation)

Changes in 1.6.4 (2021-02-24)

  • Added operations for Yamcs TCO API

  • Server-values of type NONE are now supported, and get mapped to Python None.

  • Generalized CFDP to File Transfer. Old code paths remain in place, but with deprecation warnings.

# BEFORE
cfdp_client = yamcs_client.get_cfdp_client(instance="test")
cfdp_client.upload(...)

# NOW
cfdp_client = yamcs_client.get_file_transfer_client(instance="test")
service = cfdp_client.get_service(name="cfdp0")  # Assuming cfdp0 is the service's name in yamcs.[instance].yaml
service.upload(...)
  • Exposed maintenance methods for rebuilds of table histograms, and the Parameter Archive.

Changes in 1.6.3 (2020-12-19)

  • CFDP: Operations should now be explicit about which service they use. Old code paths remain in place, but with deprecation warnings.

# BEFORE
cfdp_client = yamcs_client.get_cfdp_client(instance="test")
cfdp_client.upload(...)

# NOW
cfdp_client = yamcs_client.get_cfdp_client(instance="test")
service = cfdp_client.get_service(name="cfdp0")  # Assuming cfdp0 is the service's name in yamcs.[instance].yaml
service.upload(...)
  • CFDP: Added source_entity, destination_entity options on upload

  • Processor: Rename methods on the link subscription: list_data_links renamed to list_links, get_data_link to get_link. A similar rename was already done in the past on the ProcessorClient itself.

  • Tables: Optimized table-load operation (bigger chunks)

Changes in 1.6.2 (2020-11-06)

  • Fixes an issue with retrieval of authentication settings

  • Drops Python 3.5 (end of life)

Changes in 1.6.1 (2020-10-22)

  • Restores the Protobuf compatibility to >= 3.6. Previously the generated messages were accidentally requiring a more recent version than the declared dependency range.

  • Fixes a few bugs related to broken references.

Changes in 1.6.0 (2020-10-13)

  • datetime instances derived from server messages are now timezone-aware using the client’s local timezone (previously they were naive and silently assumed to be UTC). If desired, you can force the use of a UTC timezone by setting the environment variable PYTHON_YAMCS_CLIENT_UTC to 1. (#8)

  • datetime instances provided as input to client methods must now be timezone-aware (previously the timezone information was ignored and assumed to be UTC). You can use any tzinfo implementation.

  • Commands now accept a dict for aggregate arguments, and a datetime for time arguments.

Changes in 1.5

Changes in 1.5.3 (2020-08-19)

  • Add an operation for exporting raw packets

Changes in 1.5.2 (2020-08-06)

  • Fix an issue with setting extra attributes on a command

  • Added operations for Yamcs CFDP API

Changes in 1.5.1 (2020-07-06)

  • Fix issue with sequence generation of commands

Changes in 1.5.0 (2020-07-03)

  • Update to Yamcs 5.0.0

  • Link operations are now grouped in a LinkClient

  • SQL results can be iterated

  • Python 2.7 support is now removed. Use 3.5 or higher

Changes in 1.4

Changes in 1.4.6 (2020-04-30)

  • Fix auth issue when the first call uses the websocket api (#6)

  • In issue_command, TC arguments of type BINARY may now also be specified using values of type bytes (py3) or bytearray (py2 + py3). Previously only hexlified strings were accepted.

  • Some imports were updated to match latest Yamcs API.

Changes in 1.4.5 (2020-04-01)

  • Fix processor subscription of top-level parameters of type aggregate and array

  • Provide MDB-level access to array/aggregate type structure of parameters