1- from typing import Any , ClassVar , Literal
1+ from typing import Any , ClassVar , Literal , TypeVar
22
3+ from _typeshed import Unused
4+ from django .contrib .postgres import forms
35from django .db import models
6+ from django .db .backends .base .base import BaseDatabaseWrapper
47from django .db .models .lookups import PostgresOperatorLookup
8+ from django .db .models .sql .compiler import SQLCompiler , _AsSqlType
59from psycopg2 .extras import DateRange , DateTimeTZRange , NumericRange , Range # type: ignore [import-untyped]
610
711class RangeBoundary (models .Expression ):
@@ -21,32 +25,41 @@ class RangeOperators:
2125 NOT_GT : Literal ["&<" ]
2226 ADJACENT_TO : Literal ["-|-" ]
2327
24- class RangeField (models .Field ):
28+ _RangeT = TypeVar ("_RangeT" , bound = Range [Any ])
29+
30+ class RangeField (models .Field [Any , _RangeT ]):
2531 empty_strings_allowed : bool
26- base_field : models .Field
27- range_type : type [Range ]
32+ base_field : type [ models .Field ]
33+ range_type : type [_RangeT ]
2834 def get_prep_value (self , value : Any ) -> Any | None : ...
35+ def get_placeholder (self , value : Unused , compiler : Unused , connection : BaseDatabaseWrapper ) -> str : ...
2936 def to_python (self , value : Any ) -> Any : ...
3037
31- class IntegerRangeField (RangeField ):
32- def __get__ (self , instance : Any , owner : Any ) -> NumericRange : ...
38+ class IntegerRangeField (RangeField [NumericRange ]):
39+ base_field : type [models .IntegerField ]
40+ form_field : type [forms .IntegerRangeField ]
3341
34- class BigIntegerRangeField (RangeField ):
35- def __get__ (self , instance : Any , owner : Any ) -> NumericRange : ...
42+ class BigIntegerRangeField (RangeField [NumericRange ]):
43+ base_field : type [models .BigIntegerField ]
44+ form_field : type [forms .IntegerRangeField ]
3645
37- class DecimalRangeField (RangeField ):
38- def __get__ (self , instance : Any , owner : Any ) -> NumericRange : ...
46+ class DecimalRangeField (RangeField [NumericRange ]):
47+ base_field : type [models .DecimalField ]
48+ form_field : type [forms .DecimalRangeField ]
3949
40- class DateTimeRangeField (RangeField ):
41- def __get__ (self , instance : Any , owner : Any ) -> DateTimeTZRange : ...
50+ class DateTimeRangeField (RangeField [DateTimeTZRange ]):
51+ base_field : type [models .DecimalField ]
52+ form_field : type [forms .DecimalRangeField ]
4253
43- class DateRangeField (RangeField ):
44- def __get__ (self , instance : Any , owner : Any ) -> DateRange : ...
54+ class DateRangeField (RangeField [DateRange ]):
55+ base_field : type [models .DateField ]
56+ form_field : type [forms .DateRangeField ]
4557
4658class DateTimeRangeContains (PostgresOperatorLookup ): ...
4759
4860class RangeContainedBy (PostgresOperatorLookup ):
4961 type_mapping : dict [str , str ]
62+ def process_lhs (self , compiler : SQLCompiler , connection : BaseDatabaseWrapper ) -> _AsSqlType : ... # type: ignore[override]
5063
5164class FullyLessThan (PostgresOperatorLookup ): ...
5265class FullGreaterThan (PostgresOperatorLookup ): ...
0 commit comments