classical.fields.base module

class classical.fields.base.ClassField(init_name: str, attr_name: str)[source]

Bases: object

Representation of a data field.

attr_name
get_value(obj: Any) Any[source]

Get value of object’s field.

Parameters

obj – source object

Returns

value of field

import attr

class FieldedNT(NamedTuple):
    size: int
    color: str

@attr.s
class FieldedAttrs:
    size: int = attr.ib()
    color: str = attr.ib()

field_size = ClassField(init_name='size', attr_name='size')
nt_obj = FieldedNT(size=12, color='red')
attrs_obj = FieldedAttrs(size=34, color='green')

# via get_value method
field_size.get_value(nt_obj)  # == 12
# via __getitem__
field_size[attrs_obj]  # == 34
init_name
property name: str

Name of the field (attribute name, may be different from the init name).

set_value(obj: Any, value: Any) None[source]

Set value for object’s field.

Parameters
  • obj – target object

  • value – value for field

Returns

None

import attr

@attr.s
class FieldedAttrs:
    size: int = attr.ib()
    color: str = attr.ib()

field_size = ClassField(init_name='size', attr_name='size')
field_color = ClassField(init_name='color', attr_name='color')
attrs_obj = FieldedAttrs(size=56, color='green')

# via get_value method
field_size.set_value(attrs_obj, 78)  # attrs_obj.size == 78
# via __getitem__
field_color[attrs_obj] = 'blue'  # attrs_obj.color == 'blue'
class classical.fields.base.FieldInspector[source]

Bases: abc.ABC, Generic[classical.fields.base._ClassFieldType]

classmethod get_field_dict(obj: Any) Dict[classical.fields.base._ClassFieldType, Any][source]

Return dict of obj’s fields and their values

Parameters

obj – fielded instance

Returns

dict with ClassField instances as keys

classmethod get_fields(cls_or_obj: type) classical.fields.base.FieldSchema[classical.fields.base._ClassFieldType][source]

Return list of fields for the given fielded class or object.

Parameters

cls_or_obj – class or instance to inspect.

Returns

list of ClassField instances

classmethod get_name_dict(obj: Any, attr_mode: bool = False, init_mode: bool = False) Dict[str, Any][source]

Return dict of obj’s field names and their values.

Parameters
  • obj – fielded instance

  • attr_mode – use fields’ attr_name as the dict’s keys; mutually exclusive with init_mode

  • init_mode – use fields’ init_name as the dict’s keys; mutually exclusive with attr_mode

Returns

dict with ClassField instances as keys

classmethod get_name_list(obj: Any, attr_mode: bool = False, init_mode: bool = False) List[str][source]

Return list of obj’s field names.

Parameters
  • obj – fielded instance

  • attr_mode – use fields’ attr_name; mutually exclusive with init_mode

  • init_mode – use fields’ init_name; mutually exclusive with attr_mode

Returns

dict with ClassField instances as keys

class classical.fields.base.FieldSchema(iterable=(), /)[source]

Bases: List[classical.fields.base._ClassFieldType]

get_field_dict(obj: Any) Dict[classical.fields.base._ClassFieldType, Any][source]
set_field_dict(obj: Any, values: Dict[classical.fields.base._ClassFieldType, Any]) None[source]