Characteristics

The galactic.characteristics module defines essential classes for representing characteristics:

  • Characteristic for the superclass of all characteristics

  • Valued for characteristics defined by a data

  • Named for named characteristics

  • Key for characteristics whose calls to an individual will be retrieved by a key access

  • Item for characteristics whose calls to an individual will be retrieved by a nth access

  • Slice for characteristics whose calls to an individual will be retrieved by a slice access

  • Property for characteristics whose calls to an individual will be retrieved by a property access

  • Transformation for characteristics that hold a transform operation

  • Composite for characteristics which contain a collection of other Characteristic instances

  • Conversion for characteristics that execute a transform operation

  • Sum for characteristics that execute a sum operation

  • Comparison for characteristics that need a strict boolean flag used in comparison

  • Set for characteristics that contains a set of values

class galactic.characteristics.Characteristic(*args: Any, cache: Optional[bool] = True, **kwargs: Any)

Bases: object

The Characteristic class is the super class of all characteristics. It is designed for subclassing.

A characteristic can be called on an individual. It returns a data of this individual.

clear()None

Clear the cache.

__call__(individual: Any) → Any

Make this characteristic callable. This method should be overridden in sub-classes.

Keyword Arguments

individual – Any python object

Returns

The individual characteristic

Return type

object

class galactic.characteristics.Composite(*args: galactic.characteristics.main.Characteristic, **kwargs: Any)

Bases: galactic.characteristics.main.Characteristic

The Composite class is used as a container of embedded Characteristic instances. It is designed for subclassing.

characteristics

The tuple of Characteristic instances hold by this instance.

Type

tuple

__init__(*args: galactic.characteristics.main.Characteristic, **kwargs: Any)None

Initialise a Composite instance.

Parameters
  • *args (tuple) – A collection of Characteristic instances

  • **kwargs – Unused but useful for multi-class inheritance.

Raises

TypeError – If a characteristic is not an instance of Characteristic

class galactic.characteristics.Named(*args: galactic.characteristics.main.Characteristic, name: str, **kwargs: Any)

Bases: galactic.characteristics.main.Characteristic

The Named class is used to represent named characteristics. Is is designed for subclassing.

name

The name hold by the instance. It is used to name Characteristic instances.

Type

str

__init__(*args: galactic.characteristics.main.Characteristic, name: str, **kwargs: Any)None

Initialise a Named instance.

Parameters
  • *args – Unused but useful for multi-class inheritance.

  • **kwargs – Unused but useful for multi-class inheritance.

Keyword Arguments

name – A name (usually a string)

class galactic.characteristics.Valued(*args: galactic.characteristics.main.Characteristic, data: Any = None, **kwargs: Any)

Bases: galactic.characteristics.main.Characteristic

The Valued class is used to hold a data.

data

The data hold by the instance.

Example

>>> from galactic.characteristics import Valued
>>> a = Valued(data=5)
>>> print(a)
5
>>> a({})
5
__init__(*args: galactic.characteristics.main.Characteristic, data: Any = None, **kwargs: Any)None

Initialise a Valued instance.

Parameters
  • *args – Unused but useful for multi-class inheritance.

  • **kwargs – Unused but useful for multi-class inheritance.

Keyword Arguments

data – Any python object

class galactic.characteristics.Comparison(strict: bool = False, **kwargs: Any)

Bases: galactic.characteristics.main.Characteristic

The Comparison class can be inherited to hold strict property. It is designed for subclassing.

strict

The strict property hold by this instance. It is a boolean flag used for strict (or not) Comparison.

Type

bool

__init__(strict: bool = False, **kwargs: Any)

Initialise a Comparison instance.

Parameters
  • *args – Unused but useful for multi-class inheritance.

  • **kwargs – Unused but useful for multi-class inheritance.

Keyword Arguments

strict – Is the comparison strict?

class galactic.characteristics.Set(values: Iterable[collections.abc.Hashable], **kwargs: Any)

Bases: galactic.characteristics.main.Characteristic

A Set characteristics can be inherited to hold a set of values property. It is designed for subclassing.

values

The values hold by this instance. It is used to hold a collection of values.

Type

OrderedSet

__init__(values: Iterable[collections.abc.Hashable], **kwargs: Any)None

Initialise a Set instance.

Parameters
  • *args – Unused but useful for multi-class inheritance.

  • **kwargs – Unused but useful for multi-class inheritance.

Keyword Arguments

values (Collection) – A collection of values to be compared with

class galactic.characteristics.Transformation(transform: Optional[function] = None, **kwargs: Any)

Bases: galactic.characteristics.main.Characteristic

The Transformation class is used to hold a transform operation. It is designed for subclassing.

transform

The transform operation hold by the instance. It is used to apply transformation on values.

Type

Callable

__init__(transform: Optional[function] = None, **kwargs: Any)

Initialise a Transformation instance.

Parameters
  • *args – Unused but useful for multi-class inheritance.

  • **kwargs – Unused but useful for multi-class inheritance.

Keyword Arguments

transform – A transform operation.

class galactic.characteristics.Key(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, **kwargs: Any)

Bases: galactic.characteristics.main.Named, galactic.characteristics.main.Composite

