11import re
22import string
33import datetime
4+ import logging
45from typing import NamedTuple , Tuple , Any , List , Dict , Iterable , Union , TYPE_CHECKING
56from string .templatelib import Template , Interpolation
67
78from tsql .styles import ParamStyle , QMARK
89
10+ logger = logging .getLogger (__name__ )
11+
912if TYPE_CHECKING :
1013 from tsql .query_builder import QueryBuilder
1114
1215default_style = QMARK
1316
1417def set_style (style : type [ParamStyle ]):
1518 global default_style
19+ logger .debug ("Setting default parameter style to: %s" , style .__name__ )
1620 default_style = style
1721
1822
@@ -50,6 +54,7 @@ def __init__(self, template_string: Template):
5054 def render (self , style :ParamStyle = None ) -> RenderedQuery :
5155 if style is None :
5256 style = default_style
57+ logger .debug ("Rendering query with style: %s" , style .__name__ )
5358 result = ''
5459
5560 style_instance = style ()
@@ -61,6 +66,8 @@ def render(self, style:ParamStyle = None) -> RenderedQuery:
6166 else :
6267 result += part
6368
69+ logger .debug ("Rendered SQL: %s" , result )
70+ logger .debug ("Parameters (%d): %s" , len (style_instance .params ), style_instance .params )
6471 return RenderedQuery (result , style_instance .params )
6572
6673
@@ -114,11 +121,17 @@ def _sqlize(cls, val: Interpolation|Template|Any) -> list[str|Parameter]:
114121 if val .conversion :
115122 value = formatter .convert_field (value , val .conversion )
116123
124+ logger .debug ("Processing interpolation: expression=%r, format_spec=%r, value_type=%s" ,
125+ val .expression , val .format_spec , type (value ).__name__ )
126+
117127 match val .format_spec , value :
118128 case 'literal' , str ():
129+ logger .debug ("Validating literal: %r" , value )
119130 cls ._check_literal (value )
131+ logger .debug ("Literal validated, inlining: %r" , value )
120132 return [value ]
121133 case 'unsafe' , str ():
134+ logger .debug ("Using unsafe inline value: %r" , value )
122135 return [value ]
123136 case 'as_values' , dict ():
124137 return as_values (value )._sql_parts
0 commit comments