Skip to content

Commit e566001

Browse files
Contribute to class (#2666)
* Sync `contribute_to_class` with runtime * Remove `--durations`
1 parent cab6aeb commit e566001

File tree

7 files changed

+13
-22
lines changed

7 files changed

+13
-22
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ jobs:
6868
6969
# Must match `shard` definition in the test matrix:
7070
- name: Run pytest tests
71-
run: PYTHONPATH='.' pytest --num-shards=4 --shard-id=${{ matrix.shard }} -n auto tests --durations=0
71+
run: PYTHONPATH='.' pytest --num-shards=4 --shard-id=${{ matrix.shard }} -n auto tests
7272
- name: Run mypy on the test cases
7373
run: mypy --strict tests
7474

django-stubs/contrib/contenttypes/fields.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class GenericRelation(ForeignObject[Any, Any]):
9090
def resolve_related_fields(self) -> list[tuple[Field, Field]]: ...
9191
def get_path_info(self, filtered_relation: FilteredRelation | None = ...) -> list[PathInfo]: ...
9292
def get_reverse_path_info(self, filtered_relation: FilteredRelation | None = ...) -> list[PathInfo]: ...
93+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ... # type: ignore[override]
9394
def get_content_type(self) -> ContentType: ...
9495
def get_extra_restriction(
9596
self, where_class: type[WhereNode], alias: str | None, remote_alias: str

django-stubs/contrib/gis/db/models/fields.pyi

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ from django.contrib.gis.geos import (
1313
Polygon,
1414
)
1515
from django.core.validators import _ValidatorCallable
16+
from django.db.models import Model
1617
from django.db.models.expressions import Combinable, Expression
1718
from django.db.models.fields import NOT_PROVIDED, Field, _ErrorMessagesMapping
1819
from django.utils.choices import _Choices
@@ -121,6 +122,7 @@ class GeometryField(BaseSpatialField[_ST, _GT]):
121122
srid: Any = ...,
122123
**kwargs: Any,
123124
) -> forms.GeometryField: ...
125+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ... # type: ignore[override]
124126

125127
class PointField(GeometryField[_ST, _GT]):
126128
_pyi_private_set_type: Point | Combinable
@@ -184,4 +186,5 @@ class ExtentField(Field):
184186
class RasterField(BaseSpatialField):
185187
def db_type(self, connection: Any) -> Any: ...
186188
def from_db_value(self, value: Any, expression: Any, connection: Any) -> Any: ...
189+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ... # type: ignore[override]
187190
def get_transform(self, name: Any) -> Any: ...

django-stubs/db/models/fields/__init__.pyi

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,7 @@ class DateField(DateTimeCheckMixin, Field[_ST, _GT]):
506506
validators: Iterable[validators._ValidatorCallable] = ...,
507507
error_messages: _ErrorMessagesMapping | None = ...,
508508
) -> None: ...
509+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ... # type: ignore[override]
509510

510511
class TimeField(DateTimeCheckMixin, Field[_ST, _GT]):
511512
_pyi_private_set_type: str | time | real_datetime | Combinable
@@ -621,16 +622,17 @@ class DurationField(Field[_ST, _GT]):
621622
class AutoFieldMixin:
622623
db_returning: bool
623624
def deconstruct(self) -> tuple[str, str, Sequence[Any], dict[str, Any]]: ...
625+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ...
624626

625627
class AutoFieldMeta(type): ...
626628

627-
class AutoField(AutoFieldMixin, IntegerField[_ST, _GT], metaclass=AutoFieldMeta):
629+
class AutoField(AutoFieldMixin, IntegerField[_ST, _GT], metaclass=AutoFieldMeta): # type: ignore[misc]
628630
_pyi_private_set_type: Combinable | int | str
629631
_pyi_private_get_type: int
630632
_pyi_lookup_exact_type: str | int
631633

632-
class BigAutoField(AutoFieldMixin, BigIntegerField[_ST, _GT]): ...
633-
class SmallAutoField(AutoFieldMixin, SmallIntegerField[_ST, _GT]): ...
634+
class BigAutoField(AutoFieldMixin, BigIntegerField[_ST, _GT]): ... # type: ignore[misc]
635+
class SmallAutoField(AutoFieldMixin, SmallIntegerField[_ST, _GT]): ... # type: ignore[misc]
634636

