Programmi di utilità
qiskit.utils
Deprecazioni
add_deprecation_to_docstring
qiskit.utils.add_deprecation_to_docstring(func, msg, *, since, pending)
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')
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)
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
sincealla 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_funcdel modulo<my_module>.<my_submodule>, che è simile ma utilizza l'accelerazione GPU" - pending (bool) – Impostare
Truese 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)
Dato un prefisso e un valore di unità SI, applicare il prefisso per convertire in unità SI standard.
Parametri
- value (float |ParameterExpression) – Il numero a cui applicare il prefisso.
- unit (str) – Prefisso stringa.
Risultati
Valore convertito.
Tipo di restituzione
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
- value (float |ParameterExpression)
- unit (str)
Tipo di restituzione
detach_prefix
qiskit.utils.detach_prefix(value, decimal=None)
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 kHzParametri
- 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 condecimal=3o meno.
Risultati
Una tupla di valore scalare e prefisso.
Tipo di restituzione
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 sito
valueè fuori portata. - ValueError - Se
valuenon è un numero reale.
Parametri
Tipo di restituzione
Strumenti di classe
wrap_method
qiskit.utils.wrap_method(cls, name, *, before=None, after=None)
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()
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à:
- La variabile d'ambiente
QISKIT_NUM_PROCS, se impostata. - La chiave
num_processesdel file di configurazione utente di Qiskit, se impostata. - 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.
- 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
is_main_process
qiskit.utils.is_main_process()
Controlla se il processo corrente è quello principale.
Poiché Python 3.8, è identico al metodo di calcolo standard Python :
>>> import multiprocessing
>>> multiprocessing.parent_process() is NoneQuesta funzione è stata lasciata per la retrocompatibilità, ma ci sono poche ragioni per non utilizzare gli strumenti integrati di Python.
Tipo di restituzione
local_hardware_info
qiskit.utils.local_hardware_info()
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
should_run_in_parallel
qiskit.utils.should_run_in_parallel(num_processes=None)
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)
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()
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
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)
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 LazyImportTesterLazyDependencyManager
class qiskit.utils.LazyDependencyManager(*, name=None, callback=None, install=None, msg=None)
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
MissingOptionalLibraryErrorcome parametropip_install. - msg - un messaggio aggiuntivo da includere nella segnalazione di errore, se necessario.
_is_available
abstractmethod _is_available()
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
disable_locally
disable_locally()
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]
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]
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)
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)
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 scrivereimport <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_installPassato aMissingOptionalLibraryErrorcome 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)
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_installPassato aMissingOptionalLibraryErrorcome parametro. - msg (str | None) – un messaggio aggiuntivo da includere nell'errore generato, se necessario.
Aumenti
ValueError - se viene dato un comando vuoto.