File size: 2,506 Bytes
a3e8b4b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Copyright 2024 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Error classes for Pete."""


class InternalBugError(Exception):
  """Internal error capture exceptions which should never happen.

  The exception is purposefully not a child of PeteError to prevent it from
  being caught by pete exception handling logic. If InternalBugError are
  raised they should be investigated as bugs. Most internal errors check for
  expected conditions between the EZ-WSI pete interface.
  """


class PeteError(Exception):
  """Base error class for Pete Errors."""

  def __init__(self, message: str = '', api_description: str = ''):
    """Errors with optional alternative descriptions for API echoing."""
    super().__init__(message if message else api_description)
    self._api_description = api_description

  @property
  def api_description(self) -> str:
    """Returns the API description of the error."""
    return self._api_description if self._api_description else str(self)


class InstancesNotConcatenatedError(PeteError):
  pass


class InvalidRequestFieldError(PeteError):
  pass


class InvalidResponseError(PeteError):
  pass


class InvalidCredentialsError(PeteError):
  pass


class LevelNotFoundError(PeteError):
  pass


class TooManyPatchesError(PeteError):
  pass


class EzWsiStateError(PeteError):
  pass


class GcsImagePathFormatError(PeteError):
  pass


class ImageError(PeteError):
  pass


class PatchOutsideOfImageDimensionsError(PeteError):
  pass


class HttpError(PeteError):
  pass


class InvalidIccProfileTransformError(PeteError):
  pass


class ImageDimensionError(PeteError):
  pass


class DicomTiledFullError(PeteError):
  pass


class DicomPathError(PeteError):
  pass


class DicomError(PeteError):
  pass


class DicomImageDownsamplingTooLargeError(PeteError):
  pass


class UnapprovedDicomStoreError(PeteError):
  pass


class UnapprovedGcsBucketError(PeteError):
  pass


class PatchDimensionsDoNotMatchEndpointInputDimensionsError(PeteError):
  pass