Skip to main content
IBM Quantum Platform

Dienstprogramme

qiskit.utils


Einstellung von Unterstützung

add_deprecation_to_docstring

qiskit.utils.add_deprecation_to_docstring(func, msg, *, since, pending)

GitHub

Fügen Sie die Verwerfungsmeldung dynamisch in den Docstring von funcein.

Parameter

  • func (Callable) – Die zu ändernde Funktion.
  • msg (str) – Die vollständige Meldung über die Verwerfung.
  • since (str | None) – Die Version, mit der die Verwerfung begann.
  • pending (bool) – Ist die Verjährung noch nicht eingetreten?

Rückgabetyp

Keine

deprecate_arg

qiskit.utils.deprecate_arg(name, *, since, additional_msg=None, deprecation_description=None, pending=False, package_name='Qiskit', new_alias=None, predicate=None, removal_timeline='no earlier than 3 months after the release date')

GitHub

Decorator, um anzuzeigen, dass ein Argument in irgendeiner Weise veraltet ist.

Dieser Dekorator kann mehrfach für dieselbe Funktion verwendet werden, einmal pro veraltetem Argument. Sie sollte unter anderen Dekorateuren wie @staticmethod und Immobilien-Dekorateuren angesiedelt sein.

Parameter

  • name (str) – Der Name des veralteten Arguments.
  • since (str) – Die Version, mit der die Verwerfung begann. Wenn die Verwerfung noch nicht abgeschlossen ist, setzen Sie die Version auf den Zeitpunkt des Beginns der Verwerfung; später, wenn Sie von "nicht abgeschlossen" zu "veraltet" wechseln, aktualisieren Sie auf die neue Version.
  • deprecation_description (str | None) – Was wird veraltet sein? E.g. "Das Argument my_arg von my_func() wird auf None gesetzt." Wenn es nicht gesetzt ist, wird als Standardwert " {func_name} 's argument {name} " angezeigt.
  • additional_msg (str | None) – Geben Sie hier zusätzliche Informationen an, z. B. was stattdessen verwendet werden soll (wenn new_alias nicht gesetzt ist). Zum Beispiel: "Verwenden Sie stattdessen das Argument new_arg, das ähnlich ist, aber keine Auswirkungen auf den Aufbau der Schaltung hat."
  • pending (bool) – Auf True gesetzt, wenn die Verwerfung noch nicht abgeschlossen ist.
  • package_name (str) – Der Paketname, der in der Verwerfungsmeldung angezeigt wird (z. B. der Paketname PyPI ).
  • new_alias (str | None) – Wurde das Argument lediglich umbenannt, setzen Sie diesen Wert auf den neuen Namen. Der Dekorator wird die kwargs dynamisch aktualisieren, so dass, wenn der Benutzer das alte Argument setzt, es als das neue_alias Argument übergeben wird.
  • predicate (Callable[[Any], bool] | None) – Protokollieren Sie die Laufzeitwarnung nur, wenn das Prädikat „True“ zurückgibt. Dies ist nützlich, um bestimmte Werte oder Typen für ein Argument als veraltet zu kennzeichnen, z. B. lambda my_arg: isinstance(my_arg, dict). Unabhängig davon, ob ein Prädikat festgelegt ist, wird die Laufzeitwarnung nur protokolliert, wenn der Benutzer das Argument angibt.
  • removal_timeline (str) – Wie schnell kann diese Verwerfung beseitigt werden? Erwartet einen Wert wie "frühestens 6 Monate nach dem letzten Release" oder "in Release 9.99 ".

Rückgabe

Der dekorierte Callable.

Rückgabetyp

Aufrufbar

deprecate_func

qiskit.utils.deprecate_func(*, since, additional_msg=None, pending=False, package_name='Qiskit', removal_timeline='no earlier than 3 months after the release date', is_property=False, stacklevel=2)

GitHub

Decorator, um anzuzeigen, dass eine Funktion veraltet ist.

Er sollte unter anderen Dekoratoren wie @staticmethod und Eigenschaftsdekoratoren platziert werden.

Wenn Sie eine Klasse verwerfen, setzen Sie diesen Dekorator auf ihre __init__-Funktion.