635637
__all__ = [
636638
"AutoField",

django-stubs/db/models/fields/files.pyi

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ class FileField(Field):
8989
# non-Model instances
9090
@overload
9191
def __get__(self, instance: Any, owner: Any) -> Self: ...
92+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ... # type: ignore[override]
9293
def generate_filename(self, instance: Model | None, filename: _PathCompatible) -> str: ...
9394

9495
class ImageFileDescriptor(FileDescriptor):

django-stubs/db/models/fields/related.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ class RelatedField(FieldCacheMixin, Field[_ST, _GT]):
7474
) -> None: ...
7575
@cached_property
7676
def related_model(self) -> type[Model] | Literal["self"]: ... # type: ignore[override]
77+
def contribute_to_class(self, cls: type[Model], name: str, private_only: bool = ..., **kwargs: Any) -> None: ...
7778
def get_forward_related_filter(self, obj: Model) -> dict[str, int | UUID]: ...
7879
def get_reverse_related_filter(self, obj: Model) -> Q: ...
7980
@property
@@ -299,6 +300,7 @@ class ManyToManyField(RelatedField[Any, Any], Generic[_To, _Through]):
299300
def __get__(self, instance: Any, owner: Any) -> Self: ...
300301
def get_path_info(self, filtered_relation: FilteredRelation | None = None) -> list[PathInfo]: ...
301302
def get_reverse_path_info(self, filtered_relation: FilteredRelation | None = None) -> list[PathInfo]: ...
303+
def contribute_to_class(self, cls: type[Model], name: str, **kwargs: Any) -> None: ... # type: ignore[override]
302304
def contribute_to_related_class(self, cls: type[Model], related: RelatedField) -> None: ...
303305
def m2m_db_table(self) -> str: ...
304306
def m2m_column_name(self) -> str: ...

