Skip to content

Commit

Permalink
[core] add serialization and deserialization errors (Azure#24113)
Browse files Browse the repository at this point in the history
  • Loading branch information
iscai-msft committed May 2, 2022
1 parent 1deba42 commit 3520840
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 4 deletions.
4 changes: 3 additions & 1 deletion sdk/core/azure-core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
# Release History

## 1.23.2 (Unreleased)
## 1.24.0 (Unreleased)

### Features Added

- Add `SerializationError` and `DeserializationError` in `azure.core.serialization` for errors raised during serialization / deserialization #24113

### Breaking Changes

### Bugs Fixed
Expand Down
2 changes: 1 addition & 1 deletion sdk/core/azure-core/azure/core/_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@
# regenerated.
# --------------------------------------------------------------------------

VERSION = "1.23.2"
VERSION = "1.24.0"
10 changes: 9 additions & 1 deletion sdk/core/azure-core/azure/core/serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from .utils._utils import _FixedOffset


__all__ = ["NULL", "AzureJSONEncoder"]
__all__ = ["NULL", "AzureJSONEncoder", "SerializationError", "DeserializationError"]


class _Null(object):
Expand Down Expand Up @@ -123,3 +123,11 @@ def default(self, o): # pylint: disable=too-many-return-statements
except AttributeError:
pass
return super(AzureJSONEncoder, self).default(o)

class SerializationError(ValueError):
"""Raised if an error is encountered during serialization."""
...

class DeserializationError(ValueError):
"""Raised if an error is encountered during deserialization."""
...
24 changes: 23 additions & 1 deletion sdk/core/azure-core/tests/test_serialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import json
import sys

from azure.core.serialization import AzureJSONEncoder, NULL
from azure.core.serialization import AzureJSONEncoder, NULL, SerializationError, DeserializationError
import pytest


Expand Down Expand Up @@ -442,3 +442,25 @@ def __init__(self):
]
}
assert json.loads(json_dumps_with_encoder(expected.to_dict())) == expected_dict

def test_serialization_error():
message = "Oopsy bad input passed for serialization"
error = SerializationError(message)
with pytest.raises(SerializationError) as ex:
raise error
assert str(ex.value) == message

with pytest.raises(ValueError) as ex:
raise error
assert str(ex.value) == message

def test_deserialization_error():
message = "Oopsy bad input passed for serialization"
error = DeserializationError(message)
with pytest.raises(DeserializationError) as ex:
raise error
assert str(ex.value) == message

with pytest.raises(ValueError) as ex:
raise error
assert str(ex.value) == message

0 comments on commit 3520840

Please sign in to comment.