Parameter

  • since (str) – Die Version, mit der die Verwerfung begann. Wenn die Verwerfung noch nicht abgeschlossen ist, setzen Sie die Version auf den Zeitpunkt des Beginns der Verwerfung; wenn Sie jedoch später von "ausstehend" zu "veraltet" wechseln, aktualisieren Sie since auf die neue Version.
  • additional_msg (str | None) – Geben Sie hier zusätzliche Informationen an, z. B. was Sie stattdessen verwenden sollen. Zum Beispiel: "Verwenden Sie stattdessen die Funktion new_func aus dem Modul <my_module>.<my_submodule>, die ähnlich ist, aber GPU-Beschleunigung verwendet."
  • pending (bool) – Wird auf True gesetzt, wenn die Verwerfung noch nicht abgeschlossen ist.
  • package_name (str) – Der Paketname, der in der Verwerfungsmeldung angezeigt wird (z. B. der Paketname PyPI ).
  • removal_timeline (str) – Wie schnell kann diese Verwerfung beseitigt werden? Erwartet einen Wert wie "frühestens 6 Monate nach dem letzten Release" oder "in Release 9.99 ".
  • is_property (bool) – Wenn es sich bei der veralteten Funktion um eine @property handelt, setzen Sie diesen Wert auf „True“, damit die generierte Meldung dies korrekt als solche kennzeichnet. (Dies ist für Eigenschaftssetter nicht erforderlich, da deren Docstring von „ Python “ ignoriert wird.)
  • stacklevel (int) – Stacklevel übergeben an warnings.warn().

Rückgabe

Der dekorierte Callable.

Rückgabetyp

Aufrufbar


Umrechnung von SI-Einheiten

apply_prefix

qiskit.utils.apply_prefix(value, unit)

GitHub

Wenden Sie bei einem Präfix für eine SI-Einheit und einem Wert das Präfix an, um in eine SI-Standardeinheit umzurechnen.

Parameter

Rückgabe

Umgerechneter Wert.

Rückgabetyp

float | ParameterExpression

Anmerkung

Dies kann aufgrund der internen Darstellung des Float-Objekts zu einem winzigen Wertfehler führen. Siehe https://docs.python.org/3/tutorial/floatingpoint.html für Einzelheiten.

Erhöht

ValueError – Falls das unit nicht erkannt wird.

Parameter

Rückgabetyp

float | ParameterExpression

detach_prefix

qiskit.utils.detach_prefix(value, decimal=None)

GitHub

Finden Sie bei einem SI-Einheitswert das am besten geeignete Präfix zur Skalierung des Wertes.

Zum Beispiel wird value = 1.3e8 in ein Tupel von (130.0, "M") umgewandelt, das einen skalierten Wert und eine Hilfseinheit darstellt, die zur Anzeige des Wertes verwendet werden kann. Im obigen Beispiel könnte dieser Wert als 130 MHz angezeigt werden (die Einheit ist hier frei wählbar).

Beispiel

>>> value, prefix = detach_prefix(1e4)
>>> print(f"{value} {prefix}Hz")
10 kHz

Parameter

  • value (float) – Die Nummer für die Suche nach dem Präfix.
  • decimal (int | None) – Optional. Eine beliebige ganzzahlige Zahl, die die Genauigkeit des Wertes angibt. Falls angegeben, wird versucht, die Mantisse zu runden und das Präfix an den gerundeten Wert anzupassen. Zum Beispiel wird 999_999.91 mit decimal=4 zu 999.9999 k, während 1.0 M mit decimal=3 oder weniger wird.

Rückgabe

Ein Tupel aus skaliertem Wert und Präfix.

Rückgabetyp

tupel[ float, str ]

Anmerkung

Dies kann aufgrund der internen Darstellung des Float-Objekts zu einem winzigen Wertfehler führen. Siehe https://docs.python.org/3/tutorial/floatingpoint.html für Einzelheiten.

Erhöht

  • ValueError - Wenn die value außerhalb des Bereichs liegt.
  • ValueError - Wenn die value keine reelle Zahl ist.

Parameter

Rückgabetyp

tupel[ float, str ]


Klassenwerkzeuge

wrap_method

qiskit.utils.wrap_method(cls, name, *, before=None, after=None)

GitHub

Umhüllen Sie die Funktionalität der Instanz- oder Klassenmethode cls.name mit zusätzlichem Verhalten before und after.

Dadurch wird cls geändert, wobei das Attribut name durch die neue Funktionalität ersetzt wird. Dies ist nützlich bei der Erstellung von Klassendekoratoren. Die Methode kann stattdessen in jeder übergeordneten Klasse definiert werden.

