SYMBOL INDEX (283 symbols across 22 files) FILE: build.py function run (line 8) | def run(cmd: list[str], cwd: str = "."): function docs (line 13) | def docs(): function update_translations (line 19) | def update_translations(): function compile_translations (line 28) | def compile_translations(): function build_application (line 37) | def build_application(): function main (line 96) | def main(): FILE: src/ode/dialogs/delete.py class DeleteDialog (line 4) | class DeleteDialog(QDialog): method __init__ (line 9) | def __init__(self, parent: QWidget, filename: str): method confirm (line 35) | def confirm(parent, filename): method retranslateUI (line 41) | def retranslateUI(self): FILE: src/ode/dialogs/download.py class DownloadDialog (line 9) | class DownloadDialog(QDialog): method __init__ (line 15) | def __init__(self, parent, filepath: Path, has_errors:bool) -> None: method retranslateUI (line 46) | def retranslateUI(self) -> None: method download_file (line 53) | def download_file(self): method download_error_file (line 70) | def download_error_file(self): FILE: src/ode/dialogs/llm_dialog_warning.py class LLMWarningDialog (line 5) | class LLMWarningDialog(QDialog): method __init__ (line 11) | def __init__(self, parent: QWidget): method accept (line 47) | def accept(self): method confirm (line 56) | def confirm(parent): FILE: src/ode/dialogs/loading.py class LoadingDialog (line 5) | class LoadingDialog(QDialog): method __init__ (line 10) | def __init__(self, parent=None): method retranslateUI (line 29) | def retranslateUI(self): method cancel_loading_timer (line 33) | def cancel_loading_timer(self): method show (line 37) | def show(self, millis: int = 300): method show_immediately (line 40) | def show_immediately(self): method show_message (line 44) | def show_message(self, message): FILE: src/ode/dialogs/metadata.py class ColumnMetadataField (line 18) | class ColumnMetadataField(NamedTuple): class DataTypeMapper (line 29) | class DataTypeMapper: method __init__ (line 69) | def __init__(self): method get_display_type (line 73) | def get_display_type(self, internal_type): method get_internal_type (line 77) | def get_internal_type(self, display_type): method get_all_display_types (line 81) | def get_all_display_types(self): method get_all_internal_types (line 85) | def get_all_internal_types(self): class NoWheelComboBox (line 90) | class NoWheelComboBox(QComboBox): method wheelEvent (line 98) | def wheelEvent(self, event): class MetadataForm (line 102) | class MetadataForm(QWidget): method __init__ (line 107) | def __init__(self, *args, **kwargs): method on_type_changed (line 164) | def on_type_changed(self, text): method retranslateUI (line 185) | def retranslateUI(self): class ColumnMetadataDialog (line 197) | class ColumnMetadataDialog(QDialog): method __init__ (line 204) | def __init__(self, parent: QWidget, field: ColumnMetadataField, field_... method setup_layout (line 250) | def setup_layout(self): method save_and_close (line 266) | def save_and_close(self): method retranslateUI (line 302) | def retranslateUI(self): FILE: src/ode/dialogs/rename.py class RenameDialog (line 4) | class RenameDialog(QDialog): method __init__ (line 12) | def __init__(self, parent: QWidget, filename: str): method accept (line 42) | def accept(self): method retranslateUI (line 48) | def retranslateUI(self): FILE: src/ode/dialogs/upload.py class SelectWidget (line 24) | class SelectWidget(QWidget): method __init__ (line 27) | def __init__(self, icon_path, parent=None): method connect_select_action (line 47) | def connect_select_action(self, action): class DataUploadDialog (line 51) | class DataUploadDialog(QDialog): method __init__ (line 64) | def __init__(self, parent, external_first=False): method add_files (line 127) | def add_files(self): method add_folders (line 144) | def add_folders(self) -> None: method load_table_from_url (line 155) | def load_table_from_url(self): method upload_dialog (line 189) | def upload_dialog(self) -> tuple[int, Path]: method _read_url_html_title (line 199) | def _read_url_html_title(self, url): method retranslateUI (line 214) | def retranslateUI(self): FILE: src/ode/file.py class File (line 17) | class File: method __init__ (line 34) | def __init__(self, path: str | Path, sheet_name: str | None = None) ->... method get_metadata_dict (line 38) | def get_metadata_dict(self, metadata_path) -> dict: method set_metadata_dict (line 48) | def set_metadata_dict(self, metadata_path: Path, metadata: dict) -> None: method _get_path_to_metadata_file (line 52) | def _get_path_to_metadata_file(self, path: Path, sheet_name: str | Non... method get_or_create_metadata (line 81) | def get_or_create_metadata(self, sheet_name: str | None = None): method _setup_metadata_first_time (line 107) | def _setup_metadata_first_time(self, sheet_name: str | None = None): method rename (line 130) | def rename(self, new_name, sheet_names: list[str] | None = None): method rename_metadata_file (line 164) | def rename_metadata_file(self, old_metadata_path: Path, new_metadata_p... method remove (line 183) | def remove(self, sheet_names: list[str] | None = None): method get_sheets_names (line 205) | def get_sheets_names(filepath: Path) -> list[str]: FILE: src/ode/llama.py class PromptKeys (line 32) | class PromptKeys(Enum): class AIModel (line 38) | class AIModel(NamedTuple): class LlamaWorkerSignals (line 53) | class LlamaWorkerSignals(QObject): class LlamaWorker (line 63) | class LlamaWorker(QThread): method __init__ (line 68) | def __init__(self, llm, prompt): method run (line 74) | def run(self): class LlamaDialog (line 103) | class LlamaDialog(QDialog): method __init__ (line 108) | def __init__(self, parent=None): method closeEvent (line 119) | def closeEvent(self, event): method init_ui (line 130) | def init_ui(self): method set_data (line 177) | def set_data(self, data): method _get_columns_prompt (line 181) | def _get_columns_prompt(self): method _get_analysis_prompt (line 200) | def _get_analysis_prompt(self): method set_prompt (line 225) | def set_prompt(self, index): method init_llm (line 243) | def init_llm(self, model_path): method run (line 256) | def run(self): method stop (line 273) | def stop(self): method on_execution_started (line 280) | def on_execution_started(self): method on_execution_finished (line 286) | def on_execution_finished(self): method on_execution_error (line 295) | def on_execution_error(self, error_msg): method on_stream_token (line 301) | def on_stream_token(self, token): method on_stream_token_first_received (line 306) | def on_stream_token_first_received(self): method retranslateUI (line 311) | def retranslateUI(self): method _calculate_half_cpu_count (line 318) | def _calculate_half_cpu_count(self) -> int: class LlamaDownloadDialog (line 330) | class LlamaDownloadDialog(QDialog): method __init__ (line 336) | def __init__(self, parent=None): method init_ui (line 346) | def init_ui(self): method create_model_row (line 383) | def create_model_row(self, parent_layout): method update_ui_state (line 413) | def update_ui_state(self): method is_model_downloaded (line 426) | def is_model_downloaded(self): method on_next (line 431) | def on_next(self): method open_download_directory (line 437) | def open_download_directory(self): method on_download_model (line 450) | def on_download_model(self): method on_delete_model (line 489) | def on_delete_model(self): method on_download_abort (line 507) | def on_download_abort(self): method on_download_finished (line 520) | def on_download_finished(self): method on_download_ready_read (line 531) | def on_download_ready_read(self): method on_download_progress (line 538) | def on_download_progress(self, bytesReceived: int, bytesTotal: int): method on_download_error (line 550) | def on_download_error(self, code: QNetworkReply.NetworkError): method format_size (line 557) | def format_size(bytes_size: int) -> str: class LlamaInitWorker (line 566) | class LlamaInitWorker(QObject): method __init__ (line 575) | def __init__(self, ai_llama, model_path): method init_llm (line 581) | def init_llm(self): FILE: src/ode/log_setup.py function configure_logging (line 11) | def configure_logging(): function configure_exception_handling (line 36) | def configure_exception_handling(logger): function get_module_logger (line 62) | def get_module_logger(module_name): FILE: src/ode/main.py class ContentIndex (line 85) | class ContentIndex(IntEnum): class CustomTreeView (line 95) | class CustomTreeView(QTreeView): method __init__ (line 104) | def __init__(self, parent=None): method keyPressEvent (line 109) | def keyPressEvent(self, event: QKeyEvent): method mousePressEvent (line 122) | def mousePressEvent(self, event): method viewportEvent (line 129) | def viewportEvent(self, event): method item_clicked (line 158) | def item_clicked(self, index: QModelIndex): class ClickableLabel (line 171) | class ClickableLabel(QLabel): method __init__ (line 179) | def __init__(self, *args, **kwargs): method mousePressEvent (line 183) | def mousePressEvent(self, event): class Sidebar (line 188) | class Sidebar(QWidget): method __init__ (line 196) | def __init__(self): method retranslateUI (line 253) | def retranslateUI(self): method _setup_file_navigator_context_menu (line 262) | def _setup_file_navigator_context_menu(self): method _show_context_menu (line 278) | def _show_context_menu(self, position): method _rename_file_navigator_item (line 285) | def _rename_file_navigator_item(self): method _open_file_navigator_location (line 317) | def _open_file_navigator_location(self): method _delete_file_navitagor_item (line 331) | def _delete_file_navitagor_item(self): method _show_only_name_column_in_file_navigator (line 350) | def _show_only_name_column_in_file_navigator(self, file_model, file_na... class ErrorsReportButton (line 357) | class ErrorsReportButton(QPushButton): method __init__ (line 365) | def __init__(self, parent=None): method setText (line 387) | def setText(self, text): method setIcon (line 391) | def setIcon(self, icon): method enable (line 404) | def enable(self, number): method disable (line 420) | def disable(self): class Toolbar (line 434) | class Toolbar(QWidget): method __init__ (line 443) | def __init__(self): method retranslateUI (line 504) | def retranslateUI(self): class Content (line 515) | class Content(QWidget): method __init__ (line 523) | def __init__(self): class Welcome (line 549) | class Welcome(QWidget): method __init__ (line 552) | def __init__(self): method retranslateUI (line 575) | def retranslateUI(self): class MainWindow (line 582) | class MainWindow(QMainWindow): method __init__ (line 596) | def __init__(self): method _create_status_bar (line 687) | def _create_status_bar(self): method _menu_bar (line 690) | def _menu_bar(self): method apply_stylesheet (line 747) | def apply_stylesheet(self): method show_welcome_screen (line 758) | def show_welcome_screen(self): method on_export_click (line 766) | def on_export_click(self): method on_data_changed (line 775) | def on_data_changed(self): method on_ai_click (line 779) | def on_ai_click(self): method on_llm_init_finished (line 811) | def on_llm_init_finished(self): method on_llm_init_error (line 817) | def on_llm_init_error(self, error_message): method change_active_panel (line 823) | def change_active_panel(self, panel_index: ContentIndex): method retranslateUI (line 852) | def retranslateUI(self): method on_language_change (line 898) | def on_language_change(self, index): method upload_data (line 921) | def upload_data(self, external_first=False): method on_button_upload_click (line 942) | def on_button_upload_click(self): method on_save_click (line 945) | def on_save_click(self): method on_data_view_save (line 952) | def on_data_view_save(self, save_data): method update_views (line 962) | def update_views(self, worker_data): method update_excel_sheet_dropdown (line 982) | def update_excel_sheet_dropdown(self, filepath): method on_excel_sheet_selection_changed (line 1007) | def on_excel_sheet_selection_changed(self, sheet_name: str): method update_toolbar (line 1019) | def update_toolbar(self, worker_data): method update_menu_bar (line 1039) | def update_menu_bar(self, worker_data): method read_validate_and_display_file (line 1056) | def read_validate_and_display_file(self, file_path, fn_callback: Calla... method on_tree_click (line 1089) | def on_tree_click(self, index): method open_about_dialog (line 1104) | def open_about_dialog(self): method open_user_guide (line 1108) | def open_user_guide(self): method open_report_issue (line 1111) | def open_report_issue(self): method show_logs_content (line 1115) | def show_logs_content(self): method on_download_error_file (line 1167) | def on_download_error_file(self): method _perform_download (line 1180) | def _perform_download(self): function main (line 1195) | def main(): FILE: src/ode/panels/data.py class DataWorkerSignals (line 31) | class DataWorkerSignals(QObject): class DataWorker (line 38) | class DataWorker(QRunnable): method __init__ (line 47) | def __init__(self, filepath, sheet_name=None): method run (line 55) | def run(self): class ColumnMetadataIconDelegate (line 86) | class ColumnMetadataIconDelegate(QStyledItemDelegate): method __init__ (line 93) | def __init__(self, icon_path, parent=None): method _get_icon_rect (line 98) | def _get_icon_rect(self, option): method paint (line 107) | def paint(self, painter, option, index): method editorEvent (line 126) | def editorEvent(self, event, model, option, index): class FrictionlessTableModel (line 135) | class FrictionlessTableModel(QAbstractTableModel): method __init__ (line 138) | def __init__( method write_data (line 149) | def write_data(self, filepath: Path, sheet_name=None): method write_data_csv (line 163) | def write_data_csv(self, filepath: Path): method write_data_xlsx (line 186) | def write_data_xlsx(self, filepath: Path, sheet_name=None): method write_data_xls (line 213) | def write_data_xls(self, filepath: str, sheet_name=None): method write_error_xlsx (line 241) | def write_error_xlsx(self, filepath: Path): method _get_errors (line 308) | def _get_errors(self, errors): method _get_row_count (line 347) | def _get_row_count(self): method _get_column_count (line 350) | def _get_column_count(self): method get_header_data (line 361) | def get_header_data(self): method rowCount (line 365) | def rowCount(self, parent=None): method columnCount (line 369) | def columnCount(self, parent=None): method data (line 373) | def data(self, index, role): method flags (line 411) | def flags(self, index): method setData (line 421) | def setData(self, index, value, role): class CustomTableView (line 444) | class CustomTableView(QTableView): method __init__ (line 449) | def __init__(self, parent=None): method keyPressEvent (line 452) | def keyPressEvent(self, event: QKeyEvent): method mouseMoveEvent (line 465) | def mouseMoveEvent(self, event): class DataViewer (line 475) | class DataViewer(QWidget): method __init__ (line 481) | def __init__(self): method display_data (line 508) | def display_data(self, model, filepath, sheet_name=None): method show_column_metadata_dialog (line 528) | def show_column_metadata_dialog(self, field_index): method clear (line 548) | def clear(self, model): method retranslateUI (line 558) | def retranslateUI(self): method save_metadata_to_descriptor_file (line 562) | def save_metadata_to_descriptor_file(self, field_form: dict): FILE: src/ode/panels/errors.py class ErrorFilterProxyModel (line 12) | class ErrorFilterProxyModel(QSortFilterProxyModel): method __init__ (line 20) | def __init__(self, error_type): method filterAcceptsRow (line 24) | def filterAcceptsRow(self, source_row, source_parent): method data (line 41) | def data(self, index, role): class ErrorReport (line 71) | class ErrorReport(QWidget): method __init__ (line 82) | def __init__(self, errors, model, *args, **kwargs): method retranslateUI (line 139) | def retranslateUI(self): class ErrorsWidget (line 150) | class ErrorsWidget(QWidget): method __init__ (line 153) | def __init__(self, *args, **kwargs): method display_errors (line 174) | def display_errors(self, errors, model): method clear (line 198) | def clear(self): method _sort_frictionless_errors (line 205) | def _sort_frictionless_errors(self, errors): method retranslateUI (line 217) | def retranslateUI(self): FILE: src/ode/panels/source.py class SourceViewer (line 10) | class SourceViewer(QWidget): method __init__ (line 18) | def __init__(self): method _read_file (line 38) | def _read_file(self, filepath): method open_file (line 62) | def open_file(self, filepath): method clear (line 76) | def clear(self): method retranslateUI (line 81) | def retranslateUI(self): FILE: src/ode/paths.py class Paths (line 13) | class Paths: method asset (line 20) | def asset(cls, filename): method translation (line 24) | def translation(cls, filename): method get_unique_destination_filepath (line 28) | def get_unique_destination_filepath(cls, src_filepath) -> Path: FILE: src/ode/utils.py function setup_ode_internal_folders (line 15) | def setup_ode_internal_folders(): function migrate_metadata_store (line 26) | def migrate_metadata_store(): function set_common_style (line 98) | def set_common_style(widget): function show_error_dialog (line 102) | def show_error_dialog(message=None, title="Error"): class ErrorTexts (line 116) | class ErrorTexts: method get_error_title (line 118) | def get_error_title(cls, error_type): method get_error_description (line 134) | def get_error_description(cls, error_type): FILE: tests/conftest.py function project_folder (line 6) | def project_folder(tmp_path): function window (line 14) | def window(qtbot, project_folder): FILE: tests/ode/test_application.py function test_file_is_displayed (line 6) | def test_file_is_displayed(qtbot, window, project_folder): function test_button_errors_displays_error_count (line 27) | def test_button_errors_displays_error_count(qtbot, window, project_folder): function test_error_reports_show_two_blank_lines_in_red (line 43) | def test_error_reports_show_two_blank_lines_in_red(qtbot, window, projec... function test_error_reports_show_two_errors_in_same_row (line 75) | def test_error_reports_show_two_errors_in_same_row(qtbot, window, projec... FILE: tests/ode/test_files.py class TestFiles (line 7) | class TestFiles: method test_constructor (line 8) | def test_constructor(self, project_folder): method test_path_to_metadata_file (line 15) | def test_path_to_metadata_file(self, project_folder): method test_path_to_metadata_subfolder (line 20) | def test_path_to_metadata_subfolder(self, project_folder): method test_path_to_metadata_folder (line 25) | def test_path_to_metadata_folder(self, project_folder): method test_get_create_metadata (line 31) | def test_get_create_metadata(self, project_folder): method test_get_metadata_dict (line 41) | def test_get_metadata_dict(self, project_folder): method test_rename_file (line 53) | def test_rename_file(self, project_folder): method test_rename_folder (line 62) | def test_rename_folder(self, project_folder): method test_rename_raises_error_if_target_exist (line 75) | def test_rename_raises_error_if_target_exist(self, project_folder): method test_rename_also_updates_object_attributes (line 85) | def test_rename_also_updates_object_attributes(self, project_folder): method test_rename_file_metadata (line 94) | def test_rename_file_metadata(self, project_folder): method test_rename_folder_metadata (line 106) | def test_rename_folder_metadata(self, project_folder): method test_remove_file_and_metadata (line 133) | def test_remove_file_and_metadata(self, project_folder): method test_delete_folder_and_metadata (line 143) | def test_delete_folder_and_metadata(self, project_folder): FILE: tests/ode/test_frictionless_errors.py class TestFrictionlessErrors (line 10) | class TestFrictionlessErrors: method test_blank_header_error (line 19) | def test_blank_header_error(self, qtbot, window, project_folder): method test_duplicate_label_error (line 40) | def test_duplicate_label_error(self, qtbot, window, project_folder): method test_blank_row_error (line 61) | def test_blank_row_error(self, qtbot, window, project_folder): method test_blank_row_and_duplicated_label_error (line 83) | def test_blank_row_and_duplicated_label_error(self, qtbot, window, pro... method test_missing_cell_error (line 107) | def test_missing_cell_error(self, qtbot, window, project_folder): method test_extra_cell_error (line 132) | def test_extra_cell_error(self, qtbot, window, project_folder): method test_custom_errors_descriptions_are_shown (line 155) | def test_custom_errors_descriptions_are_shown(self, qtbot, window, pro... method test_default_frictionless_errors_if_missing_custom (line 178) | def test_default_frictionless_errors_if_missing_custom(self, qtbot, wi... method test_changing_column_header_name_fixes_error_with_dialog (line 203) | def test_changing_column_header_name_fixes_error_with_dialog(self, qtb... method test_changing_column_type_with_metadata_dialog (line 259) | def test_changing_column_type_with_metadata_dialog(self, qtbot, window... FILE: tests/ode/test_paths.py class TestPaths (line 4) | class TestPaths: method test_no_conflict (line 5) | def test_no_conflict(self, project_folder): method test_single_conflict (line 10) | def test_single_conflict(self, project_folder): method test_multiple_conflicts (line 17) | def test_multiple_conflicts(self, project_folder):