From 3ac34f110800e555a380b80ea2fb8758c19ebea2 Mon Sep 17 00:00:00 2001 From: Alex Nathanail Date: Wed, 10 Aug 2022 14:16:54 +0100 Subject: [PATCH] Fix base_field type for SimpleArrayField (#1097) * Fix base_field type for SimpleArrayField * Add test which fails without this change --- django-stubs/contrib/postgres/forms/array.pyi | 8 ++++---- tests/typecheck/contrib/postgres/test_fields.yml | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/django-stubs/contrib/postgres/forms/array.pyi b/django-stubs/contrib/postgres/forms/array.pyi index ec24e2a..f3c8590 100644 --- a/django-stubs/contrib/postgres/forms/array.pyi +++ b/django-stubs/contrib/postgres/forms/array.pyi @@ -13,13 +13,13 @@ from ..utils import prefix_validation_error as prefix_validation_error class SimpleArrayField(forms.CharField): default_error_messages: _ErrorMessagesT = ... - base_field: Type[forms.Field] + base_field: forms.Field delimiter: str min_length: Optional[int] max_length: Optional[int] def __init__( self, - base_field: Type[forms.Field], + base_field: forms.Field, *, delimiter: str = ..., max_length: Optional[int] = ..., @@ -51,11 +51,11 @@ class SplitArrayWidget(forms.Widget): class SplitArrayField(forms.Field): default_error_messages: _ErrorMessagesT = ... - base_field: Type[forms.Field] + base_field: forms.Field size: int remove_trailing_nulls: bool def __init__( - self, base_field: Type[forms.Field], size: int, *, remove_trailing_nulls: bool = ..., **kwargs: Any + self, base_field: forms.Field, size: int, *, remove_trailing_nulls: bool = ..., **kwargs: Any ) -> None: ... def to_python(self, value: Any) -> Sequence[Any]: ... def clean(self, value: Any) -> Sequence[Any]: ... diff --git a/tests/typecheck/contrib/postgres/test_fields.yml b/tests/typecheck/contrib/postgres/test_fields.yml index 5dc93cf..9ede5a0 100644 --- a/tests/typecheck/contrib/postgres/test_fields.yml +++ b/tests/typecheck/contrib/postgres/test_fields.yml @@ -17,3 +17,18 @@ class MyModel(models.Model): array = ArrayField(base_field=models.TextField()) +- case: postgres_forms_simple_array_field + main: | + from myapp.forms import MyForm + MyForm() + installed_apps: + - myapp + files: + - path: myapp/__init__.py + - path: myapp/forms.py + content: | + from django import forms + from django.contrib.postgres.forms import SimpleArrayField + + class MyForm(forms.Form): + lots_of_dates = SimpleArrayField(forms.DateField(), required=False)