CP-1897 Change versioning mechanism

This commit is contained in:
João Malés 2024-07-08 10:50:09 +01:00
parent 92594366d2
commit 294144feca
137 changed files with 192 additions and 2148 deletions

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AccountGroup.md docs/AccountGroup.md
docs/AccountGroupDetail.md docs/AccountGroupDetail.md

View File

@ -18,7 +18,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.administrative.models import thousandeyes_sdk.administrative.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.administrative.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AccountGroupsApi: class AccountGroupsApi:
@ -43,7 +43,7 @@ class AccountGroupsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.administrative.models import thousandeyes_sdk.administrative.models
@ -26,7 +27,6 @@ from thousandeyes_sdk.administrative.models.permissions import Permissions
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class PermissionsApi: class PermissionsApi:
@ -39,7 +39,7 @@ class PermissionsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.administrative.models import thousandeyes_sdk.administrative.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.administrative.models.roles import Roles
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class RolesApi: class RolesApi:
@ -41,7 +41,7 @@ class RolesApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.administrative.models import thousandeyes_sdk.administrative.models
@ -27,7 +28,6 @@ from thousandeyes_sdk.administrative.models.audit_user_events import AuditUserEv
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class UserEventsApi: class UserEventsApi:
@ -40,7 +40,7 @@ class UserEventsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.administrative.models import thousandeyes_sdk.administrative.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.administrative.models.users import Users
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class UsersApi: class UsersApi:
@ -42,7 +42,7 @@ class UsersApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-administrative"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AccountGroup.md docs/AccountGroup.md
docs/Agent.md docs/Agent.md

View File

@ -11,7 +11,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.agents.models import thousandeyes_sdk.agents.models
@ -27,7 +28,6 @@ from thousandeyes_sdk.agents.models.notification_rule_detail import Notification
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class CloudAndEnterpriseAgentNotificationRulesApi: class CloudAndEnterpriseAgentNotificationRulesApi:
@ -40,7 +40,7 @@ class CloudAndEnterpriseAgentNotificationRulesApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.agents.models import thousandeyes_sdk.agents.models
@ -31,7 +32,6 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpri
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class CloudAndEnterpriseAgentsApi: class CloudAndEnterpriseAgentsApi:
@ -44,7 +44,7 @@ class CloudAndEnterpriseAgentsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.agents.models import thousandeyes_sdk.agents.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.agents.models.cloud_enterprise_agents import CloudEnterpri
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class EnterpriseAgentClusterApi: class EnterpriseAgentClusterApi:
@ -43,7 +43,7 @@ class EnterpriseAgentClusterApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.agents.models import thousandeyes_sdk.agents.models
@ -26,7 +27,6 @@ from thousandeyes_sdk.agents.models.agent_proxies import AgentProxies
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ProxiesApi: class ProxiesApi:
@ -39,7 +39,7 @@ class ProxiesApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/Alert.md docs/Alert.md
docs/AlertDetail.md docs/AlertDetail.md

View File

@ -18,7 +18,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.alerts.models import thousandeyes_sdk.alerts.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.alerts.models.rules import Rules
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AlertRulesApi: class AlertRulesApi:
@ -42,7 +42,7 @@ class AlertRulesApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-alerts"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.alerts.models import thousandeyes_sdk.alerts.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.alerts.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AlertSuppressionWindowsApi: class AlertSuppressionWindowsApi:
@ -42,7 +42,7 @@ class AlertSuppressionWindowsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-alerts"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.alerts.models import thousandeyes_sdk.alerts.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.alerts.models.alerts import Alerts
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AlertsApi: class AlertsApi:
@ -41,7 +41,7 @@ class AlertsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-alerts"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/Error.md docs/Error.md
docs/Link.md docs/Link.md

View File

@ -15,7 +15,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.bgp_monitors.models import thousandeyes_sdk.bgp_monitors.models
@ -26,7 +27,6 @@ from thousandeyes_sdk.bgp_monitors.models.monitors import Monitors
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ListBGPMonitorsApi: class ListBGPMonitorsApi:
@ -39,7 +39,7 @@ class ListBGPMonitorsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-bgp-monitors"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,3 +0,0 @@
# thousandeyes-sdk-core
This package provides core functionality for interacting with the ThousandEyes API and should be installed before using any of the published SDKs.

View File

@ -1,82 +0,0 @@
[project]
name = "thousandeyes-sdk-core"
readme = "README.md"
dynamic = ["version"]
authors = [
{ name = "ThousandEyes API Team", email = "api-team@thousandeyes.com" }
]
description = "ThousandEyes SDK Core"
license = { file = "LICENSE" }
dependencies = [
"urllib3 >= 1.25.3",
"python-dateutil >=2.8.2",
"pydantic >=2",
"typing-extensions >=4.7.1",
]
[tool.setuptools.packages.find]
where = ["src/"]
include = ["thousandeyes_sdk.core"]
[tool.setuptools.dynamic]
version = {attr = "thousandeyes_sdk.core.__version__"}
[project.optional-dependencies]
test = [
"pytest~=7.1.3",
"pytest-cov>=2.8.1",
"pytest-randomly>=3.12.0",
"mypy>=1.4.1",
"types-python-dateutil>=2.8.19",
]
dev = [
"flake8>=4.0.0",
"mypy>=1.4.1",
"types-python-dateutil>=2.8.19",
]
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"
[tool.pylint.'MESSAGES CONTROL']
extension-pkg-whitelist = "pydantic"
[tool.mypy]
files = [
"src",
#"test", # auto-generated tests
#"tests", # hand-written tests
]
namespace_packages = true
# TODO: enable "strict" once all these individual checks are passing
# strict = true
# List from: https://mypy.readthedocs.io/en/stable/existing_code.html#introduce-stricter-options
warn_unused_configs = true
warn_redundant_casts = true
warn_unused_ignores = true
## Getting these passing should be easy
strict_equality = true
strict_concatenate = true
## Strongly recommend enabling this one as soon as you can
check_untyped_defs = true
## These shouldn't be too much additional work, but may be tricky to
## get passing if you use a lot of untyped libraries
disallow_subclassing_any = true
disallow_untyped_decorators = true
disallow_any_generics = true
### These next few are various gradations of forcing use of type annotations
#disallow_untyped_calls = true
#disallow_incomplete_defs = true
#disallow_untyped_defs = true
#
### This one isn't too hard to get passing, but return on investment is lower
#no_implicit_reexport = true
#
### This one can be tricky to get passing if you use a lot of untyped libraries
#warn_return_any = true

View File

@ -1,25 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
from . import exceptions
from .api_client import ApiClient
from .api_response import ApiResponse
from .configuration import Configuration
from .version import Version
import os.path
__version__ = "1.0.0"

View File