Wenn entweder before oder after angegeben werden, sollten sie callables mit einer kompatiblen Signatur zu der Methode sein, auf die verwiesen wird. Sie werden je nach Bedarf unmittelbar vor oder nach der Methode aufgerufen, und ein etwaiger Rückgabewert wird ignoriert.

Parameter

  • cls (type) – die zu ändernde Klasse.
  • name (str) – der Name der Methode der zu umschließenden Klasse.
  • before (Callable | None) – eine Funktion, die vor der umschlossenen Methode aufgerufen werden soll.
  • after (Callable | None) – eine Funktion, die nach der umschlossenen Methode aufgerufen werden soll.

Erhöht

ValueError - wenn die genannte Methode weder in der Klasse noch in einer übergeordneten Klasse definiert ist.


Multiprocessing

default_num_processes

qiskit.utils.default_num_processes()

GitHub

Ermittelt die Anzahl der Prozesse, die ein paralleler Aufruf mit mehreren Prozessen standardmäßig verwendet.

Solche Funktionen akzeptieren normalerweise auch ein num_processes Schlüsselwortargument, das den von dieser Funktion zurückgegebenen Wert ersetzt.

In der Reihenfolge der Priorität (von oben nach unten) wird der Rückgabewert sein:

  1. Die Umgebungsvariable QISKIT_NUM_PROCS , falls gesetzt.
  2. Der num_processes Schlüssel der Qiskit-Benutzerkonfigurationsdatei, falls gesetzt.
  3. Die Hälfte der logischen CPUs, die diesem Prozess zur Verfügung stehen, sofern dies ermittelt werden kann. Dies steht stellvertretend für die Anzahl der physischen CPUs, wobei von zweifachem simultanen Multithreading (SMT) ausgegangen wird; empirisch gesehen scheint die Multiprozessing-Leistung von Qiskit schlechter zu sein, wenn versucht wird, SMT-Kerne zu verwenden.
  4. 1, wenn alles andere versagt.

Wenn ein benutzerkonfigurierter Wert auf eine Zahl kleiner als 1 gesetzt wird, wird er so behandelt, als wäre er 1.

Rückgabetyp

int

is_main_process

qiskit.utils.is_main_process()

GitHub

Prüft, ob der aktuelle Prozess der Hauptprozess ist.

Da Python 3.8, ist dies identisch mit der Standardberechnungsmethode Python :

>>> import multiprocessing
>>> multiprocessing.parent_process() is None

Diese Funktion wird aus Gründen der Abwärtskompatibilität beibehalten, aber es gibt kaum einen Grund, nicht die integrierten Werkzeuge von Python zu verwenden.

Rückgabetyp

bool

local_hardware_info

qiskit.utils.local_hardware_info()

GitHub

Grundlegende Hardware-Informationen über den lokalen Rechner.

Versucht, die Anzahl der physischen CPUs im Rechner zu schätzen, auch wenn Hyperthreading aktiviert ist. Die CPU-Anzahl ist standardmäßig 1, wenn die tatsächliche Anzahl nicht ermittelt werden kann.

Rückgabe

Die Hardware-Informationen.

Rückgabetyp

dict

should_run_in_parallel

qiskit.utils.should_run_in_parallel(num_processes=None)

GitHub

Entscheiden Sie, ob eine Multiprozessor-Funktion Unterprozesse zur Parallelisierung erzeugen soll.

Dies ist insbesondere die Art und Weise, wie parallel_map() entscheidet, ob Multiprocessing verwendet werden soll oder nicht. Das Argument num_processes allein erzwingt keine Parallelität; standardmäßig verwendet Qiskit nur dann prozessbasierte Parallelität, wenn eine fork-ähnliche Methode zum Starten von Prozessen in Kraft ist. Sie können diese Entscheidung außer Kraft setzen, indem Sie entweder die multiprocessing startmethode, die Sie verwenden, die Umgebungsvariable QISKIT_PARALLEL auf "TRUE" oder parallel = true in Ihrer Benutzereinstellungsdatei setzen.

Diese Funktion enthält zwei Kontextmanager, die verwendet werden können, um den Rückgabewert dieser Funktion vorübergehend zu ändern:

override

should_run_in_parallel.override(value)

GitHub

Ein Kontextmanager, in dem should_run_in_parallel() die angegebene value zurückgeben wird.

