Utility functions for computing combinations of dimensions and hierarchy levels
Initialize an ordered dictionary. The signature is the same as regular dictionaries, but keyword arguments are not recommended because their insertion order is arbitrary.
Sets value for key even if value is null.
Bogus class to handle missing optional packages - packages that are not necessarily required for Cubes, but are needed for certain features.
Localize common attributes: label and description
Localize list of attributes. translations should be a dictionary with keys as attribute names, values are dictionaries with localizable attribute metadata, such as label or description.
Returns a dictionary with localizable attributes of obj.
Collect all subclasses of parent and return a dictionary where keys are decamelized class names transformed to identifiers and with suffix removed.
Raises ArgumentError when obj is not instance of cls
Raises ArgumentError when objects in list_ are not instances of cls
Read a JSON from path. This is convenience function that provides more descriptive exception handling.
Return keys from deps ordered by dependency (topological sort). deps is a dictionary where keys are strings and values are list of strings where keys is assumed to be dependant on values.
Example:
A ---> B -+--> C
|
+--> D --> E
Will be: {"A": ["B"], "B": ["C", "D"], "D": ["E"],"E": []}