@ -1,766 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
import datetime
import json
import mimetypes
import os
import re
import tempfile
from enum import Enum
from typing import Tuple, Optional, List, Dict, Union
from urllib.parse import quote
from dateutil.parser import parse
from pydantic import SecretStr
from thousandeyes_sdk.core import rest
from thousandeyes_sdk.core.api_response import ApiResponse, T as ApiResponseT
from thousandeyes_sdk.core.configuration import Configuration
from thousandeyes_sdk.core.exceptions import (
ApiValueError,
ApiException
)
RequestSerialized = Tuple[str, str, Dict[str, str], Optional[str], List[str]]
class ApiClient:
"""Generic API client for OpenAPI client library builds.
OpenAPI generic API client. This client handles the client-
server communication, and is invariant across implementations. Specifics of
the methods and models for each application are generated from the OpenAPI
templates.
:param configuration: .Configuration object for this client
:param header_name: a header to pass when making calls to the API.
:param header_value: a header value to pass when making calls to
the API.
:param cookie: a cookie to include in the header when making calls
to the API
"""
PRIMITIVE_TYPES = (float, bool, bytes, str, int)
NATIVE_TYPES_MAPPING = {
'int': int,
'long': int, # TODO remove as only py3 is supported?
'float': float,
'str': str,
'bool': bool,
'date': datetime.date,
'datetime': datetime.datetime,
'object': object,
}
_pool = None
def __init__(
self,
configuration=None,
header_name=None,
header_value=None,
cookie=None
) -> None:
# use default configuration if none is provided
if configuration is None:
configuration = Configuration.get_default()
self.configuration = configuration
self.rest_client = rest.RESTClientObject(configuration)
self.default_headers = {}
if header_name is not None:
self.default_headers[header_name] = header_value
self.cookie = cookie
self.client_side_validation = configuration.client_side_validation
def __enter__(self):
return self
def __exit__(self, exc_type, exc_value, traceback):
pass
@property
def user_agent(self):
"""User agent for this API client"""
return self.default_headers['User-Agent']
@user_agent.setter
def user_agent(self, value):
self.default_headers['User-Agent'] = value
def set_default_header(self, header_name, header_value):
self.default_headers[header_name] = header_value
_default = None
@classmethod
def get_default(cls):
"""Return new instance of ApiClient.
This method returns newly created, based on default constructor,
object of ApiClient class or returns a copy of default
ApiClient.
:return: The ApiClient object.
"""
if cls._default is None:
cls._default = ApiClient()
return cls._default
@classmethod
def set_default(cls, default):
"""Set default instance of ApiClient.
It stores default ApiClient.
:param default: object of ApiClient.
"""
cls._default = default
def param_serialize(
self,
method,
resource_path,
path_params=None,
query_params=None,
header_params=None,
body=None,
post_params=None,
files=None, auth_settings=None,
collection_formats=None,
_host=None,
_request_auth=None
) -> RequestSerialized:
"""Builds the HTTP request params needed by the request.
:param method: Method to call.
:param resource_path: Path to method endpoint.
:param path_params: Path parameters in the url.
:param query_params: Query parameters in the url.
:param header_params: Header parameters to be
placed in the request header.
:param body: Request body.
:param post_params dict: Request post form parameters,
for `application/x-www-form-urlencoded`, `multipart/form-data`.
:param auth_settings list: Auth Settings names for the request.
:param files dict: key -> filename, value -> filepath,
for `multipart/form-data`.
:param collection_formats: dict of collection formats for path, query,
header, and post parameters.
:param _request_auth: set to override the auth_settings for an a single
request; this effectively ignores the authentication
in the spec for a single request.
:return: tuple of form (path, http_method, query_params, header_params,
body, post_params, files)
"""
config = self.configuration
# header parameters
header_params = header_params or {}
header_params.update(self.default_headers)
if self.cookie:
header_params['Cookie'] = self.cookie
if header_params:
header_params = self.sanitize_for_serialization(header_params)
header_params = dict(
self.parameters_to_tuples(header_params, collection_formats)
)
# path parameters
if path_params:
path_params = self.sanitize_for_serialization(path_params)
path_params = self.parameters_to_tuples(
path_params,
collection_formats
)
for k, v in path_params:
# specified safe chars, encode everything
resource_path = resource_path.replace(
'{%s}' % k,
quote(str(v), safe=config.safe_chars_for_path_param)
)
# post parameters
if post_params or files:
post_params = post_params if post_params else []
post_params = self.sanitize_for_serialization(post_params)
post_params = self.parameters_to_tuples(
post_params,
collection_formats
)
if files:
post_params.extend(self.files_parameters(files))
# auth setting
self.update_params_for_auth(
header_params,
query_params,
auth_settings,
resource_path,
method,
body,
request_auth=_request_auth
)
# body
if body:
body = self.sanitize_for_serialization(body)
# request url
if _host is None:
url = self.configuration.host + resource_path
else:
# use server/host defined in path or operation instead
url = _host + resource_path
# query parameters
if query_params:
query_params = self.sanitize_for_serialization(query_params)
url_query = self.parameters_to_url_query(
query_params,
collection_formats
)
url += "?" + url_query
return method, url, header_params, body, post_params
def call_api(
self,
method,
url,
header_params=None,
body=None,
post_params=None,
_request_timeout=None
) -> rest.RESTResponse:
"""Makes the HTTP request (synchronous)
:param method: Method to call.
:param url: Path to method endpoint.
:param header_params: Header parameters to be
placed in the request header.
:param body: Request body.
:param post_params dict: Request post form parameters,
for `application/x-www-form-urlencoded`, `multipart/form-data`.
:param _request_timeout: timeout setting for this request.
:return: RESTResponse
"""
try:
# perform request and return response
response_data = self.rest_client.request(
method, url,
headers=header_params,
body=body, post_params=post_params,
_request_timeout=_request_timeout
)
except ApiException as e:
raise e
return response_data
def response_deserialize(
self,
response_data: rest.RESTResponse,
response_types_map: Optional[Dict[str, ApiResponseT]] = None,
models: Dict = {}
) -> ApiResponse[ApiResponseT]:
"""Deserializes response into an object.
:param response_data: RESTResponse object to be deserialized.
:param response_types_map: dict of response types.
:return: ApiResponse
"""
msg = "RESTResponse.read() must be called before passing it to response_deserialize()"
assert response_data.data is not None, msg
response_type = response_types_map.get(str(response_data.status), None)
if not response_type and isinstance(response_data.status,
int) and 100 <= response_data.status <= 599:
# if not found, look for '1XX', '2XX', etc.
response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
# deserialize response data
response_text = None
return_data = None
try:
if response_type == "bytearray":
return_data = response_data.data
elif response_type == "file":
return_data = self.__deserialize_file(response_data)
elif response_type is not None:
match = None
content_type = response_data.getheader('content-type')
if content_type is not None:
match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
encoding = match.group(1) if match else "utf-8"
response_text = response_data.data.decode(encoding)
if response_type in ["bytearray", "str"]:
return_data = self.__deserialize_primitive(response_text, response_type)
else:
return_data = self.deserialize(response_text, response_type, models)
finally:
if not 200 <= response_data.status <= 299:
raise ApiException.from_response(
http_resp=response_data,
body=response_text,
data=return_data,
)
return ApiResponse(
status_code=response_data.status,
data=return_data,
headers=response_data.getheaders(),
raw_data=response_data.data
)
def sanitize_for_serialization(self, obj):
"""Builds a JSON POST object.
If obj is None, return None.
If obj is SecretStr, return obj.get_secret_value()
If obj is str, int, long, float, bool, return directly.
If obj is datetime.datetime, datetime.date
convert to string in iso8601 format.
If obj is list, sanitize each element in the list.
If obj is dict, return the dict.
If obj is OpenAPI model, return the properties dict.
:param obj: The data to serialize.
:return: The serialized form of data.
"""
if obj is None:
return None
elif isinstance(obj, Enum):
return obj.value
elif isinstance(obj, SecretStr):
return obj.get_secret_value()
elif isinstance(obj, self.PRIMITIVE_TYPES):
return obj
elif isinstance(obj, list):
return [
self.sanitize_for_serialization(sub_obj) for sub_obj in obj
]
elif isinstance(obj, tuple):
return tuple(
self.sanitize_for_serialization(sub_obj) for sub_obj in obj
)
elif isinstance(obj, (datetime.datetime, datetime.date)):
return obj.isoformat()
elif isinstance(obj, dict):
obj_dict = obj
else:
# Convert model obj to dict except
# attributes `openapi_types`, `attribute_map`
# and attributes which value is not None.
# Convert attribute name to json key in
# model definition for request.
if hasattr(obj, 'to_dict') and callable(getattr(obj, 'to_dict')):
obj_dict = obj.to_dict()
else:
obj_dict = obj.__dict__
return {
key: self.sanitize_for_serialization(val)
for key, val in obj_dict.items()
}
def deserialize(self, response_text, response_type, models):
"""Deserializes response into an object.
:param response: RESTResponse object to be deserialized.
:param response_type: class literal for
deserialized object, or string of class name.
:param models: Object containing the model classes
:return: deserialized object.
"""
# fetch data from response object
try:
data = json.loads(response_text)
except ValueError:
data = response_text
return self.__deserialize(data, response_type, models)
def __deserialize(self, data, klass, models):
"""Deserializes dict, list, str into an object.
:param data: dict, list or str.
:param klass: class literal, or string of class name.
:param models: object containing the model classes to deserialise into
:return: object.
"""
if data is None:
return None
if isinstance(klass, str):
if klass.startswith('List['):
m = re.match(r'List\[(.*)]', klass)
assert m is not None, "Malformed List type definition"
sub_kls = m.group(1)
return [self.__deserialize(sub_data, sub_kls, models)
for sub_data in data]
if klass.startswith('Dict['):
m = re.match(r'Dict\[([^,]*), (.*)]', klass)
assert m is not None, "Malformed Dict type definition"
sub_kls = m.group(2)
return {k: self.__deserialize(v, sub_kls, models)
for k, v in data.items()}
# convert str to class
if klass in self.NATIVE_TYPES_MAPPING:
klass = self.NATIVE_TYPES_MAPPING[klass]
else:
klass = getattr(models, klass)
if klass in self.PRIMITIVE_TYPES:
return self.__deserialize_primitive(data, klass)
elif klass == object:
return self.__deserialize_object(data)
elif klass == datetime.date:
return self.__deserialize_date(data)
elif klass == datetime.datetime:
return self.__deserialize_datetime(data)
elif issubclass(klass, Enum):
return self.__deserialize_enum(data, klass)
else:
return self.__deserialize_model(data, klass)
def parameters_to_tuples(self, params, collection_formats):
"""Get parameters as list of tuples, formatting collections.
:param params: Parameters as dict or list of two-tuples
:param dict collection_formats: Parameter collection formats
:return: Parameters as list of tuples, collections formatted
"""
new_params: List[Tuple[str, str]] = []
if collection_formats is None:
collection_formats = {}
for k, v in params.items() if isinstance(params, dict) else params:
if k in collection_formats:
collection_format = collection_formats[k]
if collection_format == 'multi':
new_params.extend((k, value) for value in v)
else:
if collection_format == 'ssv':
delimiter = ' '
elif collection_format == 'tsv':
delimiter = '\t'
elif collection_format == 'pipes':
delimiter = '|'
else: # csv is the default
delimiter = ','
new_params.append(
(k, delimiter.join(str(value) for value in v)))
else:
new_params.append((k, v))
return new_params
def parameters_to_url_query(self, params, collection_formats):
"""Get parameters as list of tuples, formatting collections.
:param params: Parameters as dict or list of two-tuples
:param dict collection_formats: Parameter collection formats
:return: URL query string (e.g. a=Hello%20World&b=123)
"""
new_params: List[Tuple[str, str]] = []
if collection_formats is None:
collection_formats = {}
for k, v in params.items() if isinstance(params, dict) else params:
if isinstance(v, bool):
v = str(v).lower()
if isinstance(v, (int, float)):
v = str(v)
if isinstance(v, dict):
v = json.dumps(v)
if k in collection_formats:
collection_format = collection_formats[k]
if collection_format == 'multi':
new_params.extend((k, str(value)) for value in v)
else:
if collection_format == 'ssv':
delimiter = ' '
elif collection_format == 'tsv':
delimiter = '\t'
elif collection_format == 'pipes':
delimiter = '|'
else: # csv is the default
delimiter = ','
new_params.append(
(k, delimiter.join(quote(str(value)) for value in v))
)
else:
new_params.append((k, quote(str(v))))
return "&".join(["=".join(map(str, item)) for item in new_params])
def files_parameters(self, files: Dict[str, Union[str, bytes]]):
"""Builds form parameters.
:param files: File parameters.
:return: Form parameters with files.
"""
params = []
for k, v in files.items():
if isinstance(v, str):
with open(v, 'rb') as f:
filename = os.path.basename(f.name)
filedata = f.read()
elif isinstance(v, bytes):
filename = k
filedata = v
else:
raise ValueError("Unsupported file value")
mimetype = (
mimetypes.guess_type(filename)[0]
or 'application/octet-stream'
)
params.append(
tuple([k, tuple([filename, filedata, mimetype])])
)
return params
def select_header_accept(self, accepts: List[str]) -> Optional[str]:
"""Returns `Accept` based on an array of accepts provided.
:param accepts: List of headers.
:return: Accept (e.g. application/json).
"""
if not accepts:
return None
for accept in accepts:
if re.search('json', accept, re.IGNORECASE):
return accept
return accepts[0]
def select_header_content_type(self, content_types):
"""Returns `Content-Type` based on an array of content_types provided.
:param content_types: List of content-types.
:return: Content-Type (e.g. application/json).
"""
if not content_types:
return None
for content_type in content_types:
if re.search('json', content_type, re.IGNORECASE):
return content_type
return content_types[0]
def update_params_for_auth(
self,
headers,
queries,
auth_settings,
resource_path,
method,
body,
request_auth=None
) -> None:
"""Updates header and query params based on authentication setting.
:param headers: Header parameters dict to be updated.
:param queries: Query parameters tuple list to be updated.
:param auth_settings: Authentication setting identifiers list.
:resource_path: A string representation of the HTTP request resource path.
:method: A string representation of the HTTP request method.
:body: A object representing the body of the HTTP request.
The object type is the return value of sanitize_for_serialization().
:param request_auth: if set, the provided settings will
override the token in the configuration.
"""
if not auth_settings:
return
if request_auth:
self._apply_auth_params(
headers,
queries,
resource_path,
method,
body,
request_auth
)
else:
for auth in auth_settings:
auth_setting = self.configuration.auth_settings().get(auth)
if auth_setting:
self._apply_auth_params(
headers,
queries,
resource_path,
method,
body,
auth_setting
)
def _apply_auth_params(
self,
headers,
queries,
resource_path,
method,
body,
auth_setting
) -> None:
"""Updates the request parameters based on a single auth_setting
:param headers: Header parameters dict to be updated.
:param queries: Query parameters tuple list to be updated.
:resource_path: A string representation of the HTTP request resource path.
:method: A string representation of the HTTP request method.
:body: A object representing the body of the HTTP request.
The object type is the return value of sanitize_for_serialization().
:param auth_setting: auth settings for the endpoint
"""
if auth_setting['in'] == 'cookie':
headers['Cookie'] = auth_setting['value']
elif auth_setting['in'] == 'header':
if auth_setting['type'] != 'http-signature':
headers[auth_setting['key']] = auth_setting['value']
elif auth_setting['in'] == 'query':
queries.append((auth_setting['key'], auth_setting['value']))
else:
raise ApiValueError(
'Authentication token must be in `query` or `header`'
)
def __deserialize_file(self, response):
"""Deserializes body to file
Saves response body into a file in a temporary folder,
using the filename from the `Content-Disposition` header if provided.
handle file downloading
save response body into a tmp file and return the instance
:param response: RESTResponse.
:return: file path.
"""
fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
os.close(fd)
os.remove(path)
content_disposition = response.getheader("Content-Disposition")
if content_disposition:
m = re.search(
r'filename=[\'"]?([^\'"\s]+)[\'"]?',
content_disposition
)
assert m is not None, "Unexpected 'content-disposition' header value"
filename = m.group(1)
path = os.path.join(os.path.dirname(path), filename)
with open(path, "wb") as f:
f.write(response.data)
return path
def __deserialize_primitive(self, data, klass):
"""Deserializes string to primitive type.
:param data: str.
:param klass: class literal.
:return: int, long, float, str, bool.
"""
try:
return klass(data)
except UnicodeEncodeError:
return str(data)
except TypeError:
return data
def __deserialize_object(self, value):
"""Return an original value.
:return: object.
"""
return value
def __deserialize_date(self, string):
"""Deserializes string to date.
:param string: str.
:return: date.
"""
try:
return parse(string).date()
except ImportError:
return string
except ValueError:
raise rest.ApiException(
status=0,
reason="Failed to parse `{0}` as date object".format(string)
)
def __deserialize_datetime(self, string):
"""Deserializes string to datetime.
The string should be in iso8601 datetime format.
:param string: str.
:return: datetime.
"""
try:
return parse(string)
except ImportError:
return string
except ValueError:
raise rest.ApiException(
status=0,
reason=(
"Failed to parse `{0}` as datetime object"
.format(string)
)
)
def __deserialize_enum(self, data, klass):
"""Deserializes primitive type to enum.
:param data: primitive type.
:param klass: class literal.
:return: enum value.
"""
try:
return klass(data)
except ValueError:
raise rest.ApiException(
status=0,
reason=(
"Failed to parse `{0}` as `{1}`"
.format(data, klass)
)
)
def __deserialize_model(self, data, klass):
"""Deserializes list or dict to model.
:param data: dict, list.
:param klass: class literal.
:return: model object.
"""
return klass.from_dict(data)