Dies ist keine vollständige Überschreibung; Qiskit wird nie versuchen zu parallelisieren, wenn nur ein einziger Prozess verfügbar ist, und wird keine prozessbasierte Parallelität mit einer Tiefe von mehr als 1 zulassen.

Parameter

value (bool)

ignore_user_settings

should_run_in_parallel.ignore_user_settings()

GitHub

Ein Kontextmanager, in dem should_run_in_parallel() umgebungskonfigurationsvariablen ignorieren wird.

Insbesondere die Umgebungsvariable QISKIT_PARALLEL und die Benutzerkonfigurationsdatei werden in diesem Zusammenhang ignoriert.

Parameter

num_processes (int | None) – die maximale Anzahl von Prozessen, die zur Verwendung angefordert werden (None ist der Standard).

Rückgabetyp

bool

Beispiele

Setzen Sie die konfigurierten Einstellungen vorübergehend außer Kraft, um die Parallelität zu deaktivieren:

>>> with should_run_in_parallel.override(True):
...     assert should_run_in_parallel(8)
>>> with should_run_in_parallel.override(False):
...     assert not should_run_in_parallel(8)

Eine Hilfsfunktion für den Aufruf einer benutzerdefinierten Funktion mit Python ProcessPoolExecutor. Mit dieser Funktion können Aufgaben parallel ausgeführt werden.

parallel_map

qiskit.utils.parallel_map(task, values, task_args=(), task_kwargs=None, num_processes=None)

GitHub

Parallele Ausführung eines Mappings von Werten auf die Funktionsaufgabe. Dies ist funktional äquivalent zu:

result = [task(value, *task_args, **task_kwargs) for value in values]

Dies parallelisiert die Ergebnisse, wenn die Anzahl von values größer als eins ist und should_run_in_parallel() gibt True zurück. Andernfalls wird sie in Serie ausgeführt.

Parameter

  • task (func) – Funktion, die für jeden Wert in values aufgerufen werden soll.
  • values (array_like) – Liste oder Array von Werten, für die die Funktion task ausgewertet werden soll.
  • task_args (list) – Optionale zusätzliche Argumente für die Funktion task .
  • task_kwargs (dict) – Optionales zusätzliches Schlüsselwortargument für die Funktion task .
  • num_processes (int) – Anzahl der zu startenden Prozesse. Wenn nicht angegeben, wird der Rückgabewert von default_num_processes() verwendet.

Rückgabe

Die Ergebnisliste enthält den Wert von task(value, *task_args, **task_kwargs) für jeden Wert in values.

Rückgabetyp

Ergebnis

Beispiele

import time
from qiskit.utils import parallel_map
def func(_):
        time.sleep(0.1)
        return 0
parallel_map(func, list(range(10)));

Optionale Abhängigkeitsprüfer

Qiskit verfügt über mehrere Funktionen, die nur aktiviert werden, wenn bestimmte optionale Abhängigkeiten erfüllt sind. Dieses Modul, qiskit.utils.optionalsenthält eine Sammlung von Objekten, die verwendet werden können, um zu testen, ob eine bestimmte Funktionalität verfügbar ist, und die optional die Meldung MissingOptionalLibraryError auslösen, wenn die Funktionalität nicht verfügbar ist.

Verfügbare Tester

Qiskit-Komponenten

qiskit.utils.optionals.HAS_AER

Qiskit Aer bietet leistungsstarke Simulatoren für die in Qiskit erstellten Quantenschaltungen.

qiskit.utils.optionals.HAS_IBMQ

Die Qiskit IBMQ Provider wird für den Zugriff auf IBM Quantum-Hardware in der IBM Cloud verwendet.

qiskit.utils.optionals.HAS_IGNIS

Qiskit Ignis bietet Werkzeuge für die Überprüfung von Quantenhardware, die Charakterisierung von Rauschen und die Fehlerkorrektur.

qiskit.utils.optionals.HAS_TOQM

Qiskit TOQM bietet Transpiler-Pässe für den zeitoptimalen Qubit-Mapping-Algorithmus.

Externe Bibliotheken für „ Python “

qiskit.utils.optionals.HAS_CONSTRAINT

python-constraint ist ein Löser für Constraint-Satisfaction-Probleme, der im CSPLayout Transpiler-Durchlauf zum Einsatz kommt.

qiskit.utils.optionals.HAS_CPLEX

