diff --git a/qase-api-client/docs/ParameterShared.md b/qase-api-client/docs/ParameterShared.md index 4845d003..820388a4 100644 --- a/qase-api-client/docs/ParameterShared.md +++ b/qase-api-client/docs/ParameterShared.md @@ -6,7 +6,7 @@ Shared parameter Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**shared_id** | **str** | | +**shared_id** | **UUID** | | ## Example diff --git a/qase-api-client/docs/SharedParameter.md b/qase-api-client/docs/SharedParameter.md index ea9610e8..798431a5 100644 --- a/qase-api-client/docs/SharedParameter.md +++ b/qase-api-client/docs/SharedParameter.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**id** | **str** | | +**id** | **UUID** | | **title** | **str** | | **type** | **str** | | **project_codes** | **List[str]** | | diff --git a/qase-api-client/docs/SharedParametersApi.md b/qase-api-client/docs/SharedParametersApi.md index a60d6077..77c83276 100644 --- a/qase-api-client/docs/SharedParametersApi.md +++ b/qase-api-client/docs/SharedParametersApi.md @@ -133,7 +133,7 @@ configuration.api_key['TokenAuth'] = os.environ["API_KEY"] with qase.api_client_v1.ApiClient(configuration) as api_client: # Create an instance of the API class api_instance = qase.api_client_v1.SharedParametersApi(api_client) - id = 'id_example' # str | Identifier. + id = UUID('38400000-8cf0-11bd-b23e-10b96e4ef00d') # UUID | Identifier. try: # Delete shared parameter @@ -151,7 +151,7 @@ with qase.api_client_v1.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **str**| Identifier. | + **id** | **UUID**| Identifier. | ### Return type @@ -215,7 +215,7 @@ configuration.api_key['TokenAuth'] = os.environ["API_KEY"] with qase.api_client_v1.ApiClient(configuration) as api_client: # Create an instance of the API class api_instance = qase.api_client_v1.SharedParametersApi(api_client) - id = 'id_example' # str | Identifier. + id = UUID('38400000-8cf0-11bd-b23e-10b96e4ef00d') # UUID | Identifier. try: # Get a specific shared parameter @@ -233,7 +233,7 @@ with qase.api_client_v1.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **str**| Identifier. | + **id** | **UUID**| Identifier. | ### Return type @@ -388,7 +388,7 @@ configuration.api_key['TokenAuth'] = os.environ["API_KEY"] with qase.api_client_v1.ApiClient(configuration) as api_client: # Create an instance of the API class api_instance = qase.api_client_v1.SharedParametersApi(api_client) - id = 'id_example' # str | Identifier. + id = UUID('38400000-8cf0-11bd-b23e-10b96e4ef00d') # UUID | Identifier. shared_parameter_update = qase.api_client_v1.SharedParameterUpdate() # SharedParameterUpdate | try: @@ -407,7 +407,7 @@ with qase.api_client_v1.ApiClient(configuration) as api_client: Name | Type | Description | Notes ------------- | ------------- | ------------- | ------------- - **id** | **str**| Identifier. | + **id** | **UUID**| Identifier. | **shared_parameter_update** | [**SharedParameterUpdate**](SharedParameterUpdate.md)| | ### Return type diff --git a/qase-api-client/docs/SharedStepContent.md b/qase-api-client/docs/SharedStepContent.md index 191b3008..d387fd65 100644 --- a/qase-api-client/docs/SharedStepContent.md +++ b/qase-api-client/docs/SharedStepContent.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **action** | **str** | | [optional] **expected_result** | **str** | | [optional] **attachments** | [**List[AttachmentHash]**](AttachmentHash.md) | | [optional] +**steps** | **List[object]** | Nested steps will be here. The same structure is used for them. | [optional] ## Example diff --git a/qase-api-client/docs/SharedStepContentCreate.md b/qase-api-client/docs/SharedStepContentCreate.md index b2da7889..6594f92b 100644 --- a/qase-api-client/docs/SharedStepContentCreate.md +++ b/qase-api-client/docs/SharedStepContentCreate.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **expected_result** | **str** | | [optional] **data** | **str** | | [optional] **attachments** | **List[str]** | A list of Attachment hashes. | [optional] +**steps** | **List[object]** | Nested steps will be here. The same structure is used for them. | [optional] ## Example diff --git a/qase-api-client/docs/TestCaseParameter.md b/qase-api-client/docs/TestCaseParameter.md index ee1e081f..9ea72711 100644 --- a/qase-api-client/docs/TestCaseParameter.md +++ b/qase-api-client/docs/TestCaseParameter.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**shared_id** | **str** | | [optional] +**shared_id** | **UUID** | | [optional] **type** | **str** | | **item** | [**ParameterSingle**](ParameterSingle.md) | | **items** | [**List[ParameterSingle]**](ParameterSingle.md) | | diff --git a/qase-api-client/docs/TestCaseParameterBase.md b/qase-api-client/docs/TestCaseParameterBase.md index 73ec461a..12ea4e7c 100644 --- a/qase-api-client/docs/TestCaseParameterBase.md +++ b/qase-api-client/docs/TestCaseParameterBase.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**shared_id** | **str** | | [optional] +**shared_id** | **UUID** | | [optional] **type** | **str** | | ## Example diff --git a/qase-api-client/docs/TestCaseParameterGroup.md b/qase-api-client/docs/TestCaseParameterGroup.md index 38d44f2e..18a7be17 100644 --- a/qase-api-client/docs/TestCaseParameterGroup.md +++ b/qase-api-client/docs/TestCaseParameterGroup.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**shared_id** | **str** | | [optional] +**shared_id** | **UUID** | | [optional] **type** | **str** | | **items** | [**List[ParameterSingle]**](ParameterSingle.md) | | diff --git a/qase-api-client/docs/TestCaseParameterSingle.md b/qase-api-client/docs/TestCaseParameterSingle.md index 9681b6ae..94a81c52 100644 --- a/qase-api-client/docs/TestCaseParameterSingle.md +++ b/qase-api-client/docs/TestCaseParameterSingle.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**shared_id** | **str** | | [optional] +**shared_id** | **UUID** | | [optional] **type** | **str** | | **item** | [**ParameterSingle**](ParameterSingle.md) | | diff --git a/qase-api-client/docs/TestCaseParametercreate.md b/qase-api-client/docs/TestCaseParametercreate.md index c1e35622..cbc29e22 100644 --- a/qase-api-client/docs/TestCaseParametercreate.md +++ b/qase-api-client/docs/TestCaseParametercreate.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**shared_id** | **str** | | +**shared_id** | **UUID** | | **title** | **str** | | **values** | **List[str]** | | **items** | [**List[ParameterSingle]**](ParameterSingle.md) | | diff --git a/qase-api-client/docs/UuidResponseAllOfResult.md b/qase-api-client/docs/UuidResponseAllOfResult.md index 0fd2bcd5..1f51bf0b 100644 --- a/qase-api-client/docs/UuidResponseAllOfResult.md +++ b/qase-api-client/docs/UuidResponseAllOfResult.md @@ -5,7 +5,7 @@ Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**id** | **str** | | [optional] +**id** | **UUID** | | [optional] ## Example diff --git a/qase-api-client/pyproject.toml b/qase-api-client/pyproject.toml index e9c03e53..bf68df6e 100644 --- a/qase-api-client/pyproject.toml +++ b/qase-api-client/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "qase-api-client" -version = "2.0.3" +version = "2.0.4" description = "Qase TestOps API V1 client for Python" readme = "README.md" authors = [{name = "Qase Team", email = "support@qase.io"}] diff --git a/qase-api-client/src/qase/api_client_v1/__init__.py b/qase-api-client/src/qase/api_client_v1/__init__.py index adda69ec..82ba9619 100644 --- a/qase-api-client/src/qase/api_client_v1/__init__.py +++ b/qase-api-client/src/qase/api_client_v1/__init__.py @@ -219,220 +219,7 @@ "UuidResponseAllOfResult", ] -if __import__("typing").TYPE_CHECKING: - # import apis into sdk package - from qase.api_client_v1.api.attachments_api import AttachmentsApi as AttachmentsApi - from qase.api_client_v1.api.authors_api import AuthorsApi as AuthorsApi - from qase.api_client_v1.api.cases_api import CasesApi as CasesApi - from qase.api_client_v1.api.configurations_api import ConfigurationsApi as ConfigurationsApi - from qase.api_client_v1.api.custom_fields_api import CustomFieldsApi as CustomFieldsApi - from qase.api_client_v1.api.defects_api import DefectsApi as DefectsApi - from qase.api_client_v1.api.environments_api import EnvironmentsApi as EnvironmentsApi - from qase.api_client_v1.api.milestones_api import MilestonesApi as MilestonesApi - from qase.api_client_v1.api.plans_api import PlansApi as PlansApi - from qase.api_client_v1.api.projects_api import ProjectsApi as ProjectsApi - from qase.api_client_v1.api.results_api import ResultsApi as ResultsApi - from qase.api_client_v1.api.runs_api import RunsApi as RunsApi - from qase.api_client_v1.api.search_api import SearchApi as SearchApi - from qase.api_client_v1.api.shared_parameters_api import SharedParametersApi as SharedParametersApi - from qase.api_client_v1.api.shared_steps_api import SharedStepsApi as SharedStepsApi - from qase.api_client_v1.api.suites_api import SuitesApi as SuitesApi - from qase.api_client_v1.api.system_fields_api import SystemFieldsApi as SystemFieldsApi - from qase.api_client_v1.api.users_api import UsersApi as UsersApi - - # import ApiClient - from qase.api_client_v1.api_response import ApiResponse as ApiResponse - from qase.api_client_v1.api_client import ApiClient as ApiClient - from qase.api_client_v1.configuration import Configuration as Configuration - from qase.api_client_v1.exceptions import OpenApiException as OpenApiException - from qase.api_client_v1.exceptions import ApiTypeError as ApiTypeError - from qase.api_client_v1.exceptions import ApiValueError as ApiValueError - from qase.api_client_v1.exceptions import ApiKeyError as ApiKeyError - from qase.api_client_v1.exceptions import ApiAttributeError as ApiAttributeError - from qase.api_client_v1.exceptions import ApiException as ApiException - - # import models into sdk package - from qase.api_client_v1.models.attachment import Attachment as Attachment - from qase.api_client_v1.models.attachment_get import AttachmentGet as AttachmentGet - from qase.api_client_v1.models.attachment_hash import AttachmentHash as AttachmentHash - from qase.api_client_v1.models.attachment_list_response import AttachmentListResponse as AttachmentListResponse - from qase.api_client_v1.models.attachment_list_response_all_of_result import AttachmentListResponseAllOfResult as AttachmentListResponseAllOfResult - from qase.api_client_v1.models.attachment_response import AttachmentResponse as AttachmentResponse - from qase.api_client_v1.models.attachment_uploads_response import AttachmentUploadsResponse as AttachmentUploadsResponse - from qase.api_client_v1.models.attachmentupload import Attachmentupload as Attachmentupload - from qase.api_client_v1.models.author import Author as Author - from qase.api_client_v1.models.author_list_response import AuthorListResponse as AuthorListResponse - from qase.api_client_v1.models.author_list_response_all_of_result import AuthorListResponseAllOfResult as AuthorListResponseAllOfResult - from qase.api_client_v1.models.author_response import AuthorResponse as AuthorResponse - from qase.api_client_v1.models.base_response import BaseResponse as BaseResponse - from qase.api_client_v1.models.bulk200_response import Bulk200Response as Bulk200Response - from qase.api_client_v1.models.bulk200_response_all_of_result import Bulk200ResponseAllOfResult as Bulk200ResponseAllOfResult - from qase.api_client_v1.models.configuration_model import ConfigurationModel as ConfigurationModel - from qase.api_client_v1.models.configuration_create import ConfigurationCreate as ConfigurationCreate - from qase.api_client_v1.models.configuration_group import ConfigurationGroup as ConfigurationGroup - from qase.api_client_v1.models.configuration_group_create import ConfigurationGroupCreate as ConfigurationGroupCreate - from qase.api_client_v1.models.configuration_list_response import ConfigurationListResponse as ConfigurationListResponse - from qase.api_client_v1.models.configuration_list_response_all_of_result import ConfigurationListResponseAllOfResult as ConfigurationListResponseAllOfResult - from qase.api_client_v1.models.custom_field import CustomField as CustomField - from qase.api_client_v1.models.custom_field_create import CustomFieldCreate as CustomFieldCreate - from qase.api_client_v1.models.custom_field_create_value_inner import CustomFieldCreateValueInner as CustomFieldCreateValueInner - from qase.api_client_v1.models.custom_field_list_response import CustomFieldListResponse as CustomFieldListResponse - from qase.api_client_v1.models.custom_field_response import CustomFieldResponse as CustomFieldResponse - from qase.api_client_v1.models.custom_field_update import CustomFieldUpdate as CustomFieldUpdate - from qase.api_client_v1.models.custom_field_value import CustomFieldValue as CustomFieldValue - from qase.api_client_v1.models.custom_fields_response import CustomFieldsResponse as CustomFieldsResponse - from qase.api_client_v1.models.custom_fields_response_all_of_result import CustomFieldsResponseAllOfResult as CustomFieldsResponseAllOfResult - from qase.api_client_v1.models.defect import Defect as Defect - from qase.api_client_v1.models.defect_create import DefectCreate as DefectCreate - from qase.api_client_v1.models.defect_list_response import DefectListResponse as DefectListResponse - from qase.api_client_v1.models.defect_list_response_all_of_result import DefectListResponseAllOfResult as DefectListResponseAllOfResult - from qase.api_client_v1.models.defect_query import DefectQuery as DefectQuery - from qase.api_client_v1.models.defect_response import DefectResponse as DefectResponse - from qase.api_client_v1.models.defect_status import DefectStatus as DefectStatus - from qase.api_client_v1.models.defect_update import DefectUpdate as DefectUpdate - from qase.api_client_v1.models.environment import Environment as Environment - from qase.api_client_v1.models.environment_create import EnvironmentCreate as EnvironmentCreate - from qase.api_client_v1.models.environment_list_response import EnvironmentListResponse as EnvironmentListResponse - from qase.api_client_v1.models.environment_list_response_all_of_result import EnvironmentListResponseAllOfResult as EnvironmentListResponseAllOfResult - from qase.api_client_v1.models.environment_response import EnvironmentResponse as EnvironmentResponse - from qase.api_client_v1.models.environment_update import EnvironmentUpdate as EnvironmentUpdate - from qase.api_client_v1.models.external_issue import ExternalIssue as ExternalIssue - from qase.api_client_v1.models.external_issue_issues_inner import ExternalIssueIssuesInner as ExternalIssueIssuesInner - from qase.api_client_v1.models.hash_response import HashResponse as HashResponse - from qase.api_client_v1.models.hash_response_all_of_result import HashResponseAllOfResult as HashResponseAllOfResult - from qase.api_client_v1.models.id_response import IdResponse as IdResponse - from qase.api_client_v1.models.id_response_all_of_result import IdResponseAllOfResult as IdResponseAllOfResult - from qase.api_client_v1.models.milestone import Milestone as Milestone - from qase.api_client_v1.models.milestone_create import MilestoneCreate as MilestoneCreate - from qase.api_client_v1.models.milestone_list_response import MilestoneListResponse as MilestoneListResponse - from qase.api_client_v1.models.milestone_list_response_all_of_result import MilestoneListResponseAllOfResult as MilestoneListResponseAllOfResult - from qase.api_client_v1.models.milestone_response import MilestoneResponse as MilestoneResponse - from qase.api_client_v1.models.milestone_update import MilestoneUpdate as MilestoneUpdate - from qase.api_client_v1.models.parameter_group import ParameterGroup as ParameterGroup - from qase.api_client_v1.models.parameter_shared import ParameterShared as ParameterShared - from qase.api_client_v1.models.parameter_single import ParameterSingle as ParameterSingle - from qase.api_client_v1.models.plan import Plan as Plan - from qase.api_client_v1.models.plan_create import PlanCreate as PlanCreate - from qase.api_client_v1.models.plan_detailed import PlanDetailed as PlanDetailed - from qase.api_client_v1.models.plan_detailed_all_of_cases import PlanDetailedAllOfCases as PlanDetailedAllOfCases - from qase.api_client_v1.models.plan_list_response import PlanListResponse as PlanListResponse - from qase.api_client_v1.models.plan_list_response_all_of_result import PlanListResponseAllOfResult as PlanListResponseAllOfResult - from qase.api_client_v1.models.plan_query import PlanQuery as PlanQuery - from qase.api_client_v1.models.plan_response import PlanResponse as PlanResponse - from qase.api_client_v1.models.plan_update import PlanUpdate as PlanUpdate - from qase.api_client_v1.models.project import Project as Project - from qase.api_client_v1.models.project_access import ProjectAccess as ProjectAccess - from qase.api_client_v1.models.project_code_response import ProjectCodeResponse as ProjectCodeResponse - from qase.api_client_v1.models.project_code_response_all_of_result import ProjectCodeResponseAllOfResult as ProjectCodeResponseAllOfResult - from qase.api_client_v1.models.project_counts import ProjectCounts as ProjectCounts - from qase.api_client_v1.models.project_counts_defects import ProjectCountsDefects as ProjectCountsDefects - from qase.api_client_v1.models.project_counts_runs import ProjectCountsRuns as ProjectCountsRuns - from qase.api_client_v1.models.project_create import ProjectCreate as ProjectCreate - from qase.api_client_v1.models.project_list_response import ProjectListResponse as ProjectListResponse - from qase.api_client_v1.models.project_list_response_all_of_result import ProjectListResponseAllOfResult as ProjectListResponseAllOfResult - from qase.api_client_v1.models.project_response import ProjectResponse as ProjectResponse - from qase.api_client_v1.models.qql_defect import QqlDefect as QqlDefect - from qase.api_client_v1.models.qql_plan import QqlPlan as QqlPlan - from qase.api_client_v1.models.qql_test_case import QqlTestCase as QqlTestCase - from qase.api_client_v1.models.qql_test_case_params import QqlTestCaseParams as QqlTestCaseParams - from qase.api_client_v1.models.requirement import Requirement as Requirement - from qase.api_client_v1.models.requirement_query import RequirementQuery as RequirementQuery - from qase.api_client_v1.models.response import Response as Response - from qase.api_client_v1.models.result import Result as Result - from qase.api_client_v1.models.result_create import ResultCreate as ResultCreate - from qase.api_client_v1.models.result_create_bulk import ResultCreateBulk as ResultCreateBulk - from qase.api_client_v1.models.result_create_case import ResultCreateCase as ResultCreateCase - from qase.api_client_v1.models.result_create_response import ResultCreateResponse as ResultCreateResponse - from qase.api_client_v1.models.result_create_response_all_of_result import ResultCreateResponseAllOfResult as ResultCreateResponseAllOfResult - from qase.api_client_v1.models.result_list_response import ResultListResponse as ResultListResponse - from qase.api_client_v1.models.result_list_response_all_of_result import ResultListResponseAllOfResult as ResultListResponseAllOfResult - from qase.api_client_v1.models.result_query import ResultQuery as ResultQuery - from qase.api_client_v1.models.result_response import ResultResponse as ResultResponse - from qase.api_client_v1.models.result_update import ResultUpdate as ResultUpdate - from qase.api_client_v1.models.run import Run as Run - from qase.api_client_v1.models.run_create import RunCreate as RunCreate - from qase.api_client_v1.models.run_create_cloud_run_config import RunCreateCloudRunConfig as RunCreateCloudRunConfig - from qase.api_client_v1.models.run_environment import RunEnvironment as RunEnvironment - from qase.api_client_v1.models.run_external_issue import RunExternalIssue as RunExternalIssue - from qase.api_client_v1.models.run_external_issues import RunExternalIssues as RunExternalIssues - from qase.api_client_v1.models.run_external_issues_links_inner import RunExternalIssuesLinksInner as RunExternalIssuesLinksInner - from qase.api_client_v1.models.run_list_response import RunListResponse as RunListResponse - from qase.api_client_v1.models.run_list_response_all_of_result import RunListResponseAllOfResult as RunListResponseAllOfResult - from qase.api_client_v1.models.run_milestone import RunMilestone as RunMilestone - from qase.api_client_v1.models.run_public import RunPublic as RunPublic - from qase.api_client_v1.models.run_public_response import RunPublicResponse as RunPublicResponse - from qase.api_client_v1.models.run_public_response_all_of_result import RunPublicResponseAllOfResult as RunPublicResponseAllOfResult - from qase.api_client_v1.models.run_query import RunQuery as RunQuery - from qase.api_client_v1.models.run_response import RunResponse as RunResponse - from qase.api_client_v1.models.run_stats import RunStats as RunStats - from qase.api_client_v1.models.runupdate import Runupdate as Runupdate - from qase.api_client_v1.models.search_response import SearchResponse as SearchResponse - from qase.api_client_v1.models.search_response_all_of_result import SearchResponseAllOfResult as SearchResponseAllOfResult - from qase.api_client_v1.models.search_response_all_of_result_entities import SearchResponseAllOfResultEntities as SearchResponseAllOfResultEntities - from qase.api_client_v1.models.shared_parameter import SharedParameter as SharedParameter - from qase.api_client_v1.models.shared_parameter_create import SharedParameterCreate as SharedParameterCreate - from qase.api_client_v1.models.shared_parameter_list_response import SharedParameterListResponse as SharedParameterListResponse - from qase.api_client_v1.models.shared_parameter_list_response_all_of_result import SharedParameterListResponseAllOfResult as SharedParameterListResponseAllOfResult - from qase.api_client_v1.models.shared_parameter_parameter import SharedParameterParameter as SharedParameterParameter - from qase.api_client_v1.models.shared_parameter_response import SharedParameterResponse as SharedParameterResponse - from qase.api_client_v1.models.shared_parameter_update import SharedParameterUpdate as SharedParameterUpdate - from qase.api_client_v1.models.shared_step import SharedStep as SharedStep - from qase.api_client_v1.models.shared_step_content import SharedStepContent as SharedStepContent - from qase.api_client_v1.models.shared_step_content_create import SharedStepContentCreate as SharedStepContentCreate - from qase.api_client_v1.models.shared_step_create import SharedStepCreate as SharedStepCreate - from qase.api_client_v1.models.shared_step_list_response import SharedStepListResponse as SharedStepListResponse - from qase.api_client_v1.models.shared_step_list_response_all_of_result import SharedStepListResponseAllOfResult as SharedStepListResponseAllOfResult - from qase.api_client_v1.models.shared_step_response import SharedStepResponse as SharedStepResponse - from qase.api_client_v1.models.shared_step_update import SharedStepUpdate as SharedStepUpdate - from qase.api_client_v1.models.suite import Suite as Suite - from qase.api_client_v1.models.suite_create import SuiteCreate as SuiteCreate - from qase.api_client_v1.models.suite_delete import SuiteDelete as SuiteDelete - from qase.api_client_v1.models.suite_list_response import SuiteListResponse as SuiteListResponse - from qase.api_client_v1.models.suite_list_response_all_of_result import SuiteListResponseAllOfResult as SuiteListResponseAllOfResult - from qase.api_client_v1.models.suite_response import SuiteResponse as SuiteResponse - from qase.api_client_v1.models.suite_update import SuiteUpdate as SuiteUpdate - from qase.api_client_v1.models.system_field import SystemField as SystemField - from qase.api_client_v1.models.system_field_list_response import SystemFieldListResponse as SystemFieldListResponse - from qase.api_client_v1.models.system_field_option import SystemFieldOption as SystemFieldOption - from qase.api_client_v1.models.tag_value import TagValue as TagValue - from qase.api_client_v1.models.test_case import TestCase as TestCase - from qase.api_client_v1.models.test_case_create import TestCaseCreate as TestCaseCreate - from qase.api_client_v1.models.test_case_external_issues import TestCaseExternalIssues as TestCaseExternalIssues - from qase.api_client_v1.models.test_case_external_issues_links_inner import TestCaseExternalIssuesLinksInner as TestCaseExternalIssuesLinksInner - from qase.api_client_v1.models.test_case_list_response import TestCaseListResponse as TestCaseListResponse - from qase.api_client_v1.models.test_case_list_response_all_of_result import TestCaseListResponseAllOfResult as TestCaseListResponseAllOfResult - from qase.api_client_v1.models.test_case_parameter import TestCaseParameter as TestCaseParameter - from qase.api_client_v1.models.test_case_parameter_base import TestCaseParameterBase as TestCaseParameterBase - from qase.api_client_v1.models.test_case_parameter_create import TestCaseParameterCreate as TestCaseParameterCreate - from qase.api_client_v1.models.test_case_parameter_group import TestCaseParameterGroup as TestCaseParameterGroup - from qase.api_client_v1.models.test_case_parameter_single import TestCaseParameterSingle as TestCaseParameterSingle - from qase.api_client_v1.models.test_case_params import TestCaseParams as TestCaseParams - from qase.api_client_v1.models.test_case_query import TestCaseQuery as TestCaseQuery - from qase.api_client_v1.models.test_case_response import TestCaseResponse as TestCaseResponse - from qase.api_client_v1.models.test_case_update import TestCaseUpdate as TestCaseUpdate - from qase.api_client_v1.models.test_casebulk import TestCasebulk as TestCasebulk - from qase.api_client_v1.models.test_casebulk_cases_inner import TestCasebulkCasesInner as TestCasebulkCasesInner - from qase.api_client_v1.models.test_step import TestStep as TestStep - from qase.api_client_v1.models.test_step_create import TestStepCreate as TestStepCreate - from qase.api_client_v1.models.test_step_result import TestStepResult as TestStepResult - from qase.api_client_v1.models.test_step_result_create import TestStepResultCreate as TestStepResultCreate - from qase.api_client_v1.models.user import User as User - from qase.api_client_v1.models.user_list_response import UserListResponse as UserListResponse - from qase.api_client_v1.models.user_list_response_all_of_result import UserListResponseAllOfResult as UserListResponseAllOfResult - from qase.api_client_v1.models.user_response import UserResponse as UserResponse - from qase.api_client_v1.models.uuid_response import UuidResponse as UuidResponse - from qase.api_client_v1.models.uuid_response1 import UuidResponse1 as UuidResponse1 - from qase.api_client_v1.models.uuid_response_all_of_result import UuidResponseAllOfResult as UuidResponseAllOfResult - -else: - from lazy_imports import LazyModule, as_package, load - - load( - LazyModule( - *as_package(__file__), - ("__version__", __version__), - ("__all__", __all__), - """# import apis into sdk package +# import apis into sdk package from qase.api_client_v1.api.attachments_api import AttachmentsApi as AttachmentsApi from qase.api_client_v1.api.authors_api import AuthorsApi as AuthorsApi from qase.api_client_v1.api.cases_api import CasesApi as CasesApi @@ -636,8 +423,3 @@ from qase.api_client_v1.models.uuid_response1 import UuidResponse1 as UuidResponse1 from qase.api_client_v1.models.uuid_response_all_of_result import UuidResponseAllOfResult as UuidResponseAllOfResult -""", - name=__name__, - doc=__doc__, - ) - ) diff --git a/qase-api-client/src/qase/api_client_v1/api/__init__.py b/qase-api-client/src/qase/api_client_v1/api/__init__.py index e0958ec2..977bfbc8 100644 --- a/qase-api-client/src/qase/api_client_v1/api/__init__.py +++ b/qase-api-client/src/qase/api_client_v1/api/__init__.py @@ -1,33 +1,6 @@ # flake8: noqa -if __import__("typing").TYPE_CHECKING: - # import apis into api package - from qase.api_client_v1.api.attachments_api import AttachmentsApi - from qase.api_client_v1.api.authors_api import AuthorsApi - from qase.api_client_v1.api.cases_api import CasesApi - from qase.api_client_v1.api.configurations_api import ConfigurationsApi - from qase.api_client_v1.api.custom_fields_api import CustomFieldsApi - from qase.api_client_v1.api.defects_api import DefectsApi - from qase.api_client_v1.api.environments_api import EnvironmentsApi - from qase.api_client_v1.api.milestones_api import MilestonesApi - from qase.api_client_v1.api.plans_api import PlansApi - from qase.api_client_v1.api.projects_api import ProjectsApi - from qase.api_client_v1.api.results_api import ResultsApi - from qase.api_client_v1.api.runs_api import RunsApi - from qase.api_client_v1.api.search_api import SearchApi - from qase.api_client_v1.api.shared_parameters_api import SharedParametersApi - from qase.api_client_v1.api.shared_steps_api import SharedStepsApi - from qase.api_client_v1.api.suites_api import SuitesApi - from qase.api_client_v1.api.system_fields_api import SystemFieldsApi - from qase.api_client_v1.api.users_api import UsersApi - -else: - from lazy_imports import LazyModule, as_package, load - - load( - LazyModule( - *as_package(__file__), - """# import apis into api package +# import apis into api package from qase.api_client_v1.api.attachments_api import AttachmentsApi from qase.api_client_v1.api.authors_api import AuthorsApi from qase.api_client_v1.api.cases_api import CasesApi @@ -47,8 +20,3 @@ from qase.api_client_v1.api.system_fields_api import SystemFieldsApi from qase.api_client_v1.api.users_api import UsersApi -""", - name=__name__, - doc=__doc__, - ) - ) diff --git a/qase-api-client/src/qase/api_client_v1/api/attachments_api.py b/qase-api-client/src/qase/api_client_v1/api/attachments_api.py index c1056ba7..d112a2ac 100644 --- a/qase-api-client/src/qase/api_client_v1/api/attachments_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/attachments_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/authors_api.py b/qase-api-client/src/qase/api_client_v1/api/authors_api.py index 1b2db4b5..304de26c 100644 --- a/qase-api-client/src/qase/api_client_v1/api/authors_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/authors_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/cases_api.py b/qase-api-client/src/qase/api_client_v1/api/cases_api.py index 8300b607..0bb8200f 100644 --- a/qase-api-client/src/qase/api_client_v1/api/cases_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/cases_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/configurations_api.py b/qase-api-client/src/qase/api_client_v1/api/configurations_api.py index 4412cc29..30f3af94 100644 --- a/qase-api-client/src/qase/api_client_v1/api/configurations_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/configurations_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/custom_fields_api.py b/qase-api-client/src/qase/api_client_v1/api/custom_fields_api.py index 229fddec..e4ba06ed 100644 --- a/qase-api-client/src/qase/api_client_v1/api/custom_fields_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/custom_fields_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/defects_api.py b/qase-api-client/src/qase/api_client_v1/api/defects_api.py index 7e5ac442..71318032 100644 --- a/qase-api-client/src/qase/api_client_v1/api/defects_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/defects_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/environments_api.py b/qase-api-client/src/qase/api_client_v1/api/environments_api.py index 9bf95451..2a4ff23c 100644 --- a/qase-api-client/src/qase/api_client_v1/api/environments_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/environments_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/milestones_api.py b/qase-api-client/src/qase/api_client_v1/api/milestones_api.py index 4fec3fc3..ab08f7ca 100644 --- a/qase-api-client/src/qase/api_client_v1/api/milestones_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/milestones_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/plans_api.py b/qase-api-client/src/qase/api_client_v1/api/plans_api.py index 46c99688..42ba80be 100644 --- a/qase-api-client/src/qase/api_client_v1/api/plans_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/plans_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/projects_api.py b/qase-api-client/src/qase/api_client_v1/api/projects_api.py index f92ce613..40e26d69 100644 --- a/qase-api-client/src/qase/api_client_v1/api/projects_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/projects_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/results_api.py b/qase-api-client/src/qase/api_client_v1/api/results_api.py index 864c55a7..b1a9fb16 100644 --- a/qase-api-client/src/qase/api_client_v1/api/results_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/results_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/runs_api.py b/qase-api-client/src/qase/api_client_v1/api/runs_api.py index 36dc0625..6bdf2420 100644 --- a/qase-api-client/src/qase/api_client_v1/api/runs_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/runs_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/search_api.py b/qase-api-client/src/qase/api_client_v1/api/search_api.py index 6508a2fa..b5486f9f 100644 --- a/qase-api-client/src/qase/api_client_v1/api/search_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/search_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/shared_parameters_api.py b/qase-api-client/src/qase/api_client_v1/api/shared_parameters_api.py index 60b7d2e0..8e4f5fd3 100644 --- a/qase-api-client/src/qase/api_client_v1/api/shared_parameters_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/shared_parameters_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union @@ -357,7 +356,7 @@ def delete_shared_parameter( Delete shared parameter along with all its usages in test cases and reviews. :param id: Identifier. (required) - :type id: str + :type id: UUID :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 @@ -429,7 +428,7 @@ def delete_shared_parameter_with_http_info( Delete shared parameter along with all its usages in test cases and reviews. :param id: Identifier. (required) - :type id: str + :type id: UUID :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 @@ -501,7 +500,7 @@ def delete_shared_parameter_without_preload_content( Delete shared parameter along with all its usages in test cases and reviews. :param id: Identifier. (required) - :type id: str + :type id: UUID :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 @@ -632,7 +631,7 @@ def get_shared_parameter( :param id: Identifier. (required) - :type id: str + :type id: UUID :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 @@ -703,7 +702,7 @@ def get_shared_parameter_with_http_info( :param id: Identifier. (required) - :type id: str + :type id: UUID :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 @@ -774,7 +773,7 @@ def get_shared_parameter_without_preload_content( :param id: Identifier. (required) - :type id: str + :type id: UUID :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 @@ -1250,7 +1249,7 @@ def update_shared_parameter( :param id: Identifier. (required) - :type id: str + :type id: UUID :param shared_parameter_update: (required) :type shared_parameter_update: SharedParameterUpdate :param _request_timeout: timeout setting for this request. If one @@ -1325,7 +1324,7 @@ def update_shared_parameter_with_http_info( :param id: Identifier. (required) - :type id: str + :type id: UUID :param shared_parameter_update: (required) :type shared_parameter_update: SharedParameterUpdate :param _request_timeout: timeout setting for this request. If one @@ -1400,7 +1399,7 @@ def update_shared_parameter_without_preload_content( :param id: Identifier. (required) - :type id: str + :type id: UUID :param shared_parameter_update: (required) :type shared_parameter_update: SharedParameterUpdate :param _request_timeout: timeout setting for this request. If one diff --git a/qase-api-client/src/qase/api_client_v1/api/shared_steps_api.py b/qase-api-client/src/qase/api_client_v1/api/shared_steps_api.py index dbf7cf6e..51cf5e0d 100644 --- a/qase-api-client/src/qase/api_client_v1/api/shared_steps_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/shared_steps_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/suites_api.py b/qase-api-client/src/qase/api_client_v1/api/suites_api.py index 197cbaff..e5f7d5b5 100644 --- a/qase-api-client/src/qase/api_client_v1/api/suites_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/suites_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/system_fields_api.py b/qase-api-client/src/qase/api_client_v1/api/system_fields_api.py index a3420f9d..2c0487d9 100644 --- a/qase-api-client/src/qase/api_client_v1/api/system_fields_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/system_fields_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api/users_api.py b/qase-api-client/src/qase/api_client_v1/api/users_api.py index e5fc9d54..7d3caf3d 100644 --- a/qase-api-client/src/qase/api_client_v1/api/users_api.py +++ b/qase-api-client/src/qase/api_client_v1/api/users_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-client/src/qase/api_client_v1/api_client.py b/qase-api-client/src/qase/api_client_v1/api_client.py index c40c5b1b..dd84d88d 100644 --- a/qase-api-client/src/qase/api_client_v1/api_client.py +++ b/qase-api-client/src/qase/api_client_v1/api_client.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -13,6 +11,7 @@ """ # noqa: E501 + import datetime from dateutil.parser import parse from enum import Enum @@ -313,7 +312,7 @@ def response_deserialize( return_data = self.__deserialize_file(response_data) elif response_type is not None: match = None - content_type = response_data.getheader('content-type') + content_type = response_data.headers.get('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" @@ -330,7 +329,7 @@ def response_deserialize( return ApiResponse( status_code = response_data.status, data = return_data, - headers = response_data.getheaders(), + headers = response_data.headers, raw_data = response_data.data ) @@ -461,13 +460,13 @@ def __deserialize(self, data, klass): if klass in self.PRIMITIVE_TYPES: return self.__deserialize_primitive(data, klass) - elif klass == object: + elif klass is object: return self.__deserialize_object(data) - elif klass == datetime.date: + elif klass is datetime.date: return self.__deserialize_date(data) - elif klass == datetime.datetime: + elif klass is datetime.datetime: return self.__deserialize_datetime(data) - elif klass == decimal.Decimal: + elif klass is decimal.Decimal: return decimal.Decimal(data) elif issubclass(klass, Enum): return self.__deserialize_enum(data, klass) @@ -702,14 +701,16 @@ def __deserialize_file(self, response): os.close(fd) os.remove(path) - content_disposition = response.getheader("Content-Disposition") + content_disposition = response.headers.get("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) + filename = os.path.basename(m.group(1)) # Strip any directory traversal + if filename in ("", ".", ".."): # fall back to tmp filename + filename = os.path.basename(path) path = os.path.join(os.path.dirname(path), filename) with open(path, "wb") as f: diff --git a/qase-api-client/src/qase/api_client_v1/configuration.py b/qase-api-client/src/qase/api_client_v1/configuration.py index f3e1b09c..a7ae54de 100644 --- a/qase-api-client/src/qase/api_client_v1/configuration.py +++ b/qase-api-client/src/qase/api_client_v1/configuration.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -161,9 +159,11 @@ class Configuration: values before. :param ssl_ca_cert: str - the path to a file of concatenated CA certificates in PEM format. - :param retries: Number of retries for API requests. + :param retries: int | urllib3.util.retry.Retry - Retry configuration. :param ca_cert_data: verify the peer using concatenated CA certificate data in PEM (str) or DER (bytes) format. + :param cert_file: the path to a client certificate file, for mTLS. + :param key_file: the path to a client key file, for mTLS. :Example: @@ -203,8 +203,10 @@ def __init__( server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None, ignore_operation_servers: bool=False, ssl_ca_cert: Optional[str]=None, - retries: Optional[int] = None, + retries: Optional[Union[int, Any]] = None, ca_cert_data: Optional[Union[str, bytes]] = None, + cert_file: Optional[str]=None, + key_file: Optional[str]=None, *, debug: Optional[bool] = None, ) -> None: @@ -286,10 +288,10 @@ def __init__( """Set this to verify the peer using PEM (str) or DER (bytes) certificate data. """ - self.cert_file = None + self.cert_file = cert_file """client certificate file """ - self.key_file = None + self.key_file = key_file """client key file """ self.assert_hostname = None @@ -318,7 +320,7 @@ def __init__( """Safe chars for path_param """ self.retries = retries - """Adding retries to override urllib3 default value 3 + """Retry configuration """ # Enable client side validation self.client_side_validation = True @@ -502,6 +504,7 @@ def get_basic_auth_token(self) -> Optional[str]: password = "" if self.password is not None: password = self.password + return urllib3.util.make_headers( basic_auth=username + ':' + password ).get('authorization') @@ -580,6 +583,7 @@ def get_host_from_settings( variable_name, variable['default_value']) if 'enum_values' in variable \ + and variable['enum_values'] \ and used_value not in variable['enum_values']: raise ValueError( "The variable `{0}` in the host URL has invalid value " diff --git a/qase-api-client/src/qase/api_client_v1/exceptions.py b/qase-api-client/src/qase/api_client_v1/exceptions.py index e5b3a887..53f21ebc 100644 --- a/qase-api-client/src/qase/api_client_v1/exceptions.py +++ b/qase-api-client/src/qase/api_client_v1/exceptions.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v1 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + from typing import Any, Optional from typing_extensions import Self @@ -129,7 +128,7 @@ def __init__( self.body = http_resp.data.decode('utf-8') except Exception: pass - self.headers = http_resp.getheaders() + self.headers = http_resp.headers @classmethod def from_response( @@ -170,8 +169,11 @@ def __str__(self): 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) + if self.body: + error_message += "HTTP response body: {0}\n".format(self.body) + + if self.data: + error_message += "HTTP response data: {0}\n".format(self.data) return error_message diff --git a/qase-api-client/src/qase/api_client_v1/models/__init__.py b/qase-api-client/src/qase/api_client_v1/models/__init__.py index cfd35666..426c5699 100644 --- a/qase-api-client/src/qase/api_client_v1/models/__init__.py +++ b/qase-api-client/src/qase/api_client_v1/models/__init__.py @@ -13,188 +13,7 @@ Do not edit the class manually. """ # noqa: E501 - -if __import__("typing").TYPE_CHECKING: - # import models into model package - from qase.api_client_v1.models.attachment import Attachment - from qase.api_client_v1.models.attachment_get import AttachmentGet - from qase.api_client_v1.models.attachment_hash import AttachmentHash - from qase.api_client_v1.models.attachment_list_response import AttachmentListResponse - from qase.api_client_v1.models.attachment_list_response_all_of_result import AttachmentListResponseAllOfResult - from qase.api_client_v1.models.attachment_response import AttachmentResponse - from qase.api_client_v1.models.attachment_uploads_response import AttachmentUploadsResponse - from qase.api_client_v1.models.attachmentupload import Attachmentupload - from qase.api_client_v1.models.author import Author - from qase.api_client_v1.models.author_list_response import AuthorListResponse - from qase.api_client_v1.models.author_list_response_all_of_result import AuthorListResponseAllOfResult - from qase.api_client_v1.models.author_response import AuthorResponse - from qase.api_client_v1.models.base_response import BaseResponse - from qase.api_client_v1.models.bulk200_response import Bulk200Response - from qase.api_client_v1.models.bulk200_response_all_of_result import Bulk200ResponseAllOfResult - from qase.api_client_v1.models.configuration_model import ConfigurationModel - from qase.api_client_v1.models.configuration_create import ConfigurationCreate - from qase.api_client_v1.models.configuration_group import ConfigurationGroup - from qase.api_client_v1.models.configuration_group_create import ConfigurationGroupCreate - from qase.api_client_v1.models.configuration_list_response import ConfigurationListResponse - from qase.api_client_v1.models.configuration_list_response_all_of_result import ConfigurationListResponseAllOfResult - from qase.api_client_v1.models.custom_field import CustomField - from qase.api_client_v1.models.custom_field_create import CustomFieldCreate - from qase.api_client_v1.models.custom_field_create_value_inner import CustomFieldCreateValueInner - from qase.api_client_v1.models.custom_field_list_response import CustomFieldListResponse - from qase.api_client_v1.models.custom_field_response import CustomFieldResponse - from qase.api_client_v1.models.custom_field_update import CustomFieldUpdate - from qase.api_client_v1.models.custom_field_value import CustomFieldValue - from qase.api_client_v1.models.custom_fields_response import CustomFieldsResponse - from qase.api_client_v1.models.custom_fields_response_all_of_result import CustomFieldsResponseAllOfResult - from qase.api_client_v1.models.defect import Defect - from qase.api_client_v1.models.defect_create import DefectCreate - from qase.api_client_v1.models.defect_list_response import DefectListResponse - from qase.api_client_v1.models.defect_list_response_all_of_result import DefectListResponseAllOfResult - from qase.api_client_v1.models.defect_query import DefectQuery - from qase.api_client_v1.models.defect_response import DefectResponse - from qase.api_client_v1.models.defect_status import DefectStatus - from qase.api_client_v1.models.defect_update import DefectUpdate - from qase.api_client_v1.models.environment import Environment - from qase.api_client_v1.models.environment_create import EnvironmentCreate - from qase.api_client_v1.models.environment_list_response import EnvironmentListResponse - from qase.api_client_v1.models.environment_list_response_all_of_result import EnvironmentListResponseAllOfResult - from qase.api_client_v1.models.environment_response import EnvironmentResponse - from qase.api_client_v1.models.environment_update import EnvironmentUpdate - from qase.api_client_v1.models.external_issue import ExternalIssue - from qase.api_client_v1.models.external_issue_issues_inner import ExternalIssueIssuesInner - from qase.api_client_v1.models.hash_response import HashResponse - from qase.api_client_v1.models.hash_response_all_of_result import HashResponseAllOfResult - from qase.api_client_v1.models.id_response import IdResponse - from qase.api_client_v1.models.id_response_all_of_result import IdResponseAllOfResult - from qase.api_client_v1.models.milestone import Milestone - from qase.api_client_v1.models.milestone_create import MilestoneCreate - from qase.api_client_v1.models.milestone_list_response import MilestoneListResponse - from qase.api_client_v1.models.milestone_list_response_all_of_result import MilestoneListResponseAllOfResult - from qase.api_client_v1.models.milestone_response import MilestoneResponse - from qase.api_client_v1.models.milestone_update import MilestoneUpdate - from qase.api_client_v1.models.parameter_group import ParameterGroup - from qase.api_client_v1.models.parameter_shared import ParameterShared - from qase.api_client_v1.models.parameter_single import ParameterSingle - from qase.api_client_v1.models.plan import Plan - from qase.api_client_v1.models.plan_create import PlanCreate - from qase.api_client_v1.models.plan_detailed import PlanDetailed - from qase.api_client_v1.models.plan_detailed_all_of_cases import PlanDetailedAllOfCases - from qase.api_client_v1.models.plan_list_response import PlanListResponse - from qase.api_client_v1.models.plan_list_response_all_of_result import PlanListResponseAllOfResult - from qase.api_client_v1.models.plan_query import PlanQuery - from qase.api_client_v1.models.plan_response import PlanResponse - from qase.api_client_v1.models.plan_update import PlanUpdate - from qase.api_client_v1.models.project import Project - from qase.api_client_v1.models.project_access import ProjectAccess - from qase.api_client_v1.models.project_code_response import ProjectCodeResponse - from qase.api_client_v1.models.project_code_response_all_of_result import ProjectCodeResponseAllOfResult - from qase.api_client_v1.models.project_counts import ProjectCounts - from qase.api_client_v1.models.project_counts_defects import ProjectCountsDefects - from qase.api_client_v1.models.project_counts_runs import ProjectCountsRuns - from qase.api_client_v1.models.project_create import ProjectCreate - from qase.api_client_v1.models.project_list_response import ProjectListResponse - from qase.api_client_v1.models.project_list_response_all_of_result import ProjectListResponseAllOfResult - from qase.api_client_v1.models.project_response import ProjectResponse - from qase.api_client_v1.models.qql_defect import QqlDefect - from qase.api_client_v1.models.qql_plan import QqlPlan - from qase.api_client_v1.models.qql_test_case import QqlTestCase - from qase.api_client_v1.models.qql_test_case_params import QqlTestCaseParams - from qase.api_client_v1.models.requirement import Requirement - from qase.api_client_v1.models.requirement_query import RequirementQuery - from qase.api_client_v1.models.response import Response - from qase.api_client_v1.models.result import Result - from qase.api_client_v1.models.result_create import ResultCreate - from qase.api_client_v1.models.result_create_bulk import ResultCreateBulk - from qase.api_client_v1.models.result_create_case import ResultCreateCase - from qase.api_client_v1.models.result_create_response import ResultCreateResponse - from qase.api_client_v1.models.result_create_response_all_of_result import ResultCreateResponseAllOfResult - from qase.api_client_v1.models.result_list_response import ResultListResponse - from qase.api_client_v1.models.result_list_response_all_of_result import ResultListResponseAllOfResult - from qase.api_client_v1.models.result_query import ResultQuery - from qase.api_client_v1.models.result_response import ResultResponse - from qase.api_client_v1.models.result_update import ResultUpdate - from qase.api_client_v1.models.run import Run - from qase.api_client_v1.models.run_create import RunCreate - from qase.api_client_v1.models.run_create_cloud_run_config import RunCreateCloudRunConfig - from qase.api_client_v1.models.run_environment import RunEnvironment - from qase.api_client_v1.models.run_external_issue import RunExternalIssue - from qase.api_client_v1.models.run_external_issues import RunExternalIssues - from qase.api_client_v1.models.run_external_issues_links_inner import RunExternalIssuesLinksInner - from qase.api_client_v1.models.run_list_response import RunListResponse - from qase.api_client_v1.models.run_list_response_all_of_result import RunListResponseAllOfResult - from qase.api_client_v1.models.run_milestone import RunMilestone - from qase.api_client_v1.models.run_public import RunPublic - from qase.api_client_v1.models.run_public_response import RunPublicResponse - from qase.api_client_v1.models.run_public_response_all_of_result import RunPublicResponseAllOfResult - from qase.api_client_v1.models.run_query import RunQuery - from qase.api_client_v1.models.run_response import RunResponse - from qase.api_client_v1.models.run_stats import RunStats - from qase.api_client_v1.models.runupdate import Runupdate - from qase.api_client_v1.models.search_response import SearchResponse - from qase.api_client_v1.models.search_response_all_of_result import SearchResponseAllOfResult - from qase.api_client_v1.models.search_response_all_of_result_entities import SearchResponseAllOfResultEntities - from qase.api_client_v1.models.shared_parameter import SharedParameter - from qase.api_client_v1.models.shared_parameter_create import SharedParameterCreate - from qase.api_client_v1.models.shared_parameter_list_response import SharedParameterListResponse - from qase.api_client_v1.models.shared_parameter_list_response_all_of_result import SharedParameterListResponseAllOfResult - from qase.api_client_v1.models.shared_parameter_parameter import SharedParameterParameter - from qase.api_client_v1.models.shared_parameter_response import SharedParameterResponse - from qase.api_client_v1.models.shared_parameter_update import SharedParameterUpdate - from qase.api_client_v1.models.shared_step import SharedStep - from qase.api_client_v1.models.shared_step_content import SharedStepContent - from qase.api_client_v1.models.shared_step_content_create import SharedStepContentCreate - from qase.api_client_v1.models.shared_step_create import SharedStepCreate - from qase.api_client_v1.models.shared_step_list_response import SharedStepListResponse - from qase.api_client_v1.models.shared_step_list_response_all_of_result import SharedStepListResponseAllOfResult - from qase.api_client_v1.models.shared_step_response import SharedStepResponse - from qase.api_client_v1.models.shared_step_update import SharedStepUpdate - from qase.api_client_v1.models.suite import Suite - from qase.api_client_v1.models.suite_create import SuiteCreate - from qase.api_client_v1.models.suite_delete import SuiteDelete - from qase.api_client_v1.models.suite_list_response import SuiteListResponse - from qase.api_client_v1.models.suite_list_response_all_of_result import SuiteListResponseAllOfResult - from qase.api_client_v1.models.suite_response import SuiteResponse - from qase.api_client_v1.models.suite_update import SuiteUpdate - from qase.api_client_v1.models.system_field import SystemField - from qase.api_client_v1.models.system_field_list_response import SystemFieldListResponse - from qase.api_client_v1.models.system_field_option import SystemFieldOption - from qase.api_client_v1.models.tag_value import TagValue - from qase.api_client_v1.models.test_case import TestCase - from qase.api_client_v1.models.test_case_create import TestCaseCreate - from qase.api_client_v1.models.test_case_external_issues import TestCaseExternalIssues - from qase.api_client_v1.models.test_case_external_issues_links_inner import TestCaseExternalIssuesLinksInner - from qase.api_client_v1.models.test_case_list_response import TestCaseListResponse - from qase.api_client_v1.models.test_case_list_response_all_of_result import TestCaseListResponseAllOfResult - from qase.api_client_v1.models.test_case_parameter import TestCaseParameter - from qase.api_client_v1.models.test_case_parameter_base import TestCaseParameterBase - from qase.api_client_v1.models.test_case_parameter_create import TestCaseParameterCreate - from qase.api_client_v1.models.test_case_parameter_group import TestCaseParameterGroup - from qase.api_client_v1.models.test_case_parameter_single import TestCaseParameterSingle - from qase.api_client_v1.models.test_case_params import TestCaseParams - from qase.api_client_v1.models.test_case_query import TestCaseQuery - from qase.api_client_v1.models.test_case_response import TestCaseResponse - from qase.api_client_v1.models.test_case_update import TestCaseUpdate - from qase.api_client_v1.models.test_casebulk import TestCasebulk - from qase.api_client_v1.models.test_casebulk_cases_inner import TestCasebulkCasesInner - from qase.api_client_v1.models.test_step import TestStep - from qase.api_client_v1.models.test_step_create import TestStepCreate - from qase.api_client_v1.models.test_step_result import TestStepResult - from qase.api_client_v1.models.test_step_result_create import TestStepResultCreate - from qase.api_client_v1.models.user import User - from qase.api_client_v1.models.user_list_response import UserListResponse - from qase.api_client_v1.models.user_list_response_all_of_result import UserListResponseAllOfResult - from qase.api_client_v1.models.user_response import UserResponse - from qase.api_client_v1.models.uuid_response import UuidResponse - from qase.api_client_v1.models.uuid_response1 import UuidResponse1 - from qase.api_client_v1.models.uuid_response_all_of_result import UuidResponseAllOfResult - -else: - from lazy_imports import LazyModule, as_package, load - - load( - LazyModule( - *as_package(__file__), - """# import models into model package +# import models into model package from qase.api_client_v1.models.attachment import Attachment from qase.api_client_v1.models.attachment_get import AttachmentGet from qase.api_client_v1.models.attachment_hash import AttachmentHash @@ -367,8 +186,3 @@ from qase.api_client_v1.models.uuid_response1 import UuidResponse1 from qase.api_client_v1.models.uuid_response_all_of_result import UuidResponseAllOfResult -""", - name=__name__, - doc=__doc__, - ) - ) diff --git a/qase-api-client/src/qase/api_client_v1/models/shared_step_content.py b/qase-api-client/src/qase/api_client_v1/models/shared_step_content.py index b0ff4eb9..3b59c2ab 100644 --- a/qase-api-client/src/qase/api_client_v1/models/shared_step_content.py +++ b/qase-api-client/src/qase/api_client_v1/models/shared_step_content.py @@ -18,7 +18,7 @@ import re # noqa: F401 import json -from pydantic import BaseModel, ConfigDict, StrictStr +from pydantic import BaseModel, ConfigDict, Field, StrictStr from typing import Any, ClassVar, Dict, List, Optional from qase.api_client_v1.models.attachment_hash import AttachmentHash from typing import Optional, Set @@ -33,7 +33,8 @@ class SharedStepContent(BaseModel): action: Optional[StrictStr] = None expected_result: Optional[StrictStr] = None attachments: Optional[List[AttachmentHash]] = None - __properties: ClassVar[List[str]] = ["data", "hash", "action", "expected_result", "attachments"] + steps: Optional[List[Dict[str, Any]]] = Field(default=None, description="Nested steps will be here. The same structure is used for them.") + __properties: ClassVar[List[str]] = ["data", "hash", "action", "expected_result", "attachments", "steps"] model_config = ConfigDict( populate_by_name=True, @@ -97,7 +98,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "hash": obj.get("hash"), "action": obj.get("action"), "expected_result": obj.get("expected_result"), - "attachments": [AttachmentHash.from_dict(_item) for _item in obj["attachments"]] if obj.get("attachments") is not None else None + "attachments": [AttachmentHash.from_dict(_item) for _item in obj["attachments"]] if obj.get("attachments") is not None else None, + "steps": obj.get("steps") }) return _obj diff --git a/qase-api-client/src/qase/api_client_v1/models/shared_step_content_create.py b/qase-api-client/src/qase/api_client_v1/models/shared_step_content_create.py index c7630721..29d48769 100644 --- a/qase-api-client/src/qase/api_client_v1/models/shared_step_content_create.py +++ b/qase-api-client/src/qase/api_client_v1/models/shared_step_content_create.py @@ -32,7 +32,8 @@ class SharedStepContentCreate(BaseModel): expected_result: Optional[StrictStr] = None data: Optional[StrictStr] = None attachments: Optional[List[StrictStr]] = Field(default=None, description="A list of Attachment hashes.") - __properties: ClassVar[List[str]] = ["hash", "action", "expected_result", "data", "attachments"] + steps: Optional[List[Dict[str, Any]]] = Field(default=None, description="Nested steps will be here. The same structure is used for them.") + __properties: ClassVar[List[str]] = ["hash", "action", "expected_result", "data", "attachments", "steps"] model_config = ConfigDict( populate_by_name=True, @@ -89,7 +90,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "action": obj.get("action"), "expected_result": obj.get("expected_result"), "data": obj.get("data"), - "attachments": obj.get("attachments") + "attachments": obj.get("attachments"), + "steps": obj.get("steps") }) return _obj diff --git a/qase-api-client/src/qase/api_client_v1/rest.py b/qase-api-client/src/qase/api_client_v1/rest.py index 0240648a..34ac919c 100644 --- a/qase-api-client/src/qase/api_client_v1/rest.py +++ b/qase-api-client/src/qase/api_client_v1/rest.py @@ -49,12 +49,17 @@ def read(self): self.data = self.response.data return self.data + @property + def headers(self): + """Returns a dictionary of response headers.""" + return self.response.headers + def getheaders(self): - """Returns a dictionary of the response headers.""" + """Returns a dictionary of the response headers; use ``headers`` instead.""" return self.response.headers def getheader(self, name, default=None): - """Returns a given response header.""" + """Returns a given response header; use ``headers.get()`` instead.""" return self.response.headers.get(name, default) diff --git a/qase-api-v2-client/pyproject.toml b/qase-api-v2-client/pyproject.toml index c9b2e154..15d69dc3 100644 --- a/qase-api-v2-client/pyproject.toml +++ b/qase-api-v2-client/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "qase-api-v2-client" -version = "2.0.3" +version = "2.0.4" description = "Qase TestOps API V2 client for Python" readme = "README.md" authors = [{name = "Qase Team", email = "support@qase.io"}] diff --git a/qase-api-v2-client/src/qase/api_client_v2/__init__.py b/qase-api-v2-client/src/qase/api_client_v2/__init__.py index 2728d51e..032b136c 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/__init__.py +++ b/qase-api-v2-client/src/qase/api_client_v2/__init__.py @@ -53,54 +53,7 @@ "ResultStepsType", ] -if __import__("typing").TYPE_CHECKING: - # import apis into sdk package - from qase.api_client_v2.api.custom_fields_api import CustomFieldsApi as CustomFieldsApi - from qase.api_client_v2.api.results_api import ResultsApi as ResultsApi - - # import ApiClient - from qase.api_client_v2.api_response import ApiResponse as ApiResponse - from qase.api_client_v2.api_client import ApiClient as ApiClient - from qase.api_client_v2.configuration import Configuration as Configuration - from qase.api_client_v2.exceptions import OpenApiException as OpenApiException - from qase.api_client_v2.exceptions import ApiTypeError as ApiTypeError - from qase.api_client_v2.exceptions import ApiValueError as ApiValueError - from qase.api_client_v2.exceptions import ApiKeyError as ApiKeyError - from qase.api_client_v2.exceptions import ApiAttributeError as ApiAttributeError - from qase.api_client_v2.exceptions import ApiException as ApiException - - # import models into sdk package - from qase.api_client_v2.models.base_response import BaseResponse as BaseResponse - from qase.api_client_v2.models.create_results_request_v2 import CreateResultsRequestV2 as CreateResultsRequestV2 - from qase.api_client_v2.models.custom_field import CustomField as CustomField - from qase.api_client_v2.models.custom_field_list_response import CustomFieldListResponse as CustomFieldListResponse - from qase.api_client_v2.models.custom_field_list_response_all_of_result import CustomFieldListResponseAllOfResult as CustomFieldListResponseAllOfResult - from qase.api_client_v2.models.custom_field_option import CustomFieldOption as CustomFieldOption - from qase.api_client_v2.models.custom_field_response import CustomFieldResponse as CustomFieldResponse - from qase.api_client_v2.models.relation_suite import RelationSuite as RelationSuite - from qase.api_client_v2.models.relation_suite_item import RelationSuiteItem as RelationSuiteItem - from qase.api_client_v2.models.result_create import ResultCreate as ResultCreate - from qase.api_client_v2.models.result_create_bulk_response import ResultCreateBulkResponse as ResultCreateBulkResponse - from qase.api_client_v2.models.result_create_fields import ResultCreateFields as ResultCreateFields - from qase.api_client_v2.models.result_create_response import ResultCreateResponse as ResultCreateResponse - from qase.api_client_v2.models.result_create_response_all_of_result import ResultCreateResponseAllOfResult as ResultCreateResponseAllOfResult - from qase.api_client_v2.models.result_execution import ResultExecution as ResultExecution - from qase.api_client_v2.models.result_relations import ResultRelations as ResultRelations - from qase.api_client_v2.models.result_step import ResultStep as ResultStep - from qase.api_client_v2.models.result_step_data import ResultStepData as ResultStepData - from qase.api_client_v2.models.result_step_execution import ResultStepExecution as ResultStepExecution - from qase.api_client_v2.models.result_step_status import ResultStepStatus as ResultStepStatus - from qase.api_client_v2.models.result_steps_type import ResultStepsType as ResultStepsType - -else: - from lazy_imports import LazyModule, as_package, load - - load( - LazyModule( - *as_package(__file__), - ("__version__", __version__), - ("__all__", __all__), - """# import apis into sdk package +# import apis into sdk package from qase.api_client_v2.api.custom_fields_api import CustomFieldsApi as CustomFieldsApi from qase.api_client_v2.api.results_api import ResultsApi as ResultsApi @@ -138,8 +91,3 @@ from qase.api_client_v2.models.result_step_status import ResultStepStatus as ResultStepStatus from qase.api_client_v2.models.result_steps_type import ResultStepsType as ResultStepsType -""", - name=__name__, - doc=__doc__, - ) - ) diff --git a/qase-api-v2-client/src/qase/api_client_v2/api/__init__.py b/qase-api-v2-client/src/qase/api_client_v2/api/__init__.py index c049cb04..3da78ab8 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/api/__init__.py +++ b/qase-api-v2-client/src/qase/api_client_v2/api/__init__.py @@ -1,22 +1,6 @@ # flake8: noqa -if __import__("typing").TYPE_CHECKING: - # import apis into api package - from qase.api_client_v2.api.custom_fields_api import CustomFieldsApi - from qase.api_client_v2.api.results_api import ResultsApi - -else: - from lazy_imports import LazyModule, as_package, load - - load( - LazyModule( - *as_package(__file__), - """# import apis into api package +# import apis into api package from qase.api_client_v2.api.custom_fields_api import CustomFieldsApi from qase.api_client_v2.api.results_api import ResultsApi -""", - name=__name__, - doc=__doc__, - ) - ) diff --git a/qase-api-v2-client/src/qase/api_client_v2/api/custom_fields_api.py b/qase-api-v2-client/src/qase/api_client_v2/api/custom_fields_api.py index 99aff216..c78034e4 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/api/custom_fields_api.py +++ b/qase-api-v2-client/src/qase/api_client_v2/api/custom_fields_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v2 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-v2-client/src/qase/api_client_v2/api/results_api.py b/qase-api-v2-client/src/qase/api_client_v2/api/results_api.py index ec5a3f29..db871969 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/api/results_api.py +++ b/qase-api-v2-client/src/qase/api_client_v2/api/results_api.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v2 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + import warnings from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt from typing import Any, Dict, List, Optional, Tuple, Union diff --git a/qase-api-v2-client/src/qase/api_client_v2/api_client.py b/qase-api-v2-client/src/qase/api_client_v2/api_client.py index df9a2cab..4e8e3c86 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/api_client.py +++ b/qase-api-v2-client/src/qase/api_client_v2/api_client.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v2 @@ -13,6 +11,7 @@ """ # noqa: E501 + import datetime from dateutil.parser import parse from enum import Enum @@ -313,7 +312,7 @@ def response_deserialize( return_data = self.__deserialize_file(response_data) elif response_type is not None: match = None - content_type = response_data.getheader('content-type') + content_type = response_data.headers.get('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" @@ -330,7 +329,7 @@ def response_deserialize( return ApiResponse( status_code = response_data.status, data = return_data, - headers = response_data.getheaders(), + headers = response_data.headers, raw_data = response_data.data ) @@ -461,13 +460,13 @@ def __deserialize(self, data, klass): if klass in self.PRIMITIVE_TYPES: return self.__deserialize_primitive(data, klass) - elif klass == object: + elif klass is object: return self.__deserialize_object(data) - elif klass == datetime.date: + elif klass is datetime.date: return self.__deserialize_date(data) - elif klass == datetime.datetime: + elif klass is datetime.datetime: return self.__deserialize_datetime(data) - elif klass == decimal.Decimal: + elif klass is decimal.Decimal: return decimal.Decimal(data) elif issubclass(klass, Enum): return self.__deserialize_enum(data, klass) @@ -702,14 +701,16 @@ def __deserialize_file(self, response): os.close(fd) os.remove(path) - content_disposition = response.getheader("Content-Disposition") + content_disposition = response.headers.get("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) + filename = os.path.basename(m.group(1)) # Strip any directory traversal + if filename in ("", ".", ".."): # fall back to tmp filename + filename = os.path.basename(path) path = os.path.join(os.path.dirname(path), filename) with open(path, "wb") as f: diff --git a/qase-api-v2-client/src/qase/api_client_v2/configuration.py b/qase-api-v2-client/src/qase/api_client_v2/configuration.py index d65a50f4..e0ff442a 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/configuration.py +++ b/qase-api-v2-client/src/qase/api_client_v2/configuration.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v2 @@ -161,9 +159,11 @@ class Configuration: values before. :param ssl_ca_cert: str - the path to a file of concatenated CA certificates in PEM format. - :param retries: Number of retries for API requests. + :param retries: int | urllib3.util.retry.Retry - Retry configuration. :param ca_cert_data: verify the peer using concatenated CA certificate data in PEM (str) or DER (bytes) format. + :param cert_file: the path to a client certificate file, for mTLS. + :param key_file: the path to a client key file, for mTLS. :Example: @@ -203,8 +203,10 @@ def __init__( server_operation_variables: Optional[Dict[int, ServerVariablesT]]=None, ignore_operation_servers: bool=False, ssl_ca_cert: Optional[str]=None, - retries: Optional[int] = None, + retries: Optional[Union[int, Any]] = None, ca_cert_data: Optional[Union[str, bytes]] = None, + cert_file: Optional[str]=None, + key_file: Optional[str]=None, *, debug: Optional[bool] = None, ) -> None: @@ -286,10 +288,10 @@ def __init__( """Set this to verify the peer using PEM (str) or DER (bytes) certificate data. """ - self.cert_file = None + self.cert_file = cert_file """client certificate file """ - self.key_file = None + self.key_file = key_file """client key file """ self.assert_hostname = None @@ -318,7 +320,7 @@ def __init__( """Safe chars for path_param """ self.retries = retries - """Adding retries to override urllib3 default value 3 + """Retry configuration """ # Enable client side validation self.client_side_validation = True @@ -502,6 +504,7 @@ def get_basic_auth_token(self) -> Optional[str]: password = "" if self.password is not None: password = self.password + return urllib3.util.make_headers( basic_auth=username + ':' + password ).get('authorization') @@ -580,6 +583,7 @@ def get_host_from_settings( variable_name, variable['default_value']) if 'enum_values' in variable \ + and variable['enum_values'] \ and used_value not in variable['enum_values']: raise ValueError( "The variable `{0}` in the host URL has invalid value " diff --git a/qase-api-v2-client/src/qase/api_client_v2/exceptions.py b/qase-api-v2-client/src/qase/api_client_v2/exceptions.py index 5d3c9b82..045b2f57 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/exceptions.py +++ b/qase-api-v2-client/src/qase/api_client_v2/exceptions.py @@ -1,5 +1,3 @@ -# coding: utf-8 - """ Qase.io TestOps API v2 @@ -12,6 +10,7 @@ Do not edit the class manually. """ # noqa: E501 + from typing import Any, Optional from typing_extensions import Self @@ -129,7 +128,7 @@ def __init__( self.body = http_resp.data.decode('utf-8') except Exception: pass - self.headers = http_resp.getheaders() + self.headers = http_resp.headers @classmethod def from_response( @@ -170,8 +169,11 @@ def __str__(self): 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) + if self.body: + error_message += "HTTP response body: {0}\n".format(self.body) + + if self.data: + error_message += "HTTP response data: {0}\n".format(self.data) return error_message diff --git a/qase-api-v2-client/src/qase/api_client_v2/models/__init__.py b/qase-api-v2-client/src/qase/api_client_v2/models/__init__.py index 5420cc54..5b5a11d4 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/models/__init__.py +++ b/qase-api-v2-client/src/qase/api_client_v2/models/__init__.py @@ -13,38 +13,7 @@ Do not edit the class manually. """ # noqa: E501 - -if __import__("typing").TYPE_CHECKING: - # import models into model package - from qase.api_client_v2.models.base_response import BaseResponse - from qase.api_client_v2.models.create_results_request_v2 import CreateResultsRequestV2 - from qase.api_client_v2.models.custom_field import CustomField - from qase.api_client_v2.models.custom_field_list_response import CustomFieldListResponse - from qase.api_client_v2.models.custom_field_list_response_all_of_result import CustomFieldListResponseAllOfResult - from qase.api_client_v2.models.custom_field_option import CustomFieldOption - from qase.api_client_v2.models.custom_field_response import CustomFieldResponse - from qase.api_client_v2.models.relation_suite import RelationSuite - from qase.api_client_v2.models.relation_suite_item import RelationSuiteItem - from qase.api_client_v2.models.result_create import ResultCreate - from qase.api_client_v2.models.result_create_bulk_response import ResultCreateBulkResponse - from qase.api_client_v2.models.result_create_fields import ResultCreateFields - from qase.api_client_v2.models.result_create_response import ResultCreateResponse - from qase.api_client_v2.models.result_create_response_all_of_result import ResultCreateResponseAllOfResult - from qase.api_client_v2.models.result_execution import ResultExecution - from qase.api_client_v2.models.result_relations import ResultRelations - from qase.api_client_v2.models.result_step import ResultStep - from qase.api_client_v2.models.result_step_data import ResultStepData - from qase.api_client_v2.models.result_step_execution import ResultStepExecution - from qase.api_client_v2.models.result_step_status import ResultStepStatus - from qase.api_client_v2.models.result_steps_type import ResultStepsType - -else: - from lazy_imports import LazyModule, as_package, load - - load( - LazyModule( - *as_package(__file__), - """# import models into model package +# import models into model package from qase.api_client_v2.models.base_response import BaseResponse from qase.api_client_v2.models.create_results_request_v2 import CreateResultsRequestV2 from qase.api_client_v2.models.custom_field import CustomField @@ -67,8 +36,3 @@ from qase.api_client_v2.models.result_step_status import ResultStepStatus from qase.api_client_v2.models.result_steps_type import ResultStepsType -""", - name=__name__, - doc=__doc__, - ) - ) diff --git a/qase-api-v2-client/src/qase/api_client_v2/rest.py b/qase-api-v2-client/src/qase/api_client_v2/rest.py index 0e681d6c..c8e05b98 100644 --- a/qase-api-v2-client/src/qase/api_client_v2/rest.py +++ b/qase-api-v2-client/src/qase/api_client_v2/rest.py @@ -49,12 +49,17 @@ def read(self): self.data = self.response.data return self.data + @property + def headers(self): + """Returns a dictionary of response headers.""" + return self.response.headers + def getheaders(self): - """Returns a dictionary of the response headers.""" + """Returns a dictionary of the response headers; use ``headers`` instead.""" return self.response.headers def getheader(self, name, default=None): - """Returns a given response header.""" + """Returns a given response header; use ``headers.get()`` instead.""" return self.response.headers.get(name, default)