View File

@ -1,37 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
"""API response object."""
from __future__ import annotations
from typing import Optional, Generic, Mapping, TypeVar
from pydantic import Field, StrictInt, StrictBytes, BaseModel
T = TypeVar("T")
class ApiResponse(BaseModel, Generic[T]):
"""
API response object
"""
status_code: StrictInt = Field(description="HTTP status code")
headers: Optional[Mapping[str, str]] = Field(None, description="HTTP headers")
data: T = Field(description="Deserialized data given the data type")
raw_data: StrictBytes = Field(description="Raw data (HTTP response body)")
model_config = {
"arbitrary_types_allowed": True
}

View File

@ -1,452 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
import copy
import http.client as httplib
import logging
import multiprocessing
import sys
from logging import FileHandler
from typing import Optional
import urllib3
from thousandeyes_sdk.core.thousandeyes_retry import ThousandEyesRetry
JSON_SCHEMA_VALIDATION_KEYWORDS = {
'multipleOf', 'maximum', 'exclusiveMaximum',
'minimum', 'exclusiveMinimum', 'maxLength',
'minLength', 'pattern', 'maxItems', 'minItems'
}
class Configuration:
"""This class contains various settings of the API client.
:param host: Base url.
:param api_key: Dict to store API key(s).
Each entry in the dict specifies an API key.
The dict key is the name of the security scheme in the OAS specification.
The dict value is the API key secret.
:param api_key_prefix: Dict to store API prefix (e.g. Bearer).
The dict key is the name of the security scheme in the OAS specification.
The dict value is an API key prefix when generating the auth data.
:param username: Username for HTTP basic authentication.
:param password: Password for HTTP basic authentication.
:param access_token: Access token.
:param server_index: Index to servers configuration.
:param server_variables: Mapping with string values to replace variables in
templated server configuration. The validation of enums is performed for
variables with defined enum values before.
:param server_operation_index: Mapping from operation ID to an index to server
configuration.
:param server_operation_variables: Mapping from operation ID to a mapping with
string values to replace variables in templated server configuration.
The validation of enums is performed for variables with defined enum
values before.
:param ssl_ca_cert: str - the path to a file of concatenated CA certificates
in PEM format.
:Example:
"""
_default = None
def __init__(self, host=None,
api_key=None, api_key_prefix=None,
username=None, password=None,
access_token=None,
server_index=None, server_variables=None,
server_operation_index=None, server_operation_variables=None,
ssl_ca_cert=None,
retries=None
) -> None:
"""Constructor
"""
self._base_path = "https://api.thousandeyes.com" if host is None else host
"""Default Base url
"""
self.server_index = 0 if server_index is None and host is None else server_index
self.server_operation_index = server_operation_index or {}
"""Default server index
"""
self.server_variables = server_variables or {}
self.server_operation_variables = server_operation_variables or {}
"""Default server variables
"""
self.temp_folder_path = None
"""Temp file folder for downloading files
"""
# Authentication Settings
self.api_key = {}
if api_key:
self.api_key = api_key
"""dict to store API key(s)
"""
self.api_key_prefix = {}
if api_key_prefix:
self.api_key_prefix = api_key_prefix
"""dict to store API prefix (e.g. Bearer)
"""
self.refresh_api_key_hook = None
"""function hook to refresh API key if expired
"""
self.username = username
"""Username for HTTP basic authentication
"""
self.password = password
"""Password for HTTP basic authentication
"""
self.access_token = access_token
"""Access token
"""
self.logger = {}
"""Logging Settings
"""
self.logger["package_logger"] = logging.getLogger("admin")
self.logger["urllib3_logger"] = logging.getLogger("urllib3")
self.logger_format = '%(asctime)s %(levelname)s %(message)s'
"""Log format
"""
self.logger_stream_handler = None
"""Log stream handler
"""
self.logger_file_handler: Optional[FileHandler] = None
"""Log file handler
"""
self.logger_file = None
"""Debug file location
"""
self.debug = False
"""Debug switch
"""
self.verify_ssl = True
"""SSL/TLS verification
Set this to false to skip verifying SSL certificate when calling API
from https server.
"""
self.ssl_ca_cert = ssl_ca_cert
"""Set this to customize the certificate file to verify the peer.
"""
self.cert_file = None
"""client certificate file
"""
self.key_file = None
"""client key file
"""
self.assert_hostname = None
"""Set this to True/False to enable/disable SSL hostname verification.
"""
self.tls_server_name = None
"""SSL/TLS Server Name Indication (SNI)
Set this to the SNI value expected by the server.
"""
self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
"""urllib3 connection pool's maximum number of connections saved
per pool. urllib3 uses 1 connection as default value, but this is
not the best value when you are making a lot of possibly parallel
requests to the same host, which is often the case here.
cpu_count * 5 is used as default value to increase performance.
"""
self.proxy: Optional[str] = None
"""Proxy URL
"""
self.proxy_headers = None
"""Proxy headers
"""
self.safe_chars_for_path_param = ''
"""Safe chars for path_param
"""
self.retries = ThousandEyesRetry()
if retries:
self.retries = retries
"""Adding retries to override urllib3 default value 3
"""
# Enable client side validation
self.client_side_validation = True
self.socket_options = None
"""Options to pass down to the underlying urllib3 socket
"""
self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z"
"""datetime format
"""
self.date_format = "%Y-%m-%d"
"""date format
"""
def __deepcopy__(self, memo):
cls = self.__class__
result = cls.__new__(cls)
memo[id(self)] = result
for k, v in self.__dict__.items():
if k not in ('logger', 'logger_file_handler'):
setattr(result, k, copy.deepcopy(v, memo))
# shallow copy of loggers
result.logger = copy.copy(self.logger)
# use setters to configure loggers
result.logger_file = self.logger_file
result.debug = self.debug
return result
def __setattr__(self, name, value):
object.__setattr__(self, name, value)
@classmethod
def set_default(cls, default):
"""Set default instance of configuration.
It stores default configuration, which can be
returned by get_default_copy method.
:param default: object of Configuration
"""
cls._default = default
@classmethod
def get_default_copy(cls):
"""Deprecated. Please use `get_default` instead.
Deprecated. Please use `get_default` instead.
:return: The configuration object.
"""
return cls.get_default()
@classmethod
def get_default(cls):
"""Return the default configuration.
This method returns newly created, based on default constructor,
object of Configuration class or returns a copy of default
configuration.
:return: The configuration object.
"""
if cls._default is None:
cls._default = Configuration()
return cls._default
@property
def logger_file(self):
"""The logger file.
If the logger_file is None, then add stream handler and remove file
handler. Otherwise, add file handler and remove stream handler.
:param value: The logger_file path.
:type: str
"""
return self.__logger_file
@logger_file.setter
def logger_file(self, value):
"""The logger file.
If the logger_file is None, then add stream handler and remove file
handler. Otherwise, add file handler and remove stream handler.
:param value: The logger_file path.
:type: str
"""
self.__logger_file = value
if self.__logger_file:
# If set logging file,
# then add file handler and remove stream handler.
self.logger_file_handler = logging.FileHandler(self.__logger_file)
self.logger_file_handler.setFormatter(self.logger_formatter)
for _, logger in self.logger.items():
logger.addHandler(self.logger_file_handler)
@property
def debug(self):
"""Debug status
:param value: The debug status, True or False.
:type: bool
"""
return self.__debug
@debug.setter
def debug(self, value):
"""Debug status
:param value: The debug status, True or False.
:type: bool
"""
self.__debug = value
if self.__debug:
# if debug status is True, turn on debug logging
for _, logger in self.logger.items():
logger.setLevel(logging.DEBUG)
# turn on httplib debug
httplib.HTTPConnection.debuglevel = 1
else:
# if debug status is False, turn off debug logging,
# setting log level to default `logging.WARNING`
for _, logger in self.logger.items():
logger.setLevel(logging.WARNING)
# turn off httplib debug
httplib.HTTPConnection.debuglevel = 0
@property
def logger_format(self):
"""The logger format.
The logger_formatter will be updated when sets logger_format.
:param value: The format string.
:type: str
"""
return self.__logger_format
@logger_format.setter
def logger_format(self, value):
"""The logger format.
The logger_formatter will be updated when sets logger_format.
:param value: The format string.
:type: str
"""
self.__logger_format = value
self.logger_formatter = logging.Formatter(self.__logger_format)
def get_api_key_with_prefix(self, identifier, alias=None):
"""Gets API key (with prefix if set).
:param identifier: The identifier of apiKey.
:param alias: The alternative identifier of apiKey.
:return: The token for api key authentication.
"""
if self.refresh_api_key_hook is not None:
self.refresh_api_key_hook(self)
key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
if key:
prefix = self.api_key_prefix.get(identifier)
if prefix:
return "%s %s" % (prefix, key)
else:
return key
def get_basic_auth_token(self):
"""Gets HTTP basic authentication header (string).
:return: The token for basic HTTP authentication.
"""
username = ""
if self.username is not None:
username = self.username
password = ""
if self.password is not None:
password = self.password
return urllib3.util.make_headers(
basic_auth=username + ':' + password
).get('authorization')
def auth_settings(self):
"""Gets Auth Settings dict for api client.
:return: The Auth Settings information dict.
"""
auth = {}
if self.access_token is not None:
auth['BearerAuth'] = {
'type': 'bearer',
'in': 'header',
'key': 'Authorization',
'value': 'Bearer ' + self.access_token
}
return auth
def to_debug_report(self):
"""Gets the essential information for debugging.
:return: The report for debugging.
"""
return "Python SDK Debug Report:\n" \
"OS: {env}\n" \
"Python Version: {pyversion}\n" \
"Version of the API: 7.0.0\n" \
"SDK Package Version: 1.0.0". \
format(env=sys.platform, pyversion=sys.version)
def get_host_settings(self):
"""Gets an array of host settings
:return: An array of host settings
"""
return [
{
'url': "https://api.thousandeyes.com",
'description': "ThousandEyes API production URL",
}
]
def get_host_from_settings(self, index, variables=None, servers=None):
"""Gets host URL based on the index and variables
:param index: array index of the host settings
:param variables: hash of variable and the corresponding value
:param servers: an array of host settings or None
:return: URL based on host settings
"""
if index is None:
return self._base_path
variables = {} if variables is None else variables
servers = self.get_host_settings() if servers is None else servers
try:
server = servers[index]
except IndexError:
raise ValueError(
"Invalid index {0} when selecting the host settings. "
"Must be less than {1}".format(index, len(servers)))
url = server['url']
# go through variables and replace placeholders
for variable_name, variable in server.get('variables', {}).items():
used_value = variables.get(
variable_name, variable['default_value'])
if 'enum_values' in variable \
and used_value not in variable['enum_values']:
raise ValueError(
"The variable `{0}` in the host URL has invalid value "
"{1}. Must be {2}.".format(
variable_name, variables[variable_name],
variable['enum_values']))
url = url.replace("{" + variable_name + "}", used_value)
return url
@property
def host(self):
"""Return generated host."""
return self.get_host_from_settings(self.server_index, variables=self.server_variables)
@host.setter
def host(self, value):
"""Fix base path."""
self._base_path = value
self.server_index = None

