Skip to content

Commit 3520840

Browse files
authored
[core] add serialization and deserialization errors (#24113)
1 parent 1deba42 commit 3520840

4 files changed

Lines changed: 36 additions & 4 deletions

File tree

sdk/core/azure-core/CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
# Release History
22

3-
## 1.23.2 (Unreleased)
3+
## 1.24.0 (Unreleased)
44

55
### Features Added
66

7+
- Add `SerializationError` and `DeserializationError` in `azure.core.serialization` for errors raised during serialization / deserialization #24113
8+
79
### Breaking Changes
810

911
### Bugs Fixed

sdk/core/azure-core/azure/core/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@
99
# regenerated.
1010
# --------------------------------------------------------------------------
1111

12-
VERSION = "1.23.2"
12+
VERSION = "1.24.0"

sdk/core/azure-core/azure/core/serialization.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from .utils._utils import _FixedOffset
1212

1313

14-
__all__ = ["NULL", "AzureJSONEncoder"]
14+
__all__ = ["NULL", "AzureJSONEncoder", "SerializationError", "DeserializationError"]
1515

1616

1717
class _Null(object):
@@ -123,3 +123,11 @@ def default(self, o): # pylint: disable=too-many-return-statements
123123
except AttributeError:
124124
pass
125125
return super(AzureJSONEncoder, self).default(o)
126+
127+
class SerializationError(ValueError):
128+
"""Raised if an error is encountered during serialization."""
129+
...
130+
131+
class DeserializationError(ValueError):
132+
"""Raised if an error is encountered during deserialization."""
133+
...

sdk/core/azure-core/tests/test_serialization.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import json
99
import sys
1010

11-
from azure.core.serialization import AzureJSONEncoder, NULL
11+
from azure.core.serialization import AzureJSONEncoder, NULL, SerializationError, DeserializationError
1212
import pytest
1313

1414

@@ -442,3 +442,25 @@ def __init__(self):
442442
]
443443
}
444444
assert json.loads(json_dumps_with_encoder(expected.to_dict())) == expected_dict
445+
446+
def test_serialization_error():
447+
message = "Oopsy bad input passed for serialization"
448+
error = SerializationError(message)
449+
with pytest.raises(SerializationError) as ex:
450+
raise error
451+
assert str(ex.value) == message
452+
453+
with pytest.raises(ValueError) as ex:
454+
raise error
455+
assert str(ex.value) == message
456+
457+
def test_deserialization_error():
458+
message = "Oopsy bad input passed for serialization"
459+
error = DeserializationError(message)
460+
with pytest.raises(DeserializationError) as ex:
461+
raise error
462+
assert str(ex.value) == message
463+
464+
with pytest.raises(ValueError) as ex:
465+
raise error
466+
assert str(ex.value) == message

0 commit comments

Comments
 (0)