From 1d51d7134b8426523429eca47bb0a76d8dc23690 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 30 Sep 2021 16:05:16 +0200 Subject: [PATCH 01/35] CON-92, CON-200 merge to 1.1.1 (#85) * CON-92: Added the ability to obtain current version of Connector (#80) * CON-92: Added the ability to obtain current version of Connector 3 static methods have been added to Connector - version - Provides the current version of Connector - native_library_version - Provides the current version of native libraries being used by Connector - native_library_build_string - Provides the build ID of the native libraries being used by Connector * CON-92: Made the _from_native method static * CON-92: Fixed docs * CON-92: Changed output Now a single function that provides a string conatining the API version + core versions. For example: RTI Connector for Python, version 1.1.0 NDDSCORE_BUILD_6.1.0_20210531T122009Z_RTI_UNKNOWN NDDSC_BUILD_6.1.0_20210531T122009Z_RTI_UNKNOWN RTICONNECTOR_BUILD_6.1.0_20210531T122009Z_RTI_UNKNOWN * CON-92: Renamed version to get_version * CON-92: Remove ConnectorVersion from docs Co-authored-by: Sam Raeburn (cherry picked from commit 00164ce6409de28cd82c7867ce0a5bd8f987bff2) * CON-200: Fix double free segfault (#79) * CON-200: Fix double free segfault * Update test/python/test_rticonnextdds_connector.py Co-authored-by: Alex Campos Co-authored-by: Sam Raeburn Co-authored-by: Alex Campos (cherry picked from commit 9ffde89afd8fa65a6c1843eea54e76ff5d97ea5e) --- docs/connector.rst | 2 +- .../rticonnextdds_connector.py | 43 ++++++++++++++++-- test/python/test_rticonnextdds_connector.py | 44 ++++++++++++++++++- 3 files changed, 83 insertions(+), 6 deletions(-) diff --git a/docs/connector.rst b/docs/connector.rst index ff68f0f..d2a31a5 100644 --- a/docs/connector.rst +++ b/docs/connector.rst @@ -101,4 +101,4 @@ Class reference: Connector .. autoclass:: rticonnextdds_connector.Connector :members: -.. autofunction:: rticonnextdds_connector.open_connector \ No newline at end of file +.. autofunction:: rticonnextdds_connector.open_connector diff --git a/rticonnextdds_connector/rticonnextdds_connector.py b/rticonnextdds_connector/rticonnextdds_connector.py index 3b10ea1..7cbe74e 100644 --- a/rticonnextdds_connector/rticonnextdds_connector.py +++ b/rticonnextdds_connector/rticonnextdds_connector.py @@ -21,6 +21,7 @@ import sys import platform import json +import pkg_resources from contextlib import contextmanager from numbers import Number from ctypes import * # pylint: disable=unused-wildcard-import, wildcard-import, ungrouped-imports @@ -173,7 +174,7 @@ def __init__(self): # pylint: disable=too-many-statements self.new.argtypes = [ctypes.c_char_p, ctypes.c_char_p, ctypes.c_void_p] self.delete = self.library.RTI_Connector_delete - self.delete.restype = ctypes.c_void_p + self.delete.restype = None self.delete.argtypes = [ctypes.c_void_p] self.get_writer = self.library.RTI_Connector_get_datawriter @@ -322,6 +323,10 @@ def __init__(self): # pylint: disable=too-many-statements self._create_test_scenario.restype = ctypes.c_int self._create_test_scenario.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_void_p] + self.get_build_versions = self.library.RTI_Connector_get_build_versions + self.get_build_versions.restype = ctypes.c_int + self.get_build_versions.argtypes = [POINTER(ctypes.c_void_p), POINTER(ctypes.c_void_p)] + @staticmethod def get_any_value(getter_function, connector, input_name, index, field_name): "Calls one of the get_any functions and translates the result from ctypes to python" @@ -372,7 +377,6 @@ class _ConnectorOptions(ctypes.Structure): # # Public API # - class Samples: """Provides access to the data samples read by an Input (:attr:`Input.samples`) @@ -1255,8 +1259,8 @@ def __init__(self, config_name, url): def close(self): """Frees all the resources created by this Connector instance""" - connector_binding.delete(self.native) + self.native = 0 # Deprecated: use close() # pylint: disable=missing-docstring @@ -1366,6 +1370,39 @@ def set_max_objects_per_thread(value): """ _check_retcode(connector_binding.set_max_objects_per_thread(value)) + @staticmethod + def get_version(): + """ + Returns the version of Connector. + + This method provides the build IDs of the native libraries being used by + Connector, as well as the version of the Connector API. + + :return: A string containing information about the version of Connector. + :rtype: string + """ + # First, get the version of the Connector API from setup.py + setup_py_version = pkg_resources.require("rticonnextdds-connector")[0].version + # The version contained in setup.py contains 3 ints, e.g. 1.1.0 + version_ints = setup_py_version.split(".") + api_version = str(version_ints[0]) + "." + str(version_ints[1]) + "." + str(version_ints[2]) + + # Now get the build IDs of the native libraries + native_core_c_versions = ctypes.c_void_p() + native_connector_version = ctypes.c_void_p() + _check_retcode(connector_binding.get_build_versions( + ctypes.byref(native_core_c_versions), + ctypes.byref(native_connector_version))) + + # Return a string containing all the above information + version_string = "RTI Connector for Python, version " + api_version + version_string += "\n" + version_string += fromcstring(cast(native_core_c_versions, c_char_p).value) + version_string += "\n" + version_string += fromcstring(cast(native_connector_version, c_char_p).value) + + return version_string + @contextmanager def open_connector(config_name, url): """A resource manager that creates and deletes a Connector diff --git a/test/python/test_rticonnextdds_connector.py b/test/python/test_rticonnextdds_connector.py index f591078..aefb2f5 100644 --- a/test/python/test_rticonnextdds_connector.py +++ b/test/python/test_rticonnextdds_connector.py @@ -6,12 +6,13 @@ # This code contains trade secrets of Real-Time Innovations, Inc. # ############################################################################### +from platform import version import sys import os +import re +sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../../") import rticonnextdds_connector as rti import pytest -sys.path.append(os.path.dirname(os.path.realpath(__file__)) + "/../../") - class TestConnector: """ @@ -105,3 +106,42 @@ def test_connector_creation_with_participant_qos(self): config_name=participant_profile, url=xml_path) as connector: assert connector is not None + + def test_get_version(self): + """ + version is a static method that can be can be called + either before or after the creation of a Connector instance. It returns + a string providing information about the versions of the native libraries + in use, and the version of the API. + """ + # Ensure that we can call version before creating a Connector instance + version_string = rti.Connector.get_version() + assert version_string is not None + # The returned version should contain 4 pieces of information: + # - the API version of Connector + # - the build ID of core.1.0 + # - the build ID of dds_c.1.0 + # - the build ID of lua_binding.1.0 + assert bool(re.match("RTI Connector for Python, version ([0-9]\\.){2}[0-9]", version_string, re.DOTALL)) == True + assert bool(re.match(".*NDDSCORE_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True + assert bool(re.match(".*NDDSC_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True + assert bool(re.match(".*RTICONNECTOR_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True + + def test_setting_max_objects_per_thread(self): + """ + It should be possible to modify max_objects_per_thread + """ + rti.Connector.set_max_objects_per_thread(2048) + + def test_connector_double_deletion(self): + """Verify CON-200, that Connector does not segfault on double deletion""" + participant_profile = "MyParticipantLibrary::ConnectorWithParticipantQos" + xml_path = os.path.join(os.path.dirname( + os.path.realpath(__file__)), + "../xml/TestConnector.xml") + with rti.open_connector( + config_name=participant_profile, + url=xml_path) as connector: + assert connector is not None + connector.close() + # connector.close() will be called again here due to the with clause From 635e8f3a04a0a1afe9f27e7929d6a9368539bbb2 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 Oct 2021 09:04:21 +0200 Subject: [PATCH 02/35] Feature/con 191 (#83) (#86) * CON-191: Added tests for 64-bit int conversions * CON-191: Added docs * CON-191: writer's edits to doc changes (py) * CON-191: Updated tests and docs to reflect new behaviour I noticed in the native libraries that we weren't being consistent with the limits. Sometimes we were not checking for v < -LUA_MAX_INT, and sometimes we were not being consistent with the use of > vs >=. I have rectified this, the supported behaviour is as follows: When setting via set_number, we allow |v| < 2^53. When getting via get_number, we allow |v| <= 2^53. The reason for the discrepancy between the set and get, is that when we have a value in set_number, it has already been cast to a double, so although 2^53 is perfectly representable, we do not know if the original value was larger (e.g., 2^53 + 1 would appear as 2^53). Also extended tests to ensure that all of the various supported ways of setting / getting 64-bit values work as expected: - allow setting large values via __setitem__ (string or number), set_string, set_dictionary - allow getting large values via __getitem__ (returned as float or int depending on size), get_string, get_dictionary * CON-191: Completed tests + docs Co-authored-by: Sam Raeburn Co-authored-by: rkorte (cherry picked from commit 62a573cf15ca3bf085a5d1a63520005938c6f510) --- docs/data.rst | 45 +++++-- .../rticonnextdds_connector.py | 11 +- test/python/test_rticonnextdds_data_access.py | 115 +++++++++++++++++- test/python/test_rticonnextdds_metadata.py | 2 - 4 files changed, 156 insertions(+), 17 deletions(-) diff --git a/docs/data.rst b/docs/data.rst index 3345147..82e9d56 100644 --- a/docs/data.rst +++ b/docs/data.rst @@ -138,19 +138,6 @@ To set any numeric type, including enumerations: output.instance.set_number("my_double", 2.14) output.instance.set_number("my_enum", 2) -.. warning:: - The range of values for a numeric field is determined by the type - used to define that field in the configuration file. However, ``set_number`` and - ``get_number`` can't handle 64-bit integers (*int64* and *uint64*) - whose absolute values are larger than 2^53. This is a *Connector* limitation - due to the use of *double* as an intermediate representation. - - When ``set_number`` or ``get_number`` detect this situation, they will raise - an :class:`Error`. ``get_dictionary`` and ``set_dictionary`` do not have this - limitation and can handle any 64-bit integer. - An ``Instance``'s ``__setitem__`` method doesn't have - this limitation either, but ``SampleIterator``'s ``__getitem__`` does. - To set booleans: .. testcode:: @@ -209,6 +196,38 @@ with numeric fields, returning the number as a string. For example: contains a value that can be interpreted as a number, ``sample["my_string"]`` returns a number, not a string. +Accessing 64-bit integers +^^^^^^^^^^^^^^^^^^^^^^^^^ +Internally, *Connector* relies on a framework that only contains a single number +type, which is an IEEE-754 floating-point number. As a result, not all 64-bit integers +can be represented with exact precision. If your type contains uint64 or int64 members, +and you expect them to be larger than ``2^53`` (or smaller than ``-2^53``), then +you must take the following into account. + +64-bit values with an absolute value greater or equal to 2^53 can be set via: + - The type-agnostic setter, ``__setitem__``. The values can be supplied as strings, or as numbers, e.g., ``the_output.instance["my_uint64"] = "18446744073709551615"``. + - The :meth:`Instance.set_string()` method, e.g., ``the_output.instance.set_string("my_uint64", "18446744073709551615")`` + - The :meth:`Instance.set_dictionary()` method, e.g., ``the_output.instance.set_dictionary({"my_uint64": "18446744073709551615"})`` + +64-bit values with an absolute value greater than 2^53 can be retrieved via: + - The type-agnostic getter, ``__getitem__``. The value will be an instance of ``int`` if larger than 2^53, otherwise a ``float``. e.g., ``sample["my_int64"] # 9223372036854775807`` + - The :meth:`SampleIterator.get_string()`, method. + The value will be returned as a string, e.g., ``sample.get_string("my_int64") # "9223372036854775807"`` + - The :meth:`SampleIterator.get_dictionary()` method, e.g., ``sample.get_dictionary()["my_int64"] # "9223372036854775807"`` + +.. warning:: + + If :meth:`SampleIterator.get_number()` is used to retrieve a value > 2^53, an ``Error`` will be raised. + +.. warning:: + + If :meth:`Instance.set_number()` is used to set a value >= 2^53, an ``Error`` will be raised. + +.. note:: + + The :meth:`Instance.set_number()` operation can handle ``abs(value) < 2^53``, + whereas :meth:`SampleIterator.get_number()` can handle ``abs(value) <= 2^53``. + Accessing structs ^^^^^^^^^^^^^^^^^ diff --git a/rticonnextdds_connector/rticonnextdds_connector.py b/rticonnextdds_connector/rticonnextdds_connector.py index 7cbe74e..5abc0b9 100644 --- a/rticonnextdds_connector/rticonnextdds_connector.py +++ b/rticonnextdds_connector/rticonnextdds_connector.py @@ -718,6 +718,9 @@ def get_dictionary(self, member_name=None): def get_number(self, field_name): """Gets the value of a numeric field in this sample + Note that this operation should not be used to retrieve values larger than + ``2^53``. See :ref:`Accessing 64-bit integers` for more information. + :param str field_name: The name of the field. See :ref:`Accessing the data`. :return: The numeric value for the field ``field_name``. """ @@ -932,7 +935,9 @@ def __setitem__(self, field_name, value): raise AttributeError("field_name cannot be None") if isinstance(value, Number): - if value < connector_binding.max_integer_as_double: + # If |value| >= max_integer_as_double set via dictionary, working round + # the int-to-double conversion present in set_number + if value < connector_binding.max_integer_as_double and value > -connector_binding.max_integer_as_double: self.set_number(field_name, value) else: # Work around set_number int-to-double conversion @@ -951,6 +956,10 @@ def __setitem__(self, field_name, value): def set_number(self, field_name, value): """Sets a numeric field + + Note that this operation should not be used to set values larger than + ``2^53 - 1``. See :ref:`Accessing 64-bit integers` for more information. + :param str field_name: The name of the field. See :ref:`Accessing the data`. :param number value: A numeric value or ``None`` to unset an optional member """ diff --git a/test/python/test_rticonnextdds_data_access.py b/test/python/test_rticonnextdds_data_access.py index 0721346..8eaa17a 100644 --- a/test/python/test_rticonnextdds_data_access.py +++ b/test/python/test_rticonnextdds_data_access.py @@ -97,7 +97,8 @@ def test_numbers(self, populated_input): def test_numbers_as_strings(self, populated_input): sample = populated_input.samples[0] assert sample.get_string("my_long") == "10" - assert sample.get_string("my_double") == "3.3" + assert sample.get_string("my_double") == "3.2999999999999998" + assert float(sample.get_string("my_double")) == 3.3 def test_get_boolean(self, populated_input): sample = populated_input.samples[0] @@ -757,3 +758,115 @@ def test_set_enum_with_name(self, test_output, test_input): test_output.instance.set_dictionary({"my_enum":"GREEN"}) sample = send_data(test_output, test_input) assert sample["my_enum"] == 1 + + # The following tests verify that 64-bit numbers behave as expected in Connector + # (XML types uint64 and int64). The expected behavior is: + # - The get_number and set_number operatoins raise an error if number is out + # their supported range. max |value| for set is 2^53 - 1, max |value| for + # get is 2^53. + # - The type agnostic setter can be used to set values outside of these supported + # ranges if they supplied as a string + # - The type agnostic getter can be used to obtain values outside of the + # supported range. Result is a float if within range, otherwise an int. + # - The get_string and set_string operations can be used on all numbers (regardless + # of size) + # - The get_dictionary and set_dictionary can be used on all numbers (regardless + # of size) + # The reason for these limitations is due to the fact that the version of Lua + # used in the native libraries only uses doubles. + + def test_setting_out_of_range_64_bit_values(self, test_output): + # For uint64, check >= 2^53 + with pytest.raises(rti.Error, match=r".*value of my_uint64 is too large.*") as execinfo: + test_output.instance.set_number("my_uint64", 2**53) + # For int64, check >= 2^53 and <= -2^53 + with pytest.raises(rti.Error, match=r".*value of my_int64 is too large.*") as execinfo: + test_output.instance.set_number("my_int64", 2**53) + with pytest.raises(rti.Error, match=r".*value of my_int64 is too large.*") as execinfo: + test_output.instance.set_number("my_int64", -2**53) + # Also check that it IS possible to set the maximum + test_output.instance.set_number("my_uint64", 2**53 - 1) + test_output.instance.set_number("my_int64", 2**53 - 1) + test_output.instance.set_number("my_int64", (-2**53) + 1) + + def test_getting_out_of_range_64_bit_values(self, test_output, test_input): + # Set the values via a dictionary (set_string, and __setitem__ would also work) + test_output.instance.set_dictionary({"my_uint64": 2**53 + 1, "my_int64": 2**53 + 1}) + sample = send_data(test_output, test_input) + with pytest.raises(rti.Error, match=r".*value of my_int64 is too large.*") as execinfo: + sample.get_number("my_int64") + with pytest.raises(rti.Error, match=r".*value of my_uint64 is too large.*") as execinfo: + sample.get_number("my_uint64") + # Also check value < -2^53 + test_output.instance.set_dictionary({"my_int64": -2**53 - 1}) + sample = send_data(test_output, test_input) + with pytest.raises(rti.Error, match=r".*value of my_int64 is too large.*") as execinfo: + sample.get_number("my_int64") + + # Check that the maximum values can be retrieved (2^53) + test_output.instance.set_dictionary({"my_uint64": 2**53, "my_int64": -2**53}) + sample = send_data(test_output, test_input) + assert sample.get_number("my_uint64") == 2**53 + assert sample.get_number("my_int64") == -2**53 + + def test_64_bit_int_communication_with_get_set_string(self, test_output, test_input): + # Check that the set_string and get_string operations work with large numbers + large_numeric_value = 2**53 + large_negative_numeric_value = -2**53 + test_output.instance.set_string("my_uint64", str(large_numeric_value)) + test_output.instance.set_string("my_int64", str(large_negative_numeric_value)) + sample = send_data(test_output, test_input) + assert sample.get_string("my_uint64") == str(large_numeric_value) + assert isinstance(sample.get_string("my_uint64"), str) + assert int(sample.get_string("my_uint64")) == large_numeric_value + assert sample.get_string("my_int64") == str(large_negative_numeric_value) + assert int(sample.get_string("my_int64")) == large_negative_numeric_value + assert isinstance(sample.get_string("my_int64"), str) + + def test_large_integers_are_returned_as_int_getitem(self, test_output, test_input): + # Check that the type-agnostic getter can be used to obtain values outside of + # get_number's range. If they are outside of this range they will be instance + # of int. + test_output.instance.set_dictionary({"my_uint64": str(2**53+1), "my_int64": str(-2**53-1)}) + sample = send_data(test_output, test_input) + assert isinstance(sample["my_uint64"], int) + assert isinstance(sample["my_int64"], int) + assert sample["my_uint64"] == 2**53+1 + assert sample["my_int64"] == -2**53-1 + + def test_smaller_integers_are_returned_as_float_by_getitem(self, test_output, test_input): + # Check that the type-agnostic getter can be used to obtain values inside of + # get_number's range. If they are inside of this range they will be instance + # of float. + test_output.instance.set_dictionary({"my_uint64": str(2**53), "my_int64": str(-2**53)}) + sample = send_data(test_output, test_input) + # They will be floats since they have come via Lua + assert isinstance(sample["my_uint64"], float) + assert isinstance(sample["my_int64"], float) + assert sample["my_uint64"] == 2**53 + assert sample["my_int64"] == -2**53 + + def test_large_integer_type_agnostic_setter(self, test_output, test_input): + # Check that the type-agnostic setter can be used to set numbers as strings, + # also the values can be supplied as numbers. + test_output.instance["my_uint64"] = str(2**53) + test_output.instance["my_int64"] = str(-2**53) + sample = send_data(test_output, test_input) + assert sample["my_uint64"] == 2**53 + assert sample["my_int64"] == -2**53 + # Check the same but supplying them as numbers (internally they get set via + # dictionary in this case) + test_output.instance["my_uint64"] = 2**53 + test_output.instance["my_int64"] = -2**53 + sample = send_data(test_output, test_input) + assert sample["my_uint64"] == 2**53 + assert sample["my_int64"] == -2**53 + + def test_large_integer_communication_with_dictionaries(self, test_output, test_input): + # When dictionaries are used to set / get the sample there are no restrictions + # on the size of the integers. + dict_send = {"my_uint64": 2**53, "my_int64": -2**53} + test_output.instance.set_dictionary(dict_send) + dict_receive = send_data(test_output, test_input).get_dictionary() + assert dict_receive["my_uint64"] == dict_send["my_uint64"] + assert dict_receive["my_int64"] == dict_send["my_int64"] diff --git a/test/python/test_rticonnextdds_metadata.py b/test/python/test_rticonnextdds_metadata.py index ec5121c..b7e2737 100644 --- a/test/python/test_rticonnextdds_metadata.py +++ b/test/python/test_rticonnextdds_metadata.py @@ -91,7 +91,6 @@ def test_sample_identity(self, one_use_output, one_use_input): assert sample.info["sample_identity"] == expected_id def test_bad_guid(self, one_use_output): - not_an_array = {"writer_guid": 3, "sequence_number": 10} with pytest.raises(rti.Error, match=r".*error parsing GUID.*") as excinfo: one_use_output.write(identity=not_an_array) @@ -127,7 +126,6 @@ def test_bad_write_action(self, one_use_output): one_use_output.write(action="bad") def test_request_reply(self, requester, replier): - request_id = {"writer_guid": [3]*16, "sequence_number": 10} requester.writer.instance['x'] = 10 requester.writer.instance['y'] = 20 From 18897de9f7fe55ec398759b5b0bf4cba081fd655 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 6 Oct 2021 09:04:34 +0200 Subject: [PATCH 03/35] CON-92: Handle case in obtaining version where Connector was git cloned (#87) (#88) (cherry picked from commit 6a0ff37573bd4384d00c7a3e4af5a28c962a808a) --- .../rticonnextdds_connector.py | 19 ++++++++++++++----- test/python/test_rticonnextdds_connector.py | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/rticonnextdds_connector/rticonnextdds_connector.py b/rticonnextdds_connector/rticonnextdds_connector.py index 5abc0b9..4316199 100644 --- a/rticonnextdds_connector/rticonnextdds_connector.py +++ b/rticonnextdds_connector/rticonnextdds_connector.py @@ -1387,14 +1387,23 @@ def get_version(): This method provides the build IDs of the native libraries being used by Connector, as well as the version of the Connector API. + Note that if Connector has not been installed via pip, the version of + the Connector API being used will be "unknown". The version of the native + libraries will still be returned correctly. + :return: A string containing information about the version of Connector. :rtype: string """ - # First, get the version of the Connector API from setup.py - setup_py_version = pkg_resources.require("rticonnextdds-connector")[0].version - # The version contained in setup.py contains 3 ints, e.g. 1.1.0 - version_ints = setup_py_version.split(".") - api_version = str(version_ints[0]) + "." + str(version_ints[1]) + "." + str(version_ints[2]) + # First, try to get the version of the Connector API from setup.py + # If Connector was git cloned (as opposed to installed via pip) this + # will fail and we will print "unknown" for the version + try: + setup_py_version = pkg_resources.require("rticonnextdds-connector")[0].version + # The version contained in setup.py contains 3 ints, e.g. 1.1.0 + version_ints = setup_py_version.split(".") + api_version = str(version_ints[0]) + "." + str(version_ints[1]) + "." + str(version_ints[2]) + except pkg_resources.DistributionNotFound: + api_version = "unknown" # Now get the build IDs of the native libraries native_core_c_versions = ctypes.c_void_p() diff --git a/test/python/test_rticonnextdds_connector.py b/test/python/test_rticonnextdds_connector.py index aefb2f5..a31e423 100644 --- a/test/python/test_rticonnextdds_connector.py +++ b/test/python/test_rticonnextdds_connector.py @@ -122,7 +122,7 @@ def test_get_version(self): # - the build ID of core.1.0 # - the build ID of dds_c.1.0 # - the build ID of lua_binding.1.0 - assert bool(re.match("RTI Connector for Python, version ([0-9]\\.){2}[0-9]", version_string, re.DOTALL)) == True + assert bool(re.match("RTI Connector for Python, version (([0-9]\\.){2}[0-9]|unknown)", version_string, re.DOTALL)) == True assert bool(re.match(".*NDDSCORE_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True assert bool(re.match(".*NDDSC_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True assert bool(re.match(".*RTICONNECTOR_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True From 18412dfc136c86a11411a0d45347f1fb21302db9 Mon Sep 17 00:00:00 2001 From: adelleolson Date: Mon, 1 Nov 2021 17:43:41 -0400 Subject: [PATCH 04/35] PLATFORMS-2289. Adding macOS 11 to Connector PY release notes. --- docs/release_notes.rst | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index a375e7c..39ca381 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -23,7 +23,7 @@ runs on most Windows®, Linux® and macOS® platforms. * Wind River® Linux 8 (Arm v7) (Custom-supported platform) **macOS** - * macOS 10.13-10.15 (x64) + * macOS 10.13-10.15, 11 (x64) **Windows** * Windows 8 (x64) @@ -35,14 +35,25 @@ runs on most Windows®, Linux® and macOS® platforms. `main Connector repository `__. -Version 1.1.0 -~~~~~~~~~~~~~ -*RTI Connector* 1.1.0 is built on `RTI Connext DDS 6.1.0 `__. +What's New in 1.2.0 +~~~~~~~~~~~~~~~~~~~ + +*RTI Connector* 1.2.0 is built on `RTI Connext DDS 6.1.1 `__. + +New Platforms +^^^^^^^^^^^^^ + +RTI has validated that *Connector* can be used on macOS 11 (Big Sur) systems. + +Previous Releases +~~~~~~~~~~~~~~~~~ What's New in 1.1.0 ^^^^^^^^^^^^^^^^^^^ +*RTI Connector* 1.1.0 is built on `RTI Connext DDS 6.1.0 `__. + Support added for ARMv8 architectures """"""""""""""""""""""""""""""""""""" .. CON-174 From d7869cc5a64ec30281c71d40fab252bff13c674d Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 9 Nov 2021 14:55:30 +0100 Subject: [PATCH 05/35] HMAINT-235: Handle case where build ID contains 4 digits (#96) (#97) (cherry picked from commit d7935e283ee96c42d1737e9529b75edc83e7e6a5) --- test/python/test_rticonnextdds_connector.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/test/python/test_rticonnextdds_connector.py b/test/python/test_rticonnextdds_connector.py index a31e423..6a190a2 100644 --- a/test/python/test_rticonnextdds_connector.py +++ b/test/python/test_rticonnextdds_connector.py @@ -122,10 +122,12 @@ def test_get_version(self): # - the build ID of core.1.0 # - the build ID of dds_c.1.0 # - the build ID of lua_binding.1.0 + # Each build ID can be of the form X.X.X[.X], where the last integer + # is not always present assert bool(re.match("RTI Connector for Python, version (([0-9]\\.){2}[0-9]|unknown)", version_string, re.DOTALL)) == True - assert bool(re.match(".*NDDSCORE_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True - assert bool(re.match(".*NDDSC_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True - assert bool(re.match(".*RTICONNECTOR_BUILD_([0-9]\\.){2}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True + assert bool(re.match(".*NDDSCORE_BUILD_([0-9]\\.){2,3}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True + assert bool(re.match(".*NDDSC_BUILD_([0-9]\\.){2,3}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True + assert bool(re.match(".*RTICONNECTOR_BUILD_([0-9]\\.){2,3}[0-9]_[0-9]{8}T[0-9]{6}Z", version_string, re.DOTALL)) == True def test_setting_max_objects_per_thread(self): """ From 995ca456d7e80e3b25535578d0c987ca1477c89b Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Mon, 15 Nov 2021 00:52:17 -0800 Subject: [PATCH 06/35] #fix HMAINT-202 -- update libraries for 1.2.0, set version for test.py (#100) --- docs/conf.py | 4 ++-- rticonnextdds-connector | 2 +- setup.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 0b3ab8b..4599746 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,8 +22,8 @@ author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags -version = '1.1.0' -release = '1.1.0' +version = '1.2.0.rc1' +release = '1.2.0.rc1' master_doc = 'index' diff --git a/rticonnextdds-connector b/rticonnextdds-connector index ee14359..ea5a5bb 160000 --- a/rticonnextdds-connector +++ b/rticonnextdds-connector @@ -1 +1 @@ -Subproject commit ee1435930d934c2f2da0da414e123044f52cba14 +Subproject commit ea5a5bbd8095fa702caee8b95c381f2ba42e422f diff --git a/setup.py b/setup.py index 03fb1c2..d0adc3f 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.1.0', + version='1.2.0.rc1', description='RTI Connector for Python', long_description=long_description, From 5c72d0d8572327ccf518a531aedb767e71eff844 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Thu, 18 Nov 2021 10:57:01 -0800 Subject: [PATCH 07/35] HMAINT-202 -- correct rc1 version string (#103) --- docs/conf.py | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 4599746..02d15fe 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,8 +22,8 @@ author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags -version = '1.2.0.rc1' -release = '1.2.0.rc1' +version = '1.2.0-rc1' +release = '1.2.0-rc1' master_doc = 'index' diff --git a/setup.py b/setup.py index d0adc3f..404e4d5 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0.rc1', + version='1.2.0-rc1', description='RTI Connector for Python', long_description=long_description, From f59b0a474312f6be02b80afc4ed2bd8bcfce1f71 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Fri, 19 Nov 2021 10:47:35 -0800 Subject: [PATCH 08/35] HMAINT-202 -- set version to rc2 for testing (#107) --- docs/conf.py | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 02d15fe..9fb9cd8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,8 +22,8 @@ author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags -version = '1.2.0-rc1' -release = '1.2.0-rc1' +version = '1.2.0-rc2' +release = '1.2.0-rc2' master_doc = 'index' diff --git a/setup.py b/setup.py index 404e4d5..a6056d7 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0-rc1', + version='1.2.0-rc2', description='RTI Connector for Python', long_description=long_description, From 09ca8ab5716e709e59d876d13dea6b1e90f19c0e Mon Sep 17 00:00:00 2001 From: rkorte Date: Thu, 18 Nov 2021 17:45:29 -0800 Subject: [PATCH 09/35] CON-252: updating links from current to 6.1.1, py --- docs/configuration.rst | 20 +++++++------- docs/connector.rst | 4 +-- docs/data.rst | 6 ++-- docs/features.rst | 62 +++++++++++++++++++++--------------------- docs/index.rst | 2 +- docs/input.rst | 2 +- 6 files changed, 48 insertions(+), 48 deletions(-) diff --git a/docs/configuration.rst b/docs/configuration.rst index 5d59f3f..3fec80d 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -13,7 +13,7 @@ that includes the definition of domains, *DomainParticipants*, *Topics*, *Connector* uses the XML schema defined by RTI's `XML-Based Application Creation feature -`__. +`__. .. hint:: The *Connext DDS* C, C++, Java and .NET APIs can also load the same XML files @@ -77,11 +77,11 @@ and ``shapesize``: Types are associated with *Topics*, as explained in the next section, :ref:`Domain Library`. .. hint:: - You can define your types in IDL and convert them to XML with `rtiddsgen `__. + You can define your types in IDL and convert them to XML with `rtiddsgen `__. For example: ``rtiddsgen -convertToXml MyTypes.idl`` For more information about defining types, see -`Creating User Data Types with XML `__ +`Creating User Data Types with XML `__ in the *RTI Connext DDS Core Libraries User's Manual*. For more information about accessing data samples, see :ref:`Accessing the data`. @@ -91,10 +91,10 @@ Domain library A domain library is a collection of domains. A domain specifies: - * A `domain id `__. + * A `domain id `__. * A set of registered types (from a subset of the types in ````). A registered type can have a local name. - * A set of `topics `__, + * A set of `topics `__, which are used by *DataReaders* and *DataWriters*. .. code-block:: xml @@ -108,7 +108,7 @@ A domain library is a collection of domains. A domain specifies: For more information about the format of a domain library, see -`XML-Based Application Creation: Domain Library `__. +`XML-Based Application Creation: Domain Library `__. Participant library ~~~~~~~~~~~~~~~~~~~ @@ -142,12 +142,12 @@ an :class:`Input`, as described in :ref:`Reading data (Input)`. For more information about the format of a participant library, see `XML-Based Application Creation: Participant Library -`__. +`__. Quality of service ~~~~~~~~~~~~~~~~~~ -All DDS entities have an associated `quality of service (QoS) `__. +All DDS entities have an associated `quality of service (QoS) `__. There are several ways to configure it. You can define a QoS profile and make it the default. The following example @@ -234,12 +234,12 @@ profile is equivalent to *MyQosProfile* above: You can read more in the *RTI Connext DDS Core Libraries User's Manual*, `Configuring QoS with XML -`__. +`__. Logging ^^^^^^^ -Logging can be configured as explained in `Configuring Logging via XML `__. +Logging can be configured as explained in `Configuring Logging via XML `__. For example, to increase the logging verbosity from the default (ERROR) to WARNING, define a ``qos_profile`` with the attribute diff --git a/docs/connector.rst b/docs/connector.rst index d2a31a5..1369e60 100644 --- a/docs/connector.rst +++ b/docs/connector.rst @@ -22,7 +22,7 @@ To create a new :class:`Connector`, pass an XML file and a configuration name: connector = rti.Connector("MyParticipantLibrary::MyParticipant", "ShapeExample.xml"); The XML file defines your types, QoS profiles, and DDS Entities. *Connector* -uses the XML schema of `RTI's XML-Based Application Creation `__. +uses the XML schema of `RTI's XML-Based Application Creation `__. The previous code loads the ```` named *MyParticipant* in the ```` named *MyParticipantLibrary*, which is defined in the @@ -40,7 +40,7 @@ When you create a :class:`Connector`, the DDS *DomainParticipant* that you selec and all its contained entities (*Topics*, *Subscribers*, *DataReaders*, *Publishers*, *DataWriters*) are created. -For more information about the DDS entities, see `Core Concepts `__ +For more information about the DDS entities, see `Core Concepts `__ in the *RTI Connext DDS Core Libraries User's Manual*. .. note:: diff --git a/docs/data.rst b/docs/data.rst index 82e9d56..5434efb 100644 --- a/docs/data.rst +++ b/docs/data.rst @@ -428,9 +428,9 @@ To clear a member, set it to ``None`` explicitly:: output.instance.set_dictionary({'my_double': 3.3, 'my_long': 4, 'my_optional_long': None}) -For more information about optional members in DDS, see the *Getting Started Guide -Addendum for Extensible Types*, -`Optional Members `__. +For more information about optional members in DDS, see +`Optional Members `__ +in the *Extensible Types Guide*. Accessing unions ^^^^^^^^^^^^^^^^ diff --git a/docs/features.rst b/docs/features.rst index 8bfa133..0cfb311 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -20,7 +20,7 @@ General features * - Feature - Level of support - Notes - * - `Quality of Service (QoS) `__ + * - `Quality of Service (QoS) `__ - Partial - Most QoS policies are supported because they can be configured in XML, but those that are designed to be mutable can't be changed in *Connector*. QoS policies that require @@ -50,19 +50,19 @@ General features order to enable an `Input` only when :meth:`Connector.get_input` is called. * Property - Properties can be set in XML, but they can't be looked up in *Connector* - `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. - * - `Entity Statuses `__ + `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. + * - `Entity Statuses `__ - Partial - Only :meth:`Input.wait` (data available), :meth:`Input.wait_for_publications`, and :meth:`Output.wait_for_subscriptions` are supported. - * - `Managing Data Instances `__ + * - `Managing Data Instances `__ - Partial - On an ``Output``, it is possible to dispose or unregister an instance (see :meth:`Output.write`). Instances are automatically registered when first written. On an ``Input`` the instance state can be obtained, alongside the key fields of a disposed instance (see :ref:`Accessing key values of disposed samples`). Instance handles are not exposed. - * - `Application Acknowledgment `__ + * - `Application Acknowledgment `__ - Partial - *DDS_APPLICATION_AUTO_ACKNOWLEDGMENT_MODE* is supported. If enabled, when a call to :meth:`Input.take` or :meth:`Input.read` is followed by another call, the second one automatically acknowledges the samples read in the first one. *DDS_APPLICATION_EXPLICIT_ACKNOWLEDGMENT_MODE* is not supported. - * - `Request-Reply `__ + * - `Request-Reply `__ - Partial - The correlation between two samples can be established at the application level: @@ -70,21 +70,21 @@ General features * The *Replier* application receives the *request* sample, obtains the ``identity`` (A), from ":attr:`SampleIterator.info` and writes a new sample with ``related_sample_identity=A`` (the *reply* sample) * The *Requester* application receives the *reply* sample, and correlates the ``related_sample_identity`` from :attr:`SampleIterator.info` with the ``identity`` it used in the first step. - * - `Topic Queries `__ + * - `Topic Queries `__ - Partial - ``Input`` doesn't have the API to create a *TopicQuery*, but in the configuration file a *data_writer* can enable support for *TopicQuery* so other *Connext DDS Subscribers* can query the *Connector Publisher*. - * - `Zero Copy Transfer Over Shared Memory `__ + * - `Zero Copy Transfer Over Shared Memory `__ - Not supported - Only available in C and C++. - * - `Built-in Topics `__ + * - `Built-in Topics `__ - Not supported - API not available. - * - `Transport Plugins `__ + * - `Transport Plugins `__ - Partial - The built-in transports can be configured in XML. * - Add-on Libraries - (such as `Monitoring `__, - `Security Plugins `__ ) + (such as `Monitoring `__, + `Security Plugins `__ ) - Supported - See :ref:`Loading Connext DDS Add-On Libraries`. @@ -98,19 +98,19 @@ Features related to sending data * - Feature - Level of support - Notes - * - `Waiting for Acknowledgments `__ + * - `Waiting for Acknowledgments `__ - Supported - See :meth:`Output.wait`. - * - `Coherent Sets `__ + * - `Coherent Sets `__ - Not supported - API not available. - * - `Flow Controllers `__ + * - `Flow Controllers `__ - Partial - Most functionality is available via XML QoS configuration. - * - `Asserting Liveliness Manually `__ + * - `Asserting Liveliness Manually `__ - Not supported - API not available. - * - `Collaborative DataWriters `__ + * - `Collaborative DataWriters `__ - Limited - The virtual GUID can be set per writer in XML, but not per sample. @@ -124,19 +124,19 @@ Features related to receiving data * - Feature - Level of support - Notes - * - `Content-Filtered Topics `__ + * - `Content-Filtered Topics `__ - Partial - - `Configurable in XML `__ but it can't be modified after creation - * - `Sample Info `__ + - `Configurable in XML `__ but it can't be modified after creation + * - `Sample Info `__ - Partial - See :attr:`SampleIterator.info` - * - `Query Conditions `__ + * - `Query Conditions `__ - Not supported - API not available - * - `Group-Ordered Access `__ + * - `Group-Ordered Access `__ - Not supported - API not available - * - `Waiting for Historical Data `__ + * - `Waiting for Historical Data `__ - Not supported - API not available @@ -150,17 +150,17 @@ Features related to the type system * - Feature - Level of support - Notes - * - `DDS type system `__ + * - `DDS type system `__ - Supported - *Connector* can use any DDS type. Types are defined in XML. - * - `Type extensibility `__ + * - `Type extensibility `__ - Supported - *Connector* supports type extensibility, including mutable types in the XML definition of types. It also supports type-consistency enforcement and sample-assignability enforcement; these checks are performed by the *RTI Connext DDS* Core. - * - `Optional members `__ + * - `Optional members `__ - Supported - See :ref:`Accessing optional members`. - * - `Default values `__ + * - `Default values `__ - Supported - For example, to declare a default value for a member:: @@ -174,7 +174,7 @@ Features related to the type system ``Input`` from a *Publisher* whose type is compatible, but doesn't have the field *my_int*, the value you receive will be 20. - * - `Unbounded data `__ + * - `Unbounded data `__ - Supported - To declare an unbounded sequence or string, set its max length to *-1*:: @@ -221,7 +221,7 @@ Features related to the type system - * - `FlatData Language Binding `__ + * - `FlatData Language Binding `__ - Not supported - However, an ``Input`` can receive data published by other *Connext DDS* applications that use FlatData. @@ -230,8 +230,8 @@ Loading Connext DDS Add-On Libraries *Connector* supports features that require the loading of additional *Connext DDS* libraries, such as -`Monitoring `__ -and `Security Plugins `__. +`Monitoring `__ +and `Security Plugins `__. The Monitoring and Security plugins are configured in XML, as described in the previous links. diff --git a/docs/index.rst b/docs/index.rst index c4c4653..a307725 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -41,5 +41,5 @@ Table of Contents * :ref:`search` To learn more about *RTI Connext DDS*, see the -`RTI Connext DDS Getting Started Guide `__. +`RTI Connext DDS Getting Started Guide `__. More documentation is available in the `RTI Community Portal `__. \ No newline at end of file diff --git a/docs/input.rst b/docs/input.rst index 76ce46b..721369d 100644 --- a/docs/input.rst +++ b/docs/input.rst @@ -131,7 +131,7 @@ See :meth:`SampleIterator.info` for the list of available meta-data fields. *Connext DDS* can produce samples with invalid data, which contain meta-data only. For more information about this, see `Valid Data Flag -`__ +`__ in the *RTI Connext DDS Core Libraries User's Manual*. These samples indicate a change in the instance state. Samples with invalid data still provide the following information: From f4cf92052f3b58cf16c3a9880e362761a41c87be Mon Sep 17 00:00:00 2001 From: rkorte Date: Thu, 18 Nov 2021 20:05:34 -0800 Subject: [PATCH 10/35] CORE-11993: canonical url added for python connector --- docs/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/conf.py b/docs/conf.py index 9fb9cd8..c5bc7fe 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -69,6 +69,7 @@ def setup(app): # html_theme_options = { "collapse_navigation" : False + "canonical_url" : "https://community.rti.com/static/documentation/connector/current/api/python/" } # The name of an image file (relative to this directory) to place at the top From aece1119067f27907558e15d676c463743c52993 Mon Sep 17 00:00:00 2001 From: rkorte Date: Thu, 18 Nov 2021 14:37:52 -0800 Subject: [PATCH 11/35] CON-251: connector py release notes for 6.1.1/1.2.0 --- docs/copyright_license.rst | 2 +- docs/data.rst | 3 ++ docs/release_notes.rst | 71 +++++++++++++++++++++++++++++--------- 3 files changed, 59 insertions(+), 17 deletions(-) diff --git a/docs/copyright_license.rst b/docs/copyright_license.rst index 97a629c..243587f 100644 --- a/docs/copyright_license.rst +++ b/docs/copyright_license.rst @@ -9,7 +9,7 @@ Copyrights and License © 2021 Real-Time Innovations, Inc. |br| All rights reserved. |br| Printed in U.S.A. First printing. |br| -April 2021. |br| +December 2021. |br| .. rubric:: License diff --git a/docs/data.rst b/docs/data.rst index 82e9d56..051fe80 100644 --- a/docs/data.rst +++ b/docs/data.rst @@ -196,6 +196,9 @@ with numeric fields, returning the number as a string. For example: contains a value that can be interpreted as a number, ``sample["my_string"]`` returns a number, not a string. + +.. _section-access-64-bit-integers: + Accessing 64-bit integers ^^^^^^^^^^^^^^^^^^^^^^^^^ Internally, *Connector* relies on a framework that only contains a single number diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 39ca381..1c3836a 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -6,7 +6,7 @@ Release Notes ============= Supported Platforms -~~~~~~~~~~~~~~~~~~~ +------------------- *RTI Connector* works with Python® 2.x and 3.x. It uses a native C library that runs on most Windows®, Linux® and macOS® platforms. @@ -37,25 +37,64 @@ repository `__. What's New in 1.2.0 -~~~~~~~~~~~~~~~~~~~ +------------------- -*RTI Connector* 1.2.0 is built on `RTI Connext DDS 6.1.1 `__. +*Connector* 1.2.0 is built on `RTI Connext DDS 6.1.1 `__. New Platforms ^^^^^^^^^^^^^ RTI has validated that *Connector* can be used on macOS 11 (Big Sur) systems. + +New API makes it easier to query what version of Connector is being used +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. CON-92 + +A new API has been added that provides the caller with the version of *Connector* +and the version of the native libraries being used. + + +What's Fixed in 1.2.0 +--------------------- + +Deleting same Connector object twice may have resulted in segmentation fault +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +A segmentation fault may have occurred when the same *Connector* object was +deleted twice. This issue has been resolved. + +[RTI Issue ID CON-209] + + +Support added for handling large 64-bit integers +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Support has been improved for both getting and setting large (greater than 2^53) +64-bit values. See :ref:`section-access-64-bit-integers` for more information. + +[RTI Issue ID CON-190] + + Previous Releases -~~~~~~~~~~~~~~~~~ +----------------- + +Version 1.1.1 +^^^^^^^^^^^^^ +*Connector* 1.1.1 is built on *RTI Connext DDS* 6.1.0.3, which fixes several +bugs in the Core Libraries. If you want more details on the bugs fixed in 6.1.0.3, +contact support@rti.com. These bugs are also fixed in +`RTI Connext DDS 6.1.1 `__, +upon which *RTI Connector* 1.2.0 is built. + +Version 1.1.0 +^^^^^^^^^^^^^ What's New in 1.1.0 -^^^^^^^^^^^^^^^^^^^ +""""""""""""""""""" -*RTI Connector* 1.1.0 is built on `RTI Connext DDS 6.1.0 `__. +*Connector* 1.1.0 is built on `RTI Connext DDS 6.1.0 `__. Support added for ARMv8 architectures -""""""""""""""""""""""""""""""""""""" ++++++++++++++++++++++++++++++++++++++ .. CON-174 Connector for Python now runs on ARMv8 architectures. Native libraries @@ -63,7 +102,7 @@ built for ARMv8 Ubuntu 16.04 are now shipped alongside Connector. These librarie have been tested on ARMv8 Ubuntu 16.04 and ARMv8 Ubuntu 18.04. Sample state, instance state, and view state can now be obtained in Connector -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. CON-177 The SampleInfo class in *Connector* has been extended to provide access to the @@ -73,7 +112,7 @@ the keys to the dictionary, in *Connector* for JavaScript they are the keys to t JSON Object). Support for accessing the key values of disposed instances -"""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. CON-188 @@ -87,7 +126,7 @@ sample as an object). When the instance state is NOT_ALIVE_DISPOSED, only the key values in the sample should be accessed. Support for Security, Monitoring and other Connext DDS add-on libraries -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. CON-221 @@ -96,10 +135,10 @@ that Connext DDS features such as Monitoring and Security Plugins are now suppor Refer to :ref:`Loading Connext DDS Add-On Libraries` for more information. What's Fixed in 1.1.0 -^^^^^^^^^^^^^^^^^^^^^ +"""""""""""""""""""""" Support for loading multiple configuration files -"""""""""""""""""""""""""""""""""""""""""""""""" +++++++++++++++++++++++++++++++++++++++++++++++++ A *Connector* object now supports loading multiple files. This allows separating the definition of types, QoS profiles, and *DomainParticipants* into different @@ -112,7 +151,7 @@ files: [RTI Issue ID CON-209] Some larger integer values may have been corrupted by Connector's internal JSON parser -"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ The internal JSON parser used in *Connector* failed to identify integer numbers from double-precision floating-point numbers for certain values. @@ -123,7 +162,7 @@ become corrupted. This problem has been resolved. [RTI Issue ID CON-170] Creating two instances of Connector resulted in a license error -""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Under some circumstances, it was not possible to create two *Connector* objects. The creation of the second *Connector* object failed due to a license error. @@ -133,7 +172,7 @@ This issue has been fixed. [RTI Issue ID CON-163] Creating a Connector instance with a participant_qos tag in the XML may have resulted in a license error -"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ In some cases, if the XML configuration file of *Connector* contained a `` tag within the definition of the *DomainParticipant*, @@ -143,7 +182,7 @@ This problem has been resolved. [RTI Issue ID CON-214] Version 1.0.0 -~~~~~~~~~~~~~ +^^^^^^^^^^^^^ 1.0.0 is the first official release of *RTI Connector for Python* as well as `RTI Connector for JavaScript `__. From 84482cd8ee9868edfd00b2a94b83b79fa4559709 Mon Sep 17 00:00:00 2001 From: samuelraeburn Date: Fri, 19 Nov 2021 09:52:54 +0100 Subject: [PATCH 12/35] CON-251: 1.2.0 doc changes - Move warning from 64-bit number section to release notes - Add link to get_version API --- docs/release_notes.rst | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 1c3836a..1b02921 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -51,8 +51,8 @@ New API makes it easier to query what version of Connector is being used ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. CON-92 -A new API has been added that provides the caller with the version of *Connector* -and the version of the native libraries being used. +A new API, :meth:`rticonnextdds_connector.Connector.get_version`, has been added that provides the caller +with the version of *Connector* and the version of the native libraries being used. What's Fixed in 1.2.0 @@ -71,6 +71,10 @@ Support added for handling large 64-bit integers Support has been improved for both getting and setting large (greater than 2^53) 64-bit values. See :ref:`section-access-64-bit-integers` for more information. +Note that on Windows systems, the string representations of Not a Number and infinity +(e.g., ``'NaN'``, ``'Infinity'``) are not valid values for a Number. They are valid +inputs on other systems. + [RTI Issue ID CON-190] From c009f76ee2c025099321e1cfcf5ea1eeca732b21 Mon Sep 17 00:00:00 2001 From: rkorte Date: Mon, 22 Nov 2021 16:06:48 -0800 Subject: [PATCH 13/35] CON-251: added missing release note and fixed canonical formatting error --- docs/conf.py | 2 +- docs/release_notes.rst | 47 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index c5bc7fe..bb7031e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -68,7 +68,7 @@ def setup(app): # documentation. # html_theme_options = { - "collapse_navigation" : False + "collapse_navigation" : False, "canonical_url" : "https://community.rti.com/static/documentation/connector/current/api/python/" } diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 39ca381..72512cc 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -46,6 +46,53 @@ New Platforms RTI has validated that *Connector* can be used on macOS 11 (Big Sur) systems. + +New API makes it easier to query what version of Connector is being used +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. CON-92 + +A new API, :meth:`rticonnextdds_connector.Connector.get_version`, has been added that provides the caller +with the version of *Connector* and the version of the native libraries being used. + + +What's Fixed in 1.2.0 +--------------------- + +Error logged when accessing string longer than 128 bytes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Previously, on an input, when accessing a string longer than 128 bytes, the +following error was printed: + +.. code-block:: + + Output buffer too small for member (name = "frame", id = 1). Provided size (128), requires size (x). + +This error message was innocuous; there was actually no issue with retrieving +the string. The message is no longer printed. + +[RTI Issue ID CON-157] + + +Deleting same Connector object twice may have resulted in segmentation fault +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +A segmentation fault may have occurred when the same *Connector* object was +deleted twice. This issue has been resolved. + +[RTI Issue ID CON-209] + + +Support added for handling large 64-bit integers +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Support has been improved for both getting and setting large (greater than 2^53) +64-bit values. See :ref:`section-access-64-bit-integers` for more information. + +Note that on Windows systems, the string representations of Not a Number and infinity +(e.g., ``'NaN'``, ``'Infinity'``) are not valid values for a Number. They are valid +inputs on other systems. + +[RTI Issue ID CON-190] + + Previous Releases ~~~~~~~~~~~~~~~~~ From 2b1d425b50369102d68623dfff500ab5aa93fb40 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 29 Nov 2021 16:55:58 +0100 Subject: [PATCH 14/35] CON-253: Document bug in numpy on aarch64 (#113) (#114) (cherry picked from commit 77399ad830d7b5d4286d366107a30036cb5554aa) --- examples/python/images/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/python/images/README.md b/examples/python/images/README.md index ea4a9ca..bf8c103 100644 --- a/examples/python/images/README.md +++ b/examples/python/images/README.md @@ -8,7 +8,7 @@ the most recently received image and display it. This example shows how to manipulate a more complex type. ## Running the example -This examples requires *Python 3.x* and the packages **matplotlib** and **numpy**: +This examples requires *Python 3.x* and the packages **matplotlib** and **numpy**[^1]: $ pip install matplotlib numpy @@ -21,3 +21,6 @@ To run the example, in different shells, run any number of instances of the writ installation doesn't have one, you can run `image_reader_file.py` instead, which will save the last image into a file called *image.png*. +[^1]: On ARMv8 architectures, version 1.19.5 of numpy is not supported, due to +[numpy issue 18131](https://github.com/numpy/numpy/issues/18131). +Version 1.19.4 of numpy has been tested to work on ARMv8 architectures. From 18e203e00995f9da0e11a2386768759dc81b6c91 Mon Sep 17 00:00:00 2001 From: rkorte Date: Mon, 22 Nov 2021 13:45:48 -0800 Subject: [PATCH 15/35] CON-234: fixing link to Python API reference --- docs/intro.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro.rst b/docs/intro.rst index 4c125d7..6c38150 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -11,7 +11,7 @@ leading ultra-high performance, distributed networking databus. *RTI Connector* is a family of simplified APIs for publishing and subscribing to the *Connext DDS* Databus in programming languages such as Python and JavaScript. -(RTI also offers a more comprehensive `Python API `__, +(RTI also offers a more comprehensive `Python API `__, which is experimental.) .. note:: From 49230ca8c875e531d84fd347716a7f8788ff9df1 Mon Sep 17 00:00:00 2001 From: rkorte Date: Wed, 24 Nov 2021 21:54:51 -0800 Subject: [PATCH 16/35] CON-234: changed python api link to go to github --- docs/intro.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/intro.rst b/docs/intro.rst index 6c38150..cc5f19c 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -11,7 +11,7 @@ leading ultra-high performance, distributed networking databus. *RTI Connector* is a family of simplified APIs for publishing and subscribing to the *Connext DDS* Databus in programming languages such as Python and JavaScript. -(RTI also offers a more comprehensive `Python API `__, +(RTI also offers a more comprehensive `Python API `__, which is experimental.) .. note:: From 53fb7966a69a79aafed6991b1918b544f75bf3fa Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Wed, 15 Dec 2021 11:04:11 -0800 Subject: [PATCH 17/35] HMAINT-202 -- set version string to 1.2.0 (#118) --- docs/conf.py | 4 ++-- setup.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index bb7031e..c800946 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,8 +22,8 @@ author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags -version = '1.2.0-rc2' -release = '1.2.0-rc2' +version = '1.2.0' +release = '1.2.0' master_doc = 'index' diff --git a/setup.py b/setup.py index a6056d7..2183759 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0-rc2', + version='1.2.0', description='RTI Connector for Python', long_description=long_description, From b051d1348ab6dc84789affc79fd7b843296068a4 Mon Sep 17 00:00:00 2001 From: rkorte Date: Tue, 30 Nov 2021 11:09:49 -0800 Subject: [PATCH 18/35] CON-251: applying PAM updates to supported platforms --- docs/release_notes.rst | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 1edd4b9..5e4dbd9 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -14,19 +14,17 @@ runs on most Windows®, Linux® and macOS® platforms. *Connector* has been tested with Python 2.6+ and 3.6.8+, and on the following systems: **Linux** - * CentOS™ 6.0, 6.2-6.4, 7.0 (x64) - * Red Hat® Enterprise Linux 6.0-6.5, 6.7, 6.8, 7, 7.3, 7.5, 7.6, 8 (x64) + * CentOS™ 7.0 (x64) + * Red Hat® Enterprise Linux 7, 7.3, 7.5, 7.6, 8 (x64) * SUSE® Linux Enterprise Server 12 SP2 (x64) - * Ubuntu® 14.04, 16.04, 18.04, 20.04 LTS (x64) - * Ubuntu 16.04, 18.04 LTS (64-bit Arm® v8) + * Ubuntu® 14.04, 18.04, 20.04 LTS (x64) + * Ubuntu 18.04 LTS (64-bit Arm® v8) * Ubuntu 18.04 LTS (32-bit Arm v7) - * Wind River® Linux 8 (Arm v7) (Custom-supported platform) **macOS** * macOS 10.13-10.15, 11 (x64) **Windows** - * Windows 8 (x64) * Windows 10 (x64) * Windows Server 2012 R2 (x64) * Windows Server 2016 (x64) @@ -44,7 +42,8 @@ What's New in 1.2.0 New Platforms ^^^^^^^^^^^^^ -RTI has validated that *Connector* can be used on macOS 11 (Big Sur) systems. +RTI has validated that *Connector* can be used on macOS 11 (Big Sur) systems +on x64 CPUs. New API makes it easier to query what version of Connector is being used From ffc11e00c5df08c0bdaab0a06b2a533bdb0882e7 Mon Sep 17 00:00:00 2001 From: adelleolson Date: Wed, 15 Dec 2021 13:44:30 -0500 Subject: [PATCH 19/35] CON-251. Corrected the Jira # mentioned for CON-200 in what's fixed. Updated Supported Platforms to match JS release notes. --- docs/release_notes.rst | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 5e4dbd9..1651237 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -11,24 +11,25 @@ Supported Platforms *RTI Connector* works with Python® 2.x and 3.x. It uses a native C library that runs on most Windows®, Linux® and macOS® platforms. -*Connector* has been tested with Python 2.6+ and 3.6.8+, and on the following systems: - +*Connector* has been tested with Python 2.6+ and 3.6.8+, on the following systems: + **Linux** * CentOS™ 7.0 (x64) - * Red Hat® Enterprise Linux 7, 7.3, 7.5, 7.6, 8 (x64) - * SUSE® Linux Enterprise Server 12 SP2 (x64) - * Ubuntu® 14.04, 18.04, 20.04 LTS (x64) - * Ubuntu 18.04 LTS (64-bit Arm® v8) - * Ubuntu 18.04 LTS (32-bit Arm v7) - -**macOS** - * macOS 10.13-10.15, 11 (x64) - -**Windows** + * Red Hat® Enterprise Linux 7, 7.3, 7.5, 7.6, 8 (x64) + * SUSE® Linux Enterprise Server 12 SP2 (x64) + * Ubuntu® 18.04 (x64, Arm v7, Arm v8) + * Ubuntu 20.04 LTS (x64) + +**macOS** + * macOS 10.13-10.15 (x64) + * macOS 11 (x64 and Arm v8 tested via x64 libraries) + +**Windows** * Windows 10 (x64) * Windows Server 2012 R2 (x64) * Windows Server 2016 (x64) + *Connector* is supported in other languages in addition to Python, see the `main Connector repository `__. @@ -42,8 +43,8 @@ What's New in 1.2.0 New Platforms ^^^^^^^^^^^^^ -RTI has validated that *Connector* can be used on macOS 11 (Big Sur) systems -on x64 CPUs. +*Connector* has been validated on macOS 11 (Big Sur) systems on x64 and Arm v8 +CPUs (via x64 libraries). New API makes it easier to query what version of Connector is being used @@ -77,7 +78,7 @@ Deleting same Connector object twice may have resulted in segmentation fault A segmentation fault may have occurred when the same *Connector* object was deleted twice. This issue has been resolved. -[RTI Issue ID CON-209] +[RTI Issue ID CON-200] Support added for handling large 64-bit integers From 9bcde619cbb7cdf9312a0861e67d2a7e8337f0f6 Mon Sep 17 00:00:00 2001 From: adelleolson Date: Wed, 15 Dec 2021 13:51:29 -0500 Subject: [PATCH 20/35] CON-251. Corrected wording of what's tested. --- docs/release_notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 1651237..e841e24 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -11,7 +11,7 @@ Supported Platforms *RTI Connector* works with Python® 2.x and 3.x. It uses a native C library that runs on most Windows®, Linux® and macOS® platforms. -*Connector* has been tested with Python 2.6+ and 3.6.8+, on the following systems: +*Connector* has been tested with Python 2.6+ and 3.6.8+, and on the following systems: **Linux** * CentOS™ 7.0 (x64) From efd8ae9b7f1fa01d319b5710dba9cb62ad2c1fad Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Tue, 4 Jan 2022 18:27:41 -0800 Subject: [PATCH 21/35] #fix HMAINT-202 -- new connector libraries for python, base on DDS 6.1.1 (20211203) (#121) Co-authored-by: Bob Garrow --- rticonnextdds-connector | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rticonnextdds-connector b/rticonnextdds-connector index ea5a5bb..d4ca4fc 160000 --- a/rticonnextdds-connector +++ b/rticonnextdds-connector @@ -1 +1 @@ -Subproject commit ea5a5bbd8095fa702caee8b95c381f2ba42e422f +Subproject commit d4ca4fc6e3f6a873164035b8d7a38ce48a1d5e76 diff --git a/setup.py b/setup.py index 2183759..0f43a61 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0', + version='1.2.0-rc3', description='RTI Connector for Python', long_description=long_description, From 0056cb4a7e1ef67da62c24eb4c0bf8b7cceb83d5 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Wed, 5 Jan 2022 08:29:39 -0800 Subject: [PATCH 22/35] #fix HMAINT-202 -- corrected library git references for py, base on DDS 6.1.1 (20211203) (#122) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 0f43a61..d252acc 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0-rc3', + version='1.2.0-rc4', description='RTI Connector for Python', long_description=long_description, From 52a1196b47bb7910e4d64446e0ebd9228904dd12 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Wed, 5 Jan 2022 09:18:08 -0800 Subject: [PATCH 23/35] #fix HMAINT-202 -- clean out old libraries for py. (#123) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d252acc..a79a7d5 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0-rc4', + version='1.2.0-rc5', description='RTI Connector for Python', long_description=long_description, From d1b5f97a8ea2f4d87428e3470cf87fbc9602180c Mon Sep 17 00:00:00 2001 From: rkorte Date: Tue, 1 Feb 2022 10:38:00 -0800 Subject: [PATCH 24/35] CON-257: adding Lua vulnerability assessment to Connector 1.2.0 doc --- docs/release_notes.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index e841e24..2e4a8b6 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -93,6 +93,12 @@ inputs on other systems. [RTI Issue ID CON-190] +Assessments related to vulnerabilities +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +RTI has assessed the current version of Lua used by *Connector*, version 5.2, +and found that it is not currently affected by publicly disclosed vulnerabilities. + + Previous Releases ----------------- From f7d912b938897b0af02861e7fcf4ade008f3ab09 Mon Sep 17 00:00:00 2001 From: rkorte Date: Sat, 5 Feb 2022 15:07:30 -0800 Subject: [PATCH 25/35] CON-257: updating vulnerability assessment section for python --- docs/release_notes.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 2e4a8b6..64e7188 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -93,10 +93,11 @@ inputs on other systems. [RTI Issue ID CON-190] -Assessments related to vulnerabilities -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -RTI has assessed the current version of Lua used by *Connector*, version 5.2, -and found that it is not currently affected by publicly disclosed vulnerabilities. +Vulnerability Assessments +------------------------- +Internally, *Connector* relies on Lua. RTI has assessed the current version of +Lua used by *Connector*, version 5.2, and found that it is not currently +affected by publicly disclosed vulnerabilities. Previous Releases From 8188a5a562684ea301136902a9dd496308d32f2e Mon Sep 17 00:00:00 2001 From: rkorte Date: Thu, 10 Feb 2022 13:13:48 -0800 Subject: [PATCH 26/35] CON-257: updated release notes and copyright --- docs/conf.py | 2 +- docs/copyright_license.rst | 8 +++++--- docs/release_notes.rst | 4 ++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index c800946..5d5a09e 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -18,7 +18,7 @@ # -- Project information ----------------------------------------------------- project = 'RTI Connector for Python' -copyright = '2021, Real-Time Innovations, Inc' +copyright = '2022, Real-Time Innovations, Inc' author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags diff --git a/docs/copyright_license.rst b/docs/copyright_license.rst index 243587f..64be50c 100644 --- a/docs/copyright_license.rst +++ b/docs/copyright_license.rst @@ -6,10 +6,10 @@ Copyrights and License ********************** -© 2021 Real-Time Innovations, Inc. |br| +© 2022 Real-Time Innovations, Inc. |br| All rights reserved. |br| Printed in U.S.A. First printing. |br| -December 2021. |br| +February 2022. |br| .. rubric:: License @@ -56,7 +56,7 @@ Phone: (408) 990-7444 |br| Email: support@rti.com |br| Website: https://support.rti.com/ |br| -© 2021 RTI +© 2022 RTI .. rubric:: External Third-Party Software Used in Connector @@ -64,6 +64,8 @@ Website: https://support.rti.com/ |br| * The source code of this software is used to build the native libraries provided by *RTI Connector*. + * Version 5.2. + * License (https://www.lua.org/license.html): Copyright © 1994–2021 Lua.org, PUC-Rio. diff --git a/docs/release_notes.rst b/docs/release_notes.rst index 64e7188..b0345df 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -96,8 +96,8 @@ inputs on other systems. Vulnerability Assessments ------------------------- Internally, *Connector* relies on Lua. RTI has assessed the current version of -Lua used by *Connector*, version 5.2, and found that it is not currently -affected by publicly disclosed vulnerabilities. +Lua used by *Connector*, version 5.2, and found that *Connector* is not currently +affected by any of the publicly disclosed vulnerabilities in Lua 5.2. Previous Releases From da4af7297f1b7556921441ad9204ba66d02ffa75 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Fri, 11 Mar 2022 07:33:21 -0800 Subject: [PATCH 27/35] #fix HMAINT-202 -- new connector libraries for python, base on DDS 6.1.1 (20220309, bkprt) (#129) --- rticonnextdds-connector | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rticonnextdds-connector b/rticonnextdds-connector index d4ca4fc..81b374f 160000 --- a/rticonnextdds-connector +++ b/rticonnextdds-connector @@ -1 +1 @@ -Subproject commit d4ca4fc6e3f6a873164035b8d7a38ce48a1d5e76 +Subproject commit 81b374f2f2e86127d1e03be9e9ceadcd21d4ae69 diff --git a/setup.py b/setup.py index a79a7d5..051e5f5 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0-rc5', + version='1.2.0-rc6', description='RTI Connector for Python', long_description=long_description, From 1f0e14c9e055f8dba8c1c45090e089adaa5583e4 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Tue, 12 Apr 2022 11:26:04 -0700 Subject: [PATCH 28/35] #fix HMAINT-202 -- final version string 1.2.0 (#132) --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 051e5f5..2183759 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0-rc6', + version='1.2.0', description='RTI Connector for Python', long_description=long_description, From 32ff822e698898c75cc392cb43c4d2865d09a02f Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 26 Oct 2022 11:10:25 +0200 Subject: [PATCH 29/35] CON-276: Updated loading of redist + commit of submodule (#144) (#146) (cherry picked from commit a0e4f41786952c2297af850227e29d62ba6999de) --- rticonnextdds-connector | 2 +- rticonnextdds_connector/rticonnextdds_connector.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rticonnextdds-connector b/rticonnextdds-connector index 81b374f..b1f841d 160000 --- a/rticonnextdds-connector +++ b/rticonnextdds-connector @@ -1 +1 @@ -Subproject commit 81b374f2f2e86127d1e03be9e9ceadcd21d4ae69 +Subproject commit b1f841d38ff6e22040645f862bcf9ab9297b5a11 diff --git a/rticonnextdds_connector/rticonnextdds_connector.py b/rticonnextdds_connector/rticonnextdds_connector.py index 4316199..75463c6 100644 --- a/rticonnextdds_connector/rticonnextdds_connector.py +++ b/rticonnextdds_connector/rticonnextdds_connector.py @@ -139,7 +139,7 @@ def __init__(self): # pylint: disable=too-many-statements directory = "win-x64" libname = "rtiddsconnector" post = "dll" - additional_lib = "msvcr120" + additional_lib = "vcruntime140.dll" is_windows = True else: raise RuntimeError("This platform ({0}) is not supported".format(osname)) From 34d01dc8c5f1f18b439991af55ef2b7e84a061f2 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 26 Oct 2022 16:00:11 +0200 Subject: [PATCH 30/35] Feature/con 272 276 support (#148) * CON-276: Updated documentation for supported Windows (#147) * CON-276: Updated documentation for supported Windows * CON-276: Fix notes * CON-276: Updated PAM (cherry picked from commit 0cbb5e109f69d0727f63e0d73f27d64bff9daf85) * Merge pull request #140 from rticommunity/doc/PY-44-readme PY-44: adding deprecation notice to connector-py README files only (cherry picked from commit ddafab4202fe6360ad50a4b5920c175d934f396b) (cherry picked from commit 1be36f44042c309bcdc43ea9e79fef2a1973238d) * CON-276 CON-272: Cherry-picked changes to docs * CON-276: Fix release notes Co-authored-by: rkorte <36715349+rkorte@users.noreply.github.com> --- README.md | 6 ++++ README.rst | 8 ++++++ docs/index.rst | 9 ++++++ docs/intro.rst | 4 +-- docs/release_notes.rst | 64 +++++++++++++++++++++++++++--------------- 5 files changed, 65 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 63849ab..e0c78fc 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,12 @@ distributed networking databus. publish and subscribe to the *RTI Connext DDS databus* in Python and other languages. +**Note**: With the introduction of the RTI Connext Python API in *RTI Connext* +7.0.0, *Connector for Python* is deprecated and will be removed in a +future release, once the Connext Python API is fully supported. You are +encouraged to try the +[Connext Python API](https://community.rti.com/static/documentation/connext-dds/7.0.0/doc/api/connext_dds/api_python/index.html) (experimental in 7.0.0). + ## Documentation To get started and learn more about *RTI Connector for Python* see the diff --git a/README.rst b/README.rst index f6fe532..8ca162d 100644 --- a/README.rst +++ b/README.rst @@ -9,6 +9,14 @@ performance, distributed networking databus. publish and subscribe to the *RTI Connext DDS databus* in Python and other languages. +.. note:: + + With the introduction of the RTI Connext Python API in *RTI Connext* + 7.0.0, *Connector for Python* is deprecated and will be removed in a + future release, once the Connext Python API is fully supported. You are + encouraged to try the + `Connext Python API `__ (experimental in 7.0.0). + Documentation ------------- diff --git a/docs/index.rst b/docs/index.rst index a307725..3ad2e7f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -20,6 +20,15 @@ You can learn how to use *RTI Connector* by reading the following sections, whic include examples and detailed API reference. You can also find a specific type or function in the :ref:`genindex`. +.. note:: + + With the introduction of the RTI Connext Python API in *RTI Connext* + 7.0.0, *Connector for Python* is deprecated and will be removed in a + future release, once the Connext Python API is fully supported. You are + encouraged to try the + `Connext Python API `__ (experimental in 7.0.0). + + Table of Contents ================= diff --git a/docs/intro.rst b/docs/intro.rst index cc5f19c..9343a71 100644 --- a/docs/intro.rst +++ b/docs/intro.rst @@ -10,9 +10,7 @@ data distribution efficient and robust. At its core is the world's leading ultra-high performance, distributed networking databus. *RTI Connector* is a family of simplified APIs for publishing and subscribing -to the *Connext DDS* Databus in programming languages such as Python and JavaScript. -(RTI also offers a more comprehensive `Python API `__, -which is experimental.) +to the *Connext DDS* Databus in programming languages such as Python and JavaScript. .. note:: diff --git a/docs/release_notes.rst b/docs/release_notes.rst index b0345df..2e03a80 100644 --- a/docs/release_notes.rst +++ b/docs/release_notes.rst @@ -18,37 +18,66 @@ runs on most Windows®, Linux® and macOS® platforms. * Red Hat® Enterprise Linux 7, 7.3, 7.5, 7.6, 8 (x64) * SUSE® Linux Enterprise Server 12 SP2 (x64) * Ubuntu® 18.04 (x64, Arm v7, Arm v8) - * Ubuntu 20.04 LTS (x64) + * Ubuntu 20.04, 22.04 LTS (x64) **macOS** - * macOS 10.13-10.15 (x64) + * macOS 10.13-10.15, 12 (x64) * macOS 11 (x64 and Arm v8 tested via x64 libraries) **Windows** - * Windows 10 (x64) - * Windows Server 2012 R2 (x64) + * Windows 10, 11 (x64) * Windows Server 2016 (x64) - *Connector* is supported in other languages in addition to Python, see the `main Connector repository `__. +Version 1.2.2 +----------------- + +What's New in 1.2.2 +^^^^^^^^^^^^^^^^^^^ + +*Connector* 1.2.2 is built on `RTI Connext DDS 6.1.2 `__. + +Native Windows libraries updated to Visual Studio 2015 +"""""""""""""""""""""""""""""""""""""""""""""""""""""" +.. CON-276 + +Previously, the native libraries shipped with Connector were built using Visual +Studio 2013 (and accompanied by Microsoft's mscvr120 redistributable). These +libraries are now built using Visual Studio 2015. The redistributable that is +shipped has been updated accordingly. + + +Vulnerability Assessments +------------------------- +Internally, *Connector* relies on Lua. RTI has assessed the current version of +Lua used by *Connector*, version 5.2, and found that *Connector* is not currently +affected by any of the publicly disclosed vulnerabilities in Lua 5.2. + + +Previous Releases +----------------- + +Version 1.2.0 +^^^^^^^^^^^^^ + What's New in 1.2.0 -------------------- +""""""""""""""""""" *Connector* 1.2.0 is built on `RTI Connext DDS 6.1.1 `__. New Platforms -^^^^^^^^^^^^^ ++++++++++++++ *Connector* has been validated on macOS 11 (Big Sur) systems on x64 and Arm v8 CPUs (via x64 libraries). New API makes it easier to query what version of Connector is being used -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .. CON-92 A new API, :meth:`rticonnextdds_connector.Connector.get_version`, has been added that provides the caller @@ -56,10 +85,10 @@ with the version of *Connector* and the version of the native libraries being us What's Fixed in 1.2.0 ---------------------- +""""""""""""""""""""" Error logged when accessing string longer than 128 bytes -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Previously, on an input, when accessing a string longer than 128 bytes, the following error was printed: @@ -74,7 +103,7 @@ the string. The message is no longer printed. Deleting same Connector object twice may have resulted in segmentation fault -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ A segmentation fault may have occurred when the same *Connector* object was deleted twice. This issue has been resolved. @@ -82,7 +111,7 @@ deleted twice. This issue has been resolved. Support added for handling large 64-bit integers -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +++++++++++++++++++++++++++++++++++++++++++++++++ Support has been improved for both getting and setting large (greater than 2^53) 64-bit values. See :ref:`section-access-64-bit-integers` for more information. @@ -92,17 +121,6 @@ inputs on other systems. [RTI Issue ID CON-190] - -Vulnerability Assessments -------------------------- -Internally, *Connector* relies on Lua. RTI has assessed the current version of -Lua used by *Connector*, version 5.2, and found that *Connector* is not currently -affected by any of the publicly disclosed vulnerabilities in Lua 5.2. - - -Previous Releases ------------------ - Version 1.1.1 ^^^^^^^^^^^^^ *Connector* 1.1.1 is built on *RTI Connext DDS* 6.1.0.3, which fixes several From 1a0f8f19ec83ad709c2962237104222ccd8daf1a Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Fri, 28 Oct 2022 11:12:57 -0700 Subject: [PATCH 31/35] CON-280-support, change version number to 1.2.2 in support/connector/1.2.0 (#150) * #fix CON-280-support, change version number to 1.2.2 * #fix CON-280-support, add rc suffix to version string ... Co-authored-by: Bob Garrow --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2183759..929f655 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.0', + version='1.2.2-rc1', description='RTI Connector for Python', long_description=long_description, From 3fb71639dc3e97b19c0c613e705844f9462e594f Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Wed, 2 Nov 2022 13:07:32 -0700 Subject: [PATCH 32/35] CON-278 -- rc2 with libraries from 20221028 (#154) Co-authored-by: Bob Garrow --- docs/conf.py | 2 +- rticonnextdds-connector | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index 5d5a09e..b72e4f1 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -23,7 +23,7 @@ # The full version, including alpha/beta/rc tags version = '1.2.0' -release = '1.2.0' +release = '1.2.2' master_doc = 'index' diff --git a/rticonnextdds-connector b/rticonnextdds-connector index b1f841d..2373400 160000 --- a/rticonnextdds-connector +++ b/rticonnextdds-connector @@ -1 +1 @@ -Subproject commit b1f841d38ff6e22040645f862bcf9ab9297b5a11 +Subproject commit 23734009b24a09cf0ff2b82e642cea928e72b599 diff --git a/setup.py b/setup.py index 929f655..47a0523 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.2-rc1', + version='1.2.2-rc2', description='RTI Connector for Python', long_description=long_description, From e26d0eae8da66167c72c2abe27b0b85dbdc1088c Mon Sep 17 00:00:00 2001 From: rkorte Date: Fri, 18 Nov 2022 09:01:20 -0800 Subject: [PATCH 33/35] HMAINT-747: updating 1.2.0 version to 1.2.2 and 6.1.1 URLs to 6.1.2 --- docs/conf.py | 2 +- docs/configuration.rst | 20 +++++++------- docs/connector.rst | 4 +-- docs/data.rst | 2 +- docs/features.rst | 62 +++++++++++++++++++++--------------------- docs/index.rst | 2 +- docs/input.rst | 2 +- 7 files changed, 47 insertions(+), 47 deletions(-) diff --git a/docs/conf.py b/docs/conf.py index b72e4f1..1df22af 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,7 @@ author = 'Real-Time Innovations, Inc.' # The full version, including alpha/beta/rc tags -version = '1.2.0' +version = '1.2.2' release = '1.2.2' master_doc = 'index' diff --git a/docs/configuration.rst b/docs/configuration.rst index 3fec80d..c0ee079 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -13,7 +13,7 @@ that includes the definition of domains, *DomainParticipants*, *Topics*, *Connector* uses the XML schema defined by RTI's `XML-Based Application Creation feature -`__. +`__. .. hint:: The *Connext DDS* C, C++, Java and .NET APIs can also load the same XML files @@ -77,11 +77,11 @@ and ``shapesize``: Types are associated with *Topics*, as explained in the next section, :ref:`Domain Library`. .. hint:: - You can define your types in IDL and convert them to XML with `rtiddsgen `__. + You can define your types in IDL and convert them to XML with `rtiddsgen `__. For example: ``rtiddsgen -convertToXml MyTypes.idl`` For more information about defining types, see -`Creating User Data Types with XML `__ +`Creating User Data Types with XML `__ in the *RTI Connext DDS Core Libraries User's Manual*. For more information about accessing data samples, see :ref:`Accessing the data`. @@ -91,10 +91,10 @@ Domain library A domain library is a collection of domains. A domain specifies: - * A `domain id `__. + * A `domain id `__. * A set of registered types (from a subset of the types in ````). A registered type can have a local name. - * A set of `topics `__, + * A set of `topics `__, which are used by *DataReaders* and *DataWriters*. .. code-block:: xml @@ -108,7 +108,7 @@ A domain library is a collection of domains. A domain specifies: For more information about the format of a domain library, see -`XML-Based Application Creation: Domain Library `__. +`XML-Based Application Creation: Domain Library `__. Participant library ~~~~~~~~~~~~~~~~~~~ @@ -142,12 +142,12 @@ an :class:`Input`, as described in :ref:`Reading data (Input)`. For more information about the format of a participant library, see `XML-Based Application Creation: Participant Library -`__. +`__. Quality of service ~~~~~~~~~~~~~~~~~~ -All DDS entities have an associated `quality of service (QoS) `__. +All DDS entities have an associated `quality of service (QoS) `__. There are several ways to configure it. You can define a QoS profile and make it the default. The following example @@ -234,12 +234,12 @@ profile is equivalent to *MyQosProfile* above: You can read more in the *RTI Connext DDS Core Libraries User's Manual*, `Configuring QoS with XML -`__. +`__. Logging ^^^^^^^ -Logging can be configured as explained in `Configuring Logging via XML `__. +Logging can be configured as explained in `Configuring Logging via XML `__. For example, to increase the logging verbosity from the default (ERROR) to WARNING, define a ``qos_profile`` with the attribute diff --git a/docs/connector.rst b/docs/connector.rst index 1369e60..9a0ba37 100644 --- a/docs/connector.rst +++ b/docs/connector.rst @@ -22,7 +22,7 @@ To create a new :class:`Connector`, pass an XML file and a configuration name: connector = rti.Connector("MyParticipantLibrary::MyParticipant", "ShapeExample.xml"); The XML file defines your types, QoS profiles, and DDS Entities. *Connector* -uses the XML schema of `RTI's XML-Based Application Creation `__. +uses the XML schema of `RTI's XML-Based Application Creation `__. The previous code loads the ```` named *MyParticipant* in the ```` named *MyParticipantLibrary*, which is defined in the @@ -40,7 +40,7 @@ When you create a :class:`Connector`, the DDS *DomainParticipant* that you selec and all its contained entities (*Topics*, *Subscribers*, *DataReaders*, *Publishers*, *DataWriters*) are created. -For more information about the DDS entities, see `Core Concepts `__ +For more information about the DDS entities, see `Core Concepts `__ in the *RTI Connext DDS Core Libraries User's Manual*. .. note:: diff --git a/docs/data.rst b/docs/data.rst index 77a7279..ea45750 100644 --- a/docs/data.rst +++ b/docs/data.rst @@ -432,7 +432,7 @@ To clear a member, set it to ``None`` explicitly:: For more information about optional members in DDS, see -`Optional Members `__ +`Optional Members `__ in the *Extensible Types Guide*. Accessing unions diff --git a/docs/features.rst b/docs/features.rst index 0cfb311..318563b 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -20,7 +20,7 @@ General features * - Feature - Level of support - Notes - * - `Quality of Service (QoS) `__ + * - `Quality of Service (QoS) `__ - Partial - Most QoS policies are supported because they can be configured in XML, but those that are designed to be mutable can't be changed in *Connector*. QoS policies that require @@ -50,19 +50,19 @@ General features order to enable an `Input` only when :meth:`Connector.get_input` is called. * Property - Properties can be set in XML, but they can't be looked up in *Connector* - `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. - * - `Entity Statuses `__ + `Topic Qos `__ is not supported in *Connector*. Use DataReader QoS and DataWriter QoS directly. + * - `Entity Statuses `__ - Partial - Only :meth:`Input.wait` (data available), :meth:`Input.wait_for_publications`, and :meth:`Output.wait_for_subscriptions` are supported. - * - `Managing Data Instances `__ + * - `Managing Data Instances `__ - Partial - On an ``Output``, it is possible to dispose or unregister an instance (see :meth:`Output.write`). Instances are automatically registered when first written. On an ``Input`` the instance state can be obtained, alongside the key fields of a disposed instance (see :ref:`Accessing key values of disposed samples`). Instance handles are not exposed. - * - `Application Acknowledgment `__ + * - `Application Acknowledgment `__ - Partial - *DDS_APPLICATION_AUTO_ACKNOWLEDGMENT_MODE* is supported. If enabled, when a call to :meth:`Input.take` or :meth:`Input.read` is followed by another call, the second one automatically acknowledges the samples read in the first one. *DDS_APPLICATION_EXPLICIT_ACKNOWLEDGMENT_MODE* is not supported. - * - `Request-Reply `__ + * - `Request-Reply `__ - Partial - The correlation between two samples can be established at the application level: @@ -70,21 +70,21 @@ General features * The *Replier* application receives the *request* sample, obtains the ``identity`` (A), from ":attr:`SampleIterator.info` and writes a new sample with ``related_sample_identity=A`` (the *reply* sample) * The *Requester* application receives the *reply* sample, and correlates the ``related_sample_identity`` from :attr:`SampleIterator.info` with the ``identity`` it used in the first step. - * - `Topic Queries `__ + * - `Topic Queries `__ - Partial - ``Input`` doesn't have the API to create a *TopicQuery*, but in the configuration file a *data_writer* can enable support for *TopicQuery* so other *Connext DDS Subscribers* can query the *Connector Publisher*. - * - `Zero Copy Transfer Over Shared Memory `__ + * - `Zero Copy Transfer Over Shared Memory `__ - Not supported - Only available in C and C++. - * - `Built-in Topics `__ + * - `Built-in Topics `__ - Not supported - API not available. - * - `Transport Plugins `__ + * - `Transport Plugins `__ - Partial - The built-in transports can be configured in XML. * - Add-on Libraries - (such as `Monitoring `__, - `Security Plugins `__ ) + (such as `Monitoring `__, + `Security Plugins `__ ) - Supported - See :ref:`Loading Connext DDS Add-On Libraries`. @@ -98,19 +98,19 @@ Features related to sending data * - Feature - Level of support - Notes - * - `Waiting for Acknowledgments `__ + * - `Waiting for Acknowledgments `__ - Supported - See :meth:`Output.wait`. - * - `Coherent Sets `__ + * - `Coherent Sets `__ - Not supported - API not available. - * - `Flow Controllers `__ + * - `Flow Controllers `__ - Partial - Most functionality is available via XML QoS configuration. - * - `Asserting Liveliness Manually `__ + * - `Asserting Liveliness Manually `__ - Not supported - API not available. - * - `Collaborative DataWriters `__ + * - `Collaborative DataWriters `__ - Limited - The virtual GUID can be set per writer in XML, but not per sample. @@ -124,19 +124,19 @@ Features related to receiving data * - Feature - Level of support - Notes - * - `Content-Filtered Topics `__ + * - `Content-Filtered Topics `__ - Partial - - `Configurable in XML `__ but it can't be modified after creation - * - `Sample Info `__ + - `Configurable in XML `__ but it can't be modified after creation + * - `Sample Info `__ - Partial - See :attr:`SampleIterator.info` - * - `Query Conditions `__ + * - `Query Conditions `__ - Not supported - API not available - * - `Group-Ordered Access `__ + * - `Group-Ordered Access `__ - Not supported - API not available - * - `Waiting for Historical Data `__ + * - `Waiting for Historical Data `__ - Not supported - API not available @@ -150,17 +150,17 @@ Features related to the type system * - Feature - Level of support - Notes - * - `DDS type system `__ + * - `DDS type system `__ - Supported - *Connector* can use any DDS type. Types are defined in XML. - * - `Type extensibility `__ + * - `Type extensibility `__ - Supported - *Connector* supports type extensibility, including mutable types in the XML definition of types. It also supports type-consistency enforcement and sample-assignability enforcement; these checks are performed by the *RTI Connext DDS* Core. - * - `Optional members `__ + * - `Optional members `__ - Supported - See :ref:`Accessing optional members`. - * - `Default values `__ + * - `Default values `__ - Supported - For example, to declare a default value for a member:: @@ -174,7 +174,7 @@ Features related to the type system ``Input`` from a *Publisher* whose type is compatible, but doesn't have the field *my_int*, the value you receive will be 20. - * - `Unbounded data `__ + * - `Unbounded data `__ - Supported - To declare an unbounded sequence or string, set its max length to *-1*:: @@ -221,7 +221,7 @@ Features related to the type system - * - `FlatData Language Binding `__ + * - `FlatData Language Binding `__ - Not supported - However, an ``Input`` can receive data published by other *Connext DDS* applications that use FlatData. @@ -230,8 +230,8 @@ Loading Connext DDS Add-On Libraries *Connector* supports features that require the loading of additional *Connext DDS* libraries, such as -`Monitoring `__ -and `Security Plugins `__. +`Monitoring `__ +and `Security Plugins `__. The Monitoring and Security plugins are configured in XML, as described in the previous links. diff --git a/docs/index.rst b/docs/index.rst index 3ad2e7f..eada869 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -50,5 +50,5 @@ Table of Contents * :ref:`search` To learn more about *RTI Connext DDS*, see the -`RTI Connext DDS Getting Started Guide `__. +`RTI Connext DDS Getting Started Guide `__. More documentation is available in the `RTI Community Portal `__. \ No newline at end of file diff --git a/docs/input.rst b/docs/input.rst index 721369d..f1d3301 100644 --- a/docs/input.rst +++ b/docs/input.rst @@ -131,7 +131,7 @@ See :meth:`SampleIterator.info` for the list of available meta-data fields. *Connext DDS* can produce samples with invalid data, which contain meta-data only. For more information about this, see `Valid Data Flag -`__ +`__ in the *RTI Connext DDS Core Libraries User's Manual*. These samples indicate a change in the instance state. Samples with invalid data still provide the following information: From f45cb45966309fd9ae686a732fcddfd0459f03f1 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Fri, 18 Nov 2022 13:50:31 -0800 Subject: [PATCH 34/35] #fix CON-279 -- rc3 for new 20221111 libs ... (#157) Co-authored-by: Bob Garrow --- rticonnextdds-connector | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rticonnextdds-connector b/rticonnextdds-connector index 2373400..6ec486f 160000 --- a/rticonnextdds-connector +++ b/rticonnextdds-connector @@ -1 +1 @@ -Subproject commit 23734009b24a09cf0ff2b82e642cea928e72b599 +Subproject commit 6ec486f11dca86dcd94bb127a519cb3eb3af268a diff --git a/setup.py b/setup.py index 47a0523..c5ec561 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.2-rc2', + version='1.2.2-rc3', description='RTI Connector for Python', long_description=long_description, From a02092bec68a801523c615779c7c5a053f9a0845 Mon Sep 17 00:00:00 2001 From: Bob Garrow Date: Wed, 14 Dec 2022 10:42:39 -0800 Subject: [PATCH 35/35] CON-278 -- final version string for 1.2.2 (#159) Co-authored-by: Bob Garrow --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index c5ec561..0626630 100644 --- a/setup.py +++ b/setup.py @@ -33,7 +33,7 @@ # Versions should comply with PEP440. For a discussion on single-sourcing # the version across setup.py and the project code, see # https://packaging.python.org/en/latest/single_source_version.html - version='1.2.2-rc3', + version='1.2.2', description='RTI Connector for Python', long_description=long_description,