View File

@ -1,211 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
from typing import Any, Optional
from typing_extensions import Self
class OpenApiException(Exception):
"""The base exception class for all OpenAPIExceptions"""
class ApiTypeError(OpenApiException, TypeError):
def __init__(self, msg, path_to_item=None, valid_classes=None,
key_type=None) -> None:
""" Raises an exception for TypeErrors
Args:
msg (str): the exception message
Keyword Args:
path_to_item (list): a list of keys an indices to get to the
current_item
None if unset
valid_classes (tuple): the primitive classes that current item
should be an instance of
None if unset
key_type (bool): False if our value is a value in a dict
True if it is a key in a dict
False if our item is an item in a list
None if unset
"""
self.path_to_item = path_to_item
self.valid_classes = valid_classes
self.key_type = key_type
full_msg = msg
if path_to_item:
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
super(ApiTypeError, self).__init__(full_msg)
class ApiValueError(OpenApiException, ValueError):
def __init__(self, msg, path_to_item=None) -> None:
"""
Args:
msg (str): the exception message
Keyword Args:
path_to_item (list) the path to the exception in the
received_data dict. None if unset
"""
self.path_to_item = path_to_item
full_msg = msg
if path_to_item:
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
super(ApiValueError, self).__init__(full_msg)
class ApiAttributeError(OpenApiException, AttributeError):
def __init__(self, msg, path_to_item=None) -> None:
"""
Raised when an attribute reference or assignment fails.
Args:
msg (str): the exception message
Keyword Args:
path_to_item (None/list) the path to the exception in the
received_data dict
"""
self.path_to_item = path_to_item
full_msg = msg
if path_to_item:
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
super(ApiAttributeError, self).__init__(full_msg)
class ApiKeyError(OpenApiException, KeyError):
def __init__(self, msg, path_to_item=None) -> None:
"""
Args:
msg (str): the exception message
Keyword Args:
path_to_item (None/list) the path to the exception in the
received_data dict
"""
self.path_to_item = path_to_item
full_msg = msg
if path_to_item:
full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
super(ApiKeyError, self).__init__(full_msg)
class ApiException(OpenApiException):
def __init__(
self,
status=None,
reason=None,
http_resp=None,
*,
body: Optional[str] = None,
data: Optional[Any] = None,
) -> None:
self.status = status
self.reason = reason
self.body = body
self.data = data
self.headers = None
if http_resp:
if self.status is None:
self.status = http_resp.status
if self.reason is None:
self.reason = http_resp.reason
if self.body is None:
try:
self.body = http_resp.data.decode('utf-8')
except Exception:
pass
self.headers = http_resp.getheaders()
@classmethod
def from_response(
cls,
*,
http_resp,
body: Optional[str],
data: Optional[Any],
) -> Self:
if http_resp.status == 400:
raise BadRequestException(http_resp=http_resp, body=body, data=data)
if http_resp.status == 401:
raise UnauthorizedException(http_resp=http_resp, body=body, data=data)
if http_resp.status == 403:
raise ForbiddenException(http_resp=http_resp, body=body, data=data)
if http_resp.status == 404:
raise NotFoundException(http_resp=http_resp, body=body, data=data)
if http_resp.status == 429:
raise TooManyRequestsException(http_resp=http_resp, body=body, data=data)
if 500 <= http_resp.status <= 599:
raise ServiceException(http_resp=http_resp, body=body, data=data)
raise ApiException(http_resp=http_resp, body=body, data=data)
def __str__(self):
"""Custom error messages for exception"""
error_message = "({0})\n" \
"Reason: {1}\n".format(self.status, self.reason)
if self.headers:
error_message += "HTTP response headers: {0}\n".format(
self.headers)
if self.data or self.body:
error_message += "HTTP response body: {0}\n".format(self.data or self.body)
return error_message
class BadRequestException(ApiException):
pass
class NotFoundException(ApiException):
pass
class UnauthorizedException(ApiException):
pass
class ForbiddenException(ApiException):
pass
class TooManyRequestsException(ApiException):
pass
class ServiceException(ApiException):
pass
def render_path(path_to_item):
"""Returns a string representation of a path"""
result = ""
for pth in path_to_item:
if isinstance(pth, int):
result += "[{0}]".format(pth)
else:
result += "['{0}']".format(pth)
return result

