Skip to main content
IBM Quantum Platform

Programmi di utilità

qiskit.utils


Deprecazioni

add_deprecation_to_docstring

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

GitHub

Inserisce dinamicamente il messaggio di deprezzamento nella docstring di func.

Parametri

  • func (Callable) – La funzione da modificare.
  • msg (str) – Il messaggio di deprezzamento completo.
  • since (str | None) – La versione in cui è iniziata la deprecazione.
  • pending (bool) – La deprecazione è ancora in corso?

Tipo di restituzione

Nessuna

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

Decoratore per indicare che un argomento è stato in qualche modo deprecato.

Questo decoratore può essere usato più volte sulla stessa funzione, una volta per ogni argomento deprecato. Dovrebbe essere collocato sotto altri decoratori come @staticmethod e i decoratori immobiliari.

Parametri

  • name (str) – Il nome dell'argomento deprecato.
  • since (str) – La versione in cui è iniziata la deprecazione. Se la deprecazione è in sospeso, si imposta la versione a quando è iniziata; ma in seguito, quando si passa da in sospeso a deprecata, si aggiorna alla nuova versione.
  • deprecation_description (str | None) – Cosa viene deprecato? E.g. "Impostazione dell'argomento my_func() a None" Se non viene impostato, il valore predefinito è " {func_name} 'argomento {name} ".
  • additional_msg (str | None) – Inserire qui qualsiasi informazione aggiuntiva, ad esempio cosa usare al suo posto (se new_alias non è impostato). Ad esempio, "Invece, utilizzate l'argomento new_arg, che è simile ma non ha alcun impatto sulla configurazione del circuito"
  • pending (bool) – Impostare su True se la deprecazione è ancora in corso.
  • package_name (str) – Il nome del pacchetto mostrato nel messaggio di deprecazione (ad esempio il nome del pacchetto PyPI ).
  • new_alias (str | None) – Se l'arg è stato semplicemente rinominato, impostare questo valore sul nuovo nome. Il decoratore aggiornerà dinamicamente i kwarg, in modo che quando l'utente imposta il vecchio argomento, questo venga passato come nuovo argomento_alias.
  • predicate (Callable[[Any], bool] | None) – Registra l'avviso di runtime solo se il predicato restituisce True. Questo è utile per deprecare determinati valori o tipi per un argomento, ad esempio lambda my_arg: isinstance(my_arg, dict). Indipendentemente dal fatto che sia impostato un predicato, l'avviso di runtime verrà registrato solo quando l'utente specifica l'argomento.
  • removal_timeline (str) – Quando sarà rimossa questa deprecazione? Si aspetta un valore come "non prima di 6 mesi dopo l'ultima release" o "nella release 9.99 ".

Risultati

Il callable decorato.

Tipo di restituzione

Richiamabile

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

Decoratore per indicare che una funzione è stata deprecata.

Dovrebbe essere posizionato sotto altri decoratori, come @staticmethod e i decoratori di proprietà.

Quando si depreca una classe, impostare questo decoratore sulla sua funzione _init___.

Parametri

  • since (str) – La versione in cui è iniziata la deprecazione. Se la deprecazione è in sospeso, impostare la versione a quando è iniziata; ma in seguito, quando si passa da in sospeso a deprecata, aggiornare since alla nuova versione.
  • additional_msg (str | None) – Inserite qui qualsiasi informazione aggiuntiva, ad esempio cosa utilizzare al suo posto. Ad esempio, "Utilizzare invece la funzione new_func del modulo <my_module>.<my_submodule>, che è simile ma utilizza l'accelerazione GPU"
  • pending (bool) – Impostare True se la deprecazione è ancora in corso.
  • package_name (str) – Il nome del pacchetto mostrato nel messaggio di deprecazione (ad esempio il nome del pacchetto PyPI ).
  • removal_timeline (str) – Quando sarà rimossa questa deprecazione? Si aspetta un valore come "non prima di 6 mesi dopo l'ultima release" o "nella release 9.99 ".
  • is_property (bool) – Se la funzione deprecata è una @property, imposta questo valore su True affinché il messaggio generato la descriva correttamente come tale. (Ciò non è necessario per i setter delle proprietà, poiché la loro stringa di documentazione viene ignorata da Python.)
  • stacklevel (int) – Livello di stack passato a warnings.warn().

