/ src / evidently / legacy / __main__.py
__main__.py
 1  import argparse
 2  import logging
 3  import sys
 4  from dataclasses import dataclass
 5  from typing import Any
 6  from typing import Dict
 7  
 8  from evidently.legacy.runner.loader import SamplingOptions
 9  
10  
11  @dataclass
12  class DataFormatOptions:
13      header: bool
14      separator: str
15      date_column: str
16  
17  
18  @dataclass
19  class Sampling:
20      reference: SamplingOptions
21      current: SamplingOptions
22  
23  
24  @dataclass
25  class CalculateOptions:
26      data_format: DataFormatOptions
27      column_mapping: Dict[str, Any]
28      sampling: Sampling
29  
30  
31  @dataclass
32  class DashboardOptions(CalculateOptions):
33      dashboard_tabs: Dict[str, Dict[str, object]]
34  
35  
36  @dataclass
37  class ProfileOptions(CalculateOptions):
38      profile_parts: Dict[str, Dict[str, str]]
39      pretty_print: bool = False
40  
41  
42  def __get_not_none(src: Dict, key, default):
43      return default if src.get(key, None) is None else src.get(key)
44  
45  
46  def help_handler(**_kv):
47      parser.print_help()
48      sys.exit(1)
49  
50  
51  def _add_default_parameters(configurable_parser, default_output_name: str):
52      configurable_parser.add_argument("--reference", dest="reference", required=True, help="Path to reference data")
53      configurable_parser.add_argument("--current", dest="current", help="Path to current data")
54      configurable_parser.add_argument("--output_path", dest="output_path", required=True, help="Path to store report")
55      configurable_parser.add_argument(
56          "--report_name", dest="report_name", default=default_output_name, help="Report name"
57      )
58      configurable_parser.add_argument("--config", dest="config", required=True, help="Path to configuration")
59  
60  
61  logging.basicConfig(level=logging.INFO)
62  
63  parser = argparse.ArgumentParser()
64  
65  parsers = parser.add_subparsers()
66  parser.set_defaults(handler=help_handler)
67  calculate_parser = parsers.add_parser("calculate")
68  calc_subparsers = calculate_parser.add_subparsers()
69  
70  parsed = parser.parse_args(sys.argv[1:])
71  
72  parsed.handler(**parsed.__dict__)