brel.characteristics.period_characteristic

This module contains the PeriodCharacteristic class, which represents an XBRL period characteristic. A period characteristic associates the aspect Aspect.PERIOD with a value. This value can be an instant or a duration.

An instant consists of a single datetime.date instance.

A duration consists of two datetime.date instances, a start date and an end date.

====================

  • author: Robin Schmidiger
  • version: 0.5
  • date: 08 Jan 2024

====================

PeriodCharacteristic Objects

class PeriodCharacteristic(ICharacteristic)

Class for representing an XBRL period characteristic. A period characteristic is either a duration or an instant. Use the is_instant() method to check if the period is an instant or a duration.

If the period is an instant, use the get_instant_period() method to get the instant date as a datetime.date instance.

if the period is a duration, use the get_start_period() and get_end_period() methods to get the start and end dates as datetime.date instances.

A quirk of the PeriodCharacteristic.get_value() method is that it returns the period characteristic itself.

This is because the standard python package datetime does not have a class for representing a period as specified by XBRL.

is_instant

def is_instant() -> bool

Returns:

bool: True if the period is an instant, False otherwise

get_start_period

def get_start_period() -> datetime.date

Raises:

  • ValueError: if the period is an instant. Use 'is_instant' to check if the period is an instant.

Returns:

datetime.date: the start date of the period as a datetime.date instance.

get_end_period

def get_end_period() -> datetime.date

Raises:

  • ValueError: if the period is an instant. Use 'is_instant' to check if the period is an instant.

Returns:

datetime.date: the end date of the period as a datetime.date instance.

get_instant_period

def get_instant_period() -> datetime.date

Raises:

  • ValueError: if the period is a duration. Use 'is_instant' to check if the period is an instant.

Returns:

datetime.date: the instant date of the period as a datetime.date instance.

get_value

def get_value() -> "PeriodCharacteristic"

Returns:

PeriodCharacteristic: the period characteristic itself

get_aspect

def get_aspect() -> Aspect

Returns:

Aspect: the aspect of the period characteristic, which is Aspect.PERIOD