From 480bb9caef13cee46c539080d8c971f1af8b1b9d Mon Sep 17 00:00:00 2001 From: ldam <ldam@passcal.nmt.edu> Date: Wed, 30 Aug 2023 09:20:29 -0600 Subject: [PATCH] convert PySide2 to PySide6 --- sohstationviewer.py | 2 +- sohstationviewer/controller/processing.py | 6 +++--- sohstationviewer/controller/util.py | 4 ++-- sohstationviewer/database/soh.db | Bin 61440 -> 61440 bytes sohstationviewer/model/data_loader.py | 2 +- sohstationviewer/model/data_type_model.py | 4 ++-- sohstationviewer/model/decimator.py | 2 +- sohstationviewer/model/downsampler.py | 2 +- .../model/general_data/general_data.py | 4 ++-- .../view/calendar/calendar_dialog.py | 2 +- .../view/calendar/calendar_widget.py | 2 +- .../view/channel_prefer_dialog.py | 4 ++-- sohstationviewer/view/date_edit_with_doy.py | 6 +++--- .../view/db_config/db_config_dialog.py | 2 +- .../view/db_config/param_dialog.py | 6 +++--- .../view/file_information/file_info_widget.py | 6 +++--- sohstationviewer/view/file_list_widget.py | 2 +- sohstationviewer/view/help_view.py | 4 ++-- sohstationviewer/view/main_window.py | 8 ++++---- .../view/plotting/gps_plot/gps_dialog.py | 2 +- .../multi_threaded_plotting_widget.py | 2 +- .../plotting_widget/plotting_processor.py | 2 +- .../plotting_widget/plotting_widget.py | 6 +++--- .../plotting/time_power_squared_dialog.py | 2 +- .../plotting/time_power_squared_processor.py | 2 +- .../view/plotting/waveform_dialog.py | 2 +- .../view/plotting/waveform_processor.py | 2 +- sohstationviewer/view/save_plot_dialog.py | 4 ++-- .../view/search_message/highlight_delegate.py | 4 ++-- .../search_message/search_message_dialog.py | 4 ++-- .../view/select_buttons_dialog.py | 2 +- .../view/ui/about_ui_qtdesigner.py | 2 +- .../view/ui/calendar_ui_qtdesigner.py | 2 +- sohstationviewer/view/ui/main_ui.py | 4 ++-- .../view/util/one_instance_at_a_time.py | 4 ++-- 35 files changed, 57 insertions(+), 57 deletions(-) diff --git a/sohstationviewer.py b/sohstationviewer.py index 296d45979..19c5de671 100755 --- a/sohstationviewer.py +++ b/sohstationviewer.py @@ -2,7 +2,7 @@ import platform import os import sys -from PySide2 import QtWidgets +from PySide6 import QtWidgets from sohstationviewer.view.main_window import MainWindow diff --git a/sohstationviewer/controller/processing.py b/sohstationviewer/controller/processing.py index b61b1eabc..64c83a986 100644 --- a/sohstationviewer/controller/processing.py +++ b/sohstationviewer/controller/processing.py @@ -9,9 +9,9 @@ import re from pathlib import Path from typing import List, Optional, Dict, Tuple -from PySide2.QtCore import QEventLoop, Qt -from PySide2.QtGui import QCursor -from PySide2.QtWidgets import QTextBrowser, QApplication +from PySide6.QtCore import QEventLoop, Qt +from PySide6.QtGui import QCursor +from PySide6.QtWidgets import QTextBrowser, QApplication from obspy.io import reftek from obspy import UTCDateTime diff --git a/sohstationviewer/controller/util.py b/sohstationviewer/controller/util.py index ae1f35e0e..d846fd008 100644 --- a/sohstationviewer/controller/util.py +++ b/sohstationviewer/controller/util.py @@ -9,10 +9,10 @@ from datetime import datetime from pathlib import Path from typing import List, Dict -from PySide2 import QtCore +from PySide6 import QtCore from typing import Tuple, Union -from PySide2.QtWidgets import QTextBrowser +from PySide6.QtWidgets import QTextBrowser from obspy import UTCDateTime from sohstationviewer.view.util.enums import LogType diff --git a/sohstationviewer/database/soh.db b/sohstationviewer/database/soh.db index 90430cd3be7ab2b25781a5f0d15c3f640e62b3a2..ad3f16f89d639912d745447ffd9203a951ee9e04 100755 GIT binary patch delta 155 zcmZp8z})bFd4e>f&_o$$Rv`wxyd4`;=K6E<7cnsLD>Cpa@~_#fD8S7h&wrc&h$0yn z82lMo8FU*NlS_+=Qu9h&GK*4^OY(~<^+StOi;DGgQWA6ZUGkGlbAgh@`tF_~`o;Mf z#U+U)nfZBTnW^QeMfxSF#Xu<#8K06^k_a@@YT`t*$wl!#9QkQx2I)y<d5aPz002^* BGQ|J@ delta 137 zcmZp8z})bFd4e<}>qHr6R#pbRc<GHPbN#s)7#NuNix~Ki@fU4Y6yWA(=ReK>M3ECG z%5kg#N&-RK#EE*7*TnlcWttaN<!4!DSunCN=!Pbj78RxDmAGUUr6!l;7gg$q<>!>< mrWWgm`h|Fg__(_02m5=3Wu}(LrzDmn>Ia1w8XGK1m;eBL-6_}r diff --git a/sohstationviewer/model/data_loader.py b/sohstationviewer/model/data_loader.py index 00cb6ff54..5c92a4e89 100644 --- a/sohstationviewer/model/data_loader.py +++ b/sohstationviewer/model/data_loader.py @@ -5,7 +5,7 @@ import traceback from pathlib import Path from typing import Union, List, Optional -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from sohstationviewer.conf import constants from sohstationviewer.controller.util import display_tracking_info diff --git a/sohstationviewer/model/data_type_model.py b/sohstationviewer/model/data_type_model.py index 2f8c6a5dd..f10173697 100644 --- a/sohstationviewer/model/data_type_model.py +++ b/sohstationviewer/model/data_type_model.py @@ -7,8 +7,8 @@ from typing import Optional, Union, List, Tuple, Dict from obspy import UTCDateTime from obspy.core import Stream -from PySide2 import QtCore -from PySide2 import QtWidgets +from PySide6 import QtCore +from PySide6 import QtWidgets from sohstationviewer.controller.util import display_tracking_info from sohstationviewer.conf import constants diff --git a/sohstationviewer/model/decimator.py b/sohstationviewer/model/decimator.py index 7054bd8b0..b9577163a 100644 --- a/sohstationviewer/model/decimator.py +++ b/sohstationviewer/model/decimator.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore +from PySide6 import QtCore from obspy import Trace # Global flag that determines whether the user requested to stop processing and diff --git a/sohstationviewer/model/downsampler.py b/sohstationviewer/model/downsampler.py index 3f1e5f139..03bf32245 100644 --- a/sohstationviewer/model/downsampler.py +++ b/sohstationviewer/model/downsampler.py @@ -4,7 +4,7 @@ This module provides access to a class that loads data in a separate thread. import math import numpy as np -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.conf import constants as const diff --git a/sohstationviewer/model/general_data/general_data.py b/sohstationviewer/model/general_data/general_data.py index 101538372..74b25dc74 100644 --- a/sohstationviewer/model/general_data/general_data.py +++ b/sohstationviewer/model/general_data/general_data.py @@ -7,8 +7,8 @@ import traceback from obspy import UTCDateTime -from PySide2 import QtCore -from PySide2 import QtWidgets +from PySide6 import QtCore +from PySide6 import QtWidgets from sohstationviewer.controller.util import \ display_tracking_info, get_valid_file_count, validate_file, validate_dir diff --git a/sohstationviewer/view/calendar/calendar_dialog.py b/sohstationviewer/view/calendar/calendar_dialog.py index ceb2e9ea1..48a491bbf 100644 --- a/sohstationviewer/view/calendar/calendar_dialog.py +++ b/sohstationviewer/view/calendar/calendar_dialog.py @@ -1,4 +1,4 @@ -from PySide2 import QtWidgets +from PySide6 import QtWidgets from sohstationviewer.view.ui.calendar_ui_qtdesigner import Ui_CalendarDialog diff --git a/sohstationviewer/view/calendar/calendar_widget.py b/sohstationviewer/view/calendar/calendar_widget.py index 07996636a..87e134368 100644 --- a/sohstationviewer/view/calendar/calendar_widget.py +++ b/sohstationviewer/view/calendar/calendar_widget.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class CalendarWidget(QtWidgets.QCalendarWidget): diff --git a/sohstationviewer/view/channel_prefer_dialog.py b/sohstationviewer/view/channel_prefer_dialog.py index 9775b9bf9..a79d20961 100755 --- a/sohstationviewer/view/channel_prefer_dialog.py +++ b/sohstationviewer/view/channel_prefer_dialog.py @@ -1,8 +1,8 @@ from typing import Dict, List, Union from pathlib import Path -from PySide2 import QtWidgets, QtCore -from PySide2.QtWidgets import QDialogButtonBox, QDialog, QPlainTextEdit, \ +from PySide6 import QtWidgets, QtCore +from PySide6.QtWidgets import QDialogButtonBox, QDialog, QPlainTextEdit, \ QMainWindow from sohstationviewer.database.process_db import ( diff --git a/sohstationviewer/view/date_edit_with_doy.py b/sohstationviewer/view/date_edit_with_doy.py index 5fc3ea5bd..ce3248036 100644 --- a/sohstationviewer/view/date_edit_with_doy.py +++ b/sohstationviewer/view/date_edit_with_doy.py @@ -1,8 +1,8 @@ -from PySide2.QtCore import Qt, QDate -from PySide2.QtGui import ( +from PySide6.QtCore import Qt, QDate +from PySide6.QtGui import ( QKeyEvent, QWheelEvent, QContextMenuEvent, ) -from PySide2.QtWidgets import ( +from PySide6.QtWidgets import ( QDateEdit, QLineEdit, QMenu, QAction, ) diff --git a/sohstationviewer/view/db_config/db_config_dialog.py b/sohstationviewer/view/db_config/db_config_dialog.py index 151fe6bb1..027981fb6 100755 --- a/sohstationviewer/view/db_config/db_config_dialog.py +++ b/sohstationviewer/view/db_config/db_config_dialog.py @@ -1,7 +1,7 @@ from __future__ import annotations from typing import Set, Dict -from PySide2 import QtWidgets, QtGui, QtCore +from PySide6 import QtWidgets, QtGui, QtCore from sohstationviewer.database.process_db import execute_db from sohstationviewer.view.util.one_instance_at_a_time import \ diff --git a/sohstationviewer/view/db_config/param_dialog.py b/sohstationviewer/view/db_config/param_dialog.py index 21ecf7bcc..2a5b6f131 100755 --- a/sohstationviewer/view/db_config/param_dialog.py +++ b/sohstationviewer/view/db_config/param_dialog.py @@ -5,9 +5,9 @@ NOTE: Cannot remove or change params that are already used for channels. """ from typing import List -from PySide2 import QtWidgets, QtCore -from PySide2.QtCore import Qt -from PySide2.QtWidgets import QComboBox, QWidget +from PySide6 import QtWidgets, QtCore +from PySide6.QtCore import Qt +from PySide6.QtWidgets import QComboBox, QWidget from sohstationviewer.conf.constants import ColorMode, ALL_COLOR_MODES from sohstationviewer.view.util.plot_func_names import plot_functions diff --git a/sohstationviewer/view/file_information/file_info_widget.py b/sohstationviewer/view/file_information/file_info_widget.py index 8c523ef13..1f977dac9 100644 --- a/sohstationviewer/view/file_information/file_info_widget.py +++ b/sohstationviewer/view/file_information/file_info_widget.py @@ -1,9 +1,9 @@ -from PySide2 import QtCore -from PySide2.QtGui import ( +from PySide6 import QtCore +from PySide6.QtGui import ( QContextMenuEvent, QGuiApplication, QKeySequence, QKeyEvent, ) -from PySide2.QtWidgets import QListWidget, QMenu, QAction +from PySide6.QtWidgets import QListWidget, QMenu, QAction class FileInfoWidget(QListWidget): diff --git a/sohstationviewer/view/file_list_widget.py b/sohstationviewer/view/file_list_widget.py index 8af3da9fe..373898468 100644 --- a/sohstationviewer/view/file_list_widget.py +++ b/sohstationviewer/view/file_list_widget.py @@ -1,4 +1,4 @@ -from PySide2 import QtWidgets +from PySide6 import QtWidgets class FileListItem(QtWidgets.QListWidgetItem): diff --git a/sohstationviewer/view/help_view.py b/sohstationviewer/view/help_view.py index d66da2f13..5d8fdb778 100644 --- a/sohstationviewer/view/help_view.py +++ b/sohstationviewer/view/help_view.py @@ -2,8 +2,8 @@ import sys from pathlib import Path from typing import Tuple, Callable, Union, List, Dict -from PySide2 import QtCore, QtGui, QtWidgets -from PySide2.QtWidgets import QStyle +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtWidgets import QStyle from sohstationviewer.view.util.functions import ( create_search_results_file, create_table_of_content_file) diff --git a/sohstationviewer/view/main_window.py b/sohstationviewer/view/main_window.py index ab6de9ff0..cd0735e9b 100755 --- a/sohstationviewer/view/main_window.py +++ b/sohstationviewer/view/main_window.py @@ -5,10 +5,10 @@ from datetime import datetime from typing import List, Tuple, Union, Dict from pathlib import Path -from PySide2 import QtCore, QtWidgets, QtGui -from PySide2.QtCore import QSize -from PySide2.QtGui import QFont, QPalette, QColor -from PySide2.QtWidgets import QFrame, QListWidgetItem, QMessageBox +from PySide6 import QtCore, QtWidgets, QtGui +from PySide6.QtCore import QSize +from PySide6.QtGui import QFont, QPalette, QColor +from PySide6.QtWidgets import QFrame, QListWidgetItem, QMessageBox from sohstationviewer.model.data_loader import DataLoader from sohstationviewer.model.general_data.general_data import \ diff --git a/sohstationviewer/view/plotting/gps_plot/gps_dialog.py b/sohstationviewer/view/plotting/gps_plot/gps_dialog.py index e2221bcf9..7526acfff 100644 --- a/sohstationviewer/view/plotting/gps_plot/gps_dialog.py +++ b/sohstationviewer/view/plotting/gps_plot/gps_dialog.py @@ -5,7 +5,7 @@ import traceback from pathlib import Path from typing import List, Optional, Literal, Iterable -from PySide2 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from matplotlib.axes import Axes from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as Canvas from matplotlib.figure import Figure diff --git a/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py b/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py index f8cec9281..c947fb734 100644 --- a/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py +++ b/sohstationviewer/view/plotting/plotting_widget/multi_threaded_plotting_widget.py @@ -2,7 +2,7 @@ from typing import Tuple, Union, Dict, List -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.model.data_type_model import DataTypeModel diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py b/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py index 764369320..5ca9a6f4b 100644 --- a/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py +++ b/sohstationviewer/view/plotting/plotting_widget/plotting_processor.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.conf import constants as const from sohstationviewer.view.plotting.plotting_widget.plotting_processor_helper\ diff --git a/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py b/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py index 970ba1903..a307ee3dc 100755 --- a/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py +++ b/sohstationviewer/view/plotting/plotting_widget/plotting_widget.py @@ -6,9 +6,9 @@ import numpy as np import matplotlib.text from matplotlib import pyplot as pl from matplotlib.transforms import Bbox -from PySide2.QtCore import QTimer, Qt -from PySide2 import QtCore, QtWidgets -from PySide2.QtWidgets import QWidget, QApplication, QTextBrowser +from PySide6.QtCore import QTimer, Qt +from PySide6 import QtCore, QtWidgets +from PySide6.QtWidgets import QWidget, QApplication, QTextBrowser from sohstationviewer.conf import constants from sohstationviewer.view.util.color import set_color_mode diff --git a/sohstationviewer/view/plotting/time_power_squared_dialog.py b/sohstationviewer/view/plotting/time_power_squared_dialog.py index 5e533b53b..4812476ab 100755 --- a/sohstationviewer/view/plotting/time_power_squared_dialog.py +++ b/sohstationviewer/view/plotting/time_power_squared_dialog.py @@ -3,7 +3,7 @@ from math import sqrt from typing import List, Tuple, Union import numpy as np -from PySide2 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from sohstationviewer.conf import constants as const from sohstationviewer.controller.plotting_data import ( diff --git a/sohstationviewer/view/plotting/time_power_squared_processor.py b/sohstationviewer/view/plotting/time_power_squared_processor.py index c554c6867..200ea544c 100644 --- a/sohstationviewer/view/plotting/time_power_squared_processor.py +++ b/sohstationviewer/view/plotting/time_power_squared_processor.py @@ -1,7 +1,7 @@ from typing import Dict, Optional, List import numpy as np -from PySide2 import QtCore +from PySide6 import QtCore from sohstationviewer.view.plotting.time_power_squared_helper import \ get_tps_for_discontinuous_data diff --git a/sohstationviewer/view/plotting/waveform_dialog.py b/sohstationviewer/view/plotting/waveform_dialog.py index 24c9a9a8c..2e9cf40b8 100755 --- a/sohstationviewer/view/plotting/waveform_dialog.py +++ b/sohstationviewer/view/plotting/waveform_dialog.py @@ -1,7 +1,7 @@ # Drawing waveform and mass position from typing import Tuple, Union, Dict -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from sohstationviewer.model.data_type_model import DataTypeModel diff --git a/sohstationviewer/view/plotting/waveform_processor.py b/sohstationviewer/view/plotting/waveform_processor.py index 8d6ef39b2..f98727f0e 100644 --- a/sohstationviewer/view/plotting/waveform_processor.py +++ b/sohstationviewer/view/plotting/waveform_processor.py @@ -1,6 +1,6 @@ from typing import List, Dict -from PySide2 import QtCore +from PySide6 import QtCore from obspy import UTCDateTime from obspy.core import Trace diff --git a/sohstationviewer/view/save_plot_dialog.py b/sohstationviewer/view/save_plot_dialog.py index 77a988f25..0de627299 100644 --- a/sohstationviewer/view/save_plot_dialog.py +++ b/sohstationviewer/view/save_plot_dialog.py @@ -4,8 +4,8 @@ import os from pathlib import Path from typing import Union, Optional -from PySide2 import QtWidgets, QtCore, QtGui -from PySide2.QtWidgets import QApplication, QWidget, QDialog +from PySide6 import QtWidgets, QtCore, QtGui +from PySide6.QtWidgets import QApplication, QWidget, QDialog from sohstationviewer.conf import constants diff --git a/sohstationviewer/view/search_message/highlight_delegate.py b/sohstationviewer/view/search_message/highlight_delegate.py index cda425ca1..50f3f86e9 100644 --- a/sohstationviewer/view/search_message/highlight_delegate.py +++ b/sohstationviewer/view/search_message/highlight_delegate.py @@ -2,8 +2,8 @@ Credit: https://stackoverflow.com/questions/53353450/how-to-highlight-a-words-in-qtablewidget-from-a-searchlist # noqa """ from typing import List, Dict -from PySide2 import QtCore, QtGui, QtWidgets -from PySide2.QtGui import QPen, QTextCursor, QTextCharFormat, QColor +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtGui import QPen, QTextCursor, QTextCharFormat, QColor class HighlightDelegate(QtWidgets.QStyledItemDelegate): diff --git a/sohstationviewer/view/search_message/search_message_dialog.py b/sohstationviewer/view/search_message/search_message_dialog.py index 56b4b2355..c535f494b 100644 --- a/sohstationviewer/view/search_message/search_message_dialog.py +++ b/sohstationviewer/view/search_message/search_message_dialog.py @@ -3,8 +3,8 @@ import os from pathlib import PosixPath, Path from typing import Dict, List, Tuple, Callable, Union, Optional -from PySide2 import QtGui, QtCore, QtWidgets -from PySide2.QtWidgets import QStyle +from PySide6 import QtGui, QtCore, QtWidgets +from PySide6.QtWidgets import QStyle from sohstationviewer.view.search_message.highlight_delegate import ( HighlightDelegate) diff --git a/sohstationviewer/view/select_buttons_dialog.py b/sohstationviewer/view/select_buttons_dialog.py index e8841fe6d..4cbf11c6f 100644 --- a/sohstationviewer/view/select_buttons_dialog.py +++ b/sohstationviewer/view/select_buttons_dialog.py @@ -2,7 +2,7 @@ import sys import platform import os -from PySide2 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from functools import partial diff --git a/sohstationviewer/view/ui/about_ui_qtdesigner.py b/sohstationviewer/view/ui/about_ui_qtdesigner.py index e1ecbbe22..8c402dd5a 100644 --- a/sohstationviewer/view/ui/about_ui_qtdesigner.py +++ b/sohstationviewer/view/ui/about_ui_qtdesigner.py @@ -8,7 +8,7 @@ # # WARNING! All changes made in this file will be lost! -from PySide2 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_About(object): def setupUi(self, About): diff --git a/sohstationviewer/view/ui/calendar_ui_qtdesigner.py b/sohstationviewer/view/ui/calendar_ui_qtdesigner.py index 81edc2dd9..4e225c0ea 100644 --- a/sohstationviewer/view/ui/calendar_ui_qtdesigner.py +++ b/sohstationviewer/view/ui/calendar_ui_qtdesigner.py @@ -8,7 +8,7 @@ # # WARNING! All changes made in this file will be lost! -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from sohstationviewer.view.calendar.calendar_widget import CalendarWidget diff --git a/sohstationviewer/view/ui/main_ui.py b/sohstationviewer/view/ui/main_ui.py index 4c98291a6..3e4387b6b 100755 --- a/sohstationviewer/view/ui/main_ui.py +++ b/sohstationviewer/view/ui/main_ui.py @@ -3,8 +3,8 @@ import configparser from pathlib import Path from typing import Union, List, Optional -from PySide2 import QtCore, QtGui, QtWidgets -from PySide2.QtWidgets import ( +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtWidgets import ( QMainWindow, QWidget, QTextBrowser, QPushButton, QLineEdit, QDateEdit, QListWidget, QCheckBox, QRadioButton, QMenu, QAction, QLabel, QFrame, QVBoxLayout, QHBoxLayout, QGridLayout, QAbstractItemView, QShortcut, diff --git a/sohstationviewer/view/util/one_instance_at_a_time.py b/sohstationviewer/view/util/one_instance_at_a_time.py index f0bbf7a34..dd6cd416d 100644 --- a/sohstationviewer/view/util/one_instance_at_a_time.py +++ b/sohstationviewer/view/util/one_instance_at_a_time.py @@ -1,7 +1,7 @@ from __future__ import annotations -from PySide2.QtGui import QCloseEvent -from PySide2.QtWidgets import QWidget +from PySide6.QtGui import QCloseEvent +from PySide6.QtWidgets import QWidget class DialogAlreadyOpenedError(Exception): -- GitLab