SYMBOL INDEX (969 symbols across 33 files) FILE: docs/build_markdown.py function get_classes (line 22) | def get_classes(module): function get_funcs (line 34) | def get_funcs(module): function get_object_attributes (line 44) | def get_object_attributes(obj): function get_zillion_members (line 50) | def get_zillion_members(obj): function process_markdown (line 61) | def process_markdown(infile, outfile, **opts): function linkcode_resolve (line 71) | def linkcode_resolve(obj): function create_module_file (line 96) | def create_module_file(fullname): FILE: tests/conftest.py function pytest_addoption (line 11) | def pytest_addoption(parser): function pytest_configure (line 28) | def pytest_configure(config): function mysql_setup (line 39) | def mysql_setup(): function postgresql_setup (line 53) | def postgresql_setup(): function duckdb_setup (line 71) | def duckdb_setup(): function config (line 85) | def config(): function ds_config (line 90) | def ds_config(): function adhoc_config (line 96) | def adhoc_config(): function wh (line 101) | def wh(config): function saved_wh (line 106) | def saved_wh(): function adhoc_ds (line 119) | def adhoc_ds(config): function mysql_ds_config (line 124) | def mysql_ds_config(mysql_setup): function mysql_ds (line 129) | def mysql_ds(mysql_ds_config): function mysql_wh (line 134) | def mysql_wh(mysql_ds): function postgresql_ds_config (line 139) | def postgresql_ds_config(postgresql_setup): function postgresql_ds (line 144) | def postgresql_ds(postgresql_ds_config): function postgresql_wh (line 149) | def postgresql_wh(postgresql_ds): function duckdb_wh (line 154) | def duckdb_wh(): function pymysql_conn (line 169) | def pymysql_conn(): function sqlalchemy_mysql_conn (line 179) | def sqlalchemy_mysql_conn(): FILE: tests/setup/common.sqlite.sql type partners (line 2) | CREATE TABLE IF NOT EXISTS partners ( type partner_sibling (line 10) | CREATE TABLE IF NOT EXISTS partner_sibling ( type campaigns (line 16) | CREATE TABLE IF NOT EXISTS campaigns ( FILE: tests/setup/testdb1.sqlite.sql type leads (line 2) | CREATE TABLE IF NOT EXISTS leads ( type sales (line 10) | CREATE TABLE IF NOT EXISTS sales ( FILE: tests/setup/zillion_db.sqlite.sql type warehouses (line 2) | CREATE TABLE IF NOT EXISTS warehouses ( type report_specs (line 12) | CREATE TABLE IF NOT EXISTS report_specs ( FILE: tests/setup/zillion_test.mysql.sql type `campaign_cost` (line 33) | CREATE TABLE `campaign_cost` ( type `campaigns` (line 58) | CREATE TABLE `campaigns` ( type `partners` (line 86) | CREATE TABLE `partners` ( type `campaign_transactions` (line 120) | CREATE TABLE `campaign_transactions` ( type `campaigns` (line 146) | CREATE TABLE `campaigns` ( FILE: tests/setup/zillion_test.postgres.sql type zillion_test (line 36) | CREATE TABLE zillion_test.campaign_cost ( type zillion_test (line 49) | CREATE TABLE zillion_test.campaign_transactions ( type zillion_test (line 82) | CREATE TABLE zillion_test.campaigns ( type zillion_test (line 118) | CREATE TABLE zillion_test.partners ( type idx_16390_idx_name (line 99273) | CREATE UNIQUE INDEX idx_16390_idx_name ON zillion_test.campaigns USING b... type idx_16400_idx_campaign_id (line 99280) | CREATE INDEX idx_16400_idx_campaign_id ON zillion_test.campaign_transact... type idx_16406_idx_name (line 99287) | CREATE UNIQUE INDEX idx_16406_idx_name ON zillion_test.partners USING bt... FILE: tests/test_core.py function test_zillion_config (line 18) | def test_zillion_config(): function test_wh_config_init (line 40) | def test_wh_config_init(config): function test_wh_config_include (line 44) | def test_wh_config_include(config): function test_datasource_config_init (line 52) | def test_datasource_config_init(ds_config): function test_load_remote_wh_config (line 59) | def test_load_remote_wh_config(): function test_wh_from_url_wh_config (line 63) | def test_wh_from_url_wh_config(): function test_wh_from_yaml_url_wh_config (line 68) | def test_wh_from_yaml_url_wh_config(): function test_load_wh_config_from_env (line 78) | def test_load_wh_config_from_env(): function test_wh_save_and_load (line 84) | def test_wh_save_and_load(): function test_datasource_metadata_init (line 94) | def test_datasource_metadata_init(ds_config): function test_datasource_metadata_and_config_init (line 102) | def test_datasource_metadata_and_config_init(ds_config): function test_datasource_from_config (line 112) | def test_datasource_from_config(ds_config): function test_datasource_skip_conversion_fields (line 119) | def test_datasource_skip_conversion_fields(ds_config): function test_datasource_config_data_url (line 125) | def test_datasource_config_data_url(ds_config): function test_datasource_config_data_url_replace_after (line 138) | def test_datasource_config_data_url_replace_after(ds_config): function test_parse_replace_after (line 158) | def test_parse_replace_after(): function test_datasource_from_db_file (line 173) | def test_datasource_from_db_file(ds_config): function test_datasource_config_table_data_url (line 190) | def test_datasource_config_table_data_url(adhoc_config): function test_datasource_metadata_and_table_data_url (line 198) | def test_datasource_metadata_and_table_data_url(ds_config, adhoc_config): function test_datasource_apply_config_table_data_url (line 218) | def test_datasource_apply_config_table_data_url(ds_config, adhoc_config): function test_warehouse_init (line 240) | def test_warehouse_init(config): function test_warehouse_no_config (line 246) | def test_warehouse_no_config(ds_config): function test_warehouse_has_zillion_info_no_config (line 253) | def test_warehouse_has_zillion_info_no_config(ds_config): function test_field_display_name (line 261) | def test_field_display_name(config): function test_field_description (line 273) | def test_field_description(config): function test_field_meta (line 286) | def test_field_meta(config): function test_reserved_field_name (line 292) | def test_reserved_field_name(config): function test_field_name_starts_with_number (line 301) | def test_field_name_starts_with_number(config): function test_dimension_to_config (line 309) | def test_dimension_to_config(config): function test_metric_to_config (line 315) | def test_metric_to_config(config): function test_formula_metric_to_config (line 323) | def test_formula_metric_to_config(config): function test_get_metric_configs (line 331) | def test_get_metric_configs(config): function test_get_dimension_configs (line 337) | def test_get_dimension_configs(config): function test_dimension_copy (line 343) | def test_dimension_copy(config): function test_metric_copy (line 349) | def test_metric_copy(config): function test_formula_metric_copy (line 355) | def test_formula_metric_copy(config): function test_warehouse_technical_within_formula (line 361) | def test_warehouse_technical_within_formula(config): function test_warehouse_metric_divisor (line 374) | def test_warehouse_metric_divisor(config): function test_warehouse_metric_multiple_aggregations (line 381) | def test_warehouse_metric_multiple_aggregations(config): function test_warehouse_remote_datasource_config (line 388) | def test_warehouse_remote_datasource_config(config): function test_warehouse_remote_csv_table (line 396) | def test_warehouse_remote_csv_table(adhoc_config): function test_warehouse_remote_google_sheet (line 405) | def test_warehouse_remote_google_sheet(adhoc_config): function test_warehouse_remote_xlsx_table (line 414) | def test_warehouse_remote_xlsx_table(adhoc_config): function test_warehouse_remote_json_table (line 425) | def test_warehouse_remote_json_table(adhoc_config): function test_warehouse_remote_html_table (line 436) | def test_warehouse_remote_html_table(adhoc_config): function test_reuse_existing_remote_table (line 448) | def test_reuse_existing_remote_table(adhoc_config): function test_bad_table_data_url (line 465) | def test_bad_table_data_url(ds_config): function test_warehouse_from_data_file (line 471) | def test_warehouse_from_data_file(): function test_warehouse_from_db_file (line 480) | def test_warehouse_from_db_file(): function test_column_config_override (line 486) | def test_column_config_override(config): function test_table_config_override (line 493) | def test_table_config_override(config): function test_no_create_fields_no_columns (line 500) | def test_no_create_fields_no_columns(config): function test_no_create_fields_has_columns (line 508) | def test_no_create_fields_has_columns(config): function test_no_create_fields_field_exists_has_columns (line 518) | def test_no_create_fields_field_exists_has_columns(config): function test_create_fields_no_columns (line 528) | def test_create_fields_no_columns(config): function test_create_fields_has_columns (line 539) | def test_create_fields_has_columns(config): function test_get_dimension_table_set (line 552) | def test_get_dimension_table_set(wh): function test_get_metric_table_set (line 568) | def test_get_metric_table_set(wh): function test_get_supported_dimensions (line 585) | def test_get_supported_dimensions(wh): function test_contains_aggregation (line 592) | def test_contains_aggregation(): function test_contains_sql_keyword (line 617) | def test_contains_sql_keyword(): function test_adhoc_datatable_no_columns (line 644) | def test_adhoc_datatable_no_columns(): function test_adhoc_datatable_has_columns (line 668) | def test_adhoc_datatable_has_columns(): function test_csv_datatable (line 693) | def test_csv_datatable(): function test_excel_datatable (line 716) | def test_excel_datatable(): function test_json_datatable (line 740) | def test_json_datatable(): function test_html_datatable (line 758) | def test_html_datatable(): FILE: tests/test_duckdb.py function test_duckdb_datasource (line 9) | def test_duckdb_datasource(duckdb_wh): function test_duckdb_date_dimension_conversions (line 46) | def test_duckdb_date_dimension_conversions(duckdb_wh): function test_duckdb_where_criteria_conversions (line 59) | def test_duckdb_where_criteria_conversions(duckdb_wh): FILE: tests/test_example_wh_config.py function test_example_wh_init (line 9) | def test_example_wh_init(): function test_example_wh_report1 (line 14) | def test_example_wh_report1(): function test_example_wh_report2 (line 23) | def test_example_wh_report2(): function test_example_wh_report3 (line 34) | def test_example_wh_report3(): FILE: tests/test_mysql.py function test_mysql_datasource (line 8) | def test_mysql_datasource(mysql_wh): function test_mysql_table_data_url (line 16) | def test_mysql_table_data_url(mysql_ds_config, adhoc_config): function test_mysql_ignore_table_data_url (line 25) | def test_mysql_ignore_table_data_url(mysql_ds_config, adhoc_config): function test_mysql_report_repeat_criteria (line 35) | def test_mysql_report_repeat_criteria(wh): function test_mysql_sequential_timeout (line 44) | def test_mysql_sequential_timeout(mysql_wh): function test_mysql_multithreaded_timeout (line 57) | def test_mysql_multithreaded_timeout(mysql_wh): function test_mysql_date_dimension_conversions (line 70) | def test_mysql_date_dimension_conversions(mysql_wh): function test_mysql_where_criteria_conversions (line 82) | def test_mysql_where_criteria_conversions(mysql_wh): FILE: tests/test_nlp.py function n_days_ago (line 9) | def n_days_ago(n): function test_text_to_report_no_fields (line 48) | def test_text_to_report_no_fields(): function test_text_to_report_all_fields (line 68) | def test_text_to_report_all_fields(config): function test_text_to_report_dimension_fields (line 89) | def test_text_to_report_dimension_fields(config): function test_init_warehouse_embeddings (line 101) | def test_init_warehouse_embeddings(config): function test_openai_embeddings_cached (line 126) | def test_openai_embeddings_cached(): function test_map_warehouse_report_params (line 138) | def test_map_warehouse_report_params(config): function test_warehouse_execute_text (line 153) | def test_warehouse_execute_text(config): function test_nlp_datasource_from_db_file (line 161) | def test_nlp_datasource_from_db_file(ds_config): FILE: tests/test_performance.py function profiled (line 13) | def profiled(pattern=None): function get_adhoc_ds (line 28) | def get_adhoc_ds(size): function test_performance_adhoc_ds (line 68) | def test_performance_adhoc_ds(wh): function test_performance_multi_rollup (line 79) | def test_performance_multi_rollup(wh): FILE: tests/test_postgresql.py function test_postgresql_datasource (line 8) | def test_postgresql_datasource(postgresql_wh): function test_postgresql_sequential_timeout (line 16) | def test_postgresql_sequential_timeout(postgresql_wh): function test_postgresql_multithreaded_timeout (line 30) | def test_postgresql_multithreaded_timeout(postgresql_wh): function test_postgresql_date_dimension_conversions (line 43) | def test_postgresql_date_dimension_conversions(postgresql_wh): function test_postgresql_where_criteria_conversions (line 55) | def test_postgresql_where_criteria_conversions(postgresql_wh): FILE: tests/test_reports.py function test_basic_report (line 13) | def test_basic_report(wh): function test_report_none_criteria (line 24) | def test_report_none_criteria(wh): function test_report_invalid_criteria_value (line 33) | def test_report_invalid_criteria_value(wh): function test_report_criteria_values_from_callable (line 41) | def test_report_criteria_values_from_callable(wh): function test_report_sequential_timeout (line 85) | def test_report_sequential_timeout(wh): function test_report_multithreaded_timeout (line 101) | def test_report_multithreaded_timeout(wh): function test_report_one_worker (line 117) | def test_report_one_worker(wh): function test_report_reuse_after_timeout (line 130) | def test_report_reuse_after_timeout(wh): function test_report_kill (line 151) | def test_report_kill(wh): function test_report_reuse_after_kill (line 171) | def test_report_reuse_after_kill(wh): function test_report_timeout_then_kill (line 200) | def test_report_timeout_then_kill(wh): function test_impossible_report (line 228) | def test_impossible_report(wh): function test_report_count_aggr (line 236) | def test_report_count_aggr(wh): function test_report_criteria_between (line 244) | def test_report_criteria_between(wh): function test_report_criteria_in (line 257) | def test_report_criteria_in(wh): function test_report_criteria_like (line 274) | def test_report_criteria_like(wh): function test_report_repeat_criteria (line 283) | def test_report_repeat_criteria(wh): function test_report_between_date_criteria (line 292) | def test_report_between_date_criteria(wh): function test_row_filter_single_dimension (line 301) | def test_row_filter_single_dimension(wh): function test_row_filter_invalid_type (line 311) | def test_row_filter_invalid_type(wh): function test_row_filter_formula_metric (line 321) | def test_row_filter_formula_metric(wh): function test_report_pivot (line 331) | def test_report_pivot(wh): function test_report_order_by (line 345) | def test_report_order_by(wh): function test_report_order_by_only_dims (line 355) | def test_report_order_by_only_dims(wh): function test_report_order_by_custom_sort (line 364) | def test_report_order_by_custom_sort(wh): function test_report_custom_sort_no_order_by (line 376) | def test_report_custom_sort_no_order_by(wh): function test_report_limit (line 414) | def test_report_limit(wh): function test_report_limit_only_dims (line 423) | def test_report_limit_only_dims(wh): function test_report_order_by_and_limit (line 431) | def test_report_order_by_and_limit(wh): function test_report_limit_first (line 442) | def test_report_limit_first(wh): function test_report_df_display (line 453) | def test_report_df_display(wh): function test_report_df_display_no_dims (line 463) | def test_report_df_display_no_dims(wh): function test_report_df_display_no_metrics (line 471) | def test_report_df_display_no_metrics(wh): function test_report_technical_ma (line 479) | def test_report_technical_ma(wh): function test_report_adhoc_technicals (line 492) | def test_report_adhoc_technicals(wh): function test_report_no_dimension_technical (line 533) | def test_report_no_dimension_technical(wh): function test_report_technical_formula_ma (line 564) | def test_report_technical_formula_ma(wh): function test_report_technical_rolling_sum (line 577) | def test_report_technical_rolling_sum(wh): function test_report_technical_cumsum (line 589) | def test_report_technical_cumsum(wh): function test_report_technical_diff (line 601) | def test_report_technical_diff(wh): function test_report_technical_pct_diff (line 613) | def test_report_technical_pct_diff(wh): function test_report_technical_bollinger (line 625) | def test_report_technical_bollinger(wh): function test_report_no_dimensions (line 681) | def test_report_no_dimensions(wh): function test_report_no_metrics (line 689) | def test_report_no_metrics(wh): function test_report_null_criteria (line 697) | def test_report_null_criteria(wh): function test_report_incomplete_dimensions (line 724) | def test_report_incomplete_dimensions(config): function test_report_inactive_table (line 742) | def test_report_inactive_table(config): function test_report_count_metric (line 756) | def test_report_count_metric(wh): function test_report_alias_metric (line 764) | def test_report_alias_metric(wh): function test_report_alias_dimension (line 772) | def test_report_alias_dimension(wh): function test_report_sibling_dimension (line 780) | def test_report_sibling_dimension(wh): function test_report_multiple_queries (line 788) | def test_report_multiple_queries(wh): function test_report_formula_metric (line 796) | def test_report_formula_metric(wh): function test_report_formula_metric_divisor (line 804) | def test_report_formula_metric_divisor(wh): function test_report_nested_formula_metric (line 812) | def test_report_nested_formula_metric(wh): function test_report_ds_dimension_formula (line 820) | def test_report_ds_dimension_formula(wh): function test_report_ds_metric_formula (line 828) | def test_report_ds_metric_formula(wh): function test_report_where_ds_formula (line 836) | def test_report_where_ds_formula(wh): function test_report_metric_formula_with_dim (line 845) | def test_report_metric_formula_with_dim(config): function test_report_only_dimensions_ds_formula (line 861) | def test_report_only_dimensions_ds_formula(wh): function test_report_non_existent_metric (line 869) | def test_report_non_existent_metric(wh): function test_report_metric_required_grain (line 876) | def test_report_metric_required_grain(wh): function test_report_metric_formula_required_grain (line 887) | def test_report_metric_formula_required_grain(wh): function test_report_metric_formula_field_required_grain (line 894) | def test_report_metric_formula_field_required_grain(wh): function test_report_partial_grain (line 901) | def test_report_partial_grain(wh): function test_report_metric_ifnull (line 925) | def test_report_metric_ifnull(wh): function test_report_weighted_formula_metric (line 931) | def test_report_weighted_formula_metric(wh): function test_report_weighted_ds_metric_formula (line 941) | def test_report_weighted_ds_metric_formula(wh): function test_report_weighted_metric (line 949) | def test_report_weighted_metric(wh): function test_report_multiple_weighted_metrics (line 958) | def test_report_multiple_weighted_metrics(wh): function test_report_repeat_weighted_metrics (line 967) | def test_report_repeat_weighted_metrics(wh): function test_report_weighted_rollup (line 976) | def test_report_weighted_rollup(wh): function test_report_weighted_multi_rollup (line 986) | def test_report_weighted_multi_rollup(wh): function test_report_multi_dimension (line 997) | def test_report_multi_dimension(wh): function test_report_rollup (line 1005) | def test_report_rollup(wh): function test_report_multi_rollup (line 1017) | def test_report_multi_rollup(wh): function test_report_all_rollup (line 1029) | def test_report_all_rollup(wh): function test_report_rollup_order_null (line 1041) | def test_report_rollup_order_null(wh): function test_report_multi_rollup_pivot (line 1076) | def test_report_multi_rollup_pivot(wh): function test_report_adhoc_metric (line 1087) | def test_report_adhoc_metric(wh): function test_report_adhoc_metric_display_name (line 1095) | def test_report_adhoc_metric_display_name(wh): function test_report_adhoc_nested_metric (line 1111) | def test_report_adhoc_nested_metric(wh): function test_report_adhoc_aggregation (line 1123) | def test_report_adhoc_aggregation(wh): function test_report_adhoc_weighting (line 1136) | def test_report_adhoc_weighting(wh): function test_report_adhoc_dimension (line 1154) | def test_report_adhoc_dimension(wh): function test_report_formula_dimension (line 1227) | def test_report_formula_dimension(wh): function test_report_where_criteria_conversions (line 1235) | def test_report_where_criteria_conversions(config): function test_report_sqlite_date_conversions (line 1252) | def test_report_sqlite_date_conversions(config): function test_report_datasource_priority (line 1269) | def test_report_datasource_priority(wh): function test_report_table_priority (line 1276) | def test_report_table_priority(config): function test_report_disabled_tables (line 1291) | def test_report_disabled_tables(wh): function test_report_multi_datasource (line 1322) | def test_report_multi_datasource(wh): function test_report_save_and_load (line 1332) | def test_report_save_and_load(saved_wh): function test_report_save_with_meta (line 1351) | def test_report_save_with_meta(saved_wh): function test_report_adhoc_metric_save_and_load (line 1363) | def test_report_adhoc_metric_save_and_load(saved_wh): function test_report_load_invalid_id (line 1376) | def test_report_load_invalid_id(saved_wh): function test_report_sub_report_by_id (line 1381) | def test_report_sub_report_by_id(saved_wh): function test_report_sub_report_with_params (line 1438) | def test_report_sub_report_with_params(saved_wh): function test_report_adhoc_datasource (line 1492) | def test_report_adhoc_datasource(wh, adhoc_ds): function test_report_save_and_load_adhoc_datasource (line 1500) | def test_report_save_and_load_adhoc_datasource(saved_wh, adhoc_ds): function test_report_missing_adhoc_datasource_save_and_load (line 1515) | def test_report_missing_adhoc_datasource_save_and_load(saved_wh, adhoc_ds): function test_report_invalid_adhoc_datasource (line 1529) | def test_report_invalid_adhoc_datasource(wh, adhoc_ds): function test_regular_datasource_adhoc (line 1540) | def test_regular_datasource_adhoc(config): function test_only_adhoc_datasource (line 1551) | def test_only_adhoc_datasource(adhoc_ds): function test_no_use_full_column_names (line 1560) | def test_no_use_full_column_names(config): function test_report_column_required_grain (line 1570) | def test_report_column_required_grain(config): function test_ds_metric_formula_sql_injection (line 1579) | def test_ds_metric_formula_sql_injection(config): function test_ds_dim_formula_sql_injection (line 1596) | def test_ds_dim_formula_sql_injection(config): function test_metric_formula_sql_injection (line 1613) | def test_metric_formula_sql_injection(config): function test_weighting_metric_sql_injection (line 1630) | def test_weighting_metric_sql_injection(config): function test_adhoc_metric_sql_injection (line 1648) | def test_adhoc_metric_sql_injection(wh): function test_criteria_sql_injection (line 1658) | def test_criteria_sql_injection(wh): function test_row_filter_sql_injection (line 1686) | def test_row_filter_sql_injection(wh): function test_pivot_sql_injection (line 1694) | def test_pivot_sql_injection(wh): function test_metric_name_sql_injection (line 1702) | def test_metric_name_sql_injection(config): function test_dimension_name_sql_injection (line 1717) | def test_dimension_name_sql_injection(config): function test_type_conversion_prefix_sql_injection (line 1725) | def test_type_conversion_prefix_sql_injection(config): function test_table_name_sql_injection (line 1738) | def test_table_name_sql_injection(config): FILE: tests/test_scripts.py function test_bootstrap_datasource_config (line 7) | def test_bootstrap_datasource_config(): function test_nlp_bootstrap_datasource_config (line 18) | def test_nlp_bootstrap_datasource_config(): FILE: tests/test_utils.py function update_zillion_config (line 59) | def update_zillion_config(updates): function mysql_data_init (line 69) | def mysql_data_init(): function postgresql_data_init (line 79) | def postgresql_data_init(): function duckdb_data_init (line 91) | def duckdb_data_init(conn): function get_pymysql_conn (line 99) | def get_pymysql_conn(): function get_sqlalchemy_mysql_engine (line 116) | def get_sqlalchemy_mysql_engine(): function get_sqlalchemy_mysql_conn (line 133) | def get_sqlalchemy_mysql_conn(): function get_sqlalchemy_postgresql_engine (line 138) | def get_sqlalchemy_postgresql_engine(): function get_sqlalchemy_postgresql_conn (line 148) | def get_sqlalchemy_postgresql_conn(): function get_sqlalchemy_duckdb_engine (line 153) | def get_sqlalchemy_duckdb_engine(): function get_sqlalchemy_duckdb_conn (line 164) | def get_sqlalchemy_duckdb_conn(): function get_sql (line 170) | def get_sql(sql): function create_test_metadata (line 180) | def create_test_metadata(ds_config): function drop_metadata_table_if_exists (line 198) | def drop_metadata_table_if_exists(metadata, table_name): function create_adhoc_data (line 206) | def create_adhoc_data(column_types, size): function create_adhoc_datatable (line 228) | def create_adhoc_datatable(name, table_config, primary_key, column_types... function get_adhoc_table_config (line 247) | def get_adhoc_table_config(): function get_dma_zip_table_config (line 260) | def get_dma_zip_table_config(): function get_adhoc_datasource (line 273) | def get_adhoc_datasource(size=10, name="adhoc_table1", reuse=False): function get_testdb_url (line 306) | def get_testdb_url(dbname=DEFAULT_TEST_DB): function get_date_conversion_test_params (line 335) | def get_date_conversion_test_params(): function wh_execute_args (line 404) | def wh_execute_args(d): function wh_execute (line 424) | def wh_execute(wh, d): FILE: zillion/configs.py class PatchedField (line 22) | class PatchedField(original_mfields.Field): method __init__ (line 23) | def __init__(self, *args, **kwargs): function parse_schema_file (line 86) | def parse_schema_file(f, schema): function load_warehouse_config (line 111) | def load_warehouse_config(cfg): function load_warehouse_config_from_env (line 130) | def load_warehouse_config_from_env(var): function load_datasource_config (line 137) | def load_datasource_config(cfg): function load_datasource_config_from_env (line 156) | def load_datasource_config_from_env(var): function table_safe_name (line 163) | def table_safe_name(name): function field_safe_name (line 182) | def field_safe_name(name): function default_field_name (line 201) | def default_field_name(column): function default_field_display_name (line 217) | def default_field_display_name(name): function is_active (line 234) | def is_active(obj): function is_valid_table_type (line 243) | def is_valid_table_type(val): function is_valid_table_name (line 250) | def is_valid_table_name(val): function is_valid_if_exists (line 257) | def is_valid_if_exists(val): function is_valid_field_name (line 264) | def is_valid_field_name(val): function is_valid_field_display_name (line 278) | def is_valid_field_display_name(val): function is_valid_sqlalchemy_type (line 290) | def is_valid_sqlalchemy_type(val): function has_valid_sqlalchemy_type_values (line 300) | def has_valid_sqlalchemy_type_values(val): function is_valid_aggregation (line 310) | def is_valid_aggregation(val): function is_valid_column_field_config (line 322) | def is_valid_column_field_config(val): function is_valid_technical_type (line 333) | def is_valid_technical_type(val): function is_valid_technical_mode (line 340) | def is_valid_technical_mode(val): function is_valid_technical (line 347) | def is_valid_technical(val): function is_valid_dimension_values (line 356) | def is_valid_dimension_values(val): function is_valid_datasource_criteria_conversions (line 365) | def is_valid_datasource_criteria_conversions(val): function is_valid_connect_type (line 408) | def is_valid_connect_type(val): function is_valid_datasource_connect (line 419) | def is_valid_datasource_connect(val): function is_valid_datasource_config (line 430) | def is_valid_datasource_config(val): function is_valid_field_nlp_embedding_text_config (line 439) | def is_valid_field_nlp_embedding_text_config(val): function is_valid_divisors_config (line 448) | def is_valid_divisors_config(val): function get_divisor_metrics (line 457) | def get_divisor_metrics(metric): function get_aggregation_metrics (line 503) | def get_aggregation_metrics(metric): class PolyNested (line 520) | class PolyNested(mfields.Nested): method _deserialize (line 523) | def _deserialize(self, value, attr, data, partial=None, **kwargs): class BaseSchema (line 541) | class BaseSchema(Schema): class Meta (line 553) | class Meta: class TechnicalInfoSchema (line 559) | class TechnicalInfoSchema(BaseSchema): class TechnicalField (line 567) | class TechnicalField(mfields.Field): method _validate (line 570) | def _validate(self, value): class DataSourceCriteriaConversionsField (line 575) | class DataSourceCriteriaConversionsField(mfields.Field): method _validate (line 581) | def _validate(self, value): class DimensionValuesField (line 586) | class DimensionValuesField(mfields.Field): method _validate (line 589) | def _validate(self, value): class ColumnFieldConfigSchema (line 594) | class ColumnFieldConfigSchema(BaseSchema): class ColumnFieldConfigField (line 610) | class ColumnFieldConfigField(mfields.Field): method _validate (line 613) | def _validate(self, value): class ColumnInfoSchema (line 618) | class ColumnInfoSchema(BaseSchema): class ColumnConfigSchema (line 648) | class ColumnConfigSchema(ColumnInfoSchema): class TableTypeField (line 654) | class TableTypeField(mfields.Field): method _validate (line 657) | def _validate(self, value): class TableInfoSchema (line 662) | class TableInfoSchema(BaseSchema): class TableConfigSchema (line 715) | class TableConfigSchema(TableInfoSchema): class NLPEmbeddingTextField (line 757) | class NLPEmbeddingTextField(mfields.Field): method _validate (line 760) | def _validate(self, value): class FieldMetaNLPConfigSchema (line 765) | class FieldMetaNLPConfigSchema(BaseSchema): function check_field_meta_nlp_config (line 782) | def check_field_meta_nlp_config(data): class FieldConfigSchema (line 796) | class FieldConfigSchema(BaseSchema): method _check_meta (line 817) | def _check_meta(self, data, **kwargs): class FormulaFieldConfigSchema (line 822) | class FormulaFieldConfigSchema(BaseSchema): method _check_meta (line 845) | def _check_meta(self, data, **kwargs): class MetricConfigSchemaMixin (line 850) | class MetricConfigSchemaMixin: method _validate_weighting_aggregation (line 881) | def _validate_weighting_aggregation(self, data): class DivisorsConfigSchema (line 892) | class DivisorsConfigSchema(BaseSchema): class DivisorsConfigField (line 914) | class DivisorsConfigField(mfields.Field): method _validate (line 917) | def _validate(self, value): class MetricConfigSchema (line 922) | class MetricConfigSchema(FieldConfigSchema, MetricConfigSchemaMixin): class FormulaMetricConfigSchema (line 939) | class FormulaMetricConfigSchema(FormulaFieldConfigSchema, MetricConfigSc... class DimensionConfigSchemaMixin (line 945) | class DimensionConfigSchemaMixin: class DimensionConfigSchema (line 968) | class DimensionConfigSchema(FieldConfigSchema, DimensionConfigSchemaMixin): class FormulaDimensionConfigSchema (line 974) | class FormulaDimensionConfigSchema( class AdHocFieldSchema (line 982) | class AdHocFieldSchema(FormulaFieldConfigSchema): class AdHocMetricSchema (line 988) | class AdHocMetricSchema(AdHocFieldSchema): class TableNameField (line 1018) | class TableNameField(mfields.Str): method _validate (line 1021) | def _validate(self, value): class DataSourceConnectSchema (line 1026) | class DataSourceConnectSchema(BaseSchema): class DataSourceConnectField (line 1036) | class DataSourceConnectField(mfields.Field): method _validate (line 1039) | def _validate(self, value): function check_metric_configs (line 1044) | def check_metric_configs(data): class DataSourceConfigSchema (line 1069) | class DataSourceConfigSchema(BaseSchema): method _check_table_refs (line 1103) | def _check_table_refs(self, data, **kwargs): method _check_metrics (line 1118) | def _check_metrics(self, data, **kwargs): class DataSourceConfigField (line 1124) | class DataSourceConfigField(mfields.Field): method _validate (line 1128) | def _validate(self, value): class WarehouseMetaNLPConfigSchema (line 1133) | class WarehouseMetaNLPConfigSchema(BaseSchema): class WarehouseConfigSchema (line 1154) | class WarehouseConfigSchema(BaseSchema): method _check_meta (line 1180) | def _check_meta(self, data, **kwargs): method _check_includes (line 1194) | def _check_includes(self, data, **kwargs): method _check_ds_refs (line 1207) | def _check_ds_refs(self, data, **kwargs): method _check_metrics (line 1222) | def _check_metrics(self, data, **kwargs): class ConfigMixin (line 1228) | class ConfigMixin: method __init__ (line 1233) | def __init__(self, *args, **kwargs): method to_config (line 1238) | def to_config(self): method from_config (line 1243) | def from_config(cls, config): class ZillionInfo (line 1248) | class ZillionInfo(MappingMixin): method __init__ (line 1270) | def __init__(self, **kwargs): method schema_validate (line 1275) | def schema_validate(cls, zillion_info, unknown=RAISE): method schema_load (line 1288) | def schema_load(cls, zillion_info, unknown=RAISE): method create (line 1305) | def create(cls, zillion_info, unknown=RAISE): class TableInfo (line 1316) | class TableInfo(ZillionInfo, PrintMixin): class ColumnInfo (line 1324) | class ColumnInfo(ZillionInfo, PrintMixin): method __init__ (line 1331) | def __init__(self, **kwargs): method has_field (line 1337) | def has_field(self, field): method add_field (line 1345) | def add_field(self, field): method get_field (line 1350) | def get_field(self, name): method get_fields (line 1367) | def get_fields(self): method get_field_names (line 1371) | def get_field_names(self): method field_ds_formula (line 1375) | def field_ds_formula(self, name): method has_field_ds_formula (line 1382) | def has_field_ds_formula(self, name): method get_criteria_conversion (line 1390) | def get_criteria_conversion(self, field_name, operation): method _add_field_to_map (line 1400) | def _add_field_to_map(self, field): class Technical (line 1416) | class Technical(MappingMixin, PrintMixin): method __init__ (line 1437) | def __init__(self, type, params, mode=None): method _check_params (line 1446) | def _check_params(cls, params): method parse_technical_string_params (line 1455) | def parse_technical_string_params(cls, val): method get_default_mode (line 1465) | def get_default_mode(cls): method _apply (line 1469) | def _apply(self, df_slice, column, rounding=None): method apply (line 1474) | def apply(self, df, column, rounding=None): class PandasTechnical (line 1530) | class PandasTechnical(Technical): method _apply (line 1533) | def _apply(self, df_or_series_slice, column, rounding=None): class RankTechnical (line 1545) | class RankTechnical(PandasTechnical): method _apply (line 1548) | def _apply(self, df_or_series_slice, column, rounding=None): class DiffTechnical (line 1561) | class DiffTechnical(PandasTechnical): method parse_technical_string_params (line 1567) | def parse_technical_string_params(cls, val): class RollingTechnical (line 1579) | class RollingTechnical(Technical): method _apply (line 1584) | def _apply(self, df_or_series_slice, column, rounding=None): method parse_technical_string_params (line 1596) | def parse_technical_string_params(cls, val): class BollingerTechnical (line 1609) | class BollingerTechnical(RollingTechnical): method _apply (line 1613) | def _apply(self, df_slice, column, rounding=None): function _extract_technical_string_parts (line 1665) | def _extract_technical_string_parts(val): function parse_technical_string (line 1690) | def parse_technical_string(val): function create_technical (line 1721) | def create_technical(info): FILE: zillion/core.py class ZillionException (line 84) | class ZillionException(Exception): class InvalidTechnicalException (line 88) | class InvalidTechnicalException(ZillionException): class WarehouseException (line 92) | class WarehouseException(ZillionException): class InvalidWarehouseIdException (line 96) | class InvalidWarehouseIdException(ZillionException): class ReportException (line 100) | class ReportException(ZillionException): class InvalidReportIdException (line 104) | class InvalidReportIdException(ZillionException): class UnsupportedGrainException (line 108) | class UnsupportedGrainException(ZillionException): class UnsupportedKillException (line 112) | class UnsupportedKillException(ZillionException): class FailedKillException (line 116) | class FailedKillException(ZillionException): class DataSourceQueryTimeoutException (line 120) | class DataSourceQueryTimeoutException(ZillionException): class ExecutionKilledException (line 124) | class ExecutionKilledException(ZillionException): class ExecutionLockException (line 128) | class ExecutionLockException(ZillionException): class InvalidFieldException (line 132) | class InvalidFieldException(ZillionException): class InvalidDimensionValueException (line 136) | class InvalidDimensionValueException(ZillionException): class DisallowedSQLException (line 140) | class DisallowedSQLException(ZillionException): class MaxFormulaDepthException (line 144) | class MaxFormulaDepthException(ZillionException): class FieldTypes (line 148) | class FieldTypes(metaclass=ClassValueContainsMeta): class TableTypes (line 155) | class TableTypes(metaclass=ClassValueContainsMeta): class AggregationTypes (line 162) | class AggregationTypes(metaclass=ClassValueContainsMeta): class TechnicalTypes (line 174) | class TechnicalTypes(metaclass=ClassValueContainsMeta): class TechnicalModes (line 194) | class TechnicalModes(metaclass=ClassValueContainsMeta): class RollupTypes (line 209) | class RollupTypes(metaclass=ClassValueContainsMeta): class OrderByTypes (line 216) | class OrderByTypes(metaclass=ClassValueContainsMeta): class DataSourceQueryModes (line 223) | class DataSourceQueryModes(metaclass=ClassValueContainsMeta): class ExecutionState (line 230) | class ExecutionState: class IfExistsModes (line 238) | class IfExistsModes(metaclass=ClassValueContainsMeta): class IfFileExistsModes (line 251) | class IfFileExistsModes(IfExistsModes): function powerset (line 264) | def powerset(iterable, max_combo_len=None): function raiseif (line 272) | def raiseif(cond, msg="", exc=ZillionException): function raiseifnot (line 278) | def raiseifnot(cond, msg="", exc=ZillionException): function igetattr (line 284) | def igetattr(obj, attr, *args): function read_filepath_or_buffer (line 294) | def read_filepath_or_buffer(f, open_flags="r", compression=None): function download_file (line 310) | def download_file(url, outfile=None): function get_modified_time (line 323) | def get_modified_time(fname): function get_time_since_modified (line 328) | def get_time_since_modified(fname): function load_yaml (line 333) | def load_yaml(fname): function load_json_or_yaml_from_str (line 340) | def load_json_or_yaml_from_str(string, f=None, schema=None): function dictmerge (line 380) | def dictmerge(x, y, path=None, overwrite=False, extend=False): function load_zillion_config (line 410) | def load_zillion_config(): function get_zillion_config_log_level (line 477) | def get_zillion_config_log_level(): function set_log_level_from_config (line 484) | def set_log_level_from_config(cfg): function set_log_level (line 501) | def set_log_level(level): function dbg (line 507) | def dbg(msg, **kwargs): function dbgsql (line 514) | def dbgsql(msg, **kwargs): function info (line 521) | def info(msg, **kwargs): function warn (line 528) | def warn(msg, **kwargs): function error (line 535) | def error(msg, **kwargs): FILE: zillion/datasource.py function entity_name_from_file (line 57) | def entity_name_from_file(filename): function get_ds_config_context (line 61) | def get_ds_config_context(name): function populate_url_context (line 66) | def populate_url_context(url, ds_name): function get_engine_extra_kwargs (line 74) | def get_engine_extra_kwargs(url): function connect_url_to_metadata (line 89) | def connect_url_to_metadata(url, ds_name=None): function parse_replace_after (line 105) | def parse_replace_after(replace_after): function data_url_to_metadata (line 133) | def data_url_to_metadata( function metadata_from_connect (line 170) | def metadata_from_connect(connect, ds_name): function reflect_metadata (line 193) | def reflect_metadata(metadata, reflect_only=None): function get_adhoc_datasource_filename (line 220) | def get_adhoc_datasource_filename(ds_name): function get_adhoc_datasource_url (line 226) | def get_adhoc_datasource_url(ds_name): function url_connect (line 231) | def url_connect( class TableSet (line 281) | class TableSet(PrintMixin): method __init__ (line 300) | def __init__(self, datasource, ds_table, join, grain, target_fields): method get_covered_metrics (line 303) | def get_covered_metrics(self, wh): method get_covered_fields (line 322) | def get_covered_fields(self): method __len__ (line 326) | def __len__(self): class JoinPart (line 332) | class JoinPart(PrintMixin): method __init__ (line 338) | def __init__(self, datasource, table_names, join_fields): class Join (line 342) | class Join(PrintMixin): method __init__ (line 358) | def __init__(self, join_parts, field_map): method __key (line 365) | def __key(self): method __hash__ (line 368) | def __hash__(self): method __eq__ (line 371) | def __eq__(self, other): method __len__ (line 374) | def __len__(self): method add_join_part_tables (line 377) | def add_join_part_tables(self, join_part): method get_covered_fields (line 392) | def get_covered_fields(self): method add_field (line 401) | def add_field(self, field): method add_fields (line 415) | def add_fields(self, fields): method join_parts_for_table (line 421) | def join_parts_for_table(self, table_name): method join_fields_for_table (line 425) | def join_fields_for_table(self, table_name): method combine (line 434) | def combine(cls, join1, join2): function join_from_path (line 455) | def join_from_path(ds, path, field_map=None): class NeighborTable (line 485) | class NeighborTable(PrintMixin): method __init__ (line 491) | def __init__(self, table, join_fields): class DataSource (line 495) | class DataSource(FieldManagerMixin, PrintMixin): method __init__ (line 513) | def __init__(self, name, metadata=None, config=None, nlp=False): method metric_tables (line 551) | def metric_tables(self): method dimension_tables (line 560) | def dimension_tables(self): method has_table (line 568) | def has_table(self, table, check_active=True): method get_table (line 592) | def get_table(self, fullname, check_active=True): method get_tables_with_field (line 611) | def get_tables_with_field(self, field_name, table_type=None): method get_metric_tables_with_metric (line 634) | def get_metric_tables_with_metric(self, metric_name): method get_dim_tables_with_dim (line 638) | def get_dim_tables_with_dim(self, dim_name): method get_columns_with_field (line 642) | def get_columns_with_field(self, field_name): method apply_config (line 656) | def apply_config(self, config, reflect=False, nlp=False): method find_neighbor_tables (line 713) | def find_neighbor_tables(self, table): method find_descendent_tables (line 786) | def find_descendent_tables(self, table): method get_possible_joins (line 790) | def get_possible_joins(self, table, grain): method find_possible_table_sets (line 834) | def find_possible_table_sets( method get_dialect_name (line 879) | def get_dialect_name(self): method get_params (line 883) | def get_params(self): method print_info (line 889) | def print_info(self): method _load_adhoc_tables (line 916) | def _load_adhoc_tables(self, config): method _apply_table_configs (line 946) | def _apply_table_configs(self, table_configs): method _ensure_metadata_info (line 983) | def _ensure_metadata_info(self): method _add_conversion_fields (line 1040) | def _add_conversion_fields(self): method _add_metric_column (line 1116) | def _add_metric_column(self, column, field, aggregation=None, rounding... method _add_dimension_column (line 1133) | def _add_dimension_column(self, column, field): method _add_metric_table_fields (line 1143) | def _add_metric_table_fields(self, table, nlp=False): method _add_dimension_table_fields (line 1180) | def _add_dimension_table_fields(self, table): method _populate_fields (line 1203) | def _populate_fields(self, config, nlp=False): method _build_graph (line 1217) | def _build_graph(self): method _invert_field_joins (line 1237) | def _invert_field_joins(self, field_joins): method _populate_max_join_field_coverage (line 1247) | def _populate_max_join_field_coverage(self, join_fields, grain): method _eliminate_redundant_joins (line 1257) | def _eliminate_redundant_joins(self, sorted_join_fields, main_table): method _find_join_combinations (line 1315) | def _find_join_combinations(self, sorted_join_fields, grain): method _combine_orthogonal_joins (line 1395) | def _combine_orthogonal_joins(self, candidates): method _choose_best_join_combination (line 1426) | def _choose_best_join_combination(self, candidates): method _consolidate_field_joins (line 1440) | def _consolidate_field_joins(self, table, grain, field_joins): method _find_joins_to_dimension (line 1466) | def _find_joins_to_dimension(self, table, dimension): method from_db_file (line 1512) | def from_db_file( method from_datatables (line 1565) | def from_datatables(cls, name, datatables, config=None, nlp=False): method from_data_file (line 1609) | def from_data_file( method _check_or_create_name (line 1656) | def _check_or_create_name(cls, name): class AdHocDataTable (line 1672) | class AdHocDataTable(PrintMixin): method __init__ (line 1705) | def __init__( method fullname (line 1761) | def fullname(self): method get_dataframe (line 1767) | def get_dataframe(self): method table_exists (line 1779) | def table_exists(self, engine): method to_sql (line 1783) | def to_sql(self, engine, method="multi", chunksize=int(1e3)): class SQLiteDataTable (line 1896) | class SQLiteDataTable(AdHocDataTable): method get_dataframe (line 1905) | def get_dataframe(self): method to_sql (line 1908) | def to_sql(self, engine, **kwargs): class CSVDataTable (line 1912) | class CSVDataTable(AdHocDataTable): method get_dataframe (line 1915) | def get_dataframe(self): class ExcelDataTable (line 1925) | class ExcelDataTable(AdHocDataTable): method get_dataframe (line 1928) | def get_dataframe(self): class JSONDataTable (line 1940) | class JSONDataTable(AdHocDataTable): method get_dataframe (line 1943) | def get_dataframe(self, orient="table"): class HTMLDataTable (line 1951) | class HTMLDataTable(AdHocDataTable): method get_dataframe (line 1956) | def get_dataframe(self): class GoogleSheetsDataTable (line 1967) | class GoogleSheetsDataTable(AdHocDataTable): method get_dataframe (line 1970) | def get_dataframe(self): function datatable_from_config (line 1992) | def datatable_from_config(name, config, schema=None, **kwargs): FILE: zillion/dialects/conversions.py class DialectDateConversions (line 4) | class DialectDateConversions: method f (line 6) | def f(cls, func, i=0): method raw_value (line 12) | def raw_value(cls, v): method date_year_start (line 16) | def date_year_start(cls, v): method date_year_plus_year (line 20) | def date_year_plus_year(cls, v): method datetime_year_end (line 24) | def datetime_year_end(cls, x): method date_month_start (line 28) | def date_month_start(cls, x): method date_month_plus_month (line 32) | def date_month_plus_month(cls, x): method datetime_month_end (line 36) | def datetime_month_end(cls, x): method date_plus_day (line 40) | def date_plus_day(cls, x): method datetime_day_end (line 44) | def datetime_day_end(cls, x): method datetime_hour_plus_hour (line 48) | def datetime_hour_plus_hour(cls, x): method datetime_hour_end (line 52) | def datetime_hour_end(cls, x): method datetime_minute_plus_minute (line 56) | def datetime_minute_plus_minute(cls, x): method datetime_minute_end (line 60) | def datetime_minute_end(cls, x): method get_year_criteria_conversions (line 64) | def get_year_criteria_conversions(cls): method get_month_criteria_conversions (line 92) | def get_month_criteria_conversions(cls): method get_date_criteria_conversions (line 121) | def get_date_criteria_conversions(cls): method get_hour_criteria_conversions (line 136) | def get_hour_criteria_conversions(cls): method get_minute_criteria_conversions (line 154) | def get_minute_criteria_conversions(cls): method get_datetime_criteria_conversions (line 175) | def get_datetime_criteria_conversions(cls): FILE: zillion/dialects/duckdb.py class DuckDBDialectDateConversions (line 14) | class DuckDBDialectDateConversions(DialectDateConversions): method date_year_start (line 16) | def date_year_start(cls, x): method date_year_plus_year (line 20) | def date_year_plus_year(cls, x): method datetime_year_end (line 26) | def datetime_year_end(cls, x): method date_month_start (line 34) | def date_month_start(cls, x): method date_month_plus_month (line 40) | def date_month_plus_month(cls, x): method datetime_month_end (line 50) | def datetime_month_end(cls, x): method date_plus_day (line 58) | def date_plus_day(cls, x): method datetime_day_end (line 62) | def datetime_day_end(cls, x): method datetime_hour_plus_hour (line 70) | def datetime_hour_plus_hour(cls, x): method datetime_hour_end (line 74) | def datetime_hour_end(cls, x): method datetime_minute_plus_minute (line 82) | def datetime_minute_plus_minute(cls, x): method datetime_minute_end (line 86) | def datetime_minute_end(cls, x): FILE: zillion/dialects/mysql.py class MySQLDialectDateConversions (line 6) | class MySQLDialectDateConversions(DialectDateConversions): method date_year_start (line 8) | def date_year_start(cls, x): method date_year_plus_year (line 12) | def date_year_plus_year(cls, x): method datetime_year_end (line 16) | def datetime_year_end(cls, x): method date_month_start (line 23) | def date_month_start(cls, x): method date_month_plus_month (line 27) | def date_month_plus_month(cls, x): method datetime_month_end (line 31) | def datetime_month_end(cls, x): method date_plus_day (line 38) | def date_plus_day(cls, x): method datetime_day_end (line 42) | def datetime_day_end(cls, x): method datetime_hour_plus_hour (line 48) | def datetime_hour_plus_hour(cls, x): method datetime_hour_end (line 52) | def datetime_hour_end(cls, x): method datetime_minute_plus_minute (line 58) | def datetime_minute_plus_minute(cls, x): method datetime_minute_end (line 62) | def datetime_minute_end(cls, x): FILE: zillion/dialects/postgresql.py function get_interval (line 8) | def get_interval(n, t): class PostgreSQLDialectDateConversions (line 12) | class PostgreSQLDialectDateConversions(DialectDateConversions): method date_year_start (line 14) | def date_year_start(cls, x): method date_year_plus_year (line 18) | def date_year_plus_year(cls, x): method datetime_year_end (line 22) | def datetime_year_end(cls, x): method date_month_start (line 30) | def date_month_start(cls, x): method date_month_plus_month (line 34) | def date_month_plus_month(cls, x): method datetime_month_end (line 38) | def datetime_month_end(cls, x): method date_plus_day (line 46) | def date_plus_day(cls, x): method datetime_day_end (line 50) | def datetime_day_end(cls, x): method datetime_hour_plus_hour (line 58) | def datetime_hour_plus_hour(cls, x): method datetime_hour_end (line 62) | def datetime_hour_end(cls, x): method datetime_minute_plus_minute (line 70) | def datetime_minute_plus_minute(cls, x): method datetime_minute_end (line 76) | def datetime_minute_end(cls, x): FILE: zillion/dialects/sqlite.py class SQLiteDialectDateConversions (line 7) | class SQLiteDialectDateConversions(DialectDateConversions): method date_year_start (line 9) | def date_year_start(cls, x): method date_year_plus_year (line 13) | def date_year_plus_year(cls, x): method datetime_year_end (line 17) | def datetime_year_end(cls, x): method date_month_start (line 21) | def date_month_start(cls, x): method date_month_plus_month (line 25) | def date_month_plus_month(cls, x): method datetime_month_end (line 29) | def datetime_month_end(cls, x): method date_plus_day (line 33) | def date_plus_day(cls, x): method datetime_day_end (line 37) | def datetime_day_end(cls, x): method datetime_hour_plus_hour (line 41) | def datetime_hour_plus_hour(cls, x): method datetime_hour_end (line 45) | def datetime_hour_end(cls, x): method datetime_minute_plus_minute (line 49) | def datetime_minute_plus_minute(cls, x): method datetime_minute_end (line 53) | def datetime_minute_end(cls, x): FILE: zillion/field.py class Field (line 37) | class Field(ConfigMixin, PrintMixin): method __init__ (line 71) | def __init__( method copy (line 83) | def copy(self): method get_all_raw_fields (line 87) | def get_all_raw_fields(self, warehouse, adhoc_fms=None): method get_formula_fields (line 106) | def get_formula_fields(self, warehouse, depth=0, adhoc_fms=None): method get_ds_expression (line 127) | def get_ds_expression(self, column, label=True, ignore_formula=False): method get_final_select_clause (line 157) | def get_final_select_clause(self, *args, **kwargs): method __key (line 163) | def __key(self): method __hash__ (line 166) | def __hash__(self): method __eq__ (line 169) | def __eq__(self, other): class Metric (line 173) | class Metric(Field): method __init__ (line 204) | def __init__( method get_all_raw_fields (line 244) | def get_all_raw_fields(self, warehouse, adhoc_fms=None): method get_ds_expression (line 266) | def get_ds_expression(self, column, label=True): method get_final_select_clause (line 326) | def get_final_select_clause(self, *args, ifnull_clause=None, **kwargs): class Dimension (line 333) | class Dimension(Field): method __init__ (line 358) | def __init__( method get_values (line 384) | def get_values(self, warehouse_id, refresh=False): method is_valid_value (line 410) | def is_valid_value(self, warehouse_id, value, ignore_none=True): method sort (line 440) | def sort(self, warehouse_id, values): class FormulaField (line 458) | class FormulaField(Field): method __init__ (line 472) | def __init__(self, name, formula, **kwargs): method get_formula_fields (line 475) | def get_formula_fields(self, warehouse, depth=0, adhoc_fms=None): method get_ds_expression (line 533) | def get_ds_expression(self, *args, **kwargs): method get_final_select_clause (line 537) | def get_final_select_clause(self, warehouse, adhoc_fms=None, **kwargs): method _check_formula_fields (line 562) | def _check_formula_fields(self, warehouse, adhoc_fms=None): class FormulaDimension (line 575) | class FormulaDimension(FormulaField): method _check_formula_fields (line 580) | def _check_formula_fields(self, warehouse, adhoc_fms=None): class FormulaMetric (line 594) | class FormulaMetric(FormulaField): method __init__ (line 623) | def __init__( method get_all_raw_fields (line 654) | def get_all_raw_fields(self, warehouse, adhoc_fms=None): class AdHocField (line 677) | class AdHocField(FormulaField): method create (line 681) | def create(cls, obj): class AdHocMetric (line 693) | class AdHocMetric(FormulaMetric): method __init__ (line 719) | def __init__( method create (line 747) | def create(cls, obj): class AdHocDimension (line 765) | class AdHocDimension(FormulaDimension): method create (line 771) | def create(cls, obj): function create_metric (line 783) | def create_metric(metric_def): function create_dimension (line 799) | def create_dimension(dim_def): class FieldManagerMixin (line 815) | class FieldManagerMixin: method get_child_field_managers (line 831) | def get_child_field_managers(self): method get_field_managers (line 835) | def get_field_managers(self, adhoc_fms=None): method get_direct_metrics (line 839) | def get_direct_metrics(self): method get_direct_dimensions (line 843) | def get_direct_dimensions(self): method directly_has_metric (line 847) | def directly_has_metric(self, name): method directly_has_dimension (line 851) | def directly_has_dimension(self, name): method directly_has_field (line 855) | def directly_has_field(self, name): method print_metrics (line 861) | def print_metrics(self, indent=None): method print_dimensions (line 865) | def print_dimensions(self, indent=None): method has_metric (line 871) | def has_metric(self, name, adhoc_fms=None): method has_dimension (line 880) | def has_dimension(self, name, adhoc_fms=None): method has_field (line 889) | def has_field(self, name, adhoc_fms=None): method get_metric (line 898) | def get_metric(self, obj, adhoc_fms=None): method get_dimension (line 920) | def get_dimension(self, obj, adhoc_fms=None): method get_field (line 942) | def get_field(self, obj, adhoc_fms=None): method get_field_instances (line 962) | def get_field_instances(self, field, adhoc_fms=None): method get_metrics (line 978) | def get_metrics(self, adhoc_fms=None): method get_dimensions (line 987) | def get_dimensions(self, adhoc_fms=None): method get_fields (line 996) | def get_fields(self, adhoc_fms=None): method get_direct_fields (line 1006) | def get_direct_fields(self): method get_direct_metric_configs (line 1013) | def get_direct_metric_configs(self): method get_direct_dimension_configs (line 1018) | def get_direct_dimension_configs(self): method get_metric_configs (line 1023) | def get_metric_configs(self, adhoc_fms=None): method get_dimension_configs (line 1032) | def get_dimension_configs(self, adhoc_fms=None): method get_metric_names (line 1041) | def get_metric_names(self, adhoc_fms=None): method get_dimension_names (line 1045) | def get_dimension_names(self, adhoc_fms=None): method get_field_names (line 1049) | def get_field_names(self, adhoc_fms=None): method add_metric (line 1053) | def add_metric(self, metric, force=False): method add_dimension (line 1064) | def add_dimension(self, dimension, force=False): method _add_default_display_names (line 1076) | def _add_default_display_names(self, adhoc_fms=None, display_names=None): method _populate_global_fields (line 1093) | def _populate_global_fields(self, config, force=False): method _find_field_sources (line 1146) | def _find_field_sources(self, field, adhoc_fms=None): function get_table_metrics (line 1170) | def get_table_metrics(fm, table, adhoc_fms=None): function get_table_dimensions (line 1196) | def get_table_dimensions(fm, table, adhoc_fms=None): function get_table_fields (line 1222) | def get_table_fields(table): function get_table_field_column (line 1244) | def get_table_field_column(table, field_name): function table_field_allows_grain (line 1268) | def table_field_allows_grain(table, field, grain): function values_from_db (line 1288) | def values_from_db(warehouse_id, field): function sort_by_value_order (line 1325) | def sort_by_value_order(warehouse_id, field, values): function get_conversions_for_type (line 1350) | def get_conversions_for_type(coltype): function replace_non_named_formula_args (line 1369) | def replace_non_named_formula_args(formula, column): function get_dialect_type_conversions (line 1381) | def get_dialect_type_conversions(dialect, column): FILE: zillion/nlp.py function hash_text (line 46) | def hash_text(text): class EmbeddingsCache (line 57) | class EmbeddingsCache: method __init__ (line 72) | def __init__( method get_text_hash (line 87) | def get_text_hash(cls, text): method cache (line 92) | def cache(self): method cache (line 98) | def cache(self, value): method decode (line 101) | def decode(self, blob): method encode (line 105) | def encode(self, values): method init_cache (line 109) | def init_cache(self): method _get_key (line 121) | def _get_key(self, text): method __getitem__ (line 126) | def __getitem__(self, key): method __setitem__ (line 157) | def __setitem__(self, key, value): method __delitem__ (line 192) | def __delitem__(self, key): class OpenAIEmbeddingsCached (line 207) | class OpenAIEmbeddingsCached(OpenAIEmbeddings): class Config (line 211) | class Config: method __init__ (line 216) | def __init__(self, *args, **kwargs): method embed_query (line 225) | def embed_query(self, query): method embed_documents (line 234) | def embed_documents(self, documents): class QdrantCustom (line 244) | class QdrantCustom(Qdrant): method get_id (line 248) | def get_id(cls, text): method add_texts (line 252) | def add_texts(self, texts, metadatas=None, bulk_embedder=None): method similarity_search_with_score (line 291) | def similarity_search_with_score(self, query, k=4, **kwargs): class EmbeddingsAPI (line 323) | class EmbeddingsAPI: method __init__ (line 326) | def __init__(self): method connect (line 333) | def connect(self): method ensure_client (line 349) | def ensure_client(self): method embed_documents (line 354) | def embed_documents(self, rows): method embed_query (line 358) | def embed_query(self, query): method recreate_collection (line 362) | def recreate_collection( method create_collection_if_necessary (line 399) | def create_collection_if_necessary( method add_texts (line 442) | def add_texts( method similarity_search_with_score (line 463) | def similarity_search_with_score(self, collection_name, query, **kwargs): method get_collection (line 472) | def get_collection(self, name): method delete_collection (line 477) | def delete_collection(self, name): method get_embeddings (line 482) | def get_embeddings( method delete_embeddings (line 517) | def delete_embeddings(self, collection_name, texts): method upsert_embedding (line 533) | def upsert_embedding(self, collection_name, text, payload): function field_name_to_embedding_text (line 558) | def field_name_to_embedding_text(name): function get_warehouse_collection_name (line 563) | def get_warehouse_collection_name(warehouse): function warehouse_field_nlp_enabled (line 578) | def warehouse_field_nlp_enabled(warehouse, field_def): function init_warehouse_embeddings (line 600) | def init_warehouse_embeddings(warehouse, force_recreate=False): function get_openai_class (line 654) | def get_openai_class(model=None): function get_openai_model_context_size (line 660) | def get_openai_model_context_size(model): function build_llm (line 678) | def build_llm(model=None, max_tokens=None, request_timeout=LLM_REQUEST_T... function build_chain (line 708) | def build_chain( function parse_text_to_report_json_output (line 870) | def parse_text_to_report_json_output(output): function get_field_name_variants (line 943) | def get_field_name_variants(name): function get_field_fuzzy (line 972) | def get_field_fuzzy(warehouse, name, field_type=None): function map_warehouse_report_params (line 1023) | def map_warehouse_report_params(warehouse, report): function get_fields_prompt_str (line 1074) | def get_fields_prompt_str(warehouse, fields): function get_metrics_prompt_str (line 1088) | def get_metrics_prompt_str(warehouse): function get_dimensions_prompt_str (line 1092) | def get_dimensions_prompt_str(warehouse): class MaxTokensException (line 1096) | class MaxTokensException(Exception): function text_to_report_params (line 1100) | def text_to_report_params(query, warehouse=None, prompt_version="no_fiel... function parse_nlp_table_relationships (line 1151) | def parse_nlp_table_relationships(output): function get_nlp_table_relationships (line 1178) | def get_nlp_table_relationships(metadata, table_names): function parse_nlp_table_info (line 1244) | def parse_nlp_table_info(output): function get_nlp_table_info (line 1270) | def get_nlp_table_info(table): FILE: zillion/report.py class ExecutionStateMixin (line 50) | class ExecutionStateMixin: method __init__ (line 53) | def __init__(self): method _ready (line 58) | def _ready(self): method _querying (line 63) | def _querying(self): method _killed (line 68) | def _killed(self): method _get_lock (line 73) | def _get_lock(self, timeout=None): method _raise_if_killed (line 93) | def _raise_if_killed(self, timeout=None): method _get_state (line 106) | def _get_state(self): method _set_state (line 110) | def _set_state( class DataSourceQuery (line 162) | class DataSourceQuery(ExecutionStateMixin, PrintMixin): method __init__ (line 182) | def __init__(self, warehouse, metrics, dimensions, criteria, table_set): method get_datasource (line 191) | def get_datasource(self): method get_datasource_name (line 195) | def get_datasource_name(self): method get_tables (line 199) | def get_tables(self): method get_dialect_name (line 206) | def get_dialect_name(self): method covers_metric (line 210) | def covers_metric(self, metric): method covers_field (line 226) | def covers_field(self, field): method add_metric (line 242) | def add_metric(self, metric, adhoc_fms=None): method get_conn (line 260) | def get_conn(self): method execute (line 266) | def execute(self, timeout=None, label=None): method kill (line 338) | def kill(self, main_thread=None): method _format_query (line 387) | def _format_query(self): method _get_bind (line 391) | def _get_bind(self): method _add_prefix_with (line 400) | def _add_prefix_with(self, select): method _build_select (line 416) | def _build_select(self): method _get_field (line 435) | def _get_field(self, name): method _column_for_field (line 459) | def _column_for_field(self, field, table=None): method _get_field_expression (line 493) | def _get_field_expression(self, field, label=True): method _get_join (line 511) | def _get_join(self): method _convert_criteria (line 563) | def _convert_criteria(self, field, conversion, value): method _add_where (line 594) | def _add_where(self, select): method _add_group_by (line 632) | def _add_group_by(self, select): method _add_order_by (line 640) | def _add_order_by(self, select, asc=True): class DataSourceQuerySummary (line 650) | class DataSourceQuerySummary(PrintMixin): method __init__ (line 663) | def __init__(self, query, data, duration): method format (line 671) | def format(self): method _format_query (line 683) | def _format_query(self): class DataSourceQueryResult (line 688) | class DataSourceQueryResult(PrintMixin): method __init__ (line 701) | def __init__(self, query, data, duration): class BaseCombinedResult (line 707) | class BaseCombinedResult: method __init__ (line 722) | def __init__( method get_conn (line 740) | def get_conn(self): method get_cursor (line 744) | def get_cursor(self, conn): method create_table (line 748) | def create_table(self): method load_table (line 752) | def load_table(self): method clean_up (line 756) | def clean_up(self): method add_warning (line 760) | def add_warning(self, msg, log=True): method ifnull_clause (line 765) | def ifnull_clause(self, column_clause, ifnull_value): method get_metric_clause (line 769) | def get_metric_clause(self, metric, has_formula_dims): method get_final_result (line 773) | def get_final_result( method _get_row_hash (line 787) | def _get_row_hash(self, row): method _get_fields (line 812) | def _get_fields(self): method _get_field_names (line 830) | def _get_field_names(self): class SQLiteMemoryCombinedResult (line 836) | class SQLiteMemoryCombinedResult(BaseCombinedResult): method get_conn (line 839) | def get_conn(self): method get_cursor (line 843) | def get_cursor(self, conn): method create_table (line 848) | def create_table(self): method load_table (line 879) | def load_table(self): method ifnull_clause (line 887) | def ifnull_clause(self, column_clause, ifnull_value): method get_metric_clause (line 891) | def get_metric_clause(self, metric, has_formula_dims): method get_final_result (line 933) | def get_final_result( method clean_up (line 1071) | def clean_up(self): method _sort (line 1078) | def _sort(self, series, rollup): method _wavg (line 1092) | def _wavg(self, d, w, raise_on_zero_div_error=False): method _select_all (line 1103) | def _select_all(self): method _get_final_select_sql (line 1108) | def _get_final_select_sql(self, columns, dimension_aliases, formula_di... method _get_bulk_insert_sql (line 1143) | def _get_bulk_insert_sql(self, rows): method _apply_row_filters (line 1193) | def _apply_row_filters(self, df, row_filters, metrics, dimensions): method _get_multi_rollup_df (line 1262) | def _get_multi_rollup_df(self, df, rollup, dimensions, aggrs, wavgs): method _apply_rollup (line 1327) | def _apply_rollup(self, df, rollup, metrics, dimensions): method _apply_technicals (line 1398) | def _apply_technicals(self, df, technicals, rounding): method _apply_limits (line 1420) | def _apply_limits(self, df, row_filters, limit, metrics, dimensions): class Report (line 1448) | class Report(ExecutionStateMixin): method __init__ (line 1520) | def __init__( method get_params (line 1639) | def get_params(self): method get_json (line 1660) | def get_json(self): method save (line 1664) | def save(self, meta=None): method execute (line 1697) | def execute(self): method kill (line 1759) | def kill(self, soft=False, raise_if_failed=False): method get_grain (line 1805) | def get_grain(self): method get_dimension_grain (line 1818) | def get_dimension_grain(self): method _get_fields_dict (line 1824) | def _get_fields_dict(self, names, field_type, adhoc_datasources=None): method _populate_criteria_fields (line 1849) | def _populate_criteria_fields(self, criteria, adhoc_datasources=None): method _process_subreports (line 1868) | def _process_subreports(self, criteria, adhoc_datasources=None): method _check_order_by (line 1914) | def _check_order_by(self, order_by): method _add_ds_fields (line 1934) | def _add_ds_fields(self, field): method _get_query_label (line 1972) | def _get_query_label(self, query_label): method _execute_ds_queries_sequential (line 1976) | def _execute_ds_queries_sequential(self, queries): method _execute_ds_queries_multithread (line 1997) | def _execute_ds_queries_multithread(self, queries): method _execute_ds_queries (line 2031) | def _execute_ds_queries(self, queries): method _check_required_grain (line 2054) | def _check_required_grain(self): method _build_ds_queries (line 2079) | def _build_ds_queries(self, allow_partial=False, disabled_tables=None): method _create_combined_result (line 2149) | def _create_combined_result(self, ds_query_results): method from_params (line 2169) | def from_params(cls, warehouse, params, adhoc_datasources=None, report... method from_text (line 2197) | def from_text( method load (line 2243) | def load(cls, warehouse, spec_id, adhoc_datasources=None, report_depth... method load_warehouse_id_for_report (line 2272) | def load_warehouse_id_for_report(cls, spec_id): method delete (line 2296) | def delete(cls, warehouse, spec_id): method _load_report_spec (line 2316) | def _load_report_spec(cls, warehouse, spec_id): method _load_params (line 2347) | def _load_params(cls, warehouse, spec_id): class ReportResult (line 2368) | class ReportResult(PrintMixin): method __init__ (line 2390) | def __init__( method rollup_mask (line 2408) | def rollup_mask(self): method rollup_rows (line 2420) | def rollup_rows(self): method non_rollup_rows (line 2425) | def non_rollup_rows(self): method display_name_map (line 2430) | def display_name_map(self): method df_display (line 2444) | def df_display(self): FILE: zillion/scripts/bootstrap_datasource_config.py function get_primary_key (line 61) | def get_primary_key(table, full_names=False): function get_field_name (line 70) | def get_field_name(table, column, full_names=False): function get_foreign_key_relationships (line 77) | def get_foreign_key_relationships(metadata, table_configs): function infer_table_relationships (line 111) | def infer_table_relationships(metadata, table_configs, nlp=False): function get_configs (line 208) | def get_configs( class SecureAction (line 324) | class SecureAction(argparse.Action): method __call__ (line 325) | def __call__(self, parser, namespace, values, option_string=None): function main (line 383) | def main( FILE: zillion/scripts/load_config.py function main (line 27) | def main( FILE: zillion/scripts/run_report.py function main (line 45) | def main( FILE: zillion/sql_utils.py class InvalidSQLAlchemyTypeString (line 79) | class InvalidSQLAlchemyTypeString(Exception): function contains_sql_keywords (line 83) | def contains_sql_keywords(sql): function contains_aggregation (line 110) | def contains_aggregation(sql): function type_string_to_sa_type (line 143) | def type_string_to_sa_type(type_string): function to_generic_sa_type (line 195) | def to_generic_sa_type(type): function infer_aggregation_and_rounding (line 213) | def infer_aggregation_and_rounding(column): function aggregation_to_sqla_func (line 250) | def aggregation_to_sqla_func(aggregation): function is_numeric_type (line 255) | def is_numeric_type(type): function is_probably_metric (line 263) | def is_probably_metric(column, formula=None, nlp_column_info=None): function sqla_compile (line 296) | def sqla_compile(expr): function printexpr (line 311) | def printexpr(expr): function column_fullname (line 316) | def column_fullname(column, prefix=None): function get_schema_and_table_name (line 339) | def get_schema_and_table_name(table): function get_sqla_criterion_expr (line 351) | def get_sqla_criterion_expr(column, criterion, negate=False): function check_metadata_url (line 440) | def check_metadata_url(url, confirm_exists=False): function comment (line 456) | def comment(self, c): function _compile_element (line 466) | def _compile_element(elem, prepend_newline=False): function get_schemas (line 490) | def get_schemas(engine): function to_mysql_type (line 499) | def to_mysql_type(type): function to_postgresql_type (line 504) | def to_postgresql_type(type): function to_sqlite_type (line 509) | def to_sqlite_type(type): function to_duckdb_type (line 514) | def to_duckdb_type(type): function filter_dialect_schemas (line 521) | def filter_dialect_schemas(schemas, dialect): function get_postgres_schemas (line 551) | def get_postgres_schemas(conn): function get_postgres_pid (line 562) | def get_postgres_pid(conn): FILE: zillion/warehouse.py class Warehouse (line 16) | class Warehouse(FieldManagerMixin): method __init__ (line 40) | def __init__(self, config=None, datasources=None, ds_priority=None, nl... method __repr__ (line 82) | def __repr__(self): method datasources (line 90) | def datasources(self): method datasource_names (line 95) | def datasource_names(self): method print_info (line 99) | def print_info(self): method get_datasource (line 111) | def get_datasource(self, name, adhoc_datasources=None): method get_child_field_managers (line 134) | def get_child_field_managers(self): method add_datasource (line 138) | def add_datasource(self, ds, skip_integrity_checks=False): method remove_datasource (line 154) | def remove_datasource(self, ds, skip_integrity_checks=False): method apply_config (line 170) | def apply_config(self, config, skip_integrity_checks=False, nlp=False): method run_integrity_checks (line 199) | def run_integrity_checks(self, adhoc_datasources=None): method load_report (line 243) | def load_report(self, spec_id, adhoc_datasources=None): method delete_report (line 263) | def delete_report(self, spec_id): method save_report (line 277) | def save_report(self, meta=None, **kwargs): method save (line 300) | def save(self, name, config_url, meta=None): method execute (line 345) | def execute( method execute_id (line 389) | def execute_id(self, spec_id, adhoc_datasources=None): method execute_text (line 409) | def execute_text(self, text, adhoc_datasources=None, allow_partial=Fal... method get_metric_table_set (line 440) | def get_metric_table_set( method get_dimension_table_set (line 489) | def get_dimension_table_set( method init_embeddings (line 538) | def init_embeddings(self, force_recreate=False): method _get_embeddings_collection_name (line 551) | def _get_embeddings_collection_name(self): method _set_embeddings_collection_name (line 555) | def _set_embeddings_collection_name(self, name): method _create_or_update_datasources (line 560) | def _create_or_update_datasources( method _clear_supported_dimension_cache (line 586) | def _clear_supported_dimension_cache(self): method _check_reserved_field_names (line 590) | def _check_reserved_field_names(self, adhoc_datasources=None): method _check_conflicting_fields (line 598) | def _check_conflicting_fields(self, adhoc_datasources=None): method _check_fields_have_type (line 643) | def _check_fields_have_type(self, adhoc_datasources=None): method _check_primary_key_dimensions (line 668) | def _check_primary_key_dimensions(self, adhoc_datasources=None): method _check_weighting_metrics (line 695) | def _check_weighting_metrics(self, adhoc_datasources=None): method _check_required_grain (line 722) | def _check_required_grain(self, adhoc_datasources=None): method _check_incomplete_dimensions (line 757) | def _check_incomplete_dimensions(self, adhoc_datasources=None): method _check_valid_table_parents (line 778) | def _check_valid_table_parents(self, adhoc_datasources=None): method _get_supported_dimensions_for_metric (line 805) | def _get_supported_dimensions_for_metric( method _get_supported_dimensions (line 863) | def _get_supported_dimensions( method _get_ds_tables_with_metric (line 892) | def _get_ds_tables_with_metric( method _get_ds_dim_tables_with_dim (line 927) | def _get_ds_dim_tables_with_dim( method _get_ds_table_sets (line 961) | def _get_ds_table_sets( method _choose_best_datasource (line 997) | def _choose_best_datasource(self, ds_names): method _choose_best_table_set (line 1021) | def _choose_best_table_set(self, ds_table_sets): method _generate_unsupported_grain_msg (line 1062) | def _generate_unsupported_grain_msg( method load (line 1100) | def load(cls, id): method load_warehouse_for_report (line 1127) | def load_warehouse_for_report(cls, spec_id): method load_report_and_warehouse (line 1144) | def load_report_and_warehouse(cls, spec_id): method delete (line 1161) | def delete(cls, id): method _load_warehouse (line 1178) | def _load_warehouse(cls, id): method from_db_file (line 1200) | def from_db_file(cls, *args, **kwargs): method from_data_file (line 1206) | def from_data_file(cls, *args, **kwargs):