Skip to content

Commit 856e8c2

Browse files
JaeHyuckSasobolevnpre-commit-ci[bot]
authored
5.0: Update django.forms.boundfield and django.forms.utils (#2118)
Co-authored-by: Nikita Sobolev <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent 4a7619f commit 856e8c2

File tree

4 files changed

+18
-11
lines changed

4 files changed

+18
-11
lines changed

django-stubs/forms/boundfield.pyi

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ from typing import Any, overload
44
from django.forms.fields import Field
55
from django.forms.forms import BaseForm
66
from django.forms.renderers import BaseRenderer
7-
from django.forms.utils import ErrorList
7+
from django.forms.utils import ErrorList, RenderableFieldMixin
88
from django.forms.widgets import Widget
99
from django.utils.functional import _StrOrPromise, cached_property
1010
from django.utils.safestring import SafeString
1111
from typing_extensions import TypeAlias
1212

1313
_AttrsT: TypeAlias = dict[str, str | bool]
1414

15-
class BoundField:
15+
class BoundField(RenderableFieldMixin):
1616
form: BaseForm
1717
field: Field
1818
name: str
@@ -21,6 +21,7 @@ class BoundField:
2121
html_initial_id: str
2222
label: _StrOrPromise
2323
help_text: _StrOrPromise
24+
renderer: BaseRenderer
2425
def __init__(self, form: BaseForm, field: Field, name: str) -> None: ...
2526
@cached_property
2627
def subwidgets(self) -> list[BoundWidget]: ...
@@ -33,6 +34,8 @@ class BoundField:
3334
def __getitem__(self, idx: slice) -> list[BoundWidget]: ...
3435
@property
3536
def errors(self) -> ErrorList: ...
37+
@property
38+
def template_name(self) -> str: ...
3639
def as_widget(
3740
self, widget: Widget | None = ..., attrs: _AttrsT | None = ..., only_initial: bool = ...
3841
) -> SafeString: ...

django-stubs/forms/utils.pyi

+9-2
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,15 @@ class RenderableMixin:
2626
context: dict[str, Any] | None = ...,
2727
renderer: BaseRenderer | type[BaseRenderer] | None = ...,
2828
) -> SafeString: ...
29-
__str__ = render
30-
__html__ = render
29+
# This is a lie, but this is how it is supposed to be used,
30+
# in reallity it is `__str__ = __html__ = render`:
31+
def __str__(self) -> SafeString: ...
32+
def __html__(self) -> SafeString: ...
33+
34+
class RenderableFieldMixin(RenderableMixin):
35+
def as_field_group(self) -> SafeString: ...
36+
def as_hidden(self) -> SafeString: ...
37+
def as_widget(self) -> SafeString: ...
3138

3239
class RenderableFormMixin(RenderableMixin):
3340
def as_p(self) -> SafeString: ...

scripts/stubtest/allowlist.txt

+4
Original file line numberDiff line numberDiff line change
@@ -402,3 +402,7 @@ django.contrib.auth.models.AbstractUser.Meta
402402
django.contrib.auth.models.PermissionsMixin.Meta
403403
django.contrib.flatpages.forms.FlatpageForm.Meta
404404
django.contrib.sessions.base_session.AbstractBaseSession.Meta
405+
406+
# Custom __str__ that we don't want to overcomplicate:
407+
django.forms.utils.RenderableMixin.__str__
408+
django.forms.utils.RenderableMixin.__html__

scripts/stubtest/allowlist_todo_django50.txt

-7
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ django.contrib.gis.db.models.Prefetch.get_current_querysets
2323
django.contrib.gis.db.models.Q.identity
2424
django.contrib.gis.db.models.When.allowed_default
2525
django.contrib.gis.forms.BaseForm._html_output
26-
django.contrib.gis.forms.BoundField.get_context
27-
django.contrib.gis.forms.BoundField.template_name
2826
django.contrib.gis.forms.ClearableFileInput.checked
2927
django.contrib.gis.forms.fields_for_model
3028
django.contrib.gis.geos.prototypes.io.DEFAULT_TRIM_VALUE
@@ -93,16 +91,11 @@ django.db.models.sql.query.Query.join
9391
django.db.models.sql.query.Query.resolve_lookup_value
9492
django.db.models.sql.query.Query.setup_joins
9593
django.forms.BaseForm._html_output
96-
django.forms.BoundField.get_context
97-
django.forms.BoundField.template_name
9894
django.forms.ClearableFileInput.checked
99-
django.forms.boundfield.BoundField.get_context
100-
django.forms.boundfield.BoundField.template_name
10195
django.forms.fields_for_model
10296
django.forms.forms.BaseForm._html_output
10397
django.forms.models.fields_for_model
10498
django.forms.renderers.BaseRenderer.field_template_name
10599
django.forms.renderers.Jinja2DivFormRenderer.__init__
106-
django.forms.utils.RenderableFieldMixin
107100
django.forms.widgets.ClearableFileInput.checked
108101
django.template.autoreload

0 commit comments

Comments
 (0)