11from django import forms
22from django .db .models import Field
33import numpy as np
4+ from typing import Any
45from .. import Vector
56
67
@@ -9,51 +10,51 @@ class VectorField(Field):
910 description = 'Vector'
1011 empty_strings_allowed = False
1112
12- def __init__ (self , * args , dimensions = None , ** kwargs ) :
13+ def __init__ (self , * args : Any , dimensions : int | None = None , ** kwargs : Any ) -> None :
1314 self .dimensions = dimensions
1415 super ().__init__ (* args , ** kwargs )
1516
16- def deconstruct (self ):
17+ def deconstruct (self ) -> tuple :
1718 name , path , args , kwargs = super ().deconstruct ()
1819 if self .dimensions is not None :
1920 kwargs ['dimensions' ] = self .dimensions
2021 return name , path , args , kwargs
2122
22- def db_type (self , connection ) :
23+ def db_type (self , connection : Any ) -> str :
2324 if self .dimensions is None :
2425 return 'vector'
2526 return 'vector(%d)' % self .dimensions
2627
27- def from_db_value (self , value , expression , connection ) :
28+ def from_db_value (self , value : Any , expression : Any , connection : Any ) -> np . ndarray | None :
2829 return Vector ._from_db (value )
2930
30- def to_python (self , value ) :
31+ def to_python (self , value : Any ) -> np . ndarray | None :
3132 if isinstance (value , list ):
3233 return np .array (value , dtype = np .float32 )
3334 return Vector ._from_db (value )
3435
35- def get_prep_value (self , value ) :
36+ def get_prep_value (self , value : Any ) -> str | None :
3637 return Vector ._to_db (value )
3738
38- def value_to_string (self , obj ) :
39+ def value_to_string (self , obj : Any ) -> str | None :
3940 return self .get_prep_value (self .value_from_object (obj ))
4041
41- def validate (self , value , model_instance ) :
42+ def validate (self , value : Any , model_instance : Any ) -> None :
4243 if isinstance (value , np .ndarray ):
4344 value = value .tolist ()
4445 super ().validate (value , model_instance )
4546
46- def run_validators (self , value ) :
47+ def run_validators (self , value : Any ) -> None :
4748 if isinstance (value , np .ndarray ):
4849 value = value .tolist ()
4950 super ().run_validators (value )
5051
51- def formfield (self , ** kwargs ): # type: ignore
52+ def formfield (self , ** kwargs : Any ): # type: ignore
5253 return super ().formfield (form_class = VectorFormField , ** kwargs )
5354
5455
5556class VectorWidget (forms .TextInput ):
56- def format_value (self , value ) :
57+ def format_value (self , value : Any ) -> str | None :
5758 if isinstance (value , np .ndarray ):
5859 value = value .tolist ()
5960 return super ().format_value (value )
@@ -62,12 +63,12 @@ def format_value(self, value):
6263class VectorFormField (forms .CharField ):
6364 widget = VectorWidget
6465
65- def has_changed (self , initial , data ) :
66+ def has_changed (self , initial : Any , data : Any ) -> bool :
6667 if isinstance (initial , np .ndarray ):
6768 initial = initial .tolist ()
6869 return super ().has_changed (initial , data )
6970
70- def to_python (self , value ) :
71+ def to_python (self , value : Any ) -> Any :
7172 if isinstance (value , str ) and value == '' :
7273 return None
7374 return super ().to_python (value )
0 commit comments