refactor: prune orphaned attic modules and standardize project configurations
- Move orphaned modules (data_segment.py, contour_models.py, marching_squares.py) to attic/. - Standardize local settings logic, serial port parameters, and graph view plots. - Update pyproject.toml pyside6-project dependencies and configure gitignore.
This commit is contained in:
@@ -41,3 +41,6 @@ dist/
|
||||
*.ico
|
||||
# Superpowers brainstorming visual companion
|
||||
.superpowers/
|
||||
.llm-wiki/
|
||||
.agents/
|
||||
.pi/
|
||||
|
||||
+7
-3
@@ -49,7 +49,7 @@ files = [
|
||||
"src/pygui/ISC/Tabs/qmldir",
|
||||
"src/pygui/__main__.py",
|
||||
"src/pygui/backend/contour_models.py",
|
||||
"src/pygui/backend/crypto_helper.py",
|
||||
"src/pygui/backend/crypto/crypto_helper.py",
|
||||
"src/pygui/backend/csv_file_metadata.py",
|
||||
"src/pygui/backend/data_model.py",
|
||||
"src/pygui/backend/data_segment.py",
|
||||
@@ -103,7 +103,7 @@ environments = [
|
||||
# ===== Ruff Linter and Formatter =====
|
||||
[tool.ruff]
|
||||
target-version = "py311"
|
||||
line-length = 100
|
||||
line-length = 125
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = [
|
||||
@@ -113,7 +113,11 @@ select = [
|
||||
"I", # isort (import sorting)
|
||||
"N", # pep8-naming
|
||||
]
|
||||
ignore = []
|
||||
ignore = [
|
||||
"N802", # Function name should be lowercase (standard for Qt Slots and Properties)
|
||||
"N815", # Class attribute should not be mixedCase (standard for Qt Properties and Signals)
|
||||
"E702", # Multiple statements on one line (semicolon, standard for inline Qt property setters with self.update())
|
||||
]
|
||||
|
||||
# ===== Mypy Static Type Checker =====
|
||||
[tool.mypy]
|
||||
|
||||
@@ -225,7 +225,7 @@ Item {
|
||||
Layout.preferredWidth: 90
|
||||
Layout.preferredHeight: Theme.settingsButtonHeight
|
||||
onClicked: {
|
||||
settingsModel.setChamberId(chamberField.text);
|
||||
settingsModel.ChamberId = chamberField.text;
|
||||
settingsModel.saveSettings();
|
||||
}
|
||||
}
|
||||
@@ -296,7 +296,7 @@ Item {
|
||||
SettingsToggle {
|
||||
text: "Reverse Z Wafer"
|
||||
checked: settingsModel.reverseZWafer
|
||||
onToggled: settingsModel.setReverseZWafer(checked)
|
||||
onToggled: settingsModel.reverseZWafer = checked
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ from pygui.backend.controllers.session_controller import SessionController # no
|
||||
from pygui.backend.data.csv_file_metadata import CSVFileMetadata # noqa: F401
|
||||
from pygui.backend.data.csv_recorder import CsvRecorder # noqa: F401
|
||||
from pygui.backend.data.data_records import read_data_records # noqa: F401
|
||||
from pygui.backend.data.data_segment import DataSegment # noqa: F401
|
||||
from pygui.backend.data.file_browser import FileBrowser # noqa: F401
|
||||
from pygui.backend.data.local_settings import LocalSettings # noqa: F401
|
||||
from pygui.backend.data.local_settings_model import LocalSettingsModel # noqa: F401
|
||||
@@ -19,7 +18,6 @@ from pygui.backend.models.sensor_editor import SensorEditor # noqa: F401
|
||||
from pygui.backend.models.session_model import SessionModel # noqa: F401
|
||||
from pygui.backend.models.stability_detector import StabilityDetector # noqa: F401
|
||||
from pygui.backend.models.threshold_classifier import ThresholdConfig # noqa: F401
|
||||
from pygui.backend.visualization.contour_models import ContourLine, ContourSegment # noqa: F401
|
||||
from pygui.backend.visualization.graph_view import GraphView # noqa: F401
|
||||
from pygui.backend.visualization.rbf_heatmap import interpolate_field # noqa: F401
|
||||
from pygui.backend.visualization.wafer_map_item import WaferMapItem # noqa: F401
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@ from typing import List, Optional, Tuple
|
||||
|
||||
import numpy as np
|
||||
|
||||
from pygui.backend.visualization.contour_models import ContourLine, ContourSegment
|
||||
from pygui.backend.attic.contour_models import ContourLine, ContourSegment
|
||||
|
||||
|
||||
# ===== Contour Generation =====
|
||||
@@ -2,7 +2,6 @@
|
||||
from pygui.backend.data.csv_file_metadata import CSVFileMetadata
|
||||
from pygui.backend.data.csv_recorder import CsvRecorder
|
||||
from pygui.backend.data.data_records import is_official_csv, read_data_records, read_official_csv
|
||||
from pygui.backend.data.data_segment import DataSegment
|
||||
from pygui.backend.data.file_browser import FileBrowser
|
||||
from pygui.backend.data.local_settings import LocalSettings
|
||||
from pygui.backend.data.local_settings_model import LocalSettingsModel
|
||||
@@ -10,7 +9,6 @@ from pygui.backend.data.local_settings_model import LocalSettingsModel
|
||||
__all__ = [
|
||||
"CsvRecorder", "CSVFileMetadata",
|
||||
"read_data_records", "is_official_csv", "read_official_csv",
|
||||
"DataSegment",
|
||||
"FileBrowser",
|
||||
"LocalSettings", "LocalSettingsModel",
|
||||
]
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# ===== Settings Persistence Model =====
|
||||
class LocalSettings:
|
||||
@@ -51,7 +54,8 @@ class LocalSettings:
|
||||
if hasattr(settings, key):
|
||||
setattr(settings, key, value)
|
||||
except Exception as e:
|
||||
print(f"Error reading setting file: {e}")
|
||||
log = logging.getLogger(__name__)
|
||||
log.warning("Error reading setting file: %s",e)
|
||||
|
||||
return settings
|
||||
|
||||
@@ -66,7 +70,7 @@ class LocalSettings:
|
||||
with open(path, "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, indent=4)
|
||||
except Exception as e:
|
||||
print(f"Error saving settings: {e}")
|
||||
log.exception("Error saving settings: %s",e)
|
||||
|
||||
# ===== Master File Helpers =====
|
||||
@classmethod
|
||||
|
||||
@@ -334,27 +334,3 @@ class LocalSettingsModel(QObject):
|
||||
@Slot(str)
|
||||
def clearMaster(self, family: str) -> None:
|
||||
self.setMaster(family, "")
|
||||
|
||||
@Slot(str)
|
||||
def setChamberId(self, value: str) -> None:
|
||||
self.chamberId = value
|
||||
|
||||
@Slot(bool)
|
||||
def setReverseZWafer(self, value: bool) -> None:
|
||||
self.reverseZWafer = value
|
||||
|
||||
@Slot(bool)
|
||||
def setDebugMode(self, value: bool) -> None:
|
||||
self.debugMode = value
|
||||
|
||||
@Slot(int)
|
||||
def setWaferReadTimeout(self, value: int) -> None:
|
||||
self.waferReadTimeout = value
|
||||
|
||||
@Slot(int)
|
||||
def setWaferDetectTimeout(self, value: int) -> None:
|
||||
self.waferDetectTimeout = value
|
||||
|
||||
@Slot(int)
|
||||
def setWaferRetries(self, value: int) -> None:
|
||||
self.waferRetries = value
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# ===== Visualization Sub-package =====
|
||||
from pygui.backend.visualization.contour_models import ContourLine, ContourSegment
|
||||
from pygui.backend.visualization.graph_view import GraphView
|
||||
from pygui.backend.visualization.rbf_heatmap import interpolate_field
|
||||
from pygui.backend.visualization.wafer_map_item import WaferMapItem
|
||||
@@ -7,5 +6,4 @@ from pygui.backend.visualization.wafer_map_item import WaferMapItem
|
||||
__all__ = [
|
||||
"WaferMapItem", "GraphView",
|
||||
"interpolate_field",
|
||||
"ContourLine", "ContourSegment",
|
||||
]
|
||||
|
||||
@@ -9,16 +9,13 @@ from __future__ import annotations
|
||||
import logging
|
||||
from typing import Any, Optional
|
||||
|
||||
import pyqtgraph as pg
|
||||
from pyqtgraph import PlotWidget
|
||||
from PySide6.QtCore import Property, QObject, Signal, Slot
|
||||
from PySide6.QtWidgets import QWidget
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
# Import pyqtgraph after Qt is initialized
|
||||
import pyqtgraph as pg
|
||||
from pyqtgraph import PlotWidget
|
||||
|
||||
|
||||
class GraphView(QObject):
|
||||
"""QML-exposed controller for a pyqtgraph line chart.
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ class ZWaferParser:
|
||||
# ===== Header Parsing =====
|
||||
def _process_header(self, file_obj) -> ZWaferData:
|
||||
"""Parse header and sensor layout from open file object.
|
||||
|
||||
Handles two CSV row orderings:
|
||||
1. Label/X/Y rows BEFORE 'data' (fixture test format)
|
||||
2. 'data' row BEFORE Label/X/Y (some real CSV files)
|
||||
|
||||
@@ -196,7 +196,6 @@ class SerialPort:
|
||||
bytes 1016-1019 : Runtime (2 bytes hex → decimal seconds)
|
||||
bytes 1020-1023 : Cycle time (2 bytes hex → decimal cycles)
|
||||
"""
|
||||
raw = bytes.fromhex(hex_response)
|
||||
|
||||
family_code = self._hex_to_ascii(hex_response[0:2])
|
||||
serial_num = f"{family_code}{int(hex_response[2:6], 16):05d}"
|
||||
|
||||
Reference in New Issue
Block a user