Der CPLEX-Optimierer von „ IBM “ ist ein leistungsstarker Solver für mathematische Programmierung, der lineare, gemischt-ganzzahlige und quadratische Programmierung unterstützt. Dies wird von Qiskit nicht mehr verwendet, war jedoch früher der Fall, und die Option wurde aus Gründen der Abwärtskompatibilität beibehalten.

qiskit.utils.optionals.HAS_CVXPY

CVXPY ist ein Python Paket zum Lösen konvexer Optimierungsprobleme. Sie ist erforderlich für die Berechnung von Diamantnormen mit quantum_info.diamond_norm().

qiskit.utils.optionals.HAS_DOCPLEX

IBM Decision Optimization CPLEX Modelling ist eine Bibliothek für präskriptive Analysen. Genau wie CPLEX wird dies von Qiskit nicht mehr verwendet, war jedoch früher der Fall, und die Option wurde aus Gründen der Abwärtskompatibilität beibehalten.

qiskit.utils.optionals.HAS_FIXTURES

Die Testsuite verfügt über zusätzliche Funktionen, die verfügbar sind, wenn das optionale Modul fixtures installiert ist. Dies erfordert in der Regel auch HAS_TESTTOOLS auch. Dies ist im Allgemeinen nur für Qiskit-Entwickler erforderlich.

qiskit.utils.optionals.HAS_IPYTHON

Wenn der IPython-Kernel verfügbar ist, werden bestimmte zusätzliche Visualisierungen und Zeilenmagie zur Verfügung gestellt.

qiskit.utils.optionals.HAS_IPYWIDGETS

Überwachungs-Widgets für Aufträge, die auf externen Backends laufen, können bereitgestellt werden, wenn ipywidgets verfügbar ist.

qiskit.utils.optionals.HAS_JAX

Einige Methoden der Gradientenberechnung in opflow.gradients erfordern JAX für die Autodifferenzierung.

qiskit.utils.optionals.HAS_JUPYTER

Einige der Tests erfordern eine vollständige Jupyter-Installation, um die Interaktivitätsfunktionen zu testen.

qiskit.utils.optionals.HAS_MATPLOTLIB

Qiskit bietet mehrere Visualisierungswerkzeuge in dem visualization modul. Fast alle von ihnen werden mit Matplotlib erstellt, die installiert sein müssen, um sie zu nutzen.

qiskit.utils.optionals.HAS_NETWORKX

Wird von Qiskit nicht mehr verwendet. Intern verwendet Qiskit jetzt die leistungsstarke Rustworkx-Bibliothek als Kernabhängigkeit, und während der Umstellungsphase war es manchmal praktisch, Dinge in das Python -only NetworkX format zu konvertieren. Einige Tests von Anwendungsmodulen, wie z. B. Qiskit Nature, verwenden immer noch NetworkX.

qiskit.utils.optionals.HAS_NLOPT

NLopt ist eine Bibliothek für nichtlineare Optimierung, die von den globalen Optimierern im Modul algorithms.optimizers verwendet wird.

qiskit.utils.optionals.HAS_PIL

PIL ist eine Bibliothek zur Bildbearbeitung, die auf dem Prinzip „ Python “ basiert. Qiskit verwendet tatsächlich den „Pillow “-Fork von PIL, sofern dieser bei der Erstellung bestimmter Visualisierungen verfügbar ist, beispielsweise sowohl QuantumCircuit für als auch DAGCircuit für in bestimmten Modi.

qiskit.utils.optionals.HAS_PYDOT

Für einige Graphenvisualisierungen verwendet Qiskit pydot als Schnittstelle zu GraphViz (siehe HAS_GRAPHVIZ).

qiskit.utils.optionals.HAS_PYGMENTS

Pygments ist ein Code-Highlighter und Formatierer, der von vielen Umgebungen verwendet wird, die eine reichhaltige Anzeige von Codeblöcken erfordern, einschließlich Sphinx und Jupyter. Qiskit verwendet dies bei der Erstellung von umfangreichen Ausgaben für diese Umgebungen.

qiskit.utils.optionals.HAS_PYLATEX

Verschiedene Visualisierungen von LaTeX-based, insbesondere die Schaltkreisschubladen, benötigen Zugriff auf das Projekt pylatexenc, um korrekt zu funktionieren.

qiskit.utils.optionals.HAS_QASM3_IMPORT

