Coverage report: 88%

Files Functions Classes

coverage.py v7.13.1, created at 2026-02-11 14:40 +0000

File function   statements missing excluded   coverage
src / crump / __init__.py (no function)   5 0 0   100%
src / crump / cdf_extractor.py _make_unique_column_names   9 2 0   78%
src / crump / cdf_extractor.py _group_variables_by_record_count   6 0 0   100%
src / crump / cdf_extractor.py _expand_variable_to_columns   20 2 0   90%
src / crump / cdf_extractor.py _generate_output_filename   8 3 0   62%
src / crump / cdf_extractor.py _get_unique_filename   10 0 0   100%
src / crump / cdf_extractor.py _validate_existing_file_header   7 2 0   71%
src / crump / cdf_extractor.py extract_cdf_to_tabular_file   77 5 0   94%
src / crump / cdf_extractor.py extract_cdf_with_config   25 3 0   88%
src / crump / cdf_extractor.py _transform_tabular_file_with_config   71 18 0   75%
src / crump / cdf_extractor.py (no function)   27 0 0   100%
src / crump / cdf_reader.py CDFVariable.is_array   1 0 0   100%
src / crump / cdf_reader.py CDFVariable.array_size   1 0 0   100%
src / crump / cdf_reader.py CDFVariable.get_column_names   6 0 0   100%
src / crump / cdf_reader.py CDFVariable._get_labels_from_metadata   32 10 0   69%
src / crump / cdf_reader.py CDFVariable._get_labels_from_metadata._is_useful_label   3 0 0   100%
src / crump / cdf_reader.py CDFVariable._get_labels_from_metadata._process_labels   5 0 0   100%
src / crump / cdf_reader.py CDFVariable._generate_generic_column_names   10 4 0   60%
src / crump / cdf_reader.py _is_epoch_variable   5 1 0   80%
src / crump / cdf_reader.py _convert_epoch_to_datetime   6 2 0   67%
src / crump / cdf_reader.py read_cdf_variables   33 11 0   67%
src / crump / cdf_reader.py get_column_names_for_variable   8 4 0   50%
src / crump / cdf_reader.py (no function)   24 0 0   100%
src / crump / cli.py main   1 0 0   100%
src / crump / cli.py (no function)   14 0 0   100%
src / crump / cli_extract.py format_file_size   6 1 0   83%
src / crump / cli_extract.py extract   16 0 0   100%
src / crump / cli_extract.py _extract_with_config   71 10 0   86%
src / crump / cli_extract.py _extract_raw   51 13 0   75%
src / crump / cli_extract.py (no function)   24 0 0   100%
src / crump / cli_inspect.py format_file_size   6 1 0   83%
src / crump / cli_inspect.py inspect_tabular   46 8 0   83%
src / crump / cli_inspect.py _format_attribute_value   8 1 0   88%
src / crump / cli_inspect.py _format_data_value   6 3 0   50%
src / crump / cli_inspect.py inspect_cdf   108 21 0   81%
src / crump / cli_inspect.py inspect   17 4 0   76%
src / crump / cli_inspect.py (no function)   19 0 0   100%
src / crump / cli_prepare.py generate_job_name_from_filename   9 0 0   100%
src / crump / cli_prepare.py suggest_indexes   15 0 0   100%
src / crump / cli_prepare.py detect_filename_patterns   10 0 0   100%
src / crump / cli_prepare.py _create_column_mappings   6 0 0   100%
src / crump / cli_prepare.py _extract_cdf_to_temp_tabular_files   13 2 0   85%
src / crump / cli_prepare.py _display_prepare_results   26 0 0   100%
src / crump / cli_prepare.py prepare   112 15 0   87%
src / crump / cli_prepare.py (no function)   23 0 0   100%
src / crump / cli_sync.py _extract_cdf_and_find_tabular_files   12 3 0   75%
src / crump / cli_sync.py sync   109 32 0   71%
src / crump / cli_sync.py (no function)   19 0 0   100%
src / crump / config.py dict_constructor   11 1 0   91%
src / crump / config.py ColumnMapping.__init__   12 0 0   100%
src / crump / config.py ColumnMapping.apply_lookup   3 0 0   100%
src / crump / config.py ColumnMapping.apply_custom_function   31 7 0   77%
src / crump / config.py FilenameColumnMapping.__init__   4 0 0   100%
src / crump / config.py FilenameToColumn.__init__   8 0 0   100%
src / crump / config.py FilenameToColumn._template_to_regex   3 0 0   100%
src / crump / config.py FilenameToColumn.extract_values_from_filename   6 1 0   83%
src / crump / config.py FilenameToColumn.get_delete_key_columns   1 0 0   100%
src / crump / config.py IndexColumn.__init__   4 0 0   100%
src / crump / config.py Index.__init__   4 0 0   100%
src / crump / config.py CrumpJob.__init__   11 1 0   91%
src / crump / config.py CrumpConfig.__init__   2 0 0   100%
src / crump / config.py CrumpConfig.get_job   1 0 0   100%
src / crump / config.py CrumpConfig.get_job_or_auto_detect   24 2 0   92%
src / crump / config.py CrumpConfig.from_yaml   13 0 0   100%
src / crump / config.py CrumpConfig._parse_column_mapping   24 2 0   92%
src / crump / config.py CrumpConfig._parse_job   95 19 0   80%
src / crump / config.py CrumpConfig.add_or_update_job   4 0 0   100%
src / crump / config.py CrumpConfig.to_yaml_dict   77 5 0   94%
src / crump / config.py CrumpConfig.save_to_yaml   3 0 0   100%
src / crump / config.py apply_row_transformations   14 0 0   100%
src / crump / config.py (no function)   46 0 0   100%
src / crump / console_utils.py get_box_char   3 1 0   67%
src / crump / console_utils.py (no function)   5 0 0   100%
src / crump / csv_file.py CsvFileReader.__init__   5 0 0   100%
src / crump / csv_file.py CsvFileReader.__enter__   3 0 0   100%
src / crump / csv_file.py CsvFileReader.__exit__   4 0 0   100%
src / crump / csv_file.py CsvFileReader.fieldnames   3 0 0   100%
src / crump / csv_file.py CsvFileReader.__iter__   3 1 0   67%
src / crump / csv_file.py CsvFileWriter.__init__   4 0 0   100%
src / crump / csv_file.py CsvFileWriter.__enter__   4 0 0   100%
src / crump / csv_file.py CsvFileWriter.__exit__   4 0 0   100%
src / crump / csv_file.py CsvFileWriter.writerow   3 0 0   100%
src / crump / csv_file.py (no function)   18 0 0   100%
src / crump / database.py _detect_file_format   8 2 0   75%
src / crump / database.py DryRunSummary.__init__   6 0 0   100%
src / crump / database.py DatabaseBackend.execute   1 1 0   0%
src / crump / database.py DatabaseBackend.fetchall   1 1 0   0%
src / crump / database.py DatabaseBackend.commit   1 1 0   0%
src / crump / database.py DatabaseBackend.close   1 1 0   0%
src / crump / database.py DatabaseBackend.map_data_type   1 1 0   0%
src / crump / database.py DatabaseBackend.create_table_if_not_exists   1 1 0   0%
src / crump / database.py DatabaseBackend.get_existing_columns   1 1 0   0%
src / crump / database.py DatabaseBackend.add_column   1 1 0   0%
src / crump / database.py DatabaseBackend.upsert_row   1 1 0   0%
src / crump / database.py DatabaseBackend.delete_stale_records_compound   1 1 0   0%
src / crump / database.py DatabaseBackend.count_stale_records_compound   1 1 0   0%
src / crump / database.py DatabaseBackend.get_existing_indexes   1 1 0   0%
src / crump / database.py DatabaseBackend.create_index   1 1 0   0%
src / crump / database.py DatabaseBackend.table_exists   1 1 0   0%
src / crump / database.py PostgreSQLBackend.__init__   1 0 0   100%
src / crump / database.py PostgreSQLBackend.execute   4 0 0   100%
src / crump / database.py PostgreSQLBackend.fetchall   5 1 0   80%
src / crump / database.py PostgreSQLBackend.commit   1 0 0   100%
src / crump / database.py PostgreSQLBackend.close   1 0 0   100%
src / crump / database.py PostgreSQLBackend.map_data_type   7 0 0   100%
src / crump / database.py PostgreSQLBackend.create_table_if_not_exists   9 0 0   100%
src / crump / database.py PostgreSQLBackend.get_existing_columns   3 0 0   100%
src / crump / database.py PostgreSQLBackend.add_column   3 0 0   100%
src / crump / database.py PostgreSQLBackend.upsert_row   5 0 0   100%
src / crump / database.py PostgreSQLBackend.count_stale_records_compound   14 1 0   93%
src / crump / database.py PostgreSQLBackend.delete_stale_records_compound   26 1 0   96%
src / crump / database.py PostgreSQLBackend.get_existing_indexes   3 0 0   100%
src / crump / database.py PostgreSQLBackend.create_index   6 0 0   100%
src / crump / database.py PostgreSQLBackend.table_exists   3 0 0   100%
src / crump / database.py SQLiteBackend.__init__   7 3 0   57%
src / crump / database.py SQLiteBackend.execute   3 0 0   100%
src / crump / database.py SQLiteBackend.fetchall   4 0 0   100%
src / crump / database.py SQLiteBackend.commit   1 0 0   100%
src / crump / database.py SQLiteBackend.close   2 0 0   100%
src / crump / database.py SQLiteBackend.map_data_type   7 0 0   100%
src / crump / database.py SQLiteBackend.create_table_if_not_exists   7 0 0   100%
src / crump / database.py SQLiteBackend.get_existing_columns   3 0 0   100%
src / crump / database.py SQLiteBackend.add_column   3 0 0   100%
src / crump / database.py SQLiteBackend.upsert_row   10 0 0   100%
src / crump / database.py SQLiteBackend.get_existing_indexes   3 0 0   100%
src / crump / database.py SQLiteBackend.create_index   7 0 0   100%
src / crump / database.py SQLiteBackend.table_exists   3 0 0   100%
src / crump / database.py SQLiteBackend.delete_stale_records_compound   26 1 0   96%
src / crump / database.py SQLiteBackend.count_stale_records_compound   16 1 0   94%
src / crump / database.py DatabaseConnection.__init__   2 0 0   100%
src / crump / database.py DatabaseConnection.__enter__   6 1 0   83%
src / crump / database.py DatabaseConnection.__exit__   2 0 0   100%
src / crump / database.py DatabaseConnection.create_table_if_not_exists   3 1 0   67%
src / crump / database.py DatabaseConnection.get_existing_columns   3 1 0   67%
src / crump / database.py DatabaseConnection.add_column   3 1 0   67%
src / crump / database.py DatabaseConnection.upsert_row   3 1 0   67%
src / crump / database.py DatabaseConnection.delete_stale_records_compound   3 1 0   67%
src / crump / database.py DatabaseConnection.count_stale_records_compound   3 1 0   67%
src / crump / database.py DatabaseConnection.get_existing_indexes   3 1 0   67%
src / crump / database.py DatabaseConnection.create_index   3 1 0   67%
src / crump / database.py DatabaseConnection.table_exists   3 1 0   67%
src / crump / database.py DatabaseConnection._validate_id_columns   12 5 0   58%
src / crump / database.py DatabaseConnection._determine_sync_columns   16 1 0   94%
src / crump / database.py DatabaseConnection._build_column_definitions   15 1 0   93%
src / crump / database.py DatabaseConnection._setup_table_schema   18 0 0   100%
src / crump / database.py DatabaseConnection._should_include_row   10 2 0   80%
src / crump / database.py DatabaseConnection._get_varchar_limit   7 0 0   100%
src / crump / database.py DatabaseConnection._get_integer_range   8 0 0   100%
src / crump / database.py DatabaseConnection._is_datetime_type   3 0 0   100%
src / crump / database.py DatabaseConnection._is_empty_datetime_value   3 1 0   67%
src / crump / database.py DatabaseConnection._get_default_value   12 3 0   75%
src / crump / database.py DatabaseConnection._validate_and_fix_row   49 2 0   96%
src / crump / database.py DatabaseConnection._process_tabular_rows   33 2 0   94%
src / crump / database.py DatabaseConnection._count_and_track_tabular_rows   20 0 0   100%
src / crump / database.py DatabaseConnection._prepare_sync   11 2 0   82%
src / crump / database.py DatabaseConnection.sync_tabular_file_dry_run   25 0 0   100%
src / crump / database.py DatabaseConnection.sync_tabular_file   35 2 0   94%
src / crump / database.py sync_file_to_db   2 0 0   100%
src / crump / database.py sync_file_to_db_dry_run   2 0 0   100%
src / crump / database.py (no function)   103 0 0   100%
src / crump / file_types.py OutputFileType.from_extension   6 0 0   100%
src / crump / file_types.py OutputFileType.from_path   2 0 0   100%
src / crump / file_types.py InputFileType.from_extension   10 1 0   90%
src / crump / file_types.py InputFileType.from_path   2 0 0   100%
src / crump / file_types.py (no function)   17 0 0   100%
src / crump / history.py SyncHistoryEntry.__init__   10 0 0   100%
src / crump / history.py _calculate_file_hash   5 0 0   100%
src / crump / history.py _ensure_history_table_exists   3 0 0   100%
src / crump / history.py record_sync_history   7 0 0   100%
src / crump / history.py get_utc_now   1 0 0   100%
src / crump / history.py (no function)   11 0 2   100%
src / crump / parquet_file.py ParquetFileReader.__init__   3 0 0   100%
src / crump / parquet_file.py ParquetFileReader.__enter__   3 0 0   100%
src / crump / parquet_file.py ParquetFileReader.__exit__   2 0 0   100%
src / crump / parquet_file.py ParquetFileReader.fieldnames   3 0 0   100%
src / crump / parquet_file.py ParquetFileReader.__iter__   3 1 0   67%
src / crump / parquet_file.py ParquetFileWriter.__init__   4 0 0   100%
src / crump / parquet_file.py ParquetFileWriter.__enter__   4 0 0   100%
src / crump / parquet_file.py ParquetFileWriter.__exit__   5 0 0   100%
src / crump / parquet_file.py ParquetFileWriter.writerow   7 0 0   100%
src / crump / parquet_file.py ParquetFileWriter._write_parquet   22 2 0   91%
src / crump / parquet_file.py (no function)   23 2 0   91%
src / crump / tabular_file.py TabularFileReader.__init__   1 0 0   100%
src / crump / tabular_file.py TabularFileReader.__enter__   1 1 0   0%
src / crump / tabular_file.py TabularFileReader.__exit__   1 1 0   0%
src / crump / tabular_file.py TabularFileReader.fieldnames   1 1 0   0%
src / crump / tabular_file.py TabularFileReader.__iter__   1 1 0   0%
src / crump / tabular_file.py TabularFileWriter.__init__   2 0 0   100%
src / crump / tabular_file.py TabularFileWriter.__enter__   1 1 0   0%
src / crump / tabular_file.py TabularFileWriter.__exit__   1 1 0   0%
src / crump / tabular_file.py TabularFileWriter.writerow   1 1 0   0%
src / crump / tabular_file.py create_reader   21 4 0   81%
src / crump / tabular_file.py create_writer   18 9 0   50%
src / crump / tabular_file.py (no function)   27 0 0   100%
src / crump / type_detection.py detect_column_type   20 0 0   100%
src / crump / type_detection.py _is_integer   5 0 0   100%
src / crump / type_detection.py _is_bigint   5 0 0   100%
src / crump / type_detection.py _is_any_integer   5 0 0   100%
src / crump / type_detection.py _is_float   5 0 0   100%
src / crump / type_detection.py _is_date   2 0 0   100%
src / crump / type_detection.py _is_datetime   2 0 0   100%
src / crump / type_detection.py detect_nullable   1 0 0   100%
src / crump / type_detection.py analyze_tabular_file_types   11 1 0   91%
src / crump / type_detection.py analyze_tabular_file_types_and_nullable   20 1 0   95%
src / crump / type_detection.py suggest_id_column   10 0 0   100%
src / crump / type_detection.py (no function)   14 0 0   100%
Total     2577 304 2   88%

No items found using the specified filter.