From 695a7d71a7a228345bc068b8109c8027457b5887 Mon Sep 17 00:00:00 2001 From: Abhyudai <13880786+abhiabhi94@users.noreply.github.com> Date: Sun, 1 Aug 2021 13:40:15 +0530 Subject: [PATCH] Update type of BinaryField to include memoryview as well (#686) --- django-stubs/db/models/fields/__init__.pyi | 2 +- tests/typecheck/fields/test_base.yml | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/django-stubs/db/models/fields/__init__.pyi b/django-stubs/db/models/fields/__init__.pyi index 388af37..d4c74af 100644 --- a/django-stubs/db/models/fields/__init__.pyi +++ b/django-stubs/db/models/fields/__init__.pyi @@ -493,7 +493,7 @@ class FilePathField(Field[_ST, _GT]): ): ... class BinaryField(Field[_ST, _GT]): - _pyi_private_get_type: bytes + _pyi_private_get_type: Union[bytes, memoryview] class DurationField(Field[_ST, _GT]): _pyi_private_get_type: timedelta diff --git a/tests/typecheck/fields/test_base.yml b/tests/typecheck/fields/test_base.yml index 014c04b..9d3cf23 100644 --- a/tests/typecheck/fields/test_base.yml +++ b/tests/typecheck/fields/test_base.yml @@ -165,3 +165,12 @@ reveal_type(book.published) # N: Revealed type is "main.Year*" def accepts_int(arg: int) -> None: ... accepts_int(book.published) + +- case: test_binary_field_return_types + main: | + from django.db import models + class EncodedMessage(models.Model): + message = models.BinaryField() + obj = EncodedMessage(b'\x010') + + reveal_type(obj.message) # N: Revealed type is "Union[builtins.bytes, builtins.memoryview]"