scripts/stubtest/allowlist_todo.txt

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ django.contrib.auth.views.PasswordResetView.form_class
117117
django.contrib.contenttypes.admin.GenericInlineModelAdmin.ct_field
118118
django.contrib.contenttypes.admin.GenericInlineModelAdmin.ct_fk_field
119119
django.contrib.contenttypes.admin.GenericInlineModelAdmin.template
120-
django.contrib.contenttypes.fields.GenericRelation.contribute_to_class
121120
django.contrib.contenttypes.fields.GenericRelation.get_extra_restriction
122121
django.contrib.contenttypes.forms.generic_inlineformset_factory
123122
django.contrib.contenttypes.management.inject_rename_contenttypes_operations
@@ -166,7 +165,6 @@ django.contrib.gis.db.models.CharField.description
166165
django.contrib.gis.db.models.CharField.formfield
167166
django.contrib.gis.db.models.CheckConstraint.validate
168167
django.contrib.gis.db.models.Count.__init__
169-
django.contrib.gis.db.models.DateField.contribute_to_class
170168
django.contrib.gis.db.models.DateField.formfield
171169
django.contrib.gis.db.models.DateTimeField.formfield
172170
django.contrib.gis.db.models.DecimalField.context
@@ -202,7 +200,6 @@ django.contrib.gis.db.models.Field.rel_db_type
202200
django.contrib.gis.db.models.Field.unique
203201
django.contrib.gis.db.models.FileField.__get__
204202
django.contrib.gis.db.models.FileField.attr_class
205-
django.contrib.gis.db.models.FileField.contribute_to_class
206203
django.contrib.gis.db.models.FileField.descriptor_class
207204
django.contrib.gis.db.models.FileField.formfield
208205
django.contrib.gis.db.models.FilePathField.formfield
@@ -237,10 +234,8 @@ django.contrib.gis.db.models.ForeignObjectRel.identity
237234
django.contrib.gis.db.models.ForeignObjectRel.path_infos
238235
django.contrib.gis.db.models.Func.allowed_default
239236
django.contrib.gis.db.models.GenericIPAddressField.formfield
240-
django.contrib.gis.db.models.GeometryField.contribute_to_class
241237
django.contrib.gis.db.models.ImageField.__get__
242238
django.contrib.gis.db.models.ImageField.attr_class
243-
django.contrib.gis.db.models.ImageField.contribute_to_class
244239
django.contrib.gis.db.models.ImageField.descriptor_class
245240
django.contrib.gis.db.models.ImageField.formfield
246241
django.contrib.gis.db.models.IntegerField.formfield
@@ -251,7 +246,6 @@ django.contrib.gis.db.models.Lookup.allowed_default
251246
django.contrib.gis.db.models.Lookup.lookup_name
252247
django.contrib.gis.db.models.Lookup.output_field
253248
django.contrib.gis.db.models.ManyToManyField.__get__
254-
django.contrib.gis.db.models.ManyToManyField.contribute_to_class
255249
django.contrib.gis.db.models.ManyToManyField.formfield
256250
django.contrib.gis.db.models.ManyToManyField.path_infos
257251
django.contrib.gis.db.models.ManyToManyField.reverse_path_infos
@@ -273,7 +267,6 @@ django.contrib.gis.db.models.PositiveSmallIntegerField.integer_field_class
273267
django.contrib.gis.db.models.Q.XOR
274268
django.contrib.gis.db.models.QuerySet.__deepcopy__
275269
django.contrib.gis.db.models.QuerySet.__xor__
276-
django.contrib.gis.db.models.RasterField.contribute_to_class
277270
django.contrib.gis.db.models.SlugField.formfield
278271
django.contrib.gis.db.models.SmallAutoField.rel_db_type
279272
django.contrib.gis.db.models.StdDev.__init__
@@ -297,8 +290,6 @@ django.contrib.gis.db.models.Window.as_sqlite
297290
django.contrib.gis.db.models.aggregates.Extent.is_extent
298291
django.contrib.gis.db.models.aggregates.Extent3D.is_extent
299292
django.contrib.gis.db.models.aggregates.GeoAggregate.as_sql
300-
django.contrib.gis.db.models.fields.GeometryField.contribute_to_class
301-
django.contrib.gis.db.models.fields.RasterField.contribute_to_class
302293
django.contrib.gis.db.models.functions.Area.as_sql
303294
django.contrib.gis.db.models.functions.GeoFuncMixin.__init__
304295
django.contrib.gis.db.models.functions.GeoFuncMixin.as_sql
@@ -527,7 +518,6 @@ django.db.models.CharField.description
527518
django.db.models.CharField.formfield
528519
django.db.models.CheckConstraint.validate
529520
django.db.models.Count.__init__
530-
django.db.models.DateField.contribute_to_class
531521
django.db.models.DateField.formfield
532522
django.db.models.DateTimeField.formfield
533523
django.db.models.DecimalField.context
@@ -561,7 +551,6 @@ django.db.models.Field.rel_db_type
561551
django.db.models.Field.unique
562552
django.db.models.FileField.__get__
563553
django.db.models.FileField.attr_class
564-
django.db.models.FileField.contribute_to_class
565554
django.db.models.FileField.descriptor_class
566555
django.db.models.FileField.formfield
567556
django.db.models.FilePathField.formfield
@@ -598,7 +587,6 @@ django.db.models.Func.allowed_default
598587
django.db.models.GenericIPAddressField.formfield
599588
django.db.models.ImageField.__get__
600589
django.db.models.ImageField.attr_class
601-
django.db.models.ImageField.contribute_to_class
602590
django.db.models.ImageField.descriptor_class
603591
django.db.models.ImageField.formfield
604592
django.db.models.IntegerField.formfield
@@ -609,7 +597,6 @@ django.db.models.Lookup.lookup_name
609597
django.db.models.Lookup.allowed_default
610598
django.db.models.Lookup.output_field
611599
django.db.models.ManyToManyField.__get__
612-
django.db.models.ManyToManyField.contribute_to_class
613600
django.db.models.ManyToManyField.formfield
614601
django.db.models.ManyToManyField.path_infos
615602
django.db.models.ManyToManyField.reverse_path_infos
@@ -705,7 +692,6 @@ django.db.models.expressions.register_combinable_fields
705692
django.db.models.fields.AutoField.rel_db_type
706693
django.db.models.fields.AutoFieldMixin.__init__
707694
django.db.models.fields.AutoFieldMixin.check
708-
django.db.models.fields.AutoFieldMixin.contribute_to_class
709695
django.db.models.fields.AutoFieldMixin.formfield
710696
django.db.models.fields.AutoFieldMixin.get_db_prep_value
711697
django.db.models.fields.AutoFieldMixin.validate
@@ -716,7 +702,6 @@ django.db.models.fields.BooleanField.formfield
716702
django.db.models.fields.CharField.cast_db_type
717703
django.db.models.fields.CharField.description
718704
django.db.models.fields.CharField.formfield
719-
django.db.models.fields.DateField.contribute_to_class
720705
django.db.models.fields.DateField.formfield
721706
django.db.models.fields.DateTimeCheckMixin.check
722707
django.db.models.fields.DateTimeField.formfield
@@ -764,12 +749,10 @@ django.db.models.fields.URLField.formfield
764749
django.db.models.fields.UUIDField.formfield
765750
django.db.models.fields.files.FileField.__get__
766751
django.db.models.fields.files.FileField.attr_class
767-
django.db.models.fields.files.FileField.contribute_to_class
768752
django.db.models.fields.files.FileField.descriptor_class
769753
django.db.models.fields.files.FileField.formfield
770754
django.db.models.fields.files.ImageField.__get__
771755
django.db.models.fields.files.ImageField.attr_class
772-
django.db.models.fields.files.ImageField.contribute_to_class
773756
django.db.models.fields.files.ImageField.descriptor_class
774757
django.db.models.fields.files.ImageField.formfield
775758
django.db.models.fields.json.CaseInsensitiveMixin.process_lhs
@@ -815,7 +798,6 @@ django.db.models.fields.related.ForeignObjectRel.get_extra_restriction
815798
django.db.models.fields.related.ForeignObjectRel.identity
816799
django.db.models.fields.related.ForeignObjectRel.path_infos
817800
django.db.models.fields.related.ManyToManyField.__get__
818-
django.db.models.fields.related.ManyToManyField.contribute_to_class
819801
django.db.models.fields.related.ManyToManyField.formfield
820802
django.db.models.fields.related.ManyToManyField.path_infos
821803
django.db.models.fields.related.ManyToManyField.reverse_path_infos

0 commit comments

Comments
 (0)