Skip to content

Feat/builtin models types #2590

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion django-stubs/contrib/auth/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class Permission(models.Model):
id: models.AutoField
pk: models.AutoField
name = models.CharField(max_length=255)
content_type = models.ForeignKey[ContentType | Combinable, ContentType](ContentType, on_delete=models.CASCADE)
content_type: models.ForeignKey[ContentType | Combinable, ContentType]
content_type_id: int
codename = models.CharField(max_length=100)
group_set: ManyToManyDescriptor[Group, _Group_permissions]
Expand Down
18 changes: 9 additions & 9 deletions django-stubs/contrib/gis/db/backends/oracle/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ from django.db.models.manager import Manager
from typing_extensions import Self

class OracleGeometryColumns(models.Model):
table_name: Any
column_name: Any
srid: Any
table_name: models.CharField
column_name: models.CharField
srid: models.IntegerField
objects: ClassVar[Manager[Self]]

@classmethod
Expand All @@ -17,12 +17,12 @@ class OracleGeometryColumns(models.Model):
def geom_col_name(cls) -> Any: ...

class OracleSpatialRefSys(models.Model, SpatialRefSysMixin):
cs_name: Any
srid: Any
auth_srid: Any
auth_name: Any
wktext: Any
cs_bounds: Any
cs_name: models.CharField
srid: models.IntegerField
auth_srid: models.IntegerField
auth_name: models.CharField
wktext: models.TextField
cs_bounds: models.PolygonField
objects: ClassVar[Manager[Self]]

@property
Expand Down
24 changes: 12 additions & 12 deletions django-stubs/contrib/gis/db/backends/postgis/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ from django.db import models
from typing_extensions import Self

class PostGISGeometryColumns(models.Model):
f_table_catalog: Any
f_table_schema: Any
f_table_name: Any
f_geometry_column: Any
coord_dimension: Any
srid: Any
type: Any
f_table_catalog: models.CharField
f_table_schema: models.CharField
f_table_name: models.CharField
f_geometry_column: models.CharField
coord_dimension: models.IntegerField
srid: models.IntegerField
type: models.CharField
objects: ClassVar[models.Manager[Self]]

@classmethod
Expand All @@ -20,11 +20,11 @@ class PostGISGeometryColumns(models.Model):
def geom_col_name(cls) -> Any: ...

class PostGISSpatialRefSys(models.Model, SpatialRefSysMixin):
srid: Any
auth_name: Any
auth_srid: Any
srtext: Any
proj4text: Any
srid: models.IntegerField
auth_name: models.CharField
auth_srid: models.IntegerField
srtext: models.CharField
proj4text: models.CharField
objects: ClassVar[models.Manager[Self]]

@property
Expand Down
24 changes: 12 additions & 12 deletions django-stubs/contrib/gis/db/backends/spatialite/models.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ from django.db import models
from typing_extensions import Self

class SpatialiteGeometryColumns(models.Model):
f_table_name: Any
f_geometry_column: Any
coord_dimension: Any
srid: Any
spatial_index_enabled: Any
type: Any
f_table_name: models.CharField
f_geometry_column: models.CharField
coord_dimension: models.IntegerField
srid: models.IntegerField
spatial_index_enabled: models.IntegerField
type: models.IntegerField
objects: ClassVar[models.Manager[Self]]

@classmethod
Expand All @@ -19,12 +19,12 @@ class SpatialiteGeometryColumns(models.Model):
def geom_col_name(cls) -> Any: ...

class SpatialiteSpatialRefSys(models.Model, SpatialRefSysMixin):
srid: Any
auth_name: Any
auth_srid: Any
ref_sys_name: Any
proj4text: Any
srtext: Any
srid: models.IntegerField
auth_name: models.CharField
auth_srid: models.IntegerField
ref_sys_name: models.CharField
proj4text: models.CharField
srtext: models.CharField
objects: ClassVar[models.Manager[Self]]

