From 59dbf276b822d64c1315ec633eb8b4fe1fa43c89 Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 24 Feb 2025 09:38:33 +0800 Subject: [PATCH] =?UTF-8?q?[bugfix]=20=E8=B0=83=E6=95=B4updateUI=E5=86=85?= =?UTF-8?q?=E9=83=A8=E9=80=BB=E8=BE=91=EF=BC=8C=E6=96=B0=E5=A2=9E=E4=BF=A1?= =?UTF-8?q?=E5=8F=B7=E6=96=AD=E5=BC=80=E9=87=8D=E8=BF=9E=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 13 +- .../__pycache__/__init__.cpython-313.pyc | Bin 157 -> 135 bytes .../application_controller.cpython-313.pyc | Bin 3925 -> 3903 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 283 -> 261 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 308 -> 286 bytes .../ui_widget_card.cpython-313.pyc | Bin 10500 -> 10478 bytes .../__pycache__/widget_card.cpython-313.pyc | Bin 32265 -> 32243 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 170 -> 148 bytes .../ui_widget_channel.cpython-313.pyc | Bin 88699 -> 88677 bytes .../widget_channel.cpython-313.pyc | Bin 6584 -> 6562 bytes .../__pycache__/Ui_widget.cpython-313.pyc | Bin 76778 -> 76756 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 169 -> 147 bytes .../audio_filter_componet.cpython-313.pyc | Bin 50525 -> 54121 bytes .../audio_filter_controller.cpython-313.pyc | Bin 18221 -> 24237 bytes .../audio_filter_model.cpython-313.pyc | Bin 12513 -> 12491 bytes .../checkbox_header.cpython-313.pyc | Bin 3367 -> 3345 bytes .../__pycache__/resources.cpython-313.pyc | Bin 2096 -> 2074 bytes .../widget_filter/audio_filter_componet.py | 112 ++++++++++++++---- .../widget_filter/audio_filter_controller.py | 64 ++++------ .../__pycache__/log_handler.cpython-313.pyc | Bin 2437 -> 2415 bytes .../__pycache__/ui_widget_log.cpython-313.pyc | Bin 4212 -> 4190 bytes .../__pycache__/widget_log.cpython-313.pyc | Bin 5857 -> 5835 bytes .../__pycache__/__init__.cpython-313.pyc | Bin 167 -> 145 bytes .../ui_widget_main.cpython-313.pyc | Bin 58254 -> 58232 bytes .../__pycache__/widget_main.cpython-313.pyc | Bin 1211 -> 1189 bytes param_struct_test | 2 +- 26 files changed, 118 insertions(+), 73 deletions(-) diff --git a/app.py b/app.py index b2ffa89..2c66308 100644 --- a/app.py +++ b/app.py @@ -29,10 +29,6 @@ class MainWindow(QWidget): # 初始化日志系统 self.log_handler = setup_logger() - - # 加载配置文件 - self.config = self.load_config() - # 初始化服务 ServiceManager.instance().init_services("192.168.5.4", 12345) # 初始化应用控制器 @@ -46,9 +42,13 @@ class MainWindow(QWidget): # 设置日志处理器的目标窗口 self.log_handler.set_widget(self.widget_log) + # 加载配置文件 + self.config = self.load_config() + # 设置通道显示数量 channel_count = self.config['channels']['count'] - print(f"channel_count: {channel_count}") + logger.info(f"通道数量: {channel_count}") + self.widget_channel.set_visible_channels(channel_count) self.widget_main.ui.ListWidget_vLayout.addWidget(self.widget_card) @@ -64,7 +64,6 @@ class MainWindow(QWidget): self.widget_main.ui.ListWidget_vLayout.addWidget(self.test_button) self.create_filter_widget() - print("create_filter_widget") self.setup_connections() def load_config(self): @@ -140,7 +139,7 @@ if __name__ == '__main__': app = QApplication(sys.argv) main_window = MainWindow() - logger.info("开始添加测试卡片") + logger.info("软件启动") # for i in range(1, 6): # data = CardData( # name=f"测试项目 {i}", diff --git a/application/__pycache__/__init__.cpython-313.pyc b/application/__pycache__/__init__.cpython-313.pyc index cce8e1e0b6bb893aa329c6ca417ab7bbe3f22040..7d14cf3348aaa0715b46fc293ea6fc6b052eea63 100644 GIT binary patch delta 38 scmbQs*v`oPnU|M~0SL|?+&z)om|xAqD#o!au{b`svbZEQcVe;?0MnTa6951J delta 60 zcmZo?oXg1lnU|M~0SG3{+clBfSk=bGD#o!au{b`svbZEQHzu(tIU}?hw)(s~E?!#Nzni%HopL+?d3o)VHQyU diff --git a/component/widget_card/__pycache__/ui_widget_card.cpython-313.pyc b/component/widget_card/__pycache__/ui_widget_card.cpython-313.pyc index 8101f0f41d819b4a4fbcc0c21aae2d43e68078cb..d702ce54346a613e7c0705d425f1672db86c8b77 100644 GIT binary patch delta 41 vcmZn(dKbw3nU|M~0SL|?+`W-|GZVj=hgFPYSz>W~aAk2xYVPL8Op0m%C*KZb delta 63 zcmaDC*b>D3nU|M~0SN9t+qIEW~aAk2xYHmzoQF2CRNosOQX;G?f RK~Z9INoI2D=Ce$SY5?A#7lHr) diff --git a/component/widget_card/__pycache__/widget_card.cpython-313.pyc b/component/widget_card/__pycache__/widget_card.cpython-313.pyc index 16b22506482617f38178484578204bb1a6031b09..3dc688d27e8847c038708d1acd8fdd47cba55eda 100644 GIT binary patch delta 42 wcmeDD!}$3(BiCnMUM>b8IDc>>*CbYcV-Kqs$FjuY_~6RolGNPI2U$HT07g;|K>z>% delta 64 zcmezTo3Zl`BiCnMUM>b8IIXaeYZ9xfr;AmLV_9Nxd~juPNosCPVo`ENW=U#tNoi54 SZb4CEa!F=#>gLs~9u)xJuNQ>? diff --git a/component/widget_channel/__pycache__/__init__.cpython-313.pyc b/component/widget_channel/__pycache__/__init__.cpython-313.pyc index 01974309d5b7bfb2cd41f9a4e25aa7ebaff16fac..5afb7158ad691437f3b85283aa39f49333c07b30 100644 GIT binary patch delta 38 scmZ3*IE9h>GcPX}0}yCD-8_-onBUmLD#o!au{b`svbZEQcVeW~aAk2xYVPJqtZE_v6Gshd delta 63 zcmZ2vyu+CLGcPX}0}yaO*|m{7iB;9##VW?JEU`E~xU#q;H8&=)C^;juBsICDv?x`# RpeQl9Br`d6a}BGS2mq0Q6|n#S diff --git a/component/widget_filter/__pycache__/Ui_widget.cpython-313.pyc b/component/widget_filter/__pycache__/Ui_widget.cpython-313.pyc index 55a44f6b0c4813cabf2aa5336281b21da9fe6ca1..f41c12b7728e37c626e58a318279aa08d8973dbb 100644 GIT binary patch delta 47 zcmaELo#o1P7Vgiyyj%=G@WF0NBllKrMoDgdV-Kqs$FjuY_~6RolGNPop4^NJ6##rw B4@Lk0 delta 69 zcmca|o#oYa7Vgiyyj%=G@bK`~M((ZLjFQ}{o-S4~j%A6(@xhhFC8@bFiABj7nI);o YC8b5Fx&=jv$t9V|soRaY85b%50A6SqrT_o{ diff --git a/component/widget_filter/__pycache__/__init__.cpython-313.pyc b/component/widget_filter/__pycache__/__init__.cpython-313.pyc index e4f88846ad71628aeba09af8ed9e8ad0cddaba74..a3637de9ae95e832af9b3feecaf7b91bd2d1b862 100644 GIT binary patch delta 38 scmZ3!3ZEGx)kL0~lo6$CU2Dh4l@sB7s40r7y+yFRK`7kr@T z@zMO%CY31GcdbOdCu;D4kJuEOhntYD?uk{?YO1F>ZlkBQ+8#UqfPnZ2r>A?)es|`Z zZ~mG8pP7H=>RQF^JqrJOetuex{#2iwDEB{b*uO~KH*;LNEo*_@Q7kTU%qy*u*Qn19 zaE5V`Q4FORC5G8lVz^CjQ`>^9yo&aB9W^Vf4e6*2!J52i;N8JwKU7R{S@!e!(g_+V$v`MXQE>3IYOIkg$c{mXrtH7y z{~naTF(V0koa{x9f1^P&BpuIVgPiI`m&a_7iZ_>pzjz`_Xq={pz^PM>$vD7^g&HPo zoI2%)gjyzypEf1pWfq}f+F}~B;OS{T7>__2rF*hCeKaAN@;kP8UNeGjxXoN7khc=y zKOe+`u5TZ>Du+U2g1%e5nV=#BP8R6FYth4{g1}DYB10f-`c2SNobT#qb)&?mIE9go z8Un^bJ+vNr+9q-W{dbJhsg)>qxr=8ry;SrJM`9o#Ca}BGY2?aD6gS21P@&QZ-S!R!`NTtbRl z7~v8|vJqGOA=4#fwh39CmY)*`uU6Hqv(Y6O-NGQ3Fvu;W zxrDSfVMu4^=eIfABOK`xBHcoaONeRr>MJ4b!Tl6Y7kZE5eFDA_bY2zxKDw`G6!8i0 zP)b3+kM8?Fp{{gNx}MZS$9TFQmS+#kjo{7=rymP@m|n;y zp*)t!<9Z>V+-cpC&&0-=Xe@T+zJH)WmH;PWLwgp4Qy=CF>2xlR&nWqzhJ$6z1K{%+ ziy>vk+wh%jw4D2+-}59B`q@*7T^?hP<;iThs^nXq{6sD)TS~}J;mh)|gpuYk&3(250pkvP<4q9jhX%;L`k1vJCFbPfu}ThZ=+y zw8`!VW~B3eXph!IY+X%taJ@1N<}N6plRUd1iq9rscr6$nEzpzWvTk93n%oA{(lx^x zsWeV4ZAZ)X2x}48GmAZ(u)XsZV|Py-j<6WMSvp)@iP}1dUbc~3mE~p2i5l&cDB$O> z>*Yx`0mM*;iX!Z>21_O^v9Z=+br(2mgF;#TPqd{+EVjbI+9cjbAz!Vv@H7m*D~A}J z*o}oDla{(&auP1QCxNYkV`T`hSIFyEK2VYOXbeMO+uB8D44J2oqjcUBd*%F6=`K#C zNANbm@O3#fV9s^@)wsjx4T-DTv@VD@D&!06exW2yFl|#BDT580Qu!Q(d~Q>!GOUM_ z7&3|Z*988XW5bSO{TRY=1V0?O5TOJnZEhr@?A`pPiZnv*)*WG6=xapMq709Yv<*wk z5VnJ|VH{Zv6C2(om2{JYz~crT-KVbn)o2;Ps zM-27&$)z*3>CCJg?b1azj^3NMBhPKlbeS{1G-tKxvb}09AjqwYcj@B4(j|I>IKlM5 ztMAS|bokQn?0hvVi94IrFPl@yqnfM=dI;tpPRv-0b7A4@Iu2c1pvRu>xmwrY+F>)f zD=Uv^2<&N2ASLic^T_zk)TYO;+Ai6vic30{e;1Ck9~+c!&7E5*HDNsiUOiFb6tT!+ z(um7A2dfJZmLSw37!d{|u)NJu^j56mNo`NyWmr-puuQ_XfD!FoM6MO#3xq!+TtWC6 z;X0v7Q@RF*lZnJ3PdJ%M1d}S@`*CETs*rr2FE2fnK>P%i<)0CODvOt+04=9i&`p%n zV)fmQ7TPl%EN}U<>2I{Y*neTg%<|HC#ms+4dYr0#V{Sz49aw#4l-f&+NlN+CGX|b! z&hO5Jq~D>8M`@SJ7kCu*>gsMic4D{9=*JcWcJ$FBkJ2$~?n226nde9G8XjuTAL(1> UM=bAX?sNF{P7ar|KME)R1%zg4IRF3v delta 2908 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 suG=eT+t_1wTxTeA^?}Ms}0#Rh~jM;#|SAy71 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 k?h1t4Q-v8#gPUq$WnU2t(BI@z%Q2kQZuAOHXW diff --git a/component/widget_filter/__pycache__/audio_filter_model.cpython-313.pyc b/component/widget_filter/__pycache__/audio_filter_model.cpython-313.pyc index 899929f6b8d35effdeb9c3da1c4d51aeada5a0bc..dae53d9b04a16907a581da2901ae32e0d704c5b1 100644 GIT binary patch delta 40 ucmaEucsh~mGcPX}0}z})xRHyUiQmSW~aAk2xYHmzoQF2CRNosOQX;G?f RK~Z9INoI2DW;f>3oB)<^7B>I@ diff --git a/component/widget_filter/__pycache__/resources.cpython-313.pyc b/component/widget_filter/__pycache__/resources.cpython-313.pyc index 760073ee4b6aa3b01393283af466f50acdc622fd..835b1ae4fa7c5338080521d335e27c07911cd62c 100644 GIT binary patch delta 41 vcmdlWFiU{@GcPX}0}$*m+p>{cosHkv!z#wHEU`E~xU#q;HFtA3+f7CQ?&b`U delta 63 zcmbOwut9+PGcPX}0}wnsymceDI-9Dei&czcSz>W~aAk2xYHmzoQF2CRNosOQX;G?f RK~Z9INoI2DW=FQ0i~y9l7BK(- diff --git a/component/widget_filter/audio_filter_componet.py b/component/widget_filter/audio_filter_componet.py index b1cc684..020e31a 100644 --- a/component/widget_filter/audio_filter_componet.py +++ b/component/widget_filter/audio_filter_componet.py @@ -531,6 +531,81 @@ class AudioFilterWidget(QWidget): self.ui.pushButton.clicked.connect(lambda: self.send_params_clicked.emit()) # self.ui.pushButton_10.clicked.connect(lambda: self.get_params_clicked.emit()) + def disconnect_all_signals(self): + """安全地断开所有UI信号连接""" + # 断开参数输入框信号 + try: + self.ui.lineEdit_11.textChanged.disconnect() + self.ui.lineEdit_10.textChanged.disconnect() + self.ui.lineEdit_13.textChanged.disconnect() + self.ui.lineEdit_12.textChanged.disconnect() + except TypeError: + # 信号可能未连接,忽略错误 + pass + + # 断开滑块信号 + try: + self.ui.verticalSlider.valueChanged.disconnect() + self.ui.verticalSlider_2.valueChanged.disconnect() + self.ui.verticalSlider_3.valueChanged.disconnect() + self.ui.verticalSlider_4.valueChanged.disconnect() + except TypeError: + pass + + # 断开表格信号 + try: + self.ui.tableWidget.itemSelectionChanged.disconnect() + self.ui.tableWidget.itemChanged.disconnect() + except TypeError: + pass + + # 断开按钮信号 + try: + self.ui.pushButton_7.clicked.disconnect() # 添加滤波器按钮 + self.ui.pushButton_8.clicked.disconnect() # 删除滤波器按钮 + self.ui.pushButton.clicked.disconnect() # 发送参数按钮 + except TypeError: + pass + + def connect_param_signals(self): + """重新连接所有UI信号""" + # 连接参数输入框信号 + self.ui.lineEdit_11.textChanged.connect( + lambda v: self._on_param_changed('delay', v) + ) + self.ui.lineEdit_10.textChanged.connect( + lambda v: self._on_param_changed('volume', v) + ) + self.ui.lineEdit_13.textChanged.connect( + lambda v: self._on_param_changed('mix_right', v) + ) + self.ui.lineEdit_12.textChanged.connect( + lambda v: self._on_param_changed('mix_left', v) + ) + + # 连接滑块信号 + self.ui.verticalSlider.valueChanged.connect( + lambda v: self._on_slider_changed('freq', v) + ) + self.ui.verticalSlider_2.valueChanged.connect( + lambda v: self._on_slider_changed('q', v) + ) + self.ui.verticalSlider_3.valueChanged.connect( + lambda v: self._on_slider_changed('gain', v) + ) + self.ui.verticalSlider_4.valueChanged.connect( + lambda v: self._on_slider_changed('slope', v) + ) + + # 连接表格信号 + self.ui.tableWidget.itemSelectionChanged.connect(self._on_selection_changed) + self.ui.tableWidget.itemChanged.connect(self._on_table_item_changed) + + # 连接按钮信号 + self.ui.pushButton_7.clicked.connect(self._on_add_filter_clicked) + self.ui.pushButton_8.clicked.connect(self._on_delete_filter_clicked) + self.ui.pushButton.clicked.connect(lambda: self.send_params_clicked.emit()) + def setup_table(self): """初始化表格设置""" self.header_view = SCheckBoxHeaderView(0, Qt.Horizontal) @@ -918,11 +993,17 @@ class AudioFilterWidget(QWidget): def updateUI(self): """手动触发UI更新""" if hasattr(self, 'model'): - # 清空现有数据 - self.clear_ui_data() - # 从模型更新数据 - self.set_all_params(self.model.to_widget_params()) - + # 断开所有信号连接 + self.disconnect_all_signals() + try: + # 清空现有数据 + self.clear_ui_data() + # 从模型更新数据 + self.set_all_params(self.model.to_widget_params()) + finally: + # 确保信号总是被重新连接,即使发生异常 + self.connect_param_signals() + def clear_ui_data(self): """清空UI中的所有数据""" # 清空基础参数 @@ -944,27 +1025,6 @@ class AudioFilterWidget(QWidget): self.ui.verticalSlider_3.setValue(0) self.ui.verticalSlider_4.setValue(0) - def disconnect_param_signals(self): - """断开参数信号连接""" - self.ui.lineEdit_11.textChanged.disconnect() - self.ui.lineEdit_10.textChanged.disconnect() - self.ui.lineEdit_13.textChanged.disconnect() - self.ui.lineEdit_12.textChanged.disconnect() - - def connect_param_signals(self): - """重新连接参数信号""" - self.ui.lineEdit_11.textChanged.connect( - lambda v: self._on_param_changed('delay', v) - ) - self.ui.lineEdit_10.textChanged.connect( - lambda v: self._on_param_changed('volume', v) - ) - self.ui.lineEdit_13.textChanged.connect( - lambda v: self._on_param_changed('mix_right', v) - ) - self.ui.lineEdit_12.textChanged.connect( - lambda v: self._on_param_changed('mix_left', v) - ) if __name__ == "__main__": import sys diff --git a/component/widget_filter/audio_filter_controller.py b/component/widget_filter/audio_filter_controller.py index 08b24df..887ed7a 100644 --- a/component/widget_filter/audio_filter_controller.py +++ b/component/widget_filter/audio_filter_controller.py @@ -187,52 +187,38 @@ class AudioFilterController(QObject): try: self.state = AudioControllerState.UPDATING struct_data = res.data - print("struct_data:", struct_data) - print("\n") # 将结构体数据转换为模型数据 model_data = self._convert_struct_data_to_model(struct_data) - # 暂时断开widget的信号连接 - if self.widget: - self.widget.disconnect_param_signals() + # 更新通道参数 + self.model.set_channel_params(model_data['channel_params']) - try: - # 清除UI数据 - self.widget.clear_ui_data() + # 清除现有滤波器 + self.model.filters.clear() + + if model_data['channel_id'] == self.model.channel_id: + # 只添加有效的滤波器(所有参数都不为0) + valid_filters = [ + filter_param for filter_param in model_data['filters'] + if any([ + filter_param.frequency != 0, + filter_param.q_value != 0, + filter_param.gain != 0, + filter_param.slope != 0 + ]) + ] - # 更新通道参数 - self.model.set_channel_params(model_data['channel_params']) + # 更新model的filters列表 + self.model.filters = valid_filters - # 清除现有滤波器 - self.model.filters.clear() - - if model_data['channel_id'] == self.model.channel_id: - # 只添加有效的滤波器(所有参数都不为0) - valid_filters = [ - filter_param for filter_param in model_data['filters'] - if any([ - filter_param.frequency != 0, - filter_param.q_value != 0, - filter_param.gain != 0, - filter_param.slope != 0 - ]) - ] - - # 更新model的filters列表 - self.model.filters = valid_filters - - print("有效的滤波器数量:", len(self.model.filters)) - print(f"bbbbb, self.model.channel_params:{self.model.channel_params}") - - # 从模型更新数据 - print(f"aaaaa to_widget_params:{self.model.to_widget_params()}") - self.widget.set_all_params(self.model.to_widget_params()) - - finally: - # 恢复widget的信号连接 - if self.widget: - self.widget.connect_param_signals() + print("有效的滤波器数量:", len(self.model.filters)) + + # 使用widget的updateUI方法来更新UI + if self.widget: + self.widget.updateUI() + + self.state = AudioControllerState.IDLE except Exception as e: self.state = AudioControllerState.ERROR diff --git a/component/widget_log/__pycache__/log_handler.cpython-313.pyc b/component/widget_log/__pycache__/log_handler.cpython-313.pyc index f87d8e4d18941c31e5f251ca6eb98bcfc2db5434..4242896023653d842a1c3daddaefcad6da6ab5f8 100644 GIT binary patch delta 41 vcmZn_elNuRnU|M~0SL|?+`W-|CnLX+hgFPYSz>W~aAk2xYVPKjjC0rl77Y$d delta 63 zcmaDa)GEyVnU|M~0SLCf-L;W>C!?x|i&czcSz>W~aAk2xYHmzoQF2CRNosOQX;G?f RK~Z9INoI2D=F5z8*a5p=7exR7 diff --git a/component/widget_log/__pycache__/ui_widget_log.cpython-313.pyc b/component/widget_log/__pycache__/ui_widget_log.cpython-313.pyc index 259fa81b2ab35989e263e73dd38f3b4f2dc7e81c..2bde4ef5c4e68e2a1f484cd4c00ecdd7c4fed0ad 100644 GIT binary patch delta 41 vcmeyOa8H5zGcPX}0}z})xO*eFDF?rahgFPYSz>W~aAk2xYVPJ#4t@>*8!HV! delta 63 zcmcbo@I`_9GcPX}0}$+dxoac0DTk_;i&czcSz>W~aAk2xYHmzoQF2CRNosOQX;G?f RK~Z9INoI2DW`7QT4gkMb7CHa` diff --git a/component/widget_log/__pycache__/widget_log.cpython-313.pyc b/component/widget_log/__pycache__/widget_log.cpython-313.pyc index 9bff25755a4633748e92e9ca1d5e0ec9c2a34901..7a43192ef7506d72eba5c13f81c08e314e8cbf83 100644 GIT binary patch delta 41 wcmaE;ds>(KGcPX}0}z})xO*e_88&`H533l*vc%%};L75X)ZEQ~*q-tO04ie-H~;_u delta 63 zcmX@D`%strGcPX}0}$+dziT7+88%gS7poY@vc%%};L75X)ZCcFqU4OslGNmq(xOz| Sf}+IalFa1P&Cl4L@&f?dIT$zq diff --git a/component/widget_main/__pycache__/__init__.cpython-313.pyc b/component/widget_main/__pycache__/__init__.cpython-313.pyc index 806555aa0cc5830cb9a22c9b438e73661568b433..65cf329f99da95a73cd7d4584729d0a54373c365 100644 GIT binary patch delta 38 scmZ3^IFXV2GcPX}0}yz8**uZknBTy|D#o!au{b`svbZEQcVe;&0L~l>-v9sr delta 60 zcmbQpxSWyuGcPX}0}wnsymcbCv8tPkRg7a&ivyTGxuj+UM>b8IDc^WM(!PV`OQ46VjRm7i{pbUi%U{-H@~>Mj1>TC&k>CP delta 65 zcmexyjJfYPGxuj+UM>b8Q2nrLBlnKGsy;4OF^*-4#qq(F#U-h^F^NUV8JQ)i$t9&l Usk#M4iOD6I$*G$!-Cf2C04X*Z`Tzg` diff --git a/component/widget_main/__pycache__/widget_main.cpython-313.pyc b/component/widget_main/__pycache__/widget_main.cpython-313.pyc index 279f774b7af3778fbd4583c63f95642fdf740c31..f6c4131603c3b1f03ca666d0a9ab43ee155303b9 100644 GIT binary patch delta 41 vcmdnZxs;RpGcPX}0}x34-Mo=Ih>73W!z#wHEU`E~xU#q;HFt9plO+=X_O%Rf delta 63 zcmZ3=xto*wGcPX}0}$lg*|m{7h)LDc#VW?JEU`E~xU#q;H8&=)C^;juBsICDv?x`# RpeQl9Br`d6a}JXw699|V6_Ee{ diff --git a/param_struct_test b/param_struct_test index 5d3fc10..0e1cec2 160000 --- a/param_struct_test +++ b/param_struct_test @@ -1 +1 @@ -Subproject commit 5d3fc10c5ddbadfb5b8cd4825355fbabc9a42438 +Subproject commit 0e1cec2c5ddf5e17a624d18d503b8a41cac38def