def test_invalid_config(): remove_config_folder() c = config.Config(script=__file__, create=True) prepare_invalid_config_file(c) with pytest.raises(json.decoder.JSONDecodeError): c.read() remove_config_folder()
def test_create_file(): remove_config_folder() c = config.Config(script=__file__, create=True) c.read() assert os.path.exists(c._file_path) remove_config_folder()
def test_valid_config_variable(): remove_config_folder() c = config.Config(script=__file__, create=True) prepare_config_file(c) c.read() assert c.test remove_config_folder()
def test_custom_cfg_dir_file(): cfg_dir = os.path.join(os.path.dirname(__file__), 'config') cfg_file = 'config.json' remove_config_folder(cfg_dir) c = config.Config(script=__file__, create=True, cfg_dir=cfg_dir, cfg_file=cfg_file) assert os.path.exists(os.path.join(cfg_dir, cfg_file)) remove_config_folder(cfg_dir)
""" Useful formatting functions for Time, Decimal, File Sizes, Strings, Temperature """ import datetime from operator import itemgetter from gpm import config # Read config c = config.Config(script=__file__, create=True) c.read() def time_now(ts_format=None): if ts_format is None: ts_format = "YYYYMMDDHHMISS" return datetime.datetime.now().strftime(c.ts_formats.get(ts_format)) def time_specific(ts, ts_format=None): if ts_format is None: ts_format = "YYYYMMDDHHMISS" return datetime.datetime.fromtimestamp(int(ts)).strftime( c.ts_formats.get(ts_format)) def fsize_pretty(size_in_bytes, return_size_only=False, unit=None): conversion = { 'b': size_in_bytes, 'kb': size_in_bytes / 1024, 'mb': size_in_bytes / (1024**2), 'gb': size_in_bytes / (1024**3),
import os import shutil import json from gpm import config cfg_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'cfg') cfg_file = 'config.json' default_cfg_file = 'default.json' cfg_file_path = os.path.join(cfg_dir, cfg_file) default_cfg_file_path = os.path.join(cfg_dir, 'default.json') if not os.path.exists(cfg_file_path): shutil.copy(default_cfg_file_path, cfg_file_path) cfg = config.Config(script=__file__, cfg_dir=cfg_dir, cfg_file=cfg_file) cfg.read() def dburi(): uri = "{DB_TYPE}+{DB_DRIVER}://{DB_USER}:{DB_PASS}@{DB_HOST}:{DB_PORT}/{DB_NAME}" cfg.SQLALCHEMY_DATABASE_URI = uri.format(DB_TYPE=cfg.DB['TYPE'], DB_DRIVER=cfg.DB['DRIVER'], DB_USER=cfg.DB['USER'], DB_PASS=cfg.DB['PASS'], DB_HOST=cfg.DB['HOST'], DB_PORT=cfg.DB['PORT'], DB_NAME=cfg.DB['NAME']) dburi()
def test_custom_cfg_file(): cfg_file = 'config.json' remove_config_folder() c = config.Config(script=__file__, create=True, cfg_file=cfg_file) assert os.path.exists(os.path.join(c._dir, cfg_file)) remove_config_folder()
def test_custom_cfg_dir_invalid(): cfg_dir = '/config' with pytest.raises(PermissionError): c = config.Config(script=__file__, create=True, cfg_dir=cfg_dir)
def test_file_does_not_exist(): remove_config_folder() c = config.Config(script=__file__) with pytest.raises(FileNotFoundError): c.read() remove_config_folder()
def test_no_param(): remove_config_folder() c = config.Config(script='') with pytest.raises(FileNotFoundError): c.read() remove_config_folder()
from bs4 import BeautifulSoup import os import re import shutil import requests import argparse import time from gpm import logging, config, formatting c = config.Config(script=__file__) c.read() def sanitize_string(input_str): output_str = input_str.lower().replace(' ', '_').rstrip('.') output_str = re.sub(r'[!@#$%^&*()\[\]{};:/<>?\\|`~\-=+\'\"]', '', output_str) return output_str def do(site, download_dir=None): err = 0 log.info('site: {}'.format(site)) if download_dir is None: download_dir = os.path.dirname(os.path.abspath(__file__)) log.info('download_dir: {}'.format(download_dir)) total_downloaded = 0