3131from sqlalchemy .sql import operators
3232from sqlalchemy .sql .expression import BindParameter
3333
34- from .solrdbapi import Connection
35-
3634from . import solrdbapi as module
37-
38- from .type_map import type_map
39-
4035from .solr_type_compiler import SolrTypeCompiler
36+ from .solrdbapi import Connection
37+ from .type_map import type_map
4138
4239logging .basicConfig (format = "%(asctime)s - %(message)s" , level = logging .ERROR )
4340
41+
4442class SolrCompiler (compiler .SQLCompiler ):
4543 # pylint: disable=abstract-method
4644
@@ -61,13 +59,15 @@ def default_from(self):
6159 return " FROM (values(1))"
6260
6361 # pylint: disable=too-many-arguments, too-many-branches
64- def visit_binary (self ,
62+ def visit_binary (
63+ self ,
6564 binary ,
6665 override_operator = None ,
6766 eager_grouping = False ,
6867 from_linter = None ,
6968 lateral_from_linter = None ,
70- ** kw ):
69+ ** kw ,
70+ ):
7171
7272 # Handled in Solr 9
7373 if Connection .solr_spec .spec ()[0 ] >= self .SOLR_DATE_RANGE_TRANS_RELEASE :
@@ -104,13 +104,17 @@ def visit_binary(self,
104104 if isinstance (
105105 kw [str (binary .left )][uoperator ].right .text , BindParameter
106106 ):
107- udatetime = parser .parse (self .unescape_colon (
108- kw [str (binary .left )][uoperator ].right .effective_value
109- ))
107+ udatetime = parser .parse (
108+ self .unescape_colon (
109+ kw [str (binary .left )][uoperator ].right .effective_value
110+ )
111+ )
110112 else :
111- udatetime = parser .parse (self .unescape_colon (
112- kw [str (binary .left )][uoperator ].right .text
113- ))
113+ udatetime = parser .parse (
114+ self .unescape_colon (
115+ kw [str (binary .left )][uoperator ].right .text
116+ )
117+ )
114118 else :
115119 ubound , udatetime = "]" , "*"
116120 else :
@@ -123,16 +127,18 @@ def visit_binary(self,
123127 if operators .ge in kw [str (binary .left )]
124128 else ("{" , operators .gt )
125129 )
126- if isinstance (
127- kw [ str ( binary . left )][ loperator ]. right , BindParameter
128- ):
129- ldatetime = parser . parse ( self . unescape_colon (
130- kw [ str ( binary . left )][ loperator ]. right . effective_value
131- ))
130+ if isinstance (kw [ str ( binary . left )][ loperator ]. right , BindParameter ):
131+ ldatetime = parser . parse (
132+ self . unescape_colon (
133+ kw [ str ( binary . left )][ loperator ]. right . effective_value
134+ )
135+ )
132136 else :
133- ldatetime = parser .parse (self .unescape_colon (
134- kw [str (binary .left )][loperator ].right .text
135- ))
137+ ldatetime = parser .parse (
138+ self .unescape_colon (
139+ kw [str (binary .left )][loperator ].right .text
140+ )
141+ )
136142 else :
137143 lbound , ldatetime = "[" , "*"
138144
@@ -170,23 +176,26 @@ def visit_clauselist(self, clauselist, **kw):
170176 return super ().visit_clauselist (clauselist , ** kw )
171177
172178 def visit_array (self , element , ** kw ):
173- return "ARRAY[%s]" % self .visit_clauselist (element , ** kw ) # pylint: disable=consider-using-f-string
179+ return f "ARRAY[{ self .visit_clauselist (element , ** kw )} ]"
174180
175181 def unescape_colon (self , s : str ) -> str :
176182 """Unescape colon if present in datetime value"""
177- return s .replace (r'\:' , ':' )
183+ return s .replace (r"\:" , ":" )
178184
179185 def datetime_str (self , dt ) -> str :
180186 if dt == "*" :
181187 return dt
182188
183189 return dt .isoformat () + "Z"
184190
191+
185192class SolrIdentifierPreparer (compiler .IdentifierPreparer ):
186193 # pylint: disable=too-few-public-methods
187194
188- # Solr has no schema concept
189- schema_for_object = lambda self , obj : () # pylint: disable=unnecessary-lambda-assignment
195+ # Solr has no schema concept
196+ schema_for_object = (
197+ lambda self , obj : () # pylint: disable=unnecessary-lambda-assignment
198+ )
190199
191200 reserved_words = compiler .RESERVED_WORDS .copy ()
192201 reserved_words .update (
@@ -546,14 +555,14 @@ def get_foreign_keys(self, connection, table_name, schema=None, **kw):
546555 return []
547556
548557 def get_indexes (self , connection , table_name , schema = None , ** kw ):
549- """Solr has no support for indexes. Returns an empty list. """
558+ """Solr has no support for indexes. Returns an empty list."""
550559 return []
551560
552561 def get_pk_constraint (self , connection , table_name , schema = None , ** kw ):
553562 """Solr has no support for primary keys. Retunrs an empty list."""
554563 return []
555564
556- def get_schema_names (self , connection , ** kw ): # pylint: disable=unused-argument
565+ def get_schema_names (self , connection , ** kw ): # pylint: disable=unused-argument
557566 return tuple (["default" ])
558567
559568 def get_view_names (self , connection , schema = None , ** kw ):
0 commit comments