Prevent subclasses of bytes being converted to bytes (#3707)

* adding a test

* fix and add change description
This commit is contained in:
Samuel Colvin
2022-04-02 14:45:31 +01:00
committed by GitHub
parent 55b34ef946
commit f0acf6efe7
3 changed files with 28 additions and 1 deletions
+1
View File
@@ -0,0 +1 @@
Prevent subclasses of bytes being converted to bytes
+1 -1
View File
@@ -76,7 +76,7 @@ def strict_str_validator(v: Any) -> Union[str]:
raise errors.StrError()
def bytes_validator(v: Any) -> bytes:
def bytes_validator(v: Any) -> Union[bytes]:
if isinstance(v, bytes):
return v
elif isinstance(v, bytearray):
+26
View File
@@ -1906,3 +1906,29 @@ def test_arbitrary_types_allowed_custom_eq():
arbitrary_types_allowed = True
assert Model().x == Foo()
def test_bytes_subclass():
class MyModel(BaseModel):
my_bytes: bytes
class BytesSubclass(bytes):
def __new__(cls, data: bytes):
self = bytes.__new__(cls, data)
return self
m = MyModel(my_bytes=BytesSubclass(b'foobar'))
assert m.my_bytes.__class__ == BytesSubclass
def test_int_subclass():
class MyModel(BaseModel):
my_int: int
class IntSubclass(int):
def __new__(cls, data: int):
self = int.__new__(cls, data)
return self
m = MyModel(my_int=IntSubclass(123))
assert m.my_int.__class__ == IntSubclass