Risultati

Il callable decorato.

Tipo di restituzione

Richiamabile


Conversione delle unità SI

apply_prefix

qiskit.utils.apply_prefix(value, unit)

GitHub

Dato un prefisso e un valore di unità SI, applicare il prefisso per convertire in unità SI standard.

Parametri

Risultati

Valore convertito.

Tipo di restituzione

float | ParameterExpression

Nota

Ciò può indurre un errore di valore minuscolo dovuto alla rappresentazione interna dell'oggetto float. Vedere https://docs.python.org/3/tutorial/floatingpoint.html per i dettagli.

Aumenti

ValueError – Se il unit non viene riconosciuto.

Parametri

Tipo di restituzione

float | ParameterExpression

detach_prefix

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

GitHub

Dato un valore di unità SI, trovare il prefisso più adatto per scalare il valore.

Ad esempio, value = 1.3e8 viene convertito in una tupla di (130.0, "M"), che rappresenta un valore scalare e un'unità ausiliaria che può essere utilizzata per visualizzare il valore. Nell'esempio precedente, il valore potrebbe essere visualizzato come 130 MHz (l'unità è arbitraria).

Esempio

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

Parametri

  • value (float) – Il numero per trovare il prefisso.
  • decimal (int | None) – Opzionale. Un numero intero arbitrario per rappresentare la precisione del valore. Se specificato, tenta di arrotondare la mantissa e di adattare il prefisso al valore arrotondato. Ad esempio, 999_999.91 diventerà 999.9999 k con decimal=4, mentre 1.0 M con decimal=3 o meno.

Risultati

Una tupla di valore scalare e prefisso.

Tipo di restituzione

tupla[ float, str ]

Nota

Ciò può indurre un errore di valore minuscolo dovuto alla rappresentazione interna dell'oggetto float. Vedere https://docs.python.org/3/tutorial/floatingpoint.html per i dettagli.

Aumenti

Parametri

Tipo di restituzione

tupla[ float, str ]


Strumenti di classe

wrap_method

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

GitHub

Avvolgere la funzionalità del metodo di istanza o di classe cls.name con comportamenti aggiuntivi before e after.

Questo modifica cls, sostituendo l'attributo name con la nuova funzionalità. È utile quando si creano decoratori di classe. Il metodo può invece essere definito su qualsiasi classe genitore.

Se vengono forniti before o after , devono essere callables con una firma compatibile con il metodo a cui si fa riferimento. Saranno chiamati immediatamente prima o dopo il metodo, a seconda dei casi, e qualsiasi valore di ritorno sarà ignorato.

Parametri

  • cls (type) – la classe da modificare.
  • name (str) – il nome del metodo della classe da avvolgere.
  • before (Callable | None) – una funzione che deve essere chiamata prima del metodo che si sta avvolgendo.
  • after (Callable | None) – una funzione che deve essere chiamata dopo il metodo che viene incapsulato.

Aumenti

ValueError - se il metodo chiamato non è definito nella classe o in una classe padre.


Multiprocessing

default_num_processes

qiskit.utils.default_num_processes()

GitHub

Ottiene il numero di processi che una chiamata parallela multiprocesso utilizzerà per impostazione predefinita.

Tali funzioni accettano in genere anche un argomento della parola chiave num_processes che sostituisce il valore restituito da questa funzione.

In ordine di priorità (dalla più alta alla più bassa), il valore di ritorno sarà:

  1. La variabile d'ambiente QISKIT_NUM_PROCS , se impostata.
  2. La chiave num_processes del file di configurazione utente di Qiskit, se impostata.
  3. Metà delle CPU logiche disponibili per questo processo, se è possibile determinarlo. Si tratta di una proxy del numero di CPU fisiche, ipotizzando un multithreading simultaneo (SMT) di due volte; empiricamente, le prestazioni multiprocesso di Qiskit sembrano peggiorare quando si tenta di utilizzare i core SMT.
  4. 1, se tutto il resto fallisce.

Se un valore configurato dall'utente è impostato su un numero inferiore a 1, viene considerato come se fosse 1.

Tipo di restituzione

int

is_main_process

qiskit.utils.is_main_process()

GitHub

Controlla se il processo corrente è quello principale.

Poiché Python 3.8, è identico al metodo di calcolo standard Python :

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

Questa funzione è stata lasciata per la retrocompatibilità, ma ci sono poche ragioni per non utilizzare gli strumenti integrati di Python.

Tipo di restituzione

bool

local_hardware_info

qiskit.utils.local_hardware_info()

GitHub

Informazioni hardware di base sulla macchina locale.

Tenta di stimare il numero di CPU fisiche della macchina, anche quando l'hyperthreading è attivato. Il conteggio della CPU viene impostato su 1 quando non è possibile determinare il conteggio reale.

Risultati

Le informazioni sull'hardware.

Tipo di restituzione

dict

should_run_in_parallel

qiskit.utils.should_run_in_parallel(num_processes=None)

GitHub

Decidere se una funzione multiprocesso deve generare sottoprocessi per la parallelizzazione.

In particolare, è così che parallel_map() decide se utilizzare o meno la multielaborazione. L'argomento num_processes da solo non impone il parallelismo; per impostazione predefinita, Qiskit utilizza il parallelismo basato sui processi solo quando è attivo un metodo di avvio del processo simile a fork. È possibile ignorare questa decisione impostando il metodo di avvio multiprocessing metodo di avvio, impostando la variabile d'ambiente QISKIT_PARALLEL su "TRUE", oppure impostando parallel = true nel file delle impostazioni utente.

Questa funzione include due gestori di contesto che possono essere utilizzati per modificare temporaneamente il valore di ritorno di questa funzione:

override

should_run_in_parallel.override(value)

GitHub

Un gestore di contesto all'interno del quale should_run_in_parallel() restituirà il dato value.

Questo non è un override completo; Qiskit non tenterà mai di parallelizzare se è disponibile un solo processo e non permetterà il parallelismo basato sui processi a una profondità superiore a 1.

Parametri

value (bool)

ignore_user_settings

should_run_in_parallel.ignore_user_settings()

GitHub

Un gestore di contesto all'interno del quale should_run_in_parallel() ignorerà le variabili di configurazione ambientale.

In particolare, la variabile d'ambiente QISKIT_PARALLEL e il file di configurazione utente vengono ignorati in questo contesto.

Parametri

num_processes (int | None) – il numero massimo di processi richiesti per l'uso (None implica il valore predefinito).

Tipo di restituzione

bool

Esempi

Annulla temporaneamente le impostazioni configurate per disabilitare il parallelismo:

>>> 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)

