capo-codeguru-security 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. capo_codeguru_security/__init__.py +74 -0
  2. capo_codeguru_security/_async.py +25 -0
  3. capo_codeguru_security/_auth/_identity.py +16 -0
  4. capo_codeguru_security/_auth/_providers.py +886 -0
  5. capo_codeguru_security/_auth/_signers.py +88 -0
  6. capo_codeguru_security/_auth/_sigv4.py +434 -0
  7. capo_codeguru_security/_auth/_zapros_handler.py +80 -0
  8. capo_codeguru_security/_iter.py +113 -0
  9. capo_codeguru_security/_operations/aws_code_guru_security/batch_get_findings.py +167 -0
  10. capo_codeguru_security/_operations/aws_code_guru_security/create_scan.py +183 -0
  11. capo_codeguru_security/_operations/aws_code_guru_security/create_upload_url.py +165 -0
  12. capo_codeguru_security/_operations/aws_code_guru_security/get_account_configuration.py +161 -0
  13. capo_codeguru_security/_operations/aws_code_guru_security/get_findings.py +191 -0
  14. capo_codeguru_security/_operations/aws_code_guru_security/get_metrics_summary.py +176 -0
  15. capo_codeguru_security/_operations/aws_code_guru_security/get_scan.py +173 -0
  16. capo_codeguru_security/_operations/aws_code_guru_security/list_findings_metrics.py +185 -0
  17. capo_codeguru_security/_operations/aws_code_guru_security/list_scans.py +167 -0
  18. capo_codeguru_security/_operations/aws_code_guru_security/list_tags_for_resource.py +173 -0
  19. capo_codeguru_security/_operations/aws_code_guru_security/tag_resource.py +173 -0
  20. capo_codeguru_security/_operations/aws_code_guru_security/untag_resource.py +171 -0
  21. capo_codeguru_security/_operations/aws_code_guru_security/update_account_configuration.py +172 -0
  22. capo_codeguru_security/_pagination.py +21 -0
  23. capo_codeguru_security/_protocol/__init__.py +1 -0
  24. capo_codeguru_security/_protocol/errors.py +93 -0
  25. capo_codeguru_security/_protocol/eventstream.py +238 -0
  26. capo_codeguru_security/_protocol/serialize.py +47 -0
  27. capo_codeguru_security/_protocol/xml.py +33 -0
  28. capo_codeguru_security/_rule_engine/__init__.py +0 -0
  29. capo_codeguru_security/_rule_engine/_aws_partition.py +160 -0
  30. capo_codeguru_security/_rule_engine/_endpoint_rule_set.py +137 -0
  31. capo_codeguru_security/_rule_engine/_endpoint_runtime.py +389 -0
  32. capo_codeguru_security/_services/_aws_config.py +160 -0
  33. capo_codeguru_security/_services/_pipeline.py +198 -0
  34. capo_codeguru_security/_services/async_code_guru_security.py +934 -0
  35. capo_codeguru_security/_services/code_guru_security.py +921 -0
  36. capo_codeguru_security/errors/__init__.py +33 -0
  37. capo_codeguru_security/errors/_base.py +94 -0
  38. capo_codeguru_security/errors/access_denied_exception.py +67 -0
  39. capo_codeguru_security/errors/conflict_exception.py +67 -0
  40. capo_codeguru_security/errors/internal_server_exception.py +53 -0
  41. capo_codeguru_security/errors/resource_not_found_exception.py +69 -0
  42. capo_codeguru_security/errors/throttling_exception.py +65 -0
  43. capo_codeguru_security/errors/validation_exception.py +98 -0
  44. capo_codeguru_security/py.typed +0 -0
  45. capo_codeguru_security/types/_prelude/blob.py +12 -0
  46. capo_codeguru_security/types/_prelude/timestamp.py +17 -0
  47. capo_codeguru_security/types/account_findings_metric.py +118 -0
  48. capo_codeguru_security/types/analysis_type.py +17 -0
  49. capo_codeguru_security/types/batch_get_findings_error.py +61 -0
  50. capo_codeguru_security/types/batch_get_findings_errors.py +35 -0
  51. capo_codeguru_security/types/batch_get_findings_request.py +47 -0
  52. capo_codeguru_security/types/batch_get_findings_response.py +61 -0
  53. capo_codeguru_security/types/categories_with_most_findings.py +37 -0
  54. capo_codeguru_security/types/category_with_finding_num.py +29 -0
  55. capo_codeguru_security/types/client_token.py +5 -0
  56. capo_codeguru_security/types/code_line.py +29 -0
  57. capo_codeguru_security/types/code_snippet.py +29 -0
  58. capo_codeguru_security/types/create_scan_request.py +101 -0
  59. capo_codeguru_security/types/create_scan_response.py +78 -0
  60. capo_codeguru_security/types/create_upload_url_request.py +31 -0
  61. capo_codeguru_security/types/create_upload_url_response.py +59 -0
  62. capo_codeguru_security/types/detector_tags.py +14 -0
  63. capo_codeguru_security/types/encryption_config.py +28 -0
  64. capo_codeguru_security/types/error_code.py +20 -0
  65. capo_codeguru_security/types/error_message.py +5 -0
  66. capo_codeguru_security/types/file_path.py +62 -0
  67. capo_codeguru_security/types/finding.py +207 -0
  68. capo_codeguru_security/types/finding_identifier.py +33 -0
  69. capo_codeguru_security/types/finding_identifiers.py +33 -0
  70. capo_codeguru_security/types/finding_metrics_value_per_severity.py +87 -0
  71. capo_codeguru_security/types/findings.py +29 -0
  72. capo_codeguru_security/types/findings_metric_list.py +35 -0
  73. capo_codeguru_security/types/get_account_configuration_request.py +18 -0
  74. capo_codeguru_security/types/get_account_configuration_response.py +45 -0
  75. capo_codeguru_security/types/get_findings_request.py +32 -0
  76. capo_codeguru_security/types/get_findings_response.py +43 -0
  77. capo_codeguru_security/types/get_metrics_summary_request.py +24 -0
  78. capo_codeguru_security/types/get_metrics_summary_response.py +42 -0
  79. capo_codeguru_security/types/get_scan_request.py +27 -0
  80. capo_codeguru_security/types/get_scan_response.py +132 -0
  81. capo_codeguru_security/types/header_key.py +5 -0
  82. capo_codeguru_security/types/header_value.py +5 -0
  83. capo_codeguru_security/types/kms_key_arn.py +5 -0
  84. capo_codeguru_security/types/list_findings_metrics_request.py +32 -0
  85. capo_codeguru_security/types/list_findings_metrics_response.py +49 -0
  86. capo_codeguru_security/types/list_scans_request.py +26 -0
  87. capo_codeguru_security/types/list_scans_response.py +43 -0
  88. capo_codeguru_security/types/list_tags_for_resource_request.py +24 -0
  89. capo_codeguru_security/types/list_tags_for_resource_response.py +34 -0
  90. capo_codeguru_security/types/metrics_summary.py +121 -0
  91. capo_codeguru_security/types/next_token.py +5 -0
  92. capo_codeguru_security/types/recommendation.py +29 -0
  93. capo_codeguru_security/types/reference_urls.py +14 -0
  94. capo_codeguru_security/types/related_vulnerabilities.py +14 -0
  95. capo_codeguru_security/types/remediation.py +63 -0
  96. capo_codeguru_security/types/request_header_map.py +29 -0
  97. capo_codeguru_security/types/resource.py +29 -0
  98. capo_codeguru_security/types/resource_id.py +32 -0
  99. capo_codeguru_security/types/s3_url.py +5 -0
  100. capo_codeguru_security/types/scan_name.py +5 -0
  101. capo_codeguru_security/types/scan_name_arn.py +5 -0
  102. capo_codeguru_security/types/scan_name_with_finding_num.py +29 -0
  103. capo_codeguru_security/types/scan_state.py +18 -0
  104. capo_codeguru_security/types/scan_summaries.py +29 -0
  105. capo_codeguru_security/types/scan_summary.py +99 -0
  106. capo_codeguru_security/types/scan_type.py +17 -0
  107. capo_codeguru_security/types/scans_with_most_open_critical_findings.py +37 -0
  108. capo_codeguru_security/types/scans_with_most_open_findings.py +37 -0
  109. capo_codeguru_security/types/severity.py +20 -0
  110. capo_codeguru_security/types/status.py +18 -0
  111. capo_codeguru_security/types/suggested_fix.py +29 -0
  112. capo_codeguru_security/types/suggested_fixes.py +31 -0
  113. capo_codeguru_security/types/tag_key.py +5 -0
  114. capo_codeguru_security/types/tag_key_list.py +17 -0
  115. capo_codeguru_security/types/tag_map.py +29 -0
  116. capo_codeguru_security/types/tag_resource_request.py +40 -0
  117. capo_codeguru_security/types/tag_resource_response.py +18 -0
  118. capo_codeguru_security/types/tag_value.py +5 -0
  119. capo_codeguru_security/types/untag_resource_request.py +27 -0
  120. capo_codeguru_security/types/untag_resource_response.py +18 -0
  121. capo_codeguru_security/types/update_account_configuration_request.py +45 -0
  122. capo_codeguru_security/types/update_account_configuration_response.py +45 -0
  123. capo_codeguru_security/types/uuid.py +5 -0
  124. capo_codeguru_security/types/validation_exception_field.py +33 -0
  125. capo_codeguru_security/types/validation_exception_field_list.py +37 -0
  126. capo_codeguru_security/types/validation_exception_reason.py +20 -0
  127. capo_codeguru_security/types/vulnerability.py +90 -0
  128. capo_codeguru_security-0.1.0.dist-info/METADATA +101 -0
  129. capo_codeguru_security-0.1.0.dist-info/RECORD +132 -0
  130. capo_codeguru_security-0.1.0.dist-info/WHEEL +5 -0
  131. capo_codeguru_security-0.1.0.dist-info/licenses/LICENSE +21 -0
  132. capo_codeguru_security-0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,33 @@
1
+ from __future__ import annotations
2
+
3
+ from ._base import (
4
+ CodeGuruSecurityError as CodeGuruSecurityError,
5
+ )
6
+ from ._base import (
7
+ DeserializationError as DeserializationError,
8
+ )
9
+ from ._base import (
10
+ SerializationError as SerializationError,
11
+ )
12
+ from ._base import (
13
+ ServiceError as ServiceError,
14
+ )
15
+ from ._base import (
16
+ UnknownServiceError as UnknownServiceError,
17
+ )
18
+ from ._base import (
19
+ WaiterFailedError as WaiterFailedError,
20
+ )
21
+ from ._base import (
22
+ WaiterTimeoutError as WaiterTimeoutError,
23
+ )
24
+ from .access_denied_exception import AccessDeniedException as AccessDeniedException
25
+ from .conflict_exception import ConflictException as ConflictException
26
+ from .internal_server_exception import (
27
+ InternalServerException as InternalServerException,
28
+ )
29
+ from .resource_not_found_exception import (
30
+ ResourceNotFoundException as ResourceNotFoundException,
31
+ )
32
+ from .throttling_exception import ThrottlingException as ThrottlingException
33
+ from .validation_exception import ValidationException as ValidationException
@@ -0,0 +1,94 @@
1
+ from typing import Literal
2
+
3
+
4
+ class CodeGuruSecurityError(Exception):
5
+ """Base class for all CodeGuruSecurity service errors."""
6
+
7
+
8
+ class ServiceError(CodeGuruSecurityError):
9
+ """Base class for all modeled service errors.
10
+
11
+ Args:
12
+ fault: ``"client"`` or ``"server"``.
13
+ is_throttling_error: Whether this error is a throttling error.
14
+ is_retryable: Whether this error is retryable.
15
+ code: The wire error code, or ``None``.
16
+ message: The error message, or ``None``.
17
+ """
18
+
19
+ code: str | None = None
20
+
21
+ def __init__(
22
+ self,
23
+ fault: Literal["client", "server"],
24
+ *,
25
+ is_throttling_error: bool,
26
+ is_retryable: bool,
27
+ code: str | None = None,
28
+ message: str | None = None,
29
+ ) -> None:
30
+ super().__init__(f"{code or '<no code>'}: {message or '<no message>'}")
31
+ self.fault = fault
32
+ self.is_throttling_error = is_throttling_error
33
+ self.is_retryable = is_retryable
34
+ self.code = code
35
+ self.message = message
36
+
37
+
38
+ class SerializationError(CodeGuruSecurityError):
39
+ """Raised when a value cannot be serialized."""
40
+
41
+
42
+ class DeserializationError(CodeGuruSecurityError):
43
+ """Raised when a value cannot be deserialized or a required member is missing."""
44
+
45
+
46
+ class UnknownServiceError(ServiceError):
47
+ """Raised when the server returns an error code the client does not model.
48
+
49
+ Args:
50
+ code: ``<Code>`` text from the response body, or ``None`` if absent.
51
+ message: ``<Message>`` text from the response body, or ``None``.
52
+ response: The original HTTP response object, for arbitrary inspection.
53
+ """
54
+
55
+ def __init__(
56
+ self, *, code: str | None, message: str | None, response: object
57
+ ) -> None:
58
+ _status = getattr(response, "status", 500)
59
+ _fault: Literal["client", "server"] = "client" if _status < 500 else "server"
60
+ _throttling = _status == 429
61
+ _retryable = _throttling or _status >= 500
62
+ super().__init__(
63
+ _fault,
64
+ is_throttling_error=_throttling,
65
+ is_retryable=_retryable,
66
+ code=code,
67
+ message=message,
68
+ )
69
+ self.response = response
70
+
71
+
72
+ class WaiterFailedError(CodeGuruSecurityError):
73
+ """Raised when a waiter hits an acceptor with ``state="failure"``.
74
+
75
+ Args:
76
+ waiter_name: snake_case waiter name (e.g. ``bucket_exists``).
77
+ reason: Short description of which acceptor fired.
78
+ """
79
+
80
+ def __init__(self, waiter_name: str, reason: str) -> None:
81
+ super().__init__(f"waiter {waiter_name} failed: {reason}")
82
+ self.waiter_name = waiter_name
83
+ self.reason = reason
84
+
85
+
86
+ class WaiterTimeoutError(CodeGuruSecurityError):
87
+ """Raised when a waiter exhausts ``max_wait_time`` without a terminal acceptor."""
88
+
89
+ def __init__(self, waiter_name: str, max_wait_time: float) -> None:
90
+ super().__init__(
91
+ f"waiter {waiter_name} timed out after {max_wait_time} seconds"
92
+ )
93
+ self.waiter_name = waiter_name
94
+ self.max_wait_time = max_wait_time
@@ -0,0 +1,67 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#AccessDeniedException``."""
2
+
3
+ from typing_extensions import NotRequired, TypedDict
4
+
5
+ from capo_codeguru_security.errors import DeserializationError, ServiceError
6
+
7
+
8
+ class AccessDeniedException_(TypedDict, closed=True):
9
+ error_code: "str"
10
+ """<p>The identifier for the error.</p>"""
11
+ message: "str"
12
+ """<p>Description of the error.</p>"""
13
+ resource_id: NotRequired["str"]
14
+ """<p>The identifier for the resource you don't have access to.</p>"""
15
+ resource_type: NotRequired["str"]
16
+ """<p>The type of resource you don't have access to.</p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: AccessDeniedException_) -> dict:
21
+ out: dict = {}
22
+ out["errorCode"] = value["error_code"]
23
+ out["message"] = value["message"]
24
+ if "resource_id" in value:
25
+ out["resourceId"] = value["resource_id"]
26
+ if "resource_type" in value:
27
+ out["resourceType"] = value["resource_type"]
28
+ return out
29
+
30
+
31
+ def deserialize_json(data: dict) -> AccessDeniedException_:
32
+ out: AccessDeniedException_ = {} # type: ignore[typeddict-item]
33
+ if data.get("errorCode") is not None:
34
+ out["error_code"] = data["errorCode"]
35
+ else:
36
+ raise DeserializationError("AccessDeniedException_.error_code required")
37
+ if data.get("message") is not None:
38
+ out["message"] = data["message"]
39
+ else:
40
+ raise DeserializationError("AccessDeniedException_.message required")
41
+ if data.get("resourceId") is not None:
42
+ out["resource_id"] = data["resourceId"]
43
+ if data.get("resourceType") is not None:
44
+ out["resource_type"] = data["resourceType"]
45
+ return out
46
+
47
+
48
+ class AccessDeniedException(ServiceError):
49
+ """Modeled error for Smithy shape ``com.amazonaws.codegurusecurity#AccessDeniedException``."""
50
+
51
+ code: str | None = "AccessDeniedException"
52
+
53
+ def __init__(self, data: AccessDeniedException_, message: str | None = None):
54
+ super().__init__(
55
+ "client",
56
+ is_throttling_error=False,
57
+ is_retryable=False,
58
+ code="AccessDeniedException",
59
+ message=message,
60
+ )
61
+ self.data = data
62
+
63
+ @classmethod
64
+ def from_json(
65
+ cls, data: dict, message: str | None = None
66
+ ) -> "AccessDeniedException":
67
+ return cls(deserialize_json(data), message)
@@ -0,0 +1,67 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ConflictException``."""
2
+
3
+ from typing_extensions import TypedDict
4
+
5
+ from capo_codeguru_security.errors import DeserializationError, ServiceError
6
+
7
+
8
+ class ConflictException_(TypedDict, closed=True):
9
+ error_code: "str"
10
+ """<p>The identifier for the error.</p>"""
11
+ message: "str"
12
+ """<p>Description of the error.</p>"""
13
+ resource_id: "str"
14
+ """<p>The identifier for the service resource associated with the request.</p>"""
15
+ resource_type: "str"
16
+ """<p>The type of resource associated with the request.</p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: ConflictException_) -> dict:
21
+ out: dict = {}
22
+ out["errorCode"] = value["error_code"]
23
+ out["message"] = value["message"]
24
+ out["resourceId"] = value["resource_id"]
25
+ out["resourceType"] = value["resource_type"]
26
+ return out
27
+
28
+
29
+ def deserialize_json(data: dict) -> ConflictException_:
30
+ out: ConflictException_ = {} # type: ignore[typeddict-item]
31
+ if data.get("errorCode") is not None:
32
+ out["error_code"] = data["errorCode"]
33
+ else:
34
+ raise DeserializationError("ConflictException_.error_code required")
35
+ if data.get("message") is not None:
36
+ out["message"] = data["message"]
37
+ else:
38
+ raise DeserializationError("ConflictException_.message required")
39
+ if data.get("resourceId") is not None:
40
+ out["resource_id"] = data["resourceId"]
41
+ else:
42
+ raise DeserializationError("ConflictException_.resource_id required")
43
+ if data.get("resourceType") is not None:
44
+ out["resource_type"] = data["resourceType"]
45
+ else:
46
+ raise DeserializationError("ConflictException_.resource_type required")
47
+ return out
48
+
49
+
50
+ class ConflictException(ServiceError):
51
+ """Modeled error for Smithy shape ``com.amazonaws.codegurusecurity#ConflictException``."""
52
+
53
+ code: str | None = "ConflictException"
54
+
55
+ def __init__(self, data: ConflictException_, message: str | None = None):
56
+ super().__init__(
57
+ "client",
58
+ is_throttling_error=False,
59
+ is_retryable=False,
60
+ code="ConflictException",
61
+ message=message,
62
+ )
63
+ self.data = data
64
+
65
+ @classmethod
66
+ def from_json(cls, data: dict, message: str | None = None) -> "ConflictException":
67
+ return cls(deserialize_json(data), message)
@@ -0,0 +1,53 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#InternalServerException``."""
2
+
3
+ from typing_extensions import NotRequired, TypedDict
4
+
5
+ from capo_codeguru_security.errors import ServiceError
6
+
7
+
8
+ class InternalServerException_(TypedDict, closed=True):
9
+ error: NotRequired["str"]
10
+ """<p>The internal error encountered by the server.</p>"""
11
+ message: NotRequired["str"]
12
+ """<p>Description of the error.</p>"""
13
+
14
+
15
+ # --- restJson1 ser/de ---
16
+ def serialize_json(value: InternalServerException_) -> dict:
17
+ out: dict = {}
18
+ if "error" in value:
19
+ out["error"] = value["error"]
20
+ if "message" in value:
21
+ out["message"] = value["message"]
22
+ return out
23
+
24
+
25
+ def deserialize_json(data: dict) -> InternalServerException_:
26
+ out: InternalServerException_ = {} # type: ignore[typeddict-item]
27
+ if data.get("error") is not None:
28
+ out["error"] = data["error"]
29
+ if data.get("message") is not None:
30
+ out["message"] = data["message"]
31
+ return out
32
+
33
+
34
+ class InternalServerException(ServiceError):
35
+ """Modeled error for Smithy shape ``com.amazonaws.codegurusecurity#InternalServerException``."""
36
+
37
+ code: str | None = "InternalServerException"
38
+
39
+ def __init__(self, data: InternalServerException_, message: str | None = None):
40
+ super().__init__(
41
+ "server",
42
+ is_throttling_error=False,
43
+ is_retryable=True,
44
+ code="InternalServerException",
45
+ message=message,
46
+ )
47
+ self.data = data
48
+
49
+ @classmethod
50
+ def from_json(
51
+ cls, data: dict, message: str | None = None
52
+ ) -> "InternalServerException":
53
+ return cls(deserialize_json(data), message)
@@ -0,0 +1,69 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ResourceNotFoundException``."""
2
+
3
+ from typing_extensions import TypedDict
4
+
5
+ from capo_codeguru_security.errors import DeserializationError, ServiceError
6
+
7
+
8
+ class ResourceNotFoundException_(TypedDict, closed=True):
9
+ error_code: "str"
10
+ """<p>The identifier for the error.</p>"""
11
+ message: "str"
12
+ """<p>Description of the error.</p>"""
13
+ resource_id: "str"
14
+ """<p>The identifier for the resource that was not found.</p>"""
15
+ resource_type: "str"
16
+ """<p>The type of resource that was not found.</p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: ResourceNotFoundException_) -> dict:
21
+ out: dict = {}
22
+ out["errorCode"] = value["error_code"]
23
+ out["message"] = value["message"]
24
+ out["resourceId"] = value["resource_id"]
25
+ out["resourceType"] = value["resource_type"]
26
+ return out
27
+
28
+
29
+ def deserialize_json(data: dict) -> ResourceNotFoundException_:
30
+ out: ResourceNotFoundException_ = {} # type: ignore[typeddict-item]
31
+ if data.get("errorCode") is not None:
32
+ out["error_code"] = data["errorCode"]
33
+ else:
34
+ raise DeserializationError("ResourceNotFoundException_.error_code required")
35
+ if data.get("message") is not None:
36
+ out["message"] = data["message"]
37
+ else:
38
+ raise DeserializationError("ResourceNotFoundException_.message required")
39
+ if data.get("resourceId") is not None:
40
+ out["resource_id"] = data["resourceId"]
41
+ else:
42
+ raise DeserializationError("ResourceNotFoundException_.resource_id required")
43
+ if data.get("resourceType") is not None:
44
+ out["resource_type"] = data["resourceType"]
45
+ else:
46
+ raise DeserializationError("ResourceNotFoundException_.resource_type required")
47
+ return out
48
+
49
+
50
+ class ResourceNotFoundException(ServiceError):
51
+ """Modeled error for Smithy shape ``com.amazonaws.codegurusecurity#ResourceNotFoundException``."""
52
+
53
+ code: str | None = "ResourceNotFoundException"
54
+
55
+ def __init__(self, data: ResourceNotFoundException_, message: str | None = None):
56
+ super().__init__(
57
+ "client",
58
+ is_throttling_error=False,
59
+ is_retryable=False,
60
+ code="ResourceNotFoundException",
61
+ message=message,
62
+ )
63
+ self.data = data
64
+
65
+ @classmethod
66
+ def from_json(
67
+ cls, data: dict, message: str | None = None
68
+ ) -> "ResourceNotFoundException":
69
+ return cls(deserialize_json(data), message)
@@ -0,0 +1,65 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ThrottlingException``."""
2
+
3
+ from typing_extensions import NotRequired, TypedDict
4
+
5
+ from capo_codeguru_security.errors import DeserializationError, ServiceError
6
+
7
+
8
+ class ThrottlingException_(TypedDict, closed=True):
9
+ error_code: "str"
10
+ """<p>The identifier for the error.</p>"""
11
+ message: "str"
12
+ """<p>Description of the error.</p>"""
13
+ service_code: NotRequired["str"]
14
+ """<p>The identifier for the originating service.</p>"""
15
+ quota_code: NotRequired["str"]
16
+ """<p>The identifier for the originating quota.</p>"""
17
+
18
+
19
+ # --- restJson1 ser/de ---
20
+ def serialize_json(value: ThrottlingException_) -> dict:
21
+ out: dict = {}
22
+ out["errorCode"] = value["error_code"]
23
+ out["message"] = value["message"]
24
+ if "service_code" in value:
25
+ out["serviceCode"] = value["service_code"]
26
+ if "quota_code" in value:
27
+ out["quotaCode"] = value["quota_code"]
28
+ return out
29
+
30
+
31
+ def deserialize_json(data: dict) -> ThrottlingException_:
32
+ out: ThrottlingException_ = {} # type: ignore[typeddict-item]
33
+ if data.get("errorCode") is not None:
34
+ out["error_code"] = data["errorCode"]
35
+ else:
36
+ raise DeserializationError("ThrottlingException_.error_code required")
37
+ if data.get("message") is not None:
38
+ out["message"] = data["message"]
39
+ else:
40
+ raise DeserializationError("ThrottlingException_.message required")
41
+ if data.get("serviceCode") is not None:
42
+ out["service_code"] = data["serviceCode"]
43
+ if data.get("quotaCode") is not None:
44
+ out["quota_code"] = data["quotaCode"]
45
+ return out
46
+
47
+
48
+ class ThrottlingException(ServiceError):
49
+ """Modeled error for Smithy shape ``com.amazonaws.codegurusecurity#ThrottlingException``."""
50
+
51
+ code: str | None = "ThrottlingException"
52
+
53
+ def __init__(self, data: ThrottlingException_, message: str | None = None):
54
+ super().__init__(
55
+ "client",
56
+ is_throttling_error=True,
57
+ is_retryable=True,
58
+ code="ThrottlingException",
59
+ message=message,
60
+ )
61
+ self.data = data
62
+
63
+ @classmethod
64
+ def from_json(cls, data: dict, message: str | None = None) -> "ThrottlingException":
65
+ return cls(deserialize_json(data), message)
@@ -0,0 +1,98 @@
1
+ """Generated from Smithy shape ``com.amazonaws.codegurusecurity#ValidationException``."""
2
+
3
+ from typing import TYPE_CHECKING
4
+
5
+ from typing_extensions import NotRequired, TypedDict
6
+
7
+ from capo_codeguru_security.errors import DeserializationError, ServiceError
8
+
9
+ if TYPE_CHECKING:
10
+ import capo_codeguru_security.types.validation_exception_field_list
11
+ import capo_codeguru_security.types.validation_exception_reason
12
+
13
+
14
+ class ValidationException_(TypedDict, closed=True):
15
+ error_code: "str"
16
+ """<p>The identifier for the error.</p>"""
17
+ message: "str"
18
+ """<p>Description of the error.</p>"""
19
+ reason: "capo_codeguru_security.types.validation_exception_reason.ValidationExceptionReason"
20
+ """<p>The reason the request failed validation.</p>"""
21
+ field_list: NotRequired[
22
+ "capo_codeguru_security.types.validation_exception_field_list.ValidationExceptionFieldList"
23
+ ]
24
+ """<p>The field that caused the error, if applicable.</p>"""
25
+
26
+
27
+ # --- restJson1 ser/de ---
28
+ def serialize_json(value: ValidationException_) -> dict:
29
+ out: dict = {}
30
+ out["errorCode"] = value["error_code"]
31
+ out["message"] = value["message"]
32
+ import capo_codeguru_security.types.validation_exception_reason
33
+
34
+ out["reason"] = (
35
+ capo_codeguru_security.types.validation_exception_reason.serialize_json(
36
+ value["reason"]
37
+ )
38
+ )
39
+ if "field_list" in value:
40
+ import capo_codeguru_security.types.validation_exception_field_list
41
+
42
+ out["fieldList"] = (
43
+ capo_codeguru_security.types.validation_exception_field_list.serialize_json(
44
+ value["field_list"]
45
+ )
46
+ )
47
+ return out
48
+
49
+
50
+ def deserialize_json(data: dict) -> ValidationException_:
51
+ out: ValidationException_ = {} # type: ignore[typeddict-item]
52
+ if data.get("errorCode") is not None:
53
+ out["error_code"] = data["errorCode"]
54
+ else:
55
+ raise DeserializationError("ValidationException_.error_code required")
56
+ if data.get("message") is not None:
57
+ out["message"] = data["message"]
58
+ else:
59
+ raise DeserializationError("ValidationException_.message required")
60
+ if data.get("reason") is not None:
61
+ import capo_codeguru_security.types.validation_exception_reason
62
+
63
+ out["reason"] = (
64
+ capo_codeguru_security.types.validation_exception_reason.deserialize_json(
65
+ data["reason"]
66
+ )
67
+ )
68
+ else:
69
+ raise DeserializationError("ValidationException_.reason required")
70
+ if data.get("fieldList") is not None:
71
+ import capo_codeguru_security.types.validation_exception_field_list
72
+
73
+ out["field_list"] = (
74
+ capo_codeguru_security.types.validation_exception_field_list.deserialize_json(
75
+ data["fieldList"]
76
+ )
77
+ )
78
+ return out
79
+
80
+
81
+ class ValidationException(ServiceError):
82
+ """Modeled error for Smithy shape ``com.amazonaws.codegurusecurity#ValidationException``."""
83
+
84
+ code: str | None = "ValidationException"
85
+
86
+ def __init__(self, data: ValidationException_, message: str | None = None):
87
+ super().__init__(
88
+ "client",
89
+ is_throttling_error=False,
90
+ is_retryable=False,
91
+ code="ValidationException",
92
+ message=message,
93
+ )
94
+ self.data = data
95
+
96
+ @classmethod
97
+ def from_json(cls, data: dict, message: str | None = None) -> "ValidationException":
98
+ return cls(deserialize_json(data), message)
File without changes
@@ -0,0 +1,12 @@
1
+ """Generated from Smithy prelude shape ``smithy.api#Blob``."""
2
+
3
+ import base64
4
+
5
+
6
+ # --- restJson1 ser/de ---
7
+ def serialize_json(value: bytes) -> str:
8
+ return base64.b64encode(value).decode("ascii")
9
+
10
+
11
+ def deserialize_json(data: str) -> bytes:
12
+ return base64.b64decode(data)
@@ -0,0 +1,17 @@
1
+ """Generated from Smithy prelude shape ``smithy.api#Timestamp``."""
2
+
3
+ import datetime
4
+
5
+
6
+ # --- restJson1 ser/de ---
7
+ def serialize_json(value: datetime.datetime) -> float:
8
+ value = (
9
+ value.astimezone(datetime.timezone.utc)
10
+ if value.tzinfo
11
+ else value.replace(tzinfo=datetime.timezone.utc)
12
+ )
13
+ return value.timestamp()
14
+
15
+
16
+ def deserialize_json(data: float) -> datetime.datetime:
17
+ return datetime.datetime.fromtimestamp(float(data), tz=datetime.timezone.utc)