diff --git a/cterasdk/__init__.py b/cterasdk/__init__.py index e76d253f..b3a87936 100644 --- a/cterasdk/__init__.py +++ b/cterasdk/__init__.py @@ -1,6 +1,7 @@ # pylint: disable=wrong-import-position import cterasdk.settings # noqa: E402, F401 import cterasdk.exceptions # noqa: E402, F401 +from .version import __version__ # noqa: E402, F401 from .common import Object, PolicyRule # noqa: E402, F401 from .convert import fromjsonstr, tojsonstr, fromxmlstr, toxmlstr # noqa: E402, F401 diff --git a/cterasdk/clients/base.py b/cterasdk/clients/base.py index 95352d0c..4a27ca3e 100644 --- a/cterasdk/clients/base.py +++ b/cterasdk/clients/base.py @@ -1,8 +1,11 @@ import logging +import platform import threading +import aiohttp from . import async_requests, errors from .settings import ClientSessionSettings, TraceSettings from ..common import utils +from ..version import __version__ logger = logging.getLogger('cterasdk.http') @@ -27,7 +30,13 @@ class PersistentHeaders: """Headers to include in every request""" def __init__(self): - self._headers = {} + self._headers = { + 'User-Agent': ( + f"CTERA Python SDK/{__version__}; aiohttp/{aiohttp.__version__};" + f" ({' '.join([platform.system(), str(platform.release())])}; {platform.machine()};" + f" Python {'.'.join(platform.python_version_tuple())});" + ) + } @property def all(self): diff --git a/cterasdk/lib/__init__.py b/cterasdk/lib/__init__.py index 8266bc02..88982a8a 100644 --- a/cterasdk/lib/__init__.py +++ b/cterasdk/lib/__init__.py @@ -1,7 +1,6 @@ from .cmd import Command # noqa: E402, F401 from .consent import ask # noqa: E402, F401 from .tempfile import TempfileServices # noqa: E402, F401 -from .version import Version # noqa: E402, F401 from .iterator import QueryIterator, BaseResponse, \ DefaultResponse, KeyValueQueryIterator, QueryLogsResponse, CursorResponse # noqa: E402, F401 from .tracker import track, ErrorStatus # noqa: E402, F401 diff --git a/cterasdk/lib/platform.py b/cterasdk/lib/platform.py deleted file mode 100644 index 846fd8f6..00000000 --- a/cterasdk/lib/platform.py +++ /dev/null @@ -1,31 +0,0 @@ -import platform - - -class Platform: # pylint: disable=unused-private-member - - __instance = None - - @staticmethod - def instance(): - if Platform.__instance is None: - Platform() - return Platform.__instance - - def __init__(self): - if Platform.__instance is not None: - raise Exception("Platform is a singleton class.") - self.hostname = platform.node() - self.operating_system = platform.system() - self.release = platform.release() - self.machine = platform.machine() - self.python_major, self.python_minor, self.python_micro = platform.python_version_tuple() - Platform.__instance = self - - def arch(self): - return self.machine - - def os(self): - return ' '.join([self.operating_system, str(self.release)]) - - def python_version(self): - return '.'.join([self.python_major, self.python_minor, self.python_micro]) diff --git a/cterasdk/lib/version.py b/cterasdk/lib/version.py deleted file mode 100644 index e3edf02b..00000000 --- a/cterasdk/lib/version.py +++ /dev/null @@ -1,28 +0,0 @@ -from .platform import Platform - - -class Version: # pylint: disable=unused-private-member - - __instance = None - - @staticmethod - def instance(): - if Version.__instance is None: - Version() - return Version.__instance - - def __init__(self): - if Version.__instance is not None: - raise Exception("Version is a singleton class.") - - self.product = 'Chopin' - self.product_version = '3.0' - self.system = Platform.instance().os() - self.machine = Platform.instance().arch() - self.header = \ - f"{self.product}/{self.product_version} ({self.system}; {self.machine}) Python-urllib/{Platform.instance().python_version()}" - Version.__instance = self - - def as_header(self): - - return self.header diff --git a/cterasdk/version.py b/cterasdk/version.py new file mode 100644 index 00000000..06146afc --- /dev/null +++ b/cterasdk/version.py @@ -0,0 +1 @@ +__version__ = '2.20.20' diff --git a/docs/source/UserGuides/Miscellaneous/Changelog.rst b/docs/source/UserGuides/Miscellaneous/Changelog.rst index 6e3e2ddf..f2f4c245 100644 --- a/docs/source/UserGuides/Miscellaneous/Changelog.rst +++ b/docs/source/UserGuides/Miscellaneous/Changelog.rst @@ -1,6 +1,15 @@ Changelog ========= +2.20.20 +------- + +Improvements +^^^^^^^^^^^^ + +* Add unique User-Agent header to all requests made by the CTERA Python SDK + + 2.20.19 -------