def handle_universal_options(ns: Namespace) -> Tuple[Config, logging.Logger]: """Handle "universal" options (options that apply across all commands), such as debug mode or specifying the config file to use. """ config = Config(ns.config) if ns.debug: log_level = logging.DEBUG else: log_level = logging.WARNING logger = get_logger(file_level=log_level, console_level=log_level, config=config) logger.info(f'Loaded configuration from {ns.config}.') return config, logger
from typing import List, Optional, Tuple, Dict, Any import plotly.graph_objects as go import dash_core_components as dcc import dash_html_components as html from dash.dependencies import Output, Input, State from dash.development.base_component import Component from dash.exceptions import PreventUpdate from shyft.activity import Activity from shyft.logger import get_logger from shyft.app.controllers._base import _BaseDashController from shyft.app.view.dash_components.activity_view import ActivityViewComponentFactory logger = get_logger(__name__) class ActivityController(_BaseDashController): DC_FACTORY = ActivityViewComponentFactory def page_content(self, activity: Optional[Activity] = None) -> List[Component]: if activity is None: raise ValueError( 'No activity specified, or no such activity exists.') return [ *self.dc_factory.display_all_messages(), dcc.Store('activity_id', data=activity.metadata.activity_id), html.
import logging from datetime import datetime, date from shyft.df_utils.schemas import metadata_time_series_schema from shyft.logger import get_logger from test.test_utils.test_common import * logger = get_logger(file_level=logging.DEBUG, console_level=logging.WARN, log_file=os.path.join(TEST_LOGS_DIR, 'multi_activity.log')) class ActivityManagerTestCase(BaseTestCase): @classmethod def setUpClass(cls): cls.TEST_RUN_DATA_DIR_1 = run_data_dir('1', replace=True) cls.TEST_RUN_DATA_DIR_2 = run_data_dir('2', replace=True) cls.TEST_RUN_DATA_DIR_3 = run_data_dir('3', replace=True) cls.TEST_CONFIG_1 = get_config(cls.TEST_RUN_DATA_DIR_1) cls.TEST_CONFIG_2 = get_config(cls.TEST_RUN_DATA_DIR_2) cls.TEST_CONFIG_3 = get_config(cls.TEST_RUN_DATA_DIR_3) cls.gpx = [] cls.activities = [] for i, fpath in enumerate(TEST_GPX_FILES): with open(fpath) as f: cls.gpx.append(gpxpy.parse(f)) cls.activities.append( Activity.from_file(fpath, cls.TEST_CONFIG_1, activity_id=i))
from typing import Optional, Union, List, Dict import numpy as np import pandas as pd import gpxpy from shyft.config import Config from shyft.df_utils import get_lap_distances, get_lap_durations, get_lap_means from shyft.geo_utils import haversine_distance from shyft.logger import get_logger from shyft.serialize._activity_types import SHYFT_TYPES MILE = 1609.344 # metres in a mile # Create a common logger for all parsers. logger = get_logger('parse') class ShyftParserError(Exception): pass class BaseParser: ACTIVITY_TYPES = SHYFT_TYPES EXCEPTION = ShyftParserError # The DataFrame that is passed to infer_points_data must contain all of these columns INITIAL_COL_NAMES_POINTS = ( 'point_no', 'latitude', 'longitude',
import logging import lxml.etree from shyft.logger import get_logger from shyft.serialize.parse import parser_factory, FITParser, TCXParser from shyft.serialize.parse.gpx import BaseGPXParser from test.test_utils.test_common import * RUN_DIR_BASE = '../../shyft/serialize' logger = get_logger(file_level=logging.DEBUG, console_level=logging.WARN, log_file=os.path.join(TEST_LOGS_DIR, 'serialize.log')) # Generate run data directories and config files, etc, for different ActivityManagers # - one ActivityManager loads Activities from the Strava GPX files, # - one loads Activities from the Garmin .FIT files, and # - one loads Activities from the Pyft GPX files. RUN_DIR_STRAVAGPX = run_data_dir( RUN_DIR_BASE + '_StravaGPX', replace=True) # For StravaGPX-generated activities CONFIG_STRAVAGPX = get_config(RUN_DIR_STRAVAGPX) RUN_DIR_FIT = run_data_dir(RUN_DIR_BASE + '_FIT', replace=True) # For .FIT-generated activities CONFIG_FIT = get_config(RUN_DIR_FIT) RUN_DIR_GARMINTCX = run_data_dir( RUN_DIR_BASE + '_GarminTCX', replace=True) # For Garmin TCX-generated activities