The Key class is used to represent key characteristics.

name

The name hold by the instance.

Type

str

characteristics

The tuple of Characteristic instances hold by this instance.

Type

tuple

Example

>>> from galactic.characteristics import Key
>>> a = Key(name="x")
>>> print(a)
x
>>> a({"x": 5})
5
>>> a({})
>>> a=Key(Key(name="x"), name="y")
>>> print(a)
x[y]
>>> a({"x": {"y": 5}})
5
__init__(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, **kwargs: Any)None

Initialize a Key instance.

Parameters

characteristic (Characteristic) – The underlying characteristic.

class galactic.characteristics.Property(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, **kwargs: Any)

Bases: galactic.characteristics.main.Named, galactic.characteristics.main.Composite

The Property class is used to represent property characteristics.

name

The name hold by the instance.

Type

str

characteristics

The tuple of Characteristic instances hold by this instance.

Type

tuple

__init__(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, **kwargs: Any)

Initialize a Property instance.

Parameters

characteristic (Characteristic) – The underlying characteristic.

class galactic.characteristics.Item(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, nth: int = 0, **kwargs: Any)

Bases: galactic.characteristics.main.Composite

The Item class is used to represent item sequences.

nth

The numbering of the element in the sequence.

Type

int

characteristics

The tuple of Characteristic instances hold by this instance.

Type

tuple

Example

>>> from galactic.characteristics import Item, Key
>>> a = Item(nth=1)
>>> print(a)
[1]
>>> a([1, 2, 3])
2
>>> a([])
>>> a = Item(Key(name="a"), nth=1)
>>> print(a)
a[1]
__init__(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, nth: int = 0, **kwargs: Any)None

Initialize a Item instance.

Parameters

characteristic (Characteristic) – The underlying characteristic.

Keyword Arguments

nth (int) – The numbering of the element in the sequence.

class galactic.characteristics.Slice(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, start: Optional[int] = None, end: Optional[int] = None, **kwargs: Any)

Bases: galactic.characteristics.main.Composite

The Slice class is used to represent item slices.

start

The slice start.

Type

int

end

The slice end.

Type

int

characteristics

The tuple of Characteristic instances hold by this instance.

Type

tuple

Example

>>> from galactic.characteristics import Slice, Key
>>> a = Slice(start=1)
>>> print(a)
[1:]
>>> a([1, 2, 3])
[2, 3]
>>> a(None)
>>> a = Slice(Key(name="a"), start=1)
>>> print(a)
a[1:]
__init__(characteristic: Optional[galactic.characteristics.main.Characteristic] = None, start: Optional[int] = None, end: Optional[int] = None, **kwargs: Any)None

Initialize a Slice instance.

Parameters

characteristic (Characteristic) – The underlying characteristic.

Keyword Arguments
  • start (int) – The slice start.

  • end (int) – The slice end.

class galactic.characteristics.Conversion(characteristic: galactic.characteristics.main.Characteristic, **kwargs: Any)

Bases: galactic.characteristics.main.Composite, galactic.characteristics.main.Transformation, galactic.characteristics.main.Valued

The Conversion class is used to convert a characteristic call to a specific type.

characteristics

The characteristics (tuple of Characteristic instances) hold by this instance.

Type

tuple

transform

The transform operation hold by the instance.

Type

Callable

data

The data hold by the instance.

Example

>>> from galactic.characteristics import Conversion, Key
>>> a = Conversion(Key(name="x"), transform=float, data="nan")
>>> print(a)
x
>>> a({"x": "5"})
5.0
>>> a(4)
nan
__init__(characteristic: galactic.characteristics.main.Characteristic, **kwargs: Any)None

Initialise a Conversion instance.

Parameters

characteristic (Characteristic) – The embedded characteristics

Keyword Arguments
class galactic.characteristics.Sum(*args: galactic.characteristics.main.Characteristic, start: Any = 0, **kwargs: Any)

Bases: galactic.characteristics.main.Composite, galactic.characteristics.main.Transformation, galactic.characteristics.main.Valued

The Sum class is used to define a sum over other Characteristic instances.

start

Initial value for the sum. It is used as a beginning for the sum calculus.

characteristics

The characteristics (tuple of Characteristic instances) hold by this instance.

Type

tuple

transform

The transform operation hold by the instance.

Type

Callable

data

The data hold by the instance.

Example

>>> from galactic.characteristics import Key, Sum
>>> s = Sum(Key(name="x"), Key(name="y"), start=[], data=None)
>>> print(s)
(x+y)
>>> s({})
>>> s({"x": [1]})
>>> s({"x": [1], "y": [2]})
[1, 2]
>>>

Example

>>> from galactic.characteristics import Key, Sum
>>> s = Sum(Key(name="x"), Key(name="y"), start=0, data="nan", transform=float)
>>> print(s)
(x+y)
>>> s({})
nan
>>> s({"x": 1})
nan
>>> s({"x": 1, "y": 2})
3.0
>>>
__init__(*args: galactic.characteristics.main.Characteristic, start: Any = 0, **kwargs: Any)

Initialise a Sum instance.

Parameters
Keyword Arguments