@property
Expand Down
33 changes: 33 additions & 0 deletions scripts/stubtest/allowlist_todo.txt
Original file line number Diff line number Diff line change
Expand Up @@ -174,15 +174,48 @@ django.contrib.gis.db.backends.mysql.introspection
django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.django_test_skips
django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.supports_tolerance_parameter
django.contrib.gis.db.backends.oracle.features.DatabaseFeatures.unsupported_geojson_options
django.contrib.gis.db.backends.oracle.models.OracleGeometryColumns.table_name
django.contrib.gis.db.backends.oracle.models.OracleGeometryColumns.column_name
django.contrib.gis.db.backends.oracle.models.OracleGeometryColumns.srid
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.cs_name
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.srid
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.auth_srid
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.auth_name
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.wktext
django.contrib.gis.db.backends.oracle.models.OracleSpatialRefSys.cs_bounds
django.contrib.gis.db.backends.postgis.adapter.PostGISAdapter.prepare
django.contrib.gis.db.backends.postgis.features.DatabaseFeatures.empty_intersection_returns_none
django.contrib.gis.db.backends.postgis.features.DatabaseFeatures.supports_geography
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_table_catalog
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_table_schema
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_table_name
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.f_geometry_column
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.coord_dimension
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.srid
django.contrib.gis.db.backends.postgis.models.PostGISGeometryColumns.type
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.srid
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.auth_srid
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.auth_name
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.srtext
django.contrib.gis.db.backends.postgis.models.PostGISSpatialRefSys.proj4text
django.contrib.gis.db.backends.postgis.operations.PostGISOperations.convert_extent
django.contrib.gis.db.backends.postgis.operations.PostGISOperations.convert_extent3d
django.contrib.gis.db.backends.postgis.schema.PostGISSchemaEditor.rast_index_template
django.contrib.gis.db.backends.spatialite.base.DatabaseWrapper.ops
django.contrib.gis.db.backends.spatialite.features.DatabaseFeatures.can_alter_geometry_field
django.contrib.gis.db.backends.spatialite.features.DatabaseFeatures.django_test_skips
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.f_table_name
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.f_geometry_column
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.coord_dimension
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.srid
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.spatial_index_enabled
django.contrib.gis.db.backends.spatialite.models.SpatialiteGeometryColumns.type
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.srid
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.auth_srid
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.auth_name
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.ref_sys_name
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.proj4text
django.contrib.gis.db.backends.spatialite.models.SpatialiteSpatialRefSys.srtext
django.contrib.gis.db.backends.spatialite.operations.SpatiaLiteOperations.convert_extent
django.contrib.gis.db.backends.spatialite.operations.SpatiaLiteOperations.from_text
django.contrib.gis.db.backends.spatialite.operations.SpatiaLiteOperations.geom_lib_version
Expand Down
8 changes: 4 additions & 4 deletions tests/assert_type/contrib/admin/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,13 @@

@admin.display(description="Name")
def upper_case_name(obj: Person) -> str:
return f"{obj.first_name} {obj.last_name}".upper() # pyright: ignore[reportUnknownMemberType]
return f"{obj.first_name} {obj.last_name}".upper()


class Person(models.Model):
first_name = models.CharField(max_length=None) # pyright: ignore[reportUnknownVariableType]
last_name = models.CharField(max_length=None) # pyright: ignore[reportUnknownVariableType]
birthday = models.DateField() # pyright: ignore[reportUnknownVariableType]
first_name = models.CharField(max_length=None)
last_name = models.CharField(max_length=None)
birthday = models.DateField()


