Skip to content
This repository has been archived by the owner on Apr 10, 2023. It is now read-only.

Commit

Permalink
Rename BaseField to _Base
Browse files Browse the repository at this point in the history
  • Loading branch information
rossmacarthur committed Feb 19, 2020
1 parent 24d7c0e commit c5abc2f
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 24 deletions.
6 changes: 5 additions & 1 deletion RELEASES.rst
Expand Up @@ -6,7 +6,9 @@ Releases

*Unreleased*

- Add ``Flatten`` field.
- Rename ``BaseField`` to ``_Base``.
- Add ``frozenset`` to FIELD_CLASS_MAP. (`24d7c0e`_)
- Add ``Flatten`` field. (`9c740a5`_)
- Improve ``Uuid`` field normalization. (`34783b0`_)
- Add ``IpAddress`` field. (`667ca96`_)
- Extended string types now subclass ``Text`` not ``Str``. (`5862375`_)
Expand All @@ -20,6 +22,8 @@ Releases
.. _5862375: https://github.com/rossmacarthur/serde/commit/5862375ac82a98364d7cf7ef82c6bb668d9abded
.. _667ca96: https://github.com/rossmacarthur/serde/commit/667ca9629028b29a6d420a9ce4eb14460baca448
.. _34783b0: https://github.com/rossmacarthur/serde/commit/34783b03084acffc1fd1cddf4c987d3855d45330
.. _9c740a5: https://github.com/rossmacarthur/serde/commit/9c740a5e9f40b1d913f2d718947f7204e87c6ffa
.. _24d7c0e: https://github.com/rossmacarthur/serde/commit/24d7c0e3320226837586b214ad3dfc0d95852ddb

0.7.3
-----
Expand Down
8 changes: 4 additions & 4 deletions src/serde/fields.py
Expand Up @@ -57,7 +57,7 @@ def _resolve_to_field_instance(thing, none_allowed=True):
raise TypeError('failed to resolve {!r} into a field'.format(thing))


class BaseField(object):
class _Base(object):
"""
A base field or tag on a `~serde.Model`.
Expand All @@ -82,8 +82,8 @@ def __init__(self, serializers=None, deserializers=None):
"""
Create a new base field.
"""
self.id = BaseField._counter
BaseField._counter += 1
self.id = _Base._counter
_Base._counter += 1
self.serializers = serializers or []
self.deserializers = deserializers or []

Expand Down Expand Up @@ -179,7 +179,7 @@ def deserialize(self, value):
return value


class Field(BaseField):
class Field(_Base):
"""
A field on a `~serde.Model`.
Expand Down
2 changes: 1 addition & 1 deletion src/serde/tags.py
Expand Up @@ -8,7 +8,7 @@
from serde.exceptions import ValidationError


class Tag(fields.BaseField):
class Tag(fields._Base):
"""
A tag field for a `Model <serde.Model>`.
Expand Down
36 changes: 18 additions & 18 deletions tests/test_fields.py
Expand Up @@ -9,7 +9,6 @@
from serde import Model, fields, utils, validators
from serde.exceptions import ContextError, ValidationError
from serde.fields import (
BaseField,
Bool,
Bytes,
Choice,
Expand Down Expand Up @@ -38,6 +37,7 @@
Time,
Tuple,
Uuid,
_Base,
_Container,
_Mapping,
_resolve_to_field_instance,
Expand Down Expand Up @@ -126,83 +126,83 @@ def test__resolve_to_field_instance_builtin_types():
pass


class TestBaseField:
class TestBase:
def test___init___basic(self):
# Construct a basic Base and check values are set correctly.
base = BaseField()
base = _Base()
assert base.id >= 0
assert base.serializers == []
assert base.deserializers == []

# A second Base instantiated should have a higher counter.
base2 = BaseField()
base2 = _Base()
assert base2.id - base.id == 1

def test___init___options(self):
# A Base with extra options set.
base = BaseField(serializers=[None], deserializers=[1, 2, 3])
base = _Base(serializers=[None], deserializers=[1, 2, 3])
assert base.serializers == [None]
assert base.deserializers == [1, 2, 3]

def test___eq__(self):
# Bases with equal values should be equal.
assert BaseField() == BaseField()
assert BaseField(serializers=[None]) == BaseField(serializers=[None])
assert BaseField(deserializers=[None]) == BaseField(deserializers=[None])
assert _Base() == _Base()
assert _Base(serializers=[None]) == _Base(serializers=[None])
assert _Base(deserializers=[None]) == _Base(deserializers=[None])

def test___model__(self):
# Base.__model__ simply returns the _model_cls value.
obj = object()
base = BaseField()
base = _Base()
base._model_cls = obj
assert base.__model__ is obj

def test__attrs(self):
# Returns a filtered dictionary of filtered attributes.
base = BaseField(serializers=[None], deserializers=[1, 2, 3])
base = _Base(serializers=[None], deserializers=[1, 2, 3])
assert base._attrs() == {'deserializers': [1, 2, 3], 'serializers': [None]}

def test__bind(self):
# Make sure _bind can't be called twice.
obj = object()
base = BaseField()
base = _Base()
base._bind(obj)
assert base._model_cls is obj

with raises(ContextError) as e:
base._bind(object())

assert e.value.message == "attempted to use 'BaseField' instance more than once"
assert e.value.message == "attempted to use '_Base' instance more than once"

def test__serialize_with(self):
# Check that the Base field doesn't implement this method.
with raises(NotImplementedError):
BaseField()._serialize_with(object(), {})
_Base()._serialize_with(object(), {})

def test__deserialize_with(self):
# Check that the Base field doesn't implement this method.
with raises(NotImplementedError):
BaseField()._deserialize_with(object(), {})
_Base()._deserialize_with(object(), {})

def test__serialize(self):
# Check that custom serializers are applied.
base = BaseField(serializers=[lambda x: x[::-1]])
base = _Base(serializers=[lambda x: x[::-1]])
assert base._serialize('testing') == 'gnitset'

def test__deserialize(self):
# Check that custom deserializers are applied.
base = BaseField(deserializers=[lambda x: x[::-1]])
base = _Base(deserializers=[lambda x: x[::-1]])
assert base._deserialize('gnitset') == 'testing'

def test_serialize(self):
# Check that serialize simply passes a value through.
obj = object()
assert BaseField().serialize(obj) is obj
assert _Base().serialize(obj) is obj

def test_deserialize(self):
# Check that deserialize simply passes a value through.
obj = object()
assert BaseField().deserialize(obj) is obj
assert _Base().deserialize(obj) is obj


class TestField:
Expand Down

0 comments on commit c5abc2f

Please sign in to comment.