Die Funktionen qasm3.load() und qasm3.loads() zum Importieren von OpenQASM 3 Programmen in QuantumCircuit instanzen verwenden Sie ein externes Importer-Paket.

qiskit.utils.optionals.HAS_SEABORN

Qiskit bietet mehrere Visualisierungswerkzeuge in dem visualization modul. Einige von ihnen werden mit Seaborn erstellt, das installiert werden muss, um sie nutzen zu können.

qiskit.utils.optionals.HAS_SKLEARN

Einige der Gradientenfunktionen in opflow.gradients verwenden Regularisierungsmethoden aus Scikit Learn.

qiskit.utils.optionals.HAS_SKQUANT

Einige der Optimierer in algorithms.optimizers basieren auf denen in Scikit Quant, das installiert sein muss, um sie zu nutzen.

qiskit.utils.optionals.HAS_SQSNOBFIT

SQSnobFit ist eine Bibliothek für den Algorithmus "stable noisy optimization by branch and fit". Sie wird vom SNOBFIT Optimierer verwendet.

qiskit.utils.optionals.HAS_SYMENGINE

Symengine ist ein schnelles C++-Backend für die Bibliothek Sympy zur symbolischen Berechnung. Diese Abhängigkeit dient zum Laden älterer QPY-Formate, bei denen dieses Paket zur Verarbeitung Parameterdieser Formate verwendet wurde.

qiskit.utils.optionals.HAS_SYMPY

SymPy ist eine „ Python “-Bibliothek für symbolische Mathematik. SymPy wurde früher für die Implementierung der ParameterExpression Klasse verwendet, wird aber mittlerweile nicht mehr verwendet. ParameterExpression.sympify()Es wird jedoch für einige ältere Funktionen benötigt, die. verwenden. Es wird auch in einigen Visualisierungsfunktionen und beim Template-Matching verwendet.

qiskit.utils.optionals.HAS_TESTTOOLS

Die Testsuite von Qiskit verfügt über erweiterte Funktionen, wenn die optionale testtools-Bibliothek installiert ist. Dies ist im Allgemeinen nur für Qiskit-Entwickler erforderlich.

qiskit.utils.optionals.HAS_TWEEDLEDUM

Tweedledum ist eine Erweiterungsbibliothek für die Synthese und Optimierung von Schaltungen, bei der unter Umständen klassische Orakel zum Einsatz kommen. Früher wurde dies von Qiskit PhaseOracle verwendet, wird aber mittlerweile von Qiskit nicht mehr genutzt.

qiskit.utils.optionals.HAS_Z3

Z3 ist ein Theorembeweiser, der in den CrosstalkAdaptiveSchedule Transpiler-Durchläufen und HoareOptimizer verwendet wird.

Externe Befehlszeilentools

qiskit.utils.optionals.HAS_GRAPHVIZ

Für einige Graphenvisualisierungen verwendet Qiskit das GraphViz visualisierungswerkzeug über seine Schnittstelle pydot (siehe HAS_PYDOT).

qiskit.utils.optionals.HAS_PDFLATEX

Für Visualisierungstools, die LaTeX in ihrer Ausgabe verwenden, wie z. B. die Schaltkreiszeichner, muss pdflatex verfügbar sein. Im Allgemeinen müssen Sie sicherstellen, dass Sie eine funktionierende LaTeX Installation und das qcircuit.tex Paket zur Verfügung haben.

qiskit.utils.optionals.HAS_PDFTOCAIRO

Visualisierungswerkzeuge, die LaTeX-generated Dateien in gerasterte Bilder umwandeln, verwenden das Werkzeug pdftocairo . Dies ist ein Teil der Poppler-Suite von PDF-Werkzeugen.

Lazy Checker-Klassen

Jeder der lazy checkers ist eine Instanz von LazyDependencyManager in einer ihrer beiden Unterklassen: LazyImportTester und LazySubprocessTester. Diese sollten von utils direkt importiert werden, wie zum Beispiel:

from qiskit.utils import LazyImportTester

LazyDependencyManager

class qiskit.utils.LazyDependencyManager(*, name=None, callback=None, install=None, msg=None)

GitHub

Basen: ABC

Ein Manager für einige optionale Funktionen, deren Import oder deren Vorhandensein nur mit hohem Aufwand überprüft werden kann.