Una funzione di aiuto per chiamare una funzione personalizzata con Python ProcessPoolExecutor. I compiti possono essere eseguiti in parallelo utilizzando questa funzione.

parallel_map

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

GitHub

Esecuzione parallela di una mappatura di valori al task funzione. Ciò è funzionalmente equivalente a:

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

Questo metodo parallelizzerà i risultati se il numero di values è maggiore di uno e should_run_in_parallel() restituisce True. In caso contrario, verrà eseguito in serie.

Parametri

  • task (func) – Funzione da richiamare per ogni valore in values.
  • values (array_like) – Elenco o matrice di valori per i quali deve essere valutata la funzione task .
  • task_args (list) – Argomenti aggiuntivi facoltativi per la funzione task .
  • task_kwargs (dict) – Argomento aggiuntivo facoltativo per la funzione task .
  • num_processes (int) – Numero di processi da generare. Se non viene indicato, viene utilizzato il valore di ritorno di default_num_processes() viene utilizzato.

Risultati

L'elenco dei risultati contiene il valore di task(value, *task_args, **task_kwargs) per ogni valore di values.

Tipo di restituzione

risultato

Esempi

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

Controlli di dipendenza opzionali

Qiskit ha diverse funzioni che vengono abilitate solo se sono soddisfatte alcune dipendenze opzionali. Questo modulo, qiskit.utils.optionalsha una collezione di oggetti che possono essere usati per verificare se una certa funzionalità è disponibile e, facoltativamente, sollevare il caso MissingOptionalLibraryError se la funzionalità non è disponibile.

