Werkzeugmodule und Importmigration¶
Das historische Modul mpylab.tools.util sammelte Hilfsfunktionen aus
vielen unabhängigen Bereichen. Für externe Skripte bleibt es vorerst als
Kompatibilitätsfassade verfügbar. Neuer und gepflegter Code sollte dagegen
direkt aus den fokussierten Modulen importieren. Dadurch werden
Abhängigkeiten sichtbar und das generische Modul wächst nicht weiter.
Migrationsstrategie¶
Bestehende externe Skripte müssen nicht sofort geändert werden. Bei ihrer Pflege gelten folgende Regeln:
Ein vorhandener Import aus
mpylab.tools.utildarf bestehen bleiben, bis das Skript ohnehin bearbeitet wird.Importierte Namen werden einzeln durch die nachstehenden fokussierten Pfade ersetzt.
Neuer Code verwendet ausschließlich fokussierte Module.
util.pyerhält keine neuen Helfer oder Neuimplementierungen.
Die Kompatibilitätsfassade delegiert derzeit an dieselben Implementierungen wie die fokussierten Module. Das Ändern eines Imports soll daher kein Verhalten ändern. Die betroffenen Tests sollten trotzdem ausgeführt werden, besonders bei Terminaleingaben und Runtime-Introspection.
Importtabelle¶
Historischer Import |
Fokussiertes Modul |
Funktionen und Objekte |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Beispielsweise wird:
from mpylab.tools.util import format_block, locate, tstamp
ersetzt durch:
from mpylab.tools.files import locate
from mpylab.tools.logging_utils import tstamp
from mpylab.tools.text import format_block
Sonderfälle¶
Physikalische Konstanten¶
Neuer Code mit Einheiten verwendet SPEED_OF_LIGHT, mu_0,
epsilon_0 und Z_0. Diese Namen verweisen auf die geschützten Objekte
aus scuq.constants, verwenden kanonische SI-Einheiten und erhalten den
CODATA-2022-Unsicherheitsgraphen. Zum Beispiel:
from mpylab.tools.physical_constants import SPEED_OF_LIGHT, mu_0
from scuq.ucomponents import Context
wert, standardunsicherheit, einheit = Context().value_uncertainty_unit(mu_0)
Die Namen c, mu0 und eps0 bleiben zur Quellcode-Kompatibilität
gewöhnliche Floats mit SI-Werten und werden weiterhin von
mpylab.tools.util re-exportiert. Sie geben nur die Erwartungswerte aus.
mu0 und eps0 folgen nun den Werten des SI nach 2019 und CODATA, statt
mu0 als exakt 4*pi*1e-7 zu behandeln. pi bleibt
math.pi.
Der strikte SCUQ-Modus weist float(SPEED_OF_LIGHT) zurück, weil die
Konstante dimensionsbehaftet ist. An einer ausdrücklich einheitenlosen
Legacy-Schnittstelle wird zunächst in die gewünschte Einheit reduziert und
danach get_expectation_value_as_float() aufgerufen.
Die charakteristische Impedanz Zc = U/I einer Leitung oder TEM-Zelle ist
von der Vakuum-Feldimpedanz Z_0 = E/H zu unterscheiden. Eine typische
GTEM-Zelle besitzt Zc = 50 Ohm; Freiraum-Feldbeziehungen verwenden das
unsicherheitsbehaftete Z_0 aus scuq.constants (historisch durch
120*pi Ohm oder 377 Ohm angenähert). Insbesondere verwendet die
analytische e0y-Reihe nach IEC 61000-4-20, Gleichung (A.5), sqrt(Zc)
und nicht sqrt(Z_0).
Terminaleingaben¶
Für terminalartige Tastatureingaben dient mpylab.tools.keyboard.
Aufrufe können fehlschlagen, wenn kein echtes Terminal verbunden ist, etwa
in einer IDE, einem CI-Job oder einer Qt-Anwendung. In diesem Fall muss
mpylab.tools.keyboard.KeyboardUnavailableError behandelt oder ein
UI-Adapter verwendet werden. Das historische Modul liegt nur noch unter
mpylab.tools.legacy.unixcrt; neue Abhängigkeiten davon sollen nicht
entstehen.
Runtime-Introspection¶
get_var_from_nearest_outerframe bleibt verfügbar, weil Autosave und
einige dynamische Messskripte weiterhin Stack-Frame-Zugriffe verwenden. Neue
APIs sollen Werte explizit übergeben. Insbesondere erhalten DOT-Conditions
einen expliziten Kontext, wie es die DOT-Referenz beschreibt.
Statistik und Autokorrelation¶
Für gewöhnliche geordnete Sequenzen dient
mpylab.tools.stats.autocorrelation(), auch bei MSC-Auswertungen. Das
separate Modul mpylab.tools.autocorrelation ist für winkelförmige oder
nicht äquidistant abgetastete Daten und spline-basierte Rauschbehandlung
vorgesehen.
Faktoren für erweiterte Unsicherheiten werden ebenfalls in
mpylab.tools.stats bereitgestellt. Neue Anwendungen importieren
get_k_factor, get_k_factor_norm, get_k_factor_rect,
get_k_factor_ushape und get_dB_factors von dort. Das frühere Modul
mpylab.tools.uncertain bleibt vorübergehend als Importkompatibilität
erhalten und enthält keine eigene Implementierung mehr.
Komplexe Größen und Pfadkorrekturen¶
Wenn reelle und komplexe SCUQ-Unsicherheitsmodelle zusammentreffen, wird
mpylab.tools.quantity_uncertainty verwendet. Der
Leitfaden zu Pfadkorrekturen dokumentiert
Multiplikation, Division, Betragsbildung und den vorbereiteten schnellen
Pfad. Diese Logik gehört nicht zurück in generische Hilfsfunktionen.
Werkzeuge zur Konfigurationspflege¶
DOT- und NPORT-Migration sind Kommandozeilenabläufe und keine util-Helfer.
Die Konfigurationsprüfung beschreibt
mpylab-dot-migrate, mpylab-nport-migrate und
mpylab-nport-check.
VISA-Ressource gezielt prüfen¶
Mit mpylab-visa-probe kann genau eine bekannte VISA-Ressource geöffnet
und wieder geschlossen werden. Das Werkzeug ruft bewusst kein
list_resources auf und sucht daher weder GPIB- noch andere VISA-Busse ab.
Ohne weitere Option führt es keine Abfrage und keinen Schreibzugriff am
Gerät aus:
mpylab-visa-probe GPIB0::29::INSTR
Eine explizit freigegebene, nur lesende Abfrage kann mit --query gesendet
werden. Das Werkzeug akzeptiert nur nicht leere Einzelabfragen, die mit
? enden und kein Semikolon enthalten:
mpylab-visa-probe GPIB0::29::INSTR --query '*IDN?'
Mit --timeout-ms wird der VISA-Timeout in Millisekunden festgelegt; der
Wert muss positiv sein und ist standardmäßig 3000. Falls mehrere VISA-
Backends installiert sind, kann das Backend wie bei PyVISA üblich über
PYVISA_LIBRARY gewählt werden, zum Beispiel @py für PyVISA-py.
Die Validierung des Befehls und die Tests mit simulierten Ressourcen sind hardwarefrei. Das Öffnen einer realen Ressource darf dagegen nur auf einem Rechner mit Hardwarezugriff und nach ausdrücklicher Freigabe erfolgen. Die vollständige Optionsreferenz steht unter Command-line tools.
API-Referenzen¶
Die kuratierte, englischsprachige Utility-API
enthält die wichtigsten öffentlichen Konvertierungs- und Skripthelfer. Die
vollständige generierte API listet außerdem
die fokussierten Module und die vorübergehende Kompatibilitätsfassade
mpylab.tools.util auf.