Source code for ClearMap.Utils.Formatting
# -*- coding: utf-8 -*-
"""
Formatting
==========
Module for formatting type and functions.
"""
__author__ = 'Christoph Kirst <christoph.kirst.ck@gmail.com>'
__license__ = 'GPLv3 - GNU General Pulic License v3 (see LICENSE)'
__copyright__ = 'Copyright © 2020 by Christoph Kirst'
__webpage__ = 'http://idisco.info'
__download__ = 'http://www.github.com/ChristophKirst/ClearMap2'
__all__ = ['as_type', 'ensure']
[docs]
def as_type(value, types = [int, float]):
"""Tries to convert value to given data types.
Arguments
---------
value : object
The value to be converted.
types : list of types
The list of types to try to convert the value to.
Returns
-------
value : object
The value converted to the types if possible.
"""
for t in types:
try:
return t(value)
except Exception:
pass
return value
[docs]
def ensure(value, dtype):
"""Ensure values have a specified type but allowing for None values.
Arguments
---------
value : object
The value to copy
dtype : class
The class type of the value to be copied.
Returns
-------
value : object
The value with the requested type.
"""
if value is None:
return None;
else:
if not isinstance(value, dtype):
value = dtype(value);
return dtype(value);
# def __copy__(self):
# cls = self.__class__
# result = cls.__new__(cls)
# result.__dict__.update(self.__dict__)
# return result
#
# def __deepcopy__(self, memo):
# cls = self.__class__
# result = cls.__new__(cls)
# memo[id(self)] = result
# for k, v in self.__dict__.items():
# setattr(result, k, deepcopy(v, memo))
# return result