Tester disponibili

Componenti Qiskit

qiskit.utils.optionals.HAS_AER

Qiskit Aer offre simulatori ad alte prestazioni per i circuiti quantistici realizzati con Qiskit.

qiskit.utils.optionals.HAS_IBMQ

Qiskit IBMQ Provider è utilizzato per accedere all'hardware IBM Quantum nel cloud IBM.

qiskit.utils.optionals.HAS_IGNIS

Qiskit Ignis fornisce strumenti per la verifica dell'hardware quantistico, la caratterizzazione del rumore e la correzione degli errori.

qiskit.utils.optionals.HAS_TOQM

Qiskit TOQM fornisce passaggi di transpiler per l' algoritmo di mappatura Time-optimal Qubit.

Librerie esterne di Python

qiskit.utils.optionals.HAS_CONSTRAINT

python-constraint è un risolutore di problemi di soddisfazione dei vincoli, utilizzato nella fase CSPLayout di transpiler.

qiskit.utils.optionals.HAS_CPLEX

L'ottimizzatore CPLEX di IBM è un risolutore di programmazione matematica ad alte prestazioni per la programmazione lineare, mista-intera e quadratica. Questa opzione non viene più utilizzata da Qiskit, ma era presente in passato e rimane disponibile per motivi di compatibilità con le versioni precedenti.

qiskit.utils.optionals.HAS_CVXPY

CVXPY è un pacchetto di Python per la risoluzione di problemi di ottimizzazione convessi. È necessario per il calcolo delle norme sui diamanti con quantum_info.diamond_norm().

qiskit.utils.optionals.HAS_DOCPLEX

IBM Decision Optimization CPLEX Modelling è una libreria per l'analisi prescrittiva. Come CPLEX, questa opzione non viene più utilizzata da Qiskit, ma era presente in passato e rimane disponibile per motivi di compatibilità con le versioni precedenti.

qiskit.utils.optionals.HAS_FIXTURES

La suite di test ha ulteriori funzioni disponibili se è installato il modulo opzionale fixtures. In genere è necessario anche HAS_TESTTOOLS anche. Questo è generalmente necessario solo per gli sviluppatori di Qiskit.

qiskit.utils.optionals.HAS_IPYTHON

Se il kernel IPython è disponibile, vengono rese disponibili alcune visualizzazioni e magie di linea aggiuntive.

qiskit.utils.optionals.HAS_IPYWIDGETS

I widget di monitoraggio per i lavori in esecuzione su backend esterni possono essere forniti se ipywidgets è disponibile.

qiskit.utils.optionals.HAS_JAX

Alcuni metodi di calcolo del gradiente all'interno di opflow.gradients richiedono JAX per l'autodifferenziazione.

qiskit.utils.optionals.HAS_JUPYTER

Alcuni test richiedono un'installazione completa di Jupyter per verificare le caratteristiche di interattività.

qiskit.utils.optionals.HAS_MATPLOTLIB

Qiskit fornisce diversi strumenti di visualizzazione nel modulo visualization modulo. Quasi tutti sono costruiti utilizzando Matplotlib che devono essere installati per poterli utilizzare.

qiskit.utils.optionals.HAS_NETWORKX

Non più utilizzato da Qiskit. Internamente, Qiskit utilizza ora la libreria ad alte prestazioni rustworkx come dipendenza di base e, durante il periodo di transizione, a volte è stato conveniente convertire le cose nel formato Python -solo NetworkX nel formato. Alcuni test di moduli applicativi, come Qiskit Nature, utilizzano ancora NetworkX.

qiskit.utils.optionals.HAS_NLOPT

NLopt è una libreria di ottimizzazione non lineare, utilizzata dagli ottimizzatori globali del modulo algorithms.optimizers .

qiskit.utils.optionals.HAS_PIL

PIL è una libreria per la manipolazione delle immagini di tipo " Python ". Qiskit utilizza effettivamente il fork "pillow" di PIL, se disponibile, durante la generazione di determinate visualizzazioni, ad esempio sia QuantumCircuit di che DAGCircuit di in determinate modalità.

qiskit.utils.optionals.HAS_PYDOT

Per alcune visualizzazioni di grafi, Qiskit utilizza pydot come interfaccia per GraphViz (vedere HAS_GRAPHVIZ).

qiskit.utils.optionals.HAS_PYGMENTS

Pygments è un evidenziatore e formattatore di codice utilizzato da molti ambienti che prevedono la visualizzazione di blocchi di codice, tra cui Sphinx e Jupyter. Qiskit lo utilizza quando produce output ricchi per questi ambienti.

qiskit.utils.optionals.HAS_PYLATEX

Diverse visualizzazioni di LaTeX-based, in particolare i cassetti dei circuiti, hanno bisogno di accedere al progetto pylatexenc per funzionare correttamente.

qiskit.utils.optionals.HAS_QASM3_IMPORT

Le funzioni qasm3.load() e qasm3.loads() per importare i programmi di OpenQASM 3 in QuantumCircuit istanze utilizzano un pacchetto importatore esterno.

qiskit.utils.optionals.HAS_SEABORN

Qiskit fornisce diversi strumenti di visualizzazione nel modulo visualization modulo. Alcuni di questi sono costruiti con Seaborn, che deve essere installato per poterli utilizzare.

qiskit.utils.optionals.HAS_SKLEARN

Alcune delle funzioni di gradiente in opflow.gradients utilizzano i metodi di regolarizzazione di Scikit Learn.

qiskit.utils.optionals.HAS_SKQUANT

Alcuni degli ottimizzatori di algorithms.optimizers si basano su quelli presenti in Scikit Quant, che deve essere installato per poterli utilizzare.

qiskit.utils.optionals.HAS_SQSNOBFIT

SQSnobFit è una libreria per l'algoritmo di "ottimizzazione rumorosa stabile tramite branch and fit". Viene utilizzato dall'ottimizzatore SNOBFIT .

qiskit.utils.optionals.HAS_SYMENGINE

Symengine è un backend veloce in C++ per la libreria di manipolazione simbolica Sympy. ParameterQuesta dipendenza serve a caricare i formati QPY legacy, per i quali questo pacchetto veniva utilizzato per gestirli.

qiskit.utils.optionals.HAS_SYMPY

SymPy è una libreria Python per la matematica simbolica. SymPy in passato veniva utilizzato per l'implementazione della ParameterExpression classe, ma ora non è più così. Tuttavia, è necessario per alcune funzionalità legacy che utilizzano ParameterExpression.sympify(). Viene utilizzato anche in alcune funzioni di visualizzazione e nel template matching.

qiskit.utils.optionals.HAS_TESTTOOLS

La suite di test di Qiskit dispone di funzionalità più avanzate se è installata la libreria opzionale testtools. Questo è generalmente necessario solo per gli sviluppatori di Qiskit.

qiskit.utils.optionals.HAS_TWEEDLEDUM

Tweedledum è una libreria di estensioni per la sintesi e l'ottimizzazione di circuiti che possono coinvolgere oracoli classici. In passato Qiskit PhaseOracle lo utilizzava, ma ora non lo utilizza più.

qiskit.utils.optionals.HAS_Z3

