diff --git a/scripts/stubtest/allowlist.txt b/scripts/stubtest/allowlist.txt index ae544cb63..82d60c93c 100644 --- a/scripts/stubtest/allowlist.txt +++ b/scripts/stubtest/allowlist.txt @@ -517,3 +517,8 @@ django.db.models.base.Model.save django.contrib.gis.db.models.GeneratedField.__init__ django.db.models.GeneratedField.__init__ django.db.models.fields.generated.GeneratedField.__init__ + +# cls.__slotnames__ gets added by Python’s pickling internals: +# https://github.com/python/cpython/blob/5abff6960b4aecb0d5c81c7482cf3faa74e1983d/Lib/copyreg.py#L112-L161 +# Some Django classes get copied at import time, which leads stubtest to detect it. +.*\.__slotnames__ diff --git a/scripts/stubtest/allowlist_todo.txt b/scripts/stubtest/allowlist_todo.txt index d6248f13a..ac68eb49f 100644 --- a/scripts/stubtest/allowlist_todo.txt +++ b/scripts/stubtest/allowlist_todo.txt @@ -26,7 +26,6 @@ django.contrib.admin.models.LogEntry.object_id django.contrib.admin.models.LogEntry.object_repr django.contrib.admin.models.LogEntry.user django.contrib.admin.models.LogEntry.user_id -django.contrib.admin.models.LogEntryManager.__slotnames__ django.contrib.admin.options.BaseModelAdmin django.contrib.admin.options.BaseModelAdmin.form django.contrib.admin.options.BaseModelAdmin.media @@ -96,13 +95,11 @@ django.contrib.auth.models.AnonymousUser.__int__ django.contrib.auth.models.Group.id django.contrib.auth.models.Group.name django.contrib.auth.models.Group.permissions -django.contrib.auth.models.GroupManager.__slotnames__ django.contrib.auth.models.Permission.codename django.contrib.auth.models.Permission.content_type django.contrib.auth.models.Permission.content_type_id django.contrib.auth.models.Permission.id django.contrib.auth.models.Permission.name -django.contrib.auth.models.PermissionManager.__slotnames__ django.contrib.auth.models.PermissionsMixin.groups django.contrib.auth.models.PermissionsMixin.is_superuser django.contrib.auth.models.PermissionsMixin.user_permissions @@ -121,7 +118,6 @@ django.contrib.auth.models.User.last_name django.contrib.auth.models.User.password django.contrib.auth.models.User.user_permissions django.contrib.auth.models.User.username -django.contrib.auth.models.UserManager.__slotnames__ django.contrib.auth.password_validation.CommonPasswordValidator.DEFAULT_PASSWORD_LIST_PATH django.contrib.auth.password_validation.CommonPasswordValidator.__init__ django.contrib.auth.password_validation.exceeds_maximum_length_ratio @@ -148,7 +144,6 @@ django.contrib.contenttypes.models.ContentType.app_labeled_name django.contrib.contenttypes.models.ContentType.id django.contrib.contenttypes.models.ContentType.model django.contrib.contenttypes.models.ContentTypeManager.__init__ -django.contrib.contenttypes.models.ContentTypeManager.__slotnames__ django.contrib.flatpages.admin.FlatPageAdmin django.contrib.flatpages.models.FlatPage.content django.contrib.flatpages.models.FlatPage.enable_comments @@ -298,7 +293,6 @@ django.contrib.gis.db.models.Lookup.get_prep_lhs django.contrib.gis.db.models.Lookup.allowed_default django.contrib.gis.db.models.Lookup.lookup_name django.contrib.gis.db.models.Lookup.output_field -django.contrib.gis.db.models.Manager.__slotnames__ django.contrib.gis.db.models.ManyToManyField.__get__ django.contrib.gis.db.models.ManyToManyField.contribute_to_class django.contrib.gis.db.models.ManyToManyField.formfield @@ -367,11 +361,9 @@ django.contrib.gis.forms.BaseModelFormSet.save_m2m django.contrib.gis.forms.BoundWidget django.contrib.gis.forms.ChoiceField.__deepcopy__ django.contrib.gis.forms.DateTimeBaseInput -django.contrib.gis.forms.EmailInput.__slotnames__ django.contrib.gis.forms.Field.__deepcopy__ django.contrib.gis.forms.Field.hidden_widget django.contrib.gis.forms.FileField.bound_data -django.contrib.gis.forms.HiddenInput.__slotnames__ django.contrib.gis.forms.InlineForeignKeyField django.contrib.gis.forms.Input django.contrib.gis.forms.Media.__html__ @@ -383,13 +375,11 @@ django.contrib.gis.forms.ModelMultipleChoiceField.hidden_widget django.contrib.gis.forms.MultiValueField.__deepcopy__ django.contrib.gis.forms.MultiWidget.use_fieldset django.contrib.gis.forms.MultipleChoiceField.hidden_widget -django.contrib.gis.forms.PasswordInput.__slotnames__ django.contrib.gis.forms.RadioSelect.id_for_label django.contrib.gis.forms.RadioSelect.use_fieldset django.contrib.gis.forms.SelectDateWidget.select_widget django.contrib.gis.forms.SelectDateWidget.use_fieldset django.contrib.gis.forms.SplitDateTimeField.hidden_widget -django.contrib.gis.forms.TextInput.__slotnames__ django.contrib.gis.forms.Widget.use_fieldset django.contrib.gis.forms.formset_factory django.contrib.gis.forms.inlineformset_factory @@ -451,20 +441,17 @@ django.contrib.sessions.base_session.AbstractBaseSession.get_previous_by_expire_ django.contrib.sessions.base_session.AbstractBaseSession.objects django.contrib.sessions.base_session.AbstractBaseSession.session_data django.contrib.sessions.base_session.AbstractBaseSession.session_key -django.contrib.sessions.base_session.BaseSessionManager.__slotnames__ django.contrib.sessions.models.Session.expire_date django.contrib.sessions.models.Session.get_next_by_expire_date django.contrib.sessions.models.Session.get_previous_by_expire_date django.contrib.sessions.models.Session.session_data django.contrib.sessions.models.Session.session_key -django.contrib.sessions.models.SessionManager.__slotnames__ django.contrib.sitemaps.views.SitemapIndexItem django.contrib.sites.admin.SiteAdmin django.contrib.sites.models.Site.domain django.contrib.sites.models.Site.flatpage_set django.contrib.sites.models.Site.id django.contrib.sites.models.Site.name -django.contrib.sites.models.SiteManager.__slotnames__ django.contrib.staticfiles.finders.BaseStorageFinder.storage django.contrib.staticfiles.finders.DefaultStorageFinder.storage django.contrib.staticfiles.storage.staticfiles_storage @@ -689,7 +676,6 @@ django.db.models.Lookup.get_prep_lhs django.db.models.Lookup.lookup_name django.db.models.Lookup.allowed_default django.db.models.Lookup.output_field -django.db.models.Manager.__slotnames__ django.db.models.ManyToManyField.__get__ django.db.models.ManyToManyField.contribute_to_class django.db.models.ManyToManyField.formfield @@ -1041,7 +1027,6 @@ django.db.models.manager.BaseManager.update_or_create django.db.models.manager.BaseManager.using django.db.models.manager.BaseManager.values django.db.models.manager.BaseManager.values_list -django.db.models.manager.Manager.__slotnames__ django.db.models.options.Options.concrete_fields django.db.models.options.Options.installed django.db.models.options.Options.local_concrete_fields @@ -1112,11 +1097,9 @@ django.forms.BaseModelFormSet.save_m2m django.forms.BoundWidget django.forms.ChoiceField.__deepcopy__ django.forms.DateTimeBaseInput -django.forms.EmailInput.__slotnames__ django.forms.Field.__deepcopy__ django.forms.Field.hidden_widget django.forms.FileField.bound_data -django.forms.HiddenInput.__slotnames__ django.forms.InlineForeignKeyField django.forms.Input django.forms.Media.__html__ @@ -1128,13 +1111,11 @@ django.forms.ModelMultipleChoiceField.hidden_widget django.forms.MultiValueField.__deepcopy__ django.forms.MultiWidget.use_fieldset django.forms.MultipleChoiceField.hidden_widget -django.forms.PasswordInput.__slotnames__ django.forms.RadioSelect.id_for_label django.forms.RadioSelect.use_fieldset django.forms.SelectDateWidget.select_widget django.forms.SelectDateWidget.use_fieldset django.forms.SplitDateTimeField.hidden_widget -django.forms.TextInput.__slotnames__ django.forms.Widget.use_fieldset django.forms.boundfield.BoundWidget.__html__ django.forms.fields.ChoiceField.__deepcopy__ @@ -1165,18 +1146,14 @@ django.forms.models.modelform_factory django.forms.models.modelformset_factory django.forms.renderers.DjangoDivFormRenderer django.forms.widgets.ChoiceWidget.template_name -django.forms.widgets.EmailInput.__slotnames__ -django.forms.widgets.HiddenInput.__slotnames__ django.forms.widgets.Input.input_type django.forms.widgets.Media.__html__ django.forms.widgets.MediaDefiningClass.__new__ django.forms.widgets.MultiWidget.use_fieldset -django.forms.widgets.PasswordInput.__slotnames__ django.forms.widgets.RadioSelect.id_for_label django.forms.widgets.RadioSelect.use_fieldset django.forms.widgets.SelectDateWidget.select_widget django.forms.widgets.SelectDateWidget.use_fieldset -django.forms.widgets.TextInput.__slotnames__ django.forms.widgets.Widget.use_fieldset django.http.HttpRequest.__init__ django.http.StreamingHttpResponse.content diff --git a/scripts/stubtest/allowlist_todo_django51.txt b/scripts/stubtest/allowlist_todo_django51.txt index aa07e0a72..ae65247c5 100644 --- a/scripts/stubtest/allowlist_todo_django51.txt +++ b/scripts/stubtest/allowlist_todo_django51.txt @@ -7,7 +7,6 @@ django.contrib.contenttypes.fields.GenericForeignKey.get_attname_column django.contrib.contenttypes.models.ContentType.get_object_for_this_type django.contrib.gis.db.models.ForeignObjectRel.accessor_name django.contrib.gis.forms.ModelChoiceField.validate_no_null_characters -django.contrib.gis.forms.RadioSelect.__slotnames__ django.contrib.gis.gdal.geometries.LineString.m django.contrib.gis.gdal.geometries.Point.m django.contrib.gis.gdal.prototypes.ds.GDAL_OF_ALL @@ -53,9 +52,7 @@ django.db.models.fields.related.ForeignObjectRel.accessor_name django.db.models.fields.reverse_related.ForeignObjectRel.accessor_name django.db.models.lookups.In.get_refs django.forms.ModelChoiceField.validate_no_null_characters -django.forms.RadioSelect.__slotnames__ django.forms.models.ModelChoiceField.validate_no_null_characters -django.forms.widgets.RadioSelect.__slotnames__ django.test.signals.form_renderer_changed django.test.utils.garbage_collect django.urls.resolvers.whitespace_set