Diese Objekte können als Booleans verwendet werden, z. B. if x, und werten True aus, wenn die Abhängigkeit, auf die sie testen, vorhanden ist, und False , wenn nicht. Das Vorhandensein der Abhängigkeit wird nur getestet, wenn der Boolesche Wert ausgewertet wird, so dass er als Laufzeittest in Funktionen und Methoden verwendet werden kann, ohne dass ein Importzeittest erforderlich ist.

Diese Objekte kapseln auch die Fehlerbehandlung, wenn ihre Abhängigkeit nicht vorhanden ist, so dass Sie z. B. Folgendes tun können:

from qiskit.utils import LazyImportManager
HAS_MATPLOTLIB = LazyImportManager("matplotlib")

@HAS_MATPLOTLIB.require_in_call
def my_visualisation():
    ...

def my_other_visualisation():
    # ... some setup ...
    HAS_MATPLOTLIB.require_now("my_other_visualisation")
    ...

def my_third_visualisation():
    if HAS_MATPLOTLIB:
        from matplotlib import pyplot
    else:
        ...

In all diesen Fällen wird matplotlib erst importiert, wenn die Funktionen eingegeben werden. Im Falle des Dekorators wird matplotlib beim ersten Aufruf der Funktion auf Import geprüft. Im zweiten und dritten Fall versucht der Lader, matplotlib zu importieren, wenn die require_now() methode aufgerufen wird, oder wenn der boolesche Kontext ausgewertet wird. Bei den Methoden require wird ein Fehler ausgegeben, wenn die Bibliothek nicht verfügbar ist.

Dies ist die Basisklasse, die die boolesche Kontextprüfung und das Fehlermanagement bereitstellt. Die konkreten Klassen LazyImportTester und LazySubprocessTester bieten bequeme Einstiegspunkte, um zu testen, ob bestimmte Symbole aus Modulen importiert werden können bzw. ob bestimmte Befehlszeilenwerkzeuge verfügbar sind.

Parameter

  • name - der Name dieser optionalen Abhängigkeit.
  • callback - ein Callback, der sofort aufgerufen wird, nachdem die Verfügbarkeit der Bibliothek mit dem Ergebnis getestet wurde. Diese Funktion wird nur einmal aufgerufen.
  • install - wie man diese optionale Abhängigkeit installiert. Übergeben an MissingOptionalLibraryError als Parameter pip_install übergeben.
  • msg - eine zusätzliche Meldung, die in die Fehlermeldung aufgenommen wird, wenn dies erforderlich ist.
_is_available

abstractmethod _is_available()

GitHub

Unterklassen von LazyDependencyManager sollten diese Methode außer Kraft setzen, um den eigentlichen Verfügbarkeitstest zu implementieren. Diese Methode sollte einen booleschen Wert zurückgeben, wobei True angibt, dass die Abhängigkeit verfügbar war. Diese Methode wird immer nur einmal aufgerufen.

Rückgabetyp

bool

disable_locally

disable_locally()

GitHub

Erstellen Sie einen Kontext, in dem der Wert des Abhängigkeitsmanagers False sein wird. Das bedeutet, dass sich innerhalb des Kontexts alle Aufrufe dieses Objekts so verhalten, als ob die Abhängigkeit nicht vorhanden wäre, einschließlich der Auslösung von Fehlern. Der Aufruf dieser Methode ist unabhängig davon gültig, ob die Abhängigkeit bereits ausgewertet wurde oder nicht. Dies ist vor allem bei Tests nützlich.

require_in_call

require_in_call(feature_or_callable: Callable) → Callable

require_in_call(feature_or_callable: str) → Callable[[Callable], Callable]

GitHub

Erstellen Sie einen Dekorator für Callables, der voraussetzt, dass die Abhängigkeit verfügbar ist, wenn die dekorierte Funktion oder Methode aufgerufen wird.

Parameter

feature_or_callable (str or Callable) – den Namen des Merkmals, das diese Abhängigkeiten erfordert. Wenn diese Funktion direkt als Dekorator aufgerufen wird (z. B. @HAS_X.require_in_call im Gegensatz zu @HAS_X.require_in_call("my feature")), dann wird der Name des Merkmals als Funktionsname bzw. Klassen- und Methodenname angenommen.

Rückgabe

einen Dekorator, dessen Argument diese Abhängigkeit erfordert, bevor es aufgerufen wird.

Rückgabetyp

Aufrufbar

