Add store_sources option that stores rendered source in a __megasniff_sources__ property
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "megasniff"
|
||||
version = "0.2.2"
|
||||
version = "0.2.3"
|
||||
description = "Library for in-time codegened type validation"
|
||||
authors = [
|
||||
{ name = "nikto_b", email = "niktob560@yandex.ru" }
|
||||
|
||||
@@ -48,17 +48,20 @@ class SchemaInflatorGenerator:
|
||||
|
||||
object_template: jinja2.Template
|
||||
tuple_template: jinja2.Template
|
||||
_store_sources: bool
|
||||
_strict_mode: bool
|
||||
|
||||
def __init__(self,
|
||||
loader: Optional[jinja2.BaseLoader] = None,
|
||||
strict_mode: bool = False,
|
||||
store_sources: bool = False,
|
||||
*,
|
||||
object_template_filename: str = 'inflator.jinja2',
|
||||
tuple_template_filename: str = 'inflator_tuple.jinja2',
|
||||
):
|
||||
|
||||
self._strict_mode = strict_mode
|
||||
self._store_sources = store_sources
|
||||
|
||||
if loader is None:
|
||||
template_path = importlib.resources.files('megasniff.templates')
|
||||
@@ -85,7 +88,10 @@ class SchemaInflatorGenerator:
|
||||
'from megasniff.exceptions import MissingFieldException, FieldValidationException\n')
|
||||
txt = imports + '\n' + txt
|
||||
exec(txt, namespace)
|
||||
return namespace['inflate']
|
||||
fn = namespace['inflate']
|
||||
if self._store_sources:
|
||||
setattr(fn, '__megasniff_sources__', txt)
|
||||
return fn
|
||||
|
||||
def _unwrap_typeref(self, t: type, strict_mode: bool) -> TypeRenderData:
|
||||
type_origin = get_origin(t)
|
||||
@@ -245,6 +251,5 @@ class SchemaInflatorGenerator:
|
||||
convertor_functext = '\n'.join(txt_segments) + '\n\n' + convertor_functext
|
||||
|
||||
convertor_functext = '\n'.join(list(filter(lambda x: len(x.strip()), convertor_functext.split('\n'))))
|
||||
convertor_functext = convertor_functext.replace(', )', ')')
|
||||
|
||||
return convertor_functext, namespace
|
||||
|
||||
Reference in New Issue
Block a user