Z3 è un sistema di dimostrazione di teoremi, utilizzato nei passaggi CrosstalkAdaptiveSchedule di transpilazione e HoareOptimizer .

Strumenti della riga di comando esterni

qiskit.utils.optionals.HAS_GRAPHVIZ

Per alcune visualizzazioni di grafici, Qiskit utilizza lo strumento di GraphViz tramite l'interfaccia pydot (si veda la sezione HAS_PYDOT).

qiskit.utils.optionals.HAS_PDFLATEX

Gli strumenti di visualizzazione che utilizzano LaTeX nei loro output, come i cassetti dei circuiti, richiedono la disponibilità di pdflatex . In generale, è necessario assicurarsi di avere a disposizione un'installazione funzionante di LaTeX e il pacchetto qcircuit.tex .

qiskit.utils.optionals.HAS_PDFTOCAIRO

Gli strumenti di visualizzazione che convertono i file LaTeX-generated in immagini rasterizzate usano lo strumento pdftocairo . Fa parte della suite di strumenti PDF Poppler.

Classi Lazy Checker

Ogni controllore pigro è un'istanza di LazyDependencyManager in una delle sue due sottoclassi: LazyImportTester e LazySubprocessTester. Questi devono essere importati da utils direttamente se necessario, come ad esempio:

from qiskit.utils import LazyImportTester

LazyDependencyManager

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

GitHub

Basi: ABC

Un gestore per alcune funzionalità opzionali la cui importazione o verifica dell'esistenza comporta costi elevati.

Questi oggetti possono essere usati come booleani, come if x, e valuteranno True se la dipendenza per cui sono testati è disponibile e False in caso contrario. La presenza della dipendenza sarà verificata solo quando il booleano viene valutato, quindi può essere usato come test di runtime in funzioni e metodi senza richiedere un test di import-time.

Questi oggetti incapsulano anche la gestione degli errori se la loro dipendenza non è presente, in modo da poter fare cose come:

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 tutti questi casi, matplotlib non viene importato finché non vengono inserite le funzioni. Nel caso del decoratore, matplotlib viene testato per l'importazione quando la funzione viene chiamata per la prima volta. Nel secondo e terzo caso, il caricatore tenta di importare matplotlib quando viene chiamato il metodo require_now() o quando viene valutato il contesto booleano. Per i metodi require , viene sollevato un errore se la libreria non è disponibile.

È la classe base che fornisce il controllo del contesto booleano e la gestione degli errori. Le classi concrete LazyImportTester e LazySubprocessTester forniscono comodi punti di ingresso per verificare rispettivamente che determinati simboli siano importabili dai moduli o che siano disponibili determinati strumenti a riga di comando.

Parametri

  • nome - il nome di questa dipendenza opzionale.
  • callback - una callback che viene chiamata subito dopo aver verificato la disponibilità della libreria con il risultato. Verrà richiamato una sola volta.
  • install - come installare questa dipendenza opzionale. Passato a MissingOptionalLibraryError come parametro pip_install .
  • msg - un messaggio aggiuntivo da includere nella segnalazione di errore, se necessario.
_is_available

abstractmethod _is_available()

GitHub

Le sottoclassi di LazyDependencyManager dovrebbero sovrascrivere questo metodo per implementare l'effettivo test di disponibilità. Questo metodo deve restituire un booleano, dove True indica che la dipendenza è disponibile. Questo metodo verrà chiamato una sola volta.

Tipo di restituzione

bool

disable_locally

disable_locally()

GitHub

Creare un contesto, durante il quale il valore del gestore delle dipendenze sarà False. Ciò significa che all'interno del contesto, qualsiasi chiamata a questo oggetto si comporterà come se la dipendenza non fosse disponibile, anche sollevando errori. È valido chiamare questo metodo indipendentemente dal fatto che la dipendenza sia già stata valutata o meno. È molto utile nei test.

require_in_call

require_in_call(feature_or_callable: Callable) → Callable

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

GitHub