class PersonListAdmin(admin.ModelAdmin[Person]):
Expand Down
5 changes: 5 additions & 0 deletions tests/assert_type/contrib/auth/test_auth_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,10 @@
assert_type(permission.name, str)
assert_type(permission.content_type, ContentType)
assert_type(permission.content_type_id, int)
assert_type(permission.codename, str)
assert_type(permission.user_set.get(), User)
assert_type(permission.user_set.through, type[_User_permissions])
assert_type(permission.user_set.through.objects.get(), _User_permissions)
assert_type(permission.group_set.get(), Group)
assert_type(permission.group_set.through, type[_Group_permissions])
assert_type(permission.group_set.through.objects.get(), _Group_permissions)
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
assert_type(flat_page.template_name, str)
assert_type(flat_page.registration_required, bool)
assert_type(flat_page.sites.get(), Site)

assert_type(FlatPage.sites.through.objects, Manager[_FlatPage_sites])

flat_page_sites = FlatPage.sites.through.objects.get()
assert_type(flat_page_sites.id, int)
assert_type(flat_page_sites.pk, int)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.contrib.gis.db.backends.oracle.models import OracleGeometryColumns, OracleSpatialRefSys
from django.contrib.gis.geos.polygon import Polygon
from django.db.models.manager import Manager
from typing_extensions import assert_type

columns = OracleGeometryColumns()
assert_type(columns.table_name, str)
assert_type(columns.column_name, str)
assert_type(columns.srid, int)
assert_type(columns.objects, Manager[OracleGeometryColumns])

spatial_ref_sys = OracleSpatialRefSys()
assert_type(spatial_ref_sys.cs_name, str)
assert_type(spatial_ref_sys.srid, int)
assert_type(spatial_ref_sys.auth_srid, int)
assert_type(spatial_ref_sys.auth_name, str)
assert_type(spatial_ref_sys.wktext, str)
assert_type(spatial_ref_sys.cs_bounds, Polygon)
assert_type(spatial_ref_sys.objects, Manager[OracleSpatialRefSys])
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from django.contrib.gis.db.backends.postgis.models import PostGISGeometryColumns, PostGISSpatialRefSys
from django.db.models.manager import Manager
from typing_extensions import assert_type

columns = PostGISGeometryColumns()
assert_type(columns.f_table_catalog, str)
assert_type(columns.f_table_schema, str)
assert_type(columns.f_table_name, str)
assert_type(columns.f_geometry_column, str)
assert_type(columns.coord_dimension, int)
assert_type(columns.srid, int)
assert_type(columns.type, str)
assert_type(columns.objects, Manager[PostGISGeometryColumns])

spatial_ref_sys = PostGISSpatialRefSys()
assert_type(spatial_ref_sys.srid, int)
assert_type(spatial_ref_sys.auth_name, str)
assert_type(spatial_ref_sys.auth_srid, int)
assert_type(spatial_ref_sys.srtext, str)
assert_type(spatial_ref_sys.proj4text, str)
assert_type(spatial_ref_sys.objects, Manager[PostGISSpatialRefSys])
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
from django.contrib.gis.db.backends.spatialite.models import SpatialiteGeometryColumns, SpatialiteSpatialRefSys
from django.db.models.manager import Manager
from typing_extensions import assert_type

columns = SpatialiteGeometryColumns()
assert_type(columns.f_table_name, str)
assert_type(columns.f_geometry_column, str)
assert_type(columns.coord_dimension, int)
assert_type(columns.srid, int)
assert_type(columns.spatial_index_enabled, int)
assert_type(columns.type, int)
assert_type(columns.objects, Manager[SpatialiteGeometryColumns])

spatial_ref_sys = SpatialiteSpatialRefSys()
assert_type(spatial_ref_sys.srid, int)
assert_type(spatial_ref_sys.auth_name, str)
assert_type(spatial_ref_sys.auth_srid, int)
assert_type(spatial_ref_sys.ref_sys_name, str)
assert_type(spatial_ref_sys.proj4text, str)
assert_type(spatial_ref_sys.srtext, str)
assert_type(spatial_ref_sys.objects, Manager[SpatialiteSpatialRefSys])
Loading
Loading