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
 | 
					import redis
 | 
				
			||||||
from pydantic import BaseModel, validator
 | 
					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.fields import ModelField, Undefined, UndefinedType
 | 
				
			||||||
from pydantic.main import ModelMetaclass
 | 
					from pydantic.main import ModelMetaclass
 | 
				
			||||||
from pydantic.typing import NoArgAnyCallable
 | 
					from pydantic.typing import NoArgAnyCallable
 | 
				
			||||||
| 
						 | 
					@ -42,25 +42,6 @@ model_registry = {}
 | 
				
			||||||
_T = TypeVar("_T")
 | 
					_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:
 | 
					class TokenEscaper:
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    Escape punctuation within an input string.
 | 
					    Escape punctuation within an input string.
 | 
				
			||||||
| 
						 | 
					@ -646,7 +627,6 @@ class ModelMeta(ModelMetaclass):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        meta = meta or getattr(new_class, 'Meta', None)
 | 
					        meta = meta or getattr(new_class, 'Meta', None)
 | 
				
			||||||
        base_meta = 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:
 | 
					        if meta and meta != DefaultMeta and meta != base_meta:
 | 
				
			||||||
            new_class.Meta = meta
 | 
					            new_class.Meta = meta
 | 
				
			||||||
| 
						 | 
					@ -662,21 +642,6 @@ class ModelMeta(ModelMetaclass):
 | 
				
			||||||
            new_class._meta = deepcopy(DefaultMeta)
 | 
					            new_class._meta = deepcopy(DefaultMeta)
 | 
				
			||||||
            new_class.Meta = new_class._meta
 | 
					            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
 | 
					        # Create proxies for each model field so that we can use the field
 | 
				
			||||||
        # in queries, like Model.get(Model.field_name == 1)
 | 
					        # in queries, like Model.get(Model.field_name == 1)
 | 
				
			||||||
        for field_name, field in new_class.__fields__.items():
 | 
					        for field_name, field in new_class.__fields__.items():
 | 
				
			||||||
| 
						 | 
					@ -857,7 +822,7 @@ class HashModel(RedisModel, abc.ABC):
 | 
				
			||||||
    def get(cls, pk: Any) -> 'HashModel':
 | 
					    def get(cls, pk: Any) -> 'HashModel':
 | 
				
			||||||
        document = cls.db().hgetall(cls.make_primary_key(pk))
 | 
					        document = cls.db().hgetall(cls.make_primary_key(pk))
 | 
				
			||||||
        if not document:
 | 
					        if not document:
 | 
				
			||||||
            raise cls.NotFoundError
 | 
					            raise NotFoundError
 | 
				
			||||||
        return cls.parse_obj(document)
 | 
					        return cls.parse_obj(document)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    @classmethod
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@ from redis_developer.orm import (
 | 
				
			||||||
    HashModel,
 | 
					    HashModel,
 | 
				
			||||||
    Field,
 | 
					    Field,
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from redis_developer.orm.model import RedisModelError, QueryNotSupportedError
 | 
					from redis_developer.orm.model import RedisModelError, QueryNotSupportedError, NotFoundError
 | 
				
			||||||
 | 
					
 | 
				
			||||||
r = redis.Redis()
 | 
					r = redis.Redis()
 | 
				
			||||||
today = datetime.date.today()
 | 
					today = datetime.date.today()
 | 
				
			||||||
| 
						 | 
					@ -311,7 +311,7 @@ def test_sorting(members):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_not_found():
 | 
					def test_not_found():
 | 
				
			||||||
    with pytest.raises(Member.NotFoundError):
 | 
					    with pytest.raises(NotFoundError):
 | 
				
			||||||
        # This ID does not exist.
 | 
					        # This ID does not exist.
 | 
				
			||||||
        Member.get(1000)
 | 
					        Member.get(1000)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue