refactor decorator to separate file

This commit is contained in:
collerek
2020-08-11 19:03:02 +02:00
parent 24b5649c56
commit 146dbea015
5 changed files with 31 additions and 24 deletions

BIN
.coverage

Binary file not shown.

View File

@ -1,4 +1,4 @@
from typing import Any, Dict, List, Optional, TYPE_CHECKING, Type from typing import Any, Dict, List, Optional, TYPE_CHECKING
import sqlalchemy import sqlalchemy
@ -8,27 +8,6 @@ if TYPE_CHECKING: # pragma no cover
from orm.models import Model from orm.models import Model
class RequiredParams:
def __init__(self, *args: str) -> None:
self._required = list(args)
def __call__(self, model_field_class: Type["BaseField"]) -> Type["BaseField"]:
old_init = model_field_class.__init__
model_field_class._old_init = old_init
def __init__(instance: "BaseField", *args: Any, **kwargs: Any) -> None:
super(instance.__class__, instance).__init__(*args, **kwargs)
for arg in self._required:
if arg not in kwargs:
raise ModelDefinitionError(
f"{instance.__class__.__name__} field requires parameter: {arg}"
)
setattr(instance, arg, kwargs.pop(arg))
model_field_class.__init__ = __init__
return model_field_class
class BaseField: class BaseField:
__type__ = None __type__ = None

View File

@ -11,7 +11,7 @@ if TYPE_CHECKING: # pragma no cover
from orm.models import Model from orm.models import Model
def create_dummy_instance(fk: Type["Model"], pk: int = None) -> "Model": def create_dummy_instance(fk: Type["Model"], pk: Any = None) -> "Model":
init_dict = { init_dict = {
**{fk.__pkname__: pk or -1}, **{fk.__pkname__: pk or -1},
**{ **{

View File

@ -4,7 +4,8 @@ import decimal
import sqlalchemy import sqlalchemy
from pydantic import Json from pydantic import Json
from orm.fields.base import BaseField, RequiredParams # noqa I101 from orm.fields.base import BaseField # noqa I101
from orm.fields.required_decorator import RequiredParams
@RequiredParams("length") @RequiredParams("length")

View File

@ -0,0 +1,27 @@
from typing import Any, TYPE_CHECKING, Type
from orm import ModelDefinitionError
if TYPE_CHECKING: # pragma no cover
from orm.fields import BaseField
class RequiredParams:
def __init__(self, *args: str) -> None:
self._required = list(args)
def __call__(self, model_field_class: Type["BaseField"]) -> Type["BaseField"]:
old_init = model_field_class.__init__
model_field_class._old_init = old_init
def __init__(instance: "BaseField", *args: Any, **kwargs: Any) -> None:
super(instance.__class__, instance).__init__(*args, **kwargs)
for arg in self._required:
if arg not in kwargs:
raise ModelDefinitionError(
f"{instance.__class__.__name__} field requires parameter: {arg}"
)
setattr(instance, arg, kwargs.pop(arg))
model_field_class.__init__ = __init__
return model_field_class