Remove Django-isms for embedded exceptions classes
This commit is contained in:
parent
b80addbb13
commit
54f00b5774
2 changed files with 4 additions and 39 deletions
|
@ -29,7 +29,7 @@ import uuid
|
|||
|
||||
import redis
|
||||
from pydantic import BaseModel, validator
|
||||
from pydantic.fields import FieldInfo as PydanticFieldInfo, PrivateAttr, Field
|
||||
from pydantic.fields import FieldInfo as PydanticFieldInfo
|
||||
from pydantic.fields import ModelField, Undefined, UndefinedType
|
||||
from pydantic.main import ModelMetaclass
|
||||
from pydantic.typing import NoArgAnyCallable
|
||||
|
@ -42,25 +42,6 @@ model_registry = {}
|
|||
_T = TypeVar("_T")
|
||||
|
||||
|
||||
def subclass_exception(name, bases, module, attached_to):
|
||||
"""
|
||||
Create exception subclass. Used by RedisModel below.
|
||||
|
||||
The exception is created in a way that allows it to be pickled, assuming
|
||||
that the returned exception class will be added as an attribute to the
|
||||
'attached_to' class.
|
||||
"""
|
||||
return type(name, bases, {
|
||||
'__module__': module,
|
||||
'__qualname__': '%s.%s' % (attached_to.__qualname__, name),
|
||||
})
|
||||
|
||||
|
||||
def _has_contribute_to_class(value):
|
||||
# Only call contribute_to_class() if it's bound.
|
||||
return not inspect.isclass(value) and hasattr(value, 'contribute_to_class')
|
||||
|
||||
|
||||
class TokenEscaper:
|
||||
"""
|
||||
Escape punctuation within an input string.
|
||||
|
@ -646,7 +627,6 @@ class ModelMeta(ModelMetaclass):
|
|||
|
||||
meta = meta or getattr(new_class, 'Meta', None)
|
||||
base_meta = getattr(new_class, '_meta', None)
|
||||
parents = [b for b in bases if isinstance(b, ModelMeta)]
|
||||
|
||||
if meta and meta != DefaultMeta and meta != base_meta:
|
||||
new_class.Meta = meta
|
||||
|
@ -662,21 +642,6 @@ class ModelMeta(ModelMetaclass):
|
|||
new_class._meta = deepcopy(DefaultMeta)
|
||||
new_class.Meta = new_class._meta
|
||||
|
||||
# Not an abstract model class
|
||||
if abc.ABC not in bases:
|
||||
key = f"{new_class.__module__}.{new_class.__name__}"
|
||||
model_registry[key] = new_class
|
||||
|
||||
new_class.add_to_class(
|
||||
'NotFoundError',
|
||||
subclass_exception(
|
||||
'NotFoundError',
|
||||
tuple(
|
||||
x.NotFoundError for x in bases if hasattr(x, '_meta') and not issubclass(x, abc.ABC)
|
||||
) or (NotFoundError,),
|
||||
attrs['__module__'],
|
||||
attached_to=new_class))
|
||||
|
||||
# Create proxies for each model field so that we can use the field
|
||||
# in queries, like Model.get(Model.field_name == 1)
|
||||
for field_name, field in new_class.__fields__.items():
|
||||
|
@ -857,7 +822,7 @@ class HashModel(RedisModel, abc.ABC):
|
|||
def get(cls, pk: Any) -> 'HashModel':
|
||||
document = cls.db().hgetall(cls.make_primary_key(pk))
|
||||
if not document:
|
||||
raise cls.NotFoundError
|
||||
raise NotFoundError
|
||||
return cls.parse_obj(document)
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -12,7 +12,7 @@ from redis_developer.orm import (
|
|||
HashModel,
|
||||
Field,
|
||||
)
|
||||
from redis_developer.orm.model import RedisModelError, QueryNotSupportedError
|
||||
from redis_developer.orm.model import RedisModelError, QueryNotSupportedError, NotFoundError
|
||||
|
||||
r = redis.Redis()
|
||||
today = datetime.date.today()
|
||||
|
@ -311,7 +311,7 @@ def test_sorting(members):
|
|||
|
||||
|
||||
def test_not_found():
|
||||
with pytest.raises(Member.NotFoundError):
|
||||
with pytest.raises(NotFoundError):
|
||||
# This ID does not exist.
|
||||
Member.get(1000)
|
||||
|
||||
|
|
Loading…
Reference in a new issue