Creare un decoratore per i callables che richieda che la dipendenza sia disponibile quando viene chiamata la funzione o il metodo decorato.

Parametri

feature_or_callable (str or Callable) – il nome della funzione che richiede queste dipendenze. Se questa funzione viene richiamata direttamente come decoratore (ad esempio @HAS_X.require_in_call invece di @HAS_X.require_in_call("my feature")), il nome della caratteristica verrà considerato come il nome della funzione o il nome della classe e del metodo, a seconda dei casi.

Risultati

un decoratore che farà in modo che il suo argomento richieda questa dipendenza prima di essere chiamato.

Tipo di restituzione

Richiamabile

require_in_instance

require_in_instance(feature_or_class: type) → type

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

GitHub

Un decoratore di classe che richiede la dipendenza è disponibile quando la classe viene inizializzata. Questo decoratore può essere utilizzato anche se la classe non definisce un metodo __init__ .

Parametri

feature_or_class (str orType) – il nome della funzione che richiede queste dipendenze. Se questa funzione viene chiamata direttamente come decoratore (ad esempio @HAS_X.require_in_instance invece di @HAS_X.require_in_instance("my feature")), il nome della caratteristica verrà preso come nome della classe.

Risultati

un decoratore di classe che assicura la presenza della funzione wrapped quando la classe viene inizializzata.

Tipo di restituzione

Richiamabile

require_now

require_now(feature)

GitHub

Tenta di importare le dipendenze in questo oggetto e solleva un'eccezione se non possono essere importate.

Parametri

feature (str) – il nome della funzione che richiede queste dipendenze.

Aumenti

MissingOptionalLibraryError - se le dipendenze non possono essere importate.

LazyImportTester

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

GitHub

Basi: LazyDependencyManager

Un tester di dipendenze pigro per i moduli importabili di Python. Gli oggetti richiesti saranno importati solo nel momento in cui questo oggetto viene testato per il suo valore booleano.

Parametri

  • name_map_or_modules (str |dict[str, Iterable[str]] | Iterable[str]) – se si tratta di una mappa di nomi, allora è un dizionario in cui le chiavi sono moduli o pacchetti e i valori sono iterabili di nomi da provare a importare da quel modulo. Dovrebbe essere corretto scrivere from <module> import <name1>, <name2>, .... Se si tratta semplicemente di una stringa o di un iterabile di stringhe, dovrebbe essere corretto scrivere import <module> «per ciascuna di esse».
  • name (str | None) – il nome di questa dipendenza facoltativa.
  • callback (Callable[[bool], None] | None) – una funzione di callback che viene richiamata immediatamente dopo aver verificato la disponibilità della libreria, utilizzando il risultato ottenuto. Questa funzione verrà chiamata una sola volta.
  • install (str | None) – Come installare questa dipendenza opzionale. pip_install Passato a MissingOptionalLibraryError come parametro.
  • msg (str | None) – un messaggio aggiuntivo da includere nell'errore generato, se necessario.

Aumenti

ValueError - se non vengono forniti moduli.

LazySubprocessTester

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

GitHub

Basi: LazyDependencyManager

Controlla che sia disponibile uno strumento a riga di comando. Il comando verrà eseguito una sola volta, nel momento in cui viene controllato il valore booleano di questo oggetto.

Parametri

  • command (str |Iterable[str]) – le stringhe che compongono il comando da eseguire. Ad esempio, ["pdflatex", "-version"].
  • name (str | None) – il nome di questa dipendenza facoltativa.
  • callback (Callable[[bool], None] | None) – una funzione di callback che viene richiamata immediatamente dopo aver verificato la disponibilità della libreria, utilizzando il risultato ottenuto. Questa funzione verrà chiamata una sola volta.
  • install (str | None) – Come installare questa dipendenza opzionale. pip_install Passato a MissingOptionalLibraryError come parametro.
  • msg (str | None) – un messaggio aggiuntivo da includere nell'errore generato, se necessario.

Aumenti

ValueError - se viene dato un comando vuoto.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.