import json from datetime import datetime, timedelta from typing import Any, Dict, List, Union from luft.common.config import (AWS_ACCESS_KEY_ID, AWS_BUCKET, AWS_SECRET_ACCESS_KEY, QLIK_ENT_CLIENT_CERT, QLIK_ENT_CLIENT_KEY, QLIK_ENT_HOST, QLIK_ENT_ROOT_CERT) from luft.common.logger import setup_logger from luft.common.s3_utils import get_s3, write_s3 from luft.common.utils import NoneStr, ts_to_tz from luft.tasks.generic_task import GenericTask from luft.vendor.pyqlikengine import engine_helper, pyqlikengine # Setup logger logger = setup_logger('common', 'INFO') class QlikMetric(GenericTask): """Qlik Sense export metrics.""" def __init__(self, name: str, task_type: str, source_system: str, source_subsystem: str, app_id: str, dimensions: Union[List[str]] = None, measures: Union[List[str]] = None, selections: Union[List[Dict[str, List[str]]]] = None, yaml_file: NoneStr = None, env: NoneStr = None,
"""Common utils.""" import importlib import os from configparser import SafeConfigParser from pathlib import Path from typing import Any, Optional, Union import dateutil.parser from luft.common.logger import setup_logger import pendulum # Setup logger logger = setup_logger('util', 'INFO') NoneStr = Union[Optional[str], None] def class_for_name(path: str) -> Any: """Return the value of the named attribute of object.""" parts = path.split('.') class_name = parts.pop() module_name = '.'.join(parts) m = importlib.import_module(module_name) c = getattr(m, class_name) return c def ts_to_tz(ts: str) -> str: