rics.cardinality package

Submodules

rics.cardinality.exceptions module

Cardinality exceptions.

exception rics.cardinality.exceptions.CardinalityError(message: str, cardinality: Cardinality)[source]

Bases: ValueError

Raised for cardinality issues.

Parameters
  • message – An exception message.

  • cardinality – A Cardinality.

Module contents

Cardinality enumeration.

class rics.cardinality.Cardinality(value)[source]

Bases: Enum

Enumeration type for cardinality relationships.

Cardinalities are comparable using numerical operators, and can be thought of as comparing “preciseness”. The less ambiguity there is for a given cardinality, the smaller it is in comparison to the others. The hierarchy is given by 1:1 < 1:N = N:1 < M:N. Note that 1:N and N:1 are considered equally precise.

Examples

Comparing cardinalities

>>> from rics.cardinality import Cardinality
>>> Cardinality.ManyToOne
<Cardinality.ManyToOne: 'N:1'>
>>> Cardinality.OneToOne
<Cardinality.OneToOne: '1:1'>
>>> Cardinality.ManyToOne < Cardinality.OneToOne
False
OneToOne = '1:1'
OneToMany = '1:N'
ManyToOne = 'N:1'
ManyToMany = 'M:N'
property many_left: bool

Many-relationship on the right, True for N:1 and M:N.

property many_right: bool

Many-relationship on the right, True for 1:N and M:N.

property one_left: bool

One-relationship on the right, True for 1:1 and 1:N.

property one_right: bool

One-relationship on the right, True for 1:1 and N:1.

property inverse: Cardinality

Inverse cardinality. For symmetric cardinalities, self.inverse == self.

Returns

Inverse cardinality.

See also

symmetric

property symmetric: bool

Symmetry flag. For symmetric cardinalities, self.inverse == self.

Returns

Symmetry flag.

See also

inverse

classmethod from_counts(left_count: int, right_count: int) Cardinality[source]

Derive a Cardinality from counts.

Parameters
  • left_count – Number of elements on the left-hand side.

  • right_count – Number of elements on the right-hand side.

Returns

A Cardinality.

Raises

ValueError – For counts < 1.

classmethod parse(arg: Union[str, Cardinality], strict: bool = False) Cardinality[source]

Convert to cardinality.

Parameters
  • arg – Argument to parse.

  • strict – If True, arg must match exactly when it is given as a string.

Returns

A Cardinality.

Raises

ValueError – If the argument could not be converted.