require_in_instance

require_in_instance(feature_or_class: type) → type

require_in_instance(feature_or_class: str) → Callable[[type], type]

GitHub

Ein Klassendekorator, der die Abhängigkeit erfordert, ist verfügbar, wenn die Klasse initialisiert wird. Dieser Dekorator kann auch verwendet werden, wenn die Klasse keine __init__ Methode definiert.

Parameter

feature_or_class (str orType) – den Namen des Merkmals, das diese Abhängigkeiten erfordert. Wenn diese Funktion direkt als Dekorator aufgerufen wird (z. B. @HAS_X.require_in_instance im Gegensatz zu @HAS_X.require_in_instance("my feature")), dann wird der Name des Merkmals als Name der Klasse verwendet.

Rückgabe

ein Klassendekorator, der sicherstellt, dass das umhüllte Merkmal vorhanden ist, wenn die Klasse initialisiert wird.

Rückgabetyp

Aufrufbar

require_now

require_now(feature)

GitHub

Versucht eifrig, die Abhängigkeiten in diesem Objekt zu importieren, und löst eine Ausnahme aus, wenn sie nicht importiert werden können.

Parameter

feature (str) – der Name des Merkmals, für das diese Abhängigkeiten erforderlich sind.

Erhöht

MissingOptionalLibraryError - wenn die Abhängigkeiten nicht importiert werden können.

LazyImportTester

class qiskit.utils.LazyImportTester(name_map_or_modules, *, name=None, callback=None, install=None, msg=None)

GitHub

Basen: LazyDependencyManager

Ein lazy dependency tester für importierbare Python Module. Erforderliche Objekte werden nur zu dem Zeitpunkt importiert, zu dem dieses Objekt auf seinen booleschen Wert getestet wird.

Parameter

  • name_map_or_modules (str |dict[str, Iterable[str]] | Iterable[str]) – Wenn es sich um eine Namenskarte handelt, dann ist es ein Wörterbuch, bei dem die Schlüssel Module oder Pakete sind und die Werte iterierbare Listen von Namen, die aus diesem Modul importiert werden sollen. Es sollte zulässig sein, dies zu schreiben from <module> import <name1>, <name2>, .... Wenn es sich lediglich um eine Zeichenkette oder eine iterierbare Zeichenkette handelt, sollte es zulässig sein, für jede import <module> einzelne davon zu schreiben.
  • name (str | None) – der Name dieser optionalen Abhängigkeit.
  • callback (Callable[[bool], None] | None) – ein Callback, der unmittelbar nach der Überprüfung der Verfügbarkeit der Bibliothek mit dem Ergebnis aufgerufen wird. Dies wird nur einmal aufgerufen.
  • install (str | None) – So installieren Sie diese optionale Abhängigkeit. Wird als Parameter pip_install an MissingOptionalLibraryError übergeben.
  • msg (str | None) – eine zusätzliche Meldung, die in die ausgelöste Fehlermeldung aufgenommen werden soll, falls dies erforderlich ist.

Erhöht

ValueError - wenn keine Module angegeben sind.

LazySubprocessTester

class qiskit.utils.LazySubprocessTester(command, *, name=None, callback=None, install=None, msg=None)

GitHub

Basen: LazyDependencyManager

Eine träge Prüfung, ob ein Befehlszeilentool verfügbar ist. Der Befehl wird nur einmal ausgeführt, und zwar zu dem Zeitpunkt, an dem das Objekt auf seinen booleschen Wert geprüft wird.

Parameter

  • command (str |Iterable[str]) – die Zeichenfolgen, aus denen sich der auszuführende Befehl zusammensetzt. Beispiel: ["pdflatex", "-version"].
  • name (str | None) – der Name dieser optionalen Abhängigkeit.
  • callback (Callable[[bool], None] | None) – ein Callback, der unmittelbar nach der Überprüfung der Verfügbarkeit der Bibliothek mit dem Ergebnis aufgerufen wird. Dies wird nur einmal aufgerufen.
  • install (str | None) – So installieren Sie diese optionale Abhängigkeit. Wird als Parameter pip_install an MissingOptionalLibraryError übergeben.
  • msg (str | None) – eine zusätzliche Meldung, die in die ausgelöste Fehlermeldung aufgenommen werden soll, falls dies erforderlich ist.

Erhöht

ValueError - wenn ein leerer Befehl angegeben wird.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.