#!/usr/bin/env python

# @author Martin Karkowski

# @email m.karkowski@zema.de


from . import (asyncHelpers, dictMethods, dispatcherPathes, dottedDict,

               emitter, idMethods, importing, objectMethods, path,

               pathMatchingMethods, prints, runtime, stringMethods, timers,

               timestamp, hashable, listMethods, jsonMethods, files)

from .asyncHelpers import (

    Promise,

    getOrCreateEventloop,

    isAsyncFunction,

    waitFor,

    EXECUTOR)

from .dictMethods import (extractUniqueValues, extractValues,

                          keysToCamel, keysToCamelNested, keysToSnake,

                          keysToSnakeNested, transformDict)
from .dispatcherPathes import (getEmitterPath, getMethodPath,

                               getPropertyPath, isEmitterPathCorrect,

                               isMethodPathCorrect,

                               isPropertyPathCorrect)
from .dottedDict import DottedDict, convertToDottedDict, ensureDottedAccess
from .emitter import Emitter
from .files import createFile
from .hashable import hlist, hset, hdict
from .idMethods import generateId
from .importing import dynamicImport
from .jsonMethods import dumps, loads
from .listMethods import (avgOfArray, extractListElements, isIterable, isList, flattenDeep,
                          maxOfArray, minOfArray)
from .objectMethods import (convertData, copy, deepAssign, deflattenObject,

                            flattenObject, getKeys, isFloat, isInt,

                            isNumber, isDictLike,

                            keepProperties, objectToDict,

                            recursiveForEach, rgetattr, rqueryAttr, rsetattr)
from .path import (
    MULTI_LEVEL_WILDCARD,
    SINGLE_LEVEL_WILDCARD,
    SPLITCHAR,
    containsWildcards,
    convertPath,
    pathToCamelCase,
    pathToSnakeCase,
    getLeastCommonPathSegment,
    patternIsValid,
    toPythonPath,
    varifyPath)
from .pathMatchingMethods import comparePatternAndPath
from .prints import formatException
from .runtime import offload_function_to_thread
from .setMethods import determineDifference, difference, union
from .stringMethods import camelToSnake, insertNewLines, insert, limitString, padString, replaceAll, snakeToCamel, toCamelCase, toSnakeCase, toVariableName
from .timers import setInterval, setTimeout
from .timestamp import getTimestamp