View File

@ -1,258 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
import io
import json
import re
import ssl
import urllib3
from thousandeyes_sdk.core.exceptions import ApiException, ApiValueError
SUPPORTED_SOCKS_PROXIES = {"socks5", "socks5h", "socks4", "socks4a"}
RESTResponseType = urllib3.HTTPResponse
def is_socks_proxy_url(url):
if url is None:
return False
split_section = url.split("://")
if len(split_section) < 2:
return False
else:
return split_section[0].lower() in SUPPORTED_SOCKS_PROXIES
class RESTResponse(io.IOBase):
def __init__(self, resp) -> None:
self.response = resp
self.status = resp.status
self.reason = resp.reason
self.data = None
def read(self):
if self.data is None:
self.data = self.response.data
return self.data
def getheaders(self):
"""Returns a dictionary of the response headers."""
return self.response.headers
def getheader(self, name, default=None):
"""Returns a given response header."""
return self.response.headers.get(name, default)
class RESTClientObject:
def __init__(self, configuration) -> None:
# urllib3.PoolManager will pass all kw parameters to connectionpool
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
# https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
# Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
# cert_reqs
if configuration.verify_ssl:
cert_reqs = ssl.CERT_REQUIRED
else:
cert_reqs = ssl.CERT_NONE
pool_args = {
"cert_reqs": cert_reqs,
"ca_certs": configuration.ssl_ca_cert,
"cert_file": configuration.cert_file,
"key_file": configuration.key_file,
}
if configuration.assert_hostname is not None:
pool_args['assert_hostname'] = (
configuration.assert_hostname
)
if configuration.retries is not None:
pool_args['retries'] = configuration.retries
if configuration.tls_server_name:
pool_args['server_hostname'] = configuration.tls_server_name
if configuration.socket_options is not None:
pool_args['socket_options'] = configuration.socket_options
if configuration.connection_pool_maxsize is not None:
pool_args['maxsize'] = configuration.connection_pool_maxsize
# https pool manager
self.pool_manager: urllib3.PoolManager
if configuration.proxy:
if is_socks_proxy_url(configuration.proxy):
from urllib3.contrib.socks import SOCKSProxyManager
pool_args["proxy_url"] = configuration.proxy
pool_args["headers"] = configuration.proxy_headers
self.pool_manager = SOCKSProxyManager(**pool_args)
else:
pool_args["proxy_url"] = configuration.proxy
pool_args["proxy_headers"] = configuration.proxy_headers
self.pool_manager = urllib3.ProxyManager(**pool_args)
else:
self.pool_manager = urllib3.PoolManager(**pool_args)
def request(
self,
method,
url,
headers=None,
body=None,
post_params=None,
_request_timeout=None
):
"""Perform requests.
:param method: http request method
:param url: http request url
:param headers: http request headers
:param body: request json body, for `application/json`
:param post_params: request post parameters,
`application/x-www-form-urlencoded`
and `multipart/form-data`
:param _request_timeout: timeout setting for this request. If one
number provided, it will be total request
timeout. It can also be a pair (tuple) of
(connection, read) timeouts.
"""
method = method.upper()
assert method in [
'GET',
'HEAD',
'DELETE',
'POST',
'PUT',
'PATCH',
'OPTIONS'
]
if post_params and body:
raise ApiValueError(
"body parameter cannot be used with post_params parameter."
)
post_params = post_params or {}
headers = headers or {}
timeout = None
if _request_timeout:
if isinstance(_request_timeout, (int, float)):
timeout = urllib3.Timeout(total=_request_timeout)
elif (
isinstance(_request_timeout, tuple)
and len(_request_timeout) == 2
):
timeout = urllib3.Timeout(
connect=_request_timeout[0],
read=_request_timeout[1]
)
try:
# For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
# no content type provided or payload is json
content_type = headers.get('Content-Type')
if (
not content_type
or re.search('json', content_type, re.IGNORECASE)
):
request_body = None
if body is not None:
request_body = json.dumps(body)
r = self.pool_manager.request(
method,
url,
body=request_body,
timeout=timeout,
headers=headers,
preload_content=False
)
elif content_type == 'application/x-www-form-urlencoded':
r = self.pool_manager.request(
method,
url,
fields=post_params,
encode_multipart=False,
timeout=timeout,
headers=headers,
preload_content=False
)
elif content_type == 'multipart/form-data':
# must del headers['Content-Type'], or the correct
# Content-Type which generated by urllib3 will be
# overwritten.
del headers['Content-Type']
# Ensures that dict objects are serialized
post_params = [(a, json.dumps(b)) if isinstance(b, dict) else (a, b) for a, b in
post_params]
r = self.pool_manager.request(
method,
url,
fields=post_params,
encode_multipart=True,
timeout=timeout,
headers=headers,
preload_content=False
)
# Pass a `string` parameter directly in the body to support
# other content types than JSON when `body` argument is
# provided in serialized form.
elif isinstance(body, str) or isinstance(body, bytes):
r = self.pool_manager.request(
method,
url,
body=body,
timeout=timeout,
headers=headers,
preload_content=False
)
elif headers['Content-Type'] == 'text/plain' and isinstance(body, bool):
request_body = "true" if body else "false"
r = self.pool_manager.request(
method,
url,
body=request_body,
preload_content=False,
timeout=timeout,
headers=headers)
else:
# Cannot generate the request from given parameters
msg = """Cannot prepare a request message for provided
arguments. Please check that your arguments match
declared content type."""
raise ApiException(status=0, reason=msg)
# For `GET`, `HEAD`
else:
r = self.pool_manager.request(
method,
url,
fields={},
timeout=timeout,
headers=headers,
preload_content=False
)
except urllib3.exceptions.SSLError as e:
msg = "\n".join([type(e).__name__, str(e)])
raise ApiException(status=0, reason=msg)
return RESTResponse(r)

