Skip to content

Commit c029dd8

Browse files
authored
fix: Window.order_by accepts str field_names, asc/desc accepts None in 4.1+ (#1574)
* fix: Window.order_by accepts str field_names, asc/desc accepts None in 4.1+ See https://docs.djangoproject.com/en/4.2/ref/models/expressions/#django.db.models.Expression.asc Closes #1512 * chore: delete fixes from allowlist_todo
1 parent 846ba95 commit c029dd8

File tree

2 files changed

+13
-20
lines changed

2 files changed

+13
-20
lines changed

django-stubs/db/models/expressions.pyi

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -96,14 +96,14 @@ class BaseExpression:
9696
self,
9797
*,
9898
descending: bool = ...,
99-
nulls_first: bool = ...,
100-
nulls_last: bool = ...,
99+
nulls_first: bool | None = ...,
100+
nulls_last: bool | None = ...,
101101
) -> OrderBy: ...
102102
def desc(
103103
self,
104104
*,
105-
nulls_first: bool = ...,
106-
nulls_last: bool = ...,
105+
nulls_first: bool | None = ...,
106+
nulls_last: bool | None = ...,
107107
) -> OrderBy: ...
108108
def reverse_ordering(self) -> BaseExpression: ...
109109
def flatten(self) -> Iterator[BaseExpression]: ...
@@ -139,14 +139,14 @@ class F(Combinable):
139139
self,
140140
*,
141141
descending: bool = ...,
142-
nulls_first: bool = ...,
143-
nulls_last: bool = ...,
142+
nulls_first: bool | None = ...,
143+
nulls_last: bool | None = ...,
144144
) -> OrderBy: ...
145145
def desc(
146146
self,
147147
*,
148-
nulls_first: bool = ...,
149-
nulls_last: bool = ...,
148+
nulls_first: bool | None = ...,
149+
nulls_last: bool | None = ...,
150150
) -> OrderBy: ...
151151
def deconstruct(self) -> Any: ... # fake
152152

@@ -247,9 +247,11 @@ class OrderBy(Expression):
247247
self,
248248
expression: Expression | F | Subquery,
249249
descending: bool = ...,
250-
nulls_first: bool = ...,
251-
nulls_last: bool = ...,
250+
nulls_first: bool | None = ...,
251+
nulls_last: bool | None = ...,
252252
) -> None: ...
253+
def asc(self) -> None: ... # type: ignore[override]
254+
def desc(self) -> None: ... # type: ignore[override]
253255

254256
class Window(SQLiteNumericMixin, Expression):
255257
template: str
@@ -261,7 +263,7 @@ class Window(SQLiteNumericMixin, Expression):
261263
self,
262264
expression: BaseExpression,
263265
partition_by: str | Iterable[BaseExpression | F] | F | BaseExpression | None = ...,
264-
order_by: Sequence[BaseExpression | F] | BaseExpression | F | None = ...,
266+
order_by: Sequence[BaseExpression | F | str] | BaseExpression | F | str | None = ...,
265267
frame: WindowFrame | None = ...,
266268
output_field: Field | None = ...,
267269
) -> None: ...

scripts/stubtest/allowlist_todo.txt

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -436,13 +436,10 @@ django.contrib.gis.db.models.OneToOneField.formfield
436436
django.contrib.gis.db.models.OneToOneField.forward_related_accessor_class
437437
django.contrib.gis.db.models.OneToOneField.related_accessor_class
438438
django.contrib.gis.db.models.OneToOneRel.__init__
439-
django.contrib.gis.db.models.OrderBy.__init__
440439
django.contrib.gis.db.models.OrderBy.__new__
441440
django.contrib.gis.db.models.OrderBy.as_oracle
442441
django.contrib.gis.db.models.OrderBy.as_sql
443-
django.contrib.gis.db.models.OrderBy.asc
444442
django.contrib.gis.db.models.OrderBy.deconstruct
445-
django.contrib.gis.db.models.OrderBy.desc
446443
django.contrib.gis.db.models.PositiveBigIntegerField.formfield
447444
django.contrib.gis.db.models.PositiveBigIntegerField.integer_field_class
448445
django.contrib.gis.db.models.PositiveIntegerField.formfield
@@ -1472,13 +1469,10 @@ django.db.models.OneToOneField.formfield
14721469
django.db.models.OneToOneField.forward_related_accessor_class
14731470
django.db.models.OneToOneField.related_accessor_class
14741471
django.db.models.OneToOneRel.__init__
1475-
django.db.models.OrderBy.__init__
14761472
django.db.models.OrderBy.__new__
14771473
django.db.models.OrderBy.as_oracle
14781474
django.db.models.OrderBy.as_sql
1479-
django.db.models.OrderBy.asc
14801475
django.db.models.OrderBy.deconstruct
1481-
django.db.models.OrderBy.desc
14821476
django.db.models.PositiveBigIntegerField.formfield
14831477
django.db.models.PositiveBigIntegerField.integer_field_class
14841478
django.db.models.PositiveIntegerField.formfield
@@ -1601,13 +1595,10 @@ django.db.models.expressions.Func.__new__
16011595
django.db.models.expressions.Func.deconstruct
16021596
django.db.models.expressions.Func.function
16031597
django.db.models.expressions.NegatedExpression.select_format
1604-
django.db.models.expressions.OrderBy.__init__
16051598
django.db.models.expressions.OrderBy.__new__
16061599
django.db.models.expressions.OrderBy.as_oracle
16071600
django.db.models.expressions.OrderBy.as_sql
1608-
django.db.models.expressions.OrderBy.asc
16091601
django.db.models.expressions.OrderBy.deconstruct
1610-
django.db.models.expressions.OrderBy.desc
16111602
django.db.models.expressions.Ref.get_refs
16121603
django.db.models.expressions.Ref.relabeled_clone
16131604
django.db.models.expressions.ResolvedOuterRef.as_sql

0 commit comments

Comments
 (0)