View File

@ -1,80 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
import re
import time
from typing import Collection, Optional, Union
from urllib3 import BaseHTTPResponse
from urllib3.util.retry import RequestHistory, Retry
class ThousandEyesRetry(Retry):
RATE_LIMIT_RESET_HEADERS = {
"x-organization-rate-limit-reset",
"x-instant-test-rate-limit-reset"
}
RESET_HEADER_PATTERN = re.compile(r"^\s*[0-9]+\s*$")
HTTP_TOO_MANY_REQUESTS = 429
def __init__(
self,
total: Union[bool, int, None] = 3,
connect: Optional[int] = None,
read: Optional[int] = None,
redirect: Union[bool, int, None] = None,
status: Optional[int] = 1,
other: Optional[int] = None,
allowed_methods: Optional[Collection[str]] = Retry.DEFAULT_ALLOWED_METHODS,
status_forcelist=None,
backoff_factor: float = 0,
backoff_max: float = Retry.DEFAULT_BACKOFF_MAX,
raise_on_redirect: bool = False,
raise_on_status: bool = False,
history: Optional[tuple[RequestHistory, ...]] = None,
respect_retry_after_header: bool = True,
remove_headers_on_redirect: Collection[str] = Retry.DEFAULT_REMOVE_HEADERS_ON_REDIRECT,
backoff_jitter: float = 0.0) -> None:
super().__init__(total, connect, read, redirect, status, other, allowed_methods,
status_forcelist, backoff_factor, backoff_max, raise_on_redirect,
raise_on_status, history, respect_retry_after_header,
remove_headers_on_redirect, backoff_jitter)
def is_retry(self, method: str, status_code: int, has_retry_after: bool = False) -> bool:
# Always retry on 429, regardless of method or status_forcelist
return (status_code == self.HTTP_TOO_MANY_REQUESTS or
super().is_retry(method, status_code, has_retry_after))
def get_retry_after(self, response: BaseHTTPResponse) -> Optional[float]:
retry_after: Optional[float] = super().get_retry_after(response)
if retry_after:
return retry_after
for header in self.RATE_LIMIT_RESET_HEADERS:
value = self._parse_reset_header(response.headers.get(header))
if value and (retry_after is None or value > retry_after):
retry_after = value
return retry_after
def _parse_reset_header(self, value: Optional[str]) -> Optional[float]:
if value is None or not self.RESET_HEADER_PATTERN.match(value):
return None
seconds: float = int(value) - time.time()
return max(seconds, 0)

View File

@ -1,22 +0,0 @@
# Copyright 2024 Cisco Systems, Inc. and its affiliates
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
import thousandeyes_sdk.core
class Version:
@staticmethod
def get() -> str:
return thousandeyes_sdk.core.__version__

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/Credential.md docs/Credential.md
docs/CredentialRequest.md docs/CredentialRequest.md

View File

@ -19,7 +19,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.credentials.models import thousandeyes_sdk.credentials.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.credentials.models.credentials import Credentials
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class CredentialsApi: class CredentialsApi:
@ -42,7 +42,7 @@ class CredentialsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-credentials"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/ActiveWithin.md docs/ActiveWithin.md
docs/AgentStatusDatasource.md docs/AgentStatusDatasource.md

View File

@ -9,7 +9,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.dashboards.models import thousandeyes_sdk.dashboards.models
@ -31,7 +32,6 @@ from thousandeyes_sdk.dashboards.models.update_snapshot_expiration_date_api_requ
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DashboardSnapshotsApi: class DashboardSnapshotsApi:
@ -44,7 +44,7 @@ class DashboardSnapshotsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-dashboards"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.dashboards.models import thousandeyes_sdk.dashboards.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.dashboards.models.dashboard_order import DashboardOrder
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DashboardsApi: class DashboardsApi:
@ -43,7 +43,7 @@ class DashboardsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-dashboards"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.dashboards.models import thousandeyes_sdk.dashboards.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.dashboards.models.api_context_filters_response import ApiC
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DashboardsFiltersApi: class DashboardsFiltersApi:
@ -41,7 +41,7 @@ class DashboardsFiltersApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-dashboards"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AddressProfile.md docs/AddressProfile.md
docs/AddressType.md docs/AddressType.md

View File

@ -11,7 +11,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_agents.models import thousandeyes_sdk.endpoint_agents.models
@ -26,7 +27,6 @@ from thousandeyes_sdk.endpoint_agents.models.connection_string import Connection
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AdministrativeEndpointsApi: class AdministrativeEndpointsApi:
@ -39,7 +39,7 @@ class AdministrativeEndpointsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_agents.models import thousandeyes_sdk.endpoint_agents.models
@ -31,7 +32,6 @@ from thousandeyes_sdk.endpoint_agents.models.list_endpoint_agents_response impor
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ManageAgentsApi: class ManageAgentsApi:
@ -44,7 +44,7 @@ class ManageAgentsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_agents.models import thousandeyes_sdk.endpoint_agents.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.endpoint_agents.models.bulk_agent_transfer_response import
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class TransferApi: class TransferApi:
@ -41,7 +41,7 @@ class TransferApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-agents"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AgentToServerInstantScheduledTestApi.md docs/AgentToServerInstantScheduledTestApi.md
docs/AlertDirection.md docs/AlertDirection.md

View File

@ -19,7 +19,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_instant_tests.models import thousandeyes_sdk.endpoint_instant_tests.models
@ -27,7 +28,6 @@ from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_agent_to_server_tes
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AgentToServerInstantScheduledTestApi: class AgentToServerInstantScheduledTestApi:
@ -40,7 +40,7 @@ class AgentToServerInstantScheduledTestApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_instant_tests.models import thousandeyes_sdk.endpoint_instant_tests.models
@ -27,7 +28,6 @@ from thousandeyes_sdk.endpoint_instant_tests.models.endpoint_http_server_test im
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class HttpServerInstantScheduledTestApi: class HttpServerInstantScheduledTestApi:
@ -40,7 +40,7 @@ class HttpServerInstantScheduledTestApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_instant_tests.models import thousandeyes_sdk.endpoint_instant_tests.models
@ -25,7 +26,6 @@ from typing_extensions import Annotated
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class RunExistingTestApi: class RunExistingTestApi:
@ -38,7 +38,7 @@ class RunExistingTestApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/Error.md docs/Error.md
docs/Expand.md docs/Expand.md

View File

@ -10,7 +10,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_labels.models import thousandeyes_sdk.endpoint_labels.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.endpoint_labels.models.labels import Labels
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ManageLabelsApi: class ManageLabelsApi:
@ -43,7 +43,7 @@ class ManageLabelsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-labels"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AlertDirection.md docs/AlertDirection.md
docs/AlertRoundsViolationMode.md docs/AlertRoundsViolationMode.md

View File

@ -9,7 +9,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_test_results.models import thousandeyes_sdk.endpoint_test_results.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.endpoint_test_results.models.local_network_topology_result
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class LocalNetworkTestsResultsApi: class LocalNetworkTestsResultsApi:
@ -43,7 +43,7 @@ class LocalNetworkTestsResultsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_test_results.models import thousandeyes_sdk.endpoint_test_results.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.endpoint_test_results.models.path_vis_dynamic_test_results
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class NetworkDynamicTestsResultsApi: class NetworkDynamicTestsResultsApi:
@ -43,7 +43,7 @@ class NetworkDynamicTestsResultsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_test_results.models import thousandeyes_sdk.endpoint_test_results.models
@ -32,7 +33,6 @@ from thousandeyes_sdk.endpoint_test_results.models.tests_data_rounds_search impo
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class NetworkScheduledTestsResultsApi: class NetworkScheduledTestsResultsApi:
@ -45,7 +45,7 @@ class NetworkScheduledTestsResultsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_test_results.models import thousandeyes_sdk.endpoint_test_results.models
@ -33,7 +34,6 @@ from thousandeyes_sdk.endpoint_test_results.models.real_user_test_page_results i
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class RealUserTestsResultsApi: class RealUserTestsResultsApi:
@ -46,7 +46,7 @@ class RealUserTestsResultsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_test_results.models import thousandeyes_sdk.endpoint_test_results.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.endpoint_test_results.models.http_test_results import Http
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class WebHTTPServerScheduledTestResultsApi: class WebHTTPServerScheduledTestResultsApi:
@ -41,7 +41,7 @@ class WebHTTPServerScheduledTestResultsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-test-results"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AlertDirection.md docs/AlertDirection.md
docs/AlertRoundsViolationMode.md docs/AlertRoundsViolationMode.md

View File

@ -11,7 +11,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_tests.models import thousandeyes_sdk.endpoint_tests.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_dynamic_test_update import
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DynamicTestsAgentToServerApi: class DynamicTestsAgentToServerApi:
@ -42,7 +42,7 @@ class DynamicTestsAgentToServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_tests.models import thousandeyes_sdk.endpoint_tests.models
@ -26,7 +27,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_tests import EndpointTests
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ListEndpointScheduledTestsApi: class ListEndpointScheduledTestsApi:
@ -39,7 +39,7 @@ class ListEndpointScheduledTestsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_tests.models import thousandeyes_sdk.endpoint_tests.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_network_test_update import
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ScheduledTestsAgentToServerApi: class ScheduledTestsAgentToServerApi:
@ -42,7 +42,7 @@ class ScheduledTestsAgentToServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.endpoint_tests.models import thousandeyes_sdk.endpoint_tests.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.endpoint_tests.models.endpoint_http_test_update import End
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class ScheduledTestsHTTPServerApi: class ScheduledTestsHTTPServerApi:
@ -42,7 +42,7 @@ class ScheduledTestsHTTPServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-endpoint-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/APIApi.md docs/APIApi.md
docs/Agent.md docs/Agent.md

View File

@ -14,7 +14,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AgentToAgentApi: class AgentToAgentApi:
@ -41,7 +41,7 @@ class AgentToAgentApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AgentToServerApi: class AgentToServerApi:
@ -41,7 +41,7 @@ class AgentToServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class APIApi: class APIApi:
@ -41,7 +41,7 @@ class APIApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DNSSecurityApi: class DNSSecurityApi:
@ -41,7 +41,7 @@ class DNSSecurityApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DNSServerApi: class DNSServerApi:
@ -41,7 +41,7 @@ class DNSServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.expand import Expand
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DNSTraceApi: class DNSTraceApi:
@ -41,7 +41,7 @@ class DNSTraceApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.server_instant_test_request import Se
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class FTPServerApi: class FTPServerApi:
@ -41,7 +41,7 @@ class FTPServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.page_load_instant_test_request import
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class HTTPPageLoadApi: class HTTPPageLoadApi:
@ -41,7 +41,7 @@ class HTTPPageLoadApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.http_server_instant_test_request impo
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class HTTPServerApi: class HTTPServerApi:
@ -41,7 +41,7 @@ class HTTPServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -25,7 +26,6 @@ from typing_extensions import Annotated
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class RunApi: class RunApi:
@ -38,7 +38,7 @@ class RunApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.sip_server_instant_test_response impo
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class SIPServerApi: class SIPServerApi:
@ -41,7 +41,7 @@ class SIPServerApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.voice_instant_test_request import Voi
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class VoiceApi: class VoiceApi:
@ -41,7 +41,7 @@ class VoiceApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.instant_tests.models import thousandeyes_sdk.instant_tests.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.instant_tests.models.web_transaction_instant_test_request
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class WebTransactionApi: class WebTransactionApi:
@ -41,7 +41,7 @@ class WebTransactionApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-instant-tests"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/ApiAffectedAgent.md docs/ApiAffectedAgent.md
docs/ApiAffectedTest.md docs/ApiAffectedTest.md

View File

@ -20,7 +20,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.internet_insights.models import thousandeyes_sdk.internet_insights.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.internet_insights.models.api_catalog_provider_response imp
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class CatalogProvidersApi: class CatalogProvidersApi:
@ -41,7 +41,7 @@ class CatalogProvidersApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-internet-insights"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.internet_insights.models import thousandeyes_sdk.internet_insights.models
@ -29,7 +30,6 @@ from thousandeyes_sdk.internet_insights.models.api_outages_response import ApiOu
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class OutagesAPIPublicApi: class OutagesAPIPublicApi:
@ -42,7 +42,7 @@ class OutagesAPIPublicApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-internet-insights"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AgentApi.md docs/AgentApi.md
docs/AllLabelsApi.md docs/AllLabelsApi.md

View File

@ -10,7 +10,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.labels.models import thousandeyes_sdk.labels.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AgentApi: class AgentApi:
@ -41,7 +41,7 @@ class AgentApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.labels.models import thousandeyes_sdk.labels.models
@ -26,7 +27,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class AllLabelsApi: class AllLabelsApi:
@ -39,7 +39,7 @@ class AllLabelsApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.labels.models import thousandeyes_sdk.labels.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class DashboardApi: class DashboardApi:
@ -41,7 +41,7 @@ class DashboardApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.labels.models import thousandeyes_sdk.labels.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class EndpointTestApi: class EndpointTestApi:
@ -41,7 +41,7 @@ class EndpointTestApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
self.api_client = api_client self.api_client = api_client

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.labels.models import thousandeyes_sdk.labels.models
@ -28,7 +29,6 @@ from thousandeyes_sdk.labels.models.labels import Labels
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class TestApi: class TestApi:
@ -41,7 +41,7 @@ class TestApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-labels"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AppAndSelfLinks.md docs/AppAndSelfLinks.md
docs/CreateTestSnapshotApi.md docs/CreateTestSnapshotApi.md

View File

@ -9,7 +9,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.snapshots.models import thousandeyes_sdk.snapshots.models
@ -27,7 +28,6 @@ from thousandeyes_sdk.snapshots.models.snapshot_response import SnapshotResponse
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class CreateTestSnapshotApi: class CreateTestSnapshotApi:
@ -40,7 +40,7 @@ class CreateTestSnapshotApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-snapshots"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/ApiError.md docs/ApiError.md
docs/ApiErrorIntegrationLimits.md docs/ApiErrorIntegrationLimits.md

View File

@ -21,7 +21,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

View File

@ -15,6 +15,7 @@ import warnings
from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
from typing import Any, Dict, List, Optional, Tuple, Union from typing import Any, Dict, List, Optional, Tuple, Union
from typing_extensions import Annotated from typing_extensions import Annotated
from importlib.metadata import version
import thousandeyes_sdk.streaming.models import thousandeyes_sdk.streaming.models
@ -30,7 +31,6 @@ from thousandeyes_sdk.streaming.models.stream_type import StreamType
from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized from thousandeyes_sdk.core.api_client import ApiClient, RequestSerialized
from thousandeyes_sdk.core.api_response import ApiResponse from thousandeyes_sdk.core.api_response import ApiResponse
from thousandeyes_sdk.core.rest import RESTResponseType from thousandeyes_sdk.core.rest import RESTResponseType
from thousandeyes_sdk.core.version import Version
class StreamingApi: class StreamingApi:
@ -43,7 +43,7 @@ class StreamingApi:
def __init__(self, api_client=None) -> None: def __init__(self, api_client=None) -> None:
if api_client is None: if api_client is None:
api_client = ApiClient.get_default() api_client = ApiClient.get_default()
api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(Version.get()) api_client.user_agent = "ThousandEyesSDK-Python/{0}".format(version("thousandeyes-sdk-streaming"))
self.api_client = api_client self.api_client = api_client

View File

@ -1,4 +1,3 @@
.openapi-generator-ignore
README.md README.md
docs/AccessType.md docs/AccessType.md
docs/ApiError.md docs/ApiError.md

View File

@ -22,7 +22,7 @@ This Python package is automatically generated by the [OpenAPI Generator](https:
## Requirements. ## Requirements.
Python 3.7+ Python 3.8+
## Installation & Usage ## Installation & Usage
### pip install ### pip install

Some files were not shown because too many files have changed in this diff Show More