Servicios de suministro
qiskit.utils
Características en desuso
add_deprecation_to_docstring
qiskit.utils.add_deprecation_to_docstring(func, msg, *, since, pending)
Inserta dinámicamente el mensaje de depreciación en func's docstring.
Parámetros
- func (Callable) – La función a modificar.
- msg (str) – El mensaje de cancelación completo.
- since (str | None) – La versión en la que comenzó la depreciación.
- pending (bool) – ¿Sigue pendiente la depreciación?
Tipo de retorno
Ninguna
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')
Decorador para indicar que un argumento ha sido obsoleto de alguna manera.
Este decorador puede utilizarse varias veces en la misma función, una vez por cada argumento obsoleto. Debe situarse por debajo de otros decoradores como @staticmethod y decoradores inmobiliarios.
Parámetros
- name (str) – El nombre del argumento obsoleto.
- since (str) – La versión en la que comenzó la depreciación. Si la deprecación está pendiente, establece la versión a cuando empezó; pero más tarde, al pasar de pendiente a deprecada, actualiza desde a la nueva versión.
- deprecation_description (str | None) – ¿Qué es lo que queda obsoleto? E.g. "Estableciendo el argumento my_arg de my_func() a None." Si no se establece, será por defecto " {func_name} 's argument {name} ".
- additional_msg (str | None) – Ponga aquí cualquier información adicional, como qué usar en su lugar (si new_alias no está configurado). Por ejemplo, "En su lugar, utilice el argumento new_arg, que es similar pero no afecta a la configuración del circuito."
- pending (bool) – Establézcalo como True si la eliminación aún está pendiente.
- package_name (str) – El nombre del paquete que aparece en el mensaje de depreciación (por ejemplo, el nombre del paquete PyPI ).
- new_alias (str | None) – Si simplemente se ha cambiado el nombre del argumento, introduzca el nuevo nombre. El decorador actualizará dinámicamente los kwargs de forma que cuando el usuario establezca el arg antiguo, éste se pasará como el arg new_alias.
- predicate (Callable[[Any], bool] | None) – Solo registre la advertencia de tiempo de ejecución si el predicado devuelve True. Esto resulta útil para descartar determinados valores o tipos para un argumento, por ejemplo, lambda my_arg: isinstance(my_arg, dict). Independientemente de si se establece un predicado, la advertencia en tiempo de ejecución solo se registrará cuando el usuario especifique el argumento.
- removal_timeline (str) – ¿Cuándo se eliminará esta depreciación? Se espera un valor como "no antes de 6 meses después de la última versión" o "en la versión 9.99 ".
Devuelve
La llamada decorada.
Tipo de retorno
Invocable
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)
Decorador para indicar que una función ha quedado obsoleta.
Debe colocarse debajo de otros decoradores como @staticmethod y decoradores de propiedades.
Cuando desapruebe una clase, establezca este decorador en su función __init___.
Parámetros
- since (str) – La versión en la que comenzó la depreciación. Si la deprecación está pendiente, establezca la versión en el momento en que comenzó; pero más tarde, al pasar de pendiente a deprecada, actualice
sincea la nueva versión. - additional_msg (str | None) – Ponga aquí cualquier información adicional, como qué utilizar en su lugar. Por ejemplo, "En su lugar, utilice la función
new_funcdel módulo<my_module>.<my_submodule>, que es similar pero utiliza la aceleración de la GPU" - pending (bool) – Establézcalo en
Truesi la depreciación aún está pendiente. - package_name (str) – El nombre del paquete que aparece en el mensaje de depreciación (por ejemplo, el nombre del paquete PyPI ).
- removal_timeline (str) – ¿Cuándo se eliminará esta depreciación? Se espera un valor como "no antes de 6 meses después de la última versión" o "en la versión 9.99 ".
- is_property (bool) – Si la función obsoleta es una @property, establece este valor en True para que el mensaje generado la describa correctamente como tal. (Esto no es necesario para los setters de propiedades, ya que « Python » ignora su cadena de documentación.)
- stacklevel (int) – Nivel de pila pasado a
warnings.warn().
Devuelve
La llamada decorada.
Tipo de retorno
Invocable
Conversión de unidades del Sistema Internacional (SI)
apply_prefix
qiskit.utils.apply_prefix(value, unit)
Dado un prefijo de unidad SI y un valor, aplica el prefijo para convertir a unidad SI estándar.
Parámetros
- value (float |ParameterExpression) – El número al que aplicar el prefijo.
- unit (str) – Prefijo de cadena.
Devuelve
Valor convertido.
Tipo de retorno
Esto puede inducir un pequeño error de valor debido a la representación interna del objeto float. Consulte https://docs.python.org/3/tutorial/floatingpoint.html para más detalles.
Eleva
ValueError – Si no se reconoce unit el.
Parámetros
- value (float |ParameterExpression)
- unit (str)
Tipo de retorno
detach_prefix
qiskit.utils.detach_prefix(value, decimal=None)
Dado un valor en unidades del SI, encuentra el prefijo más adecuado para escalar el valor.
Por ejemplo, value = 1.3e8 se convertirá en una tupla de (130.0, "M"), que representa un valor escalado y una unidad auxiliar que puede utilizarse para mostrar el valor. En el ejemplo anterior, ese valor podría mostrarse como 130 MHz (aquí la unidad es arbitraria).
Ejemplo
>>> value, prefix = detach_prefix(1e4)
>>> print(f"{value} {prefix}Hz")
10 kHzParámetros
- value (float) – El número para encontrar el prefijo.
- decimal (int | None) – Opcional. Un número entero arbitrario para representar la precisión del valor. Si se especifica, intenta redondear la mantisa y ajustar el prefijo al valor redondeado. Por ejemplo, 999_999.91 se convertirá en 999.9999 k con
decimal=4, mientras que 1.0 M condecimal=3o menos.
Devuelve
Una tupla de valor escalado y prefijo.
Tipo de retorno
Esto puede inducir un pequeño error de valor debido a la representación interna del objeto float. Consulte https://docs.python.org/3/tutorial/floatingpoint.html para más detalles.
Eleva
- ValueError - Si el
valueestá fuera de rango. - ValueError - Si el
valueno es un número real.
Parámetros
Tipo de retorno
Herramientas de clase
wrap_method
qiskit.utils.wrap_method(cls, name, *, before=None, after=None)
Envuelve la funcionalidad del método de instancia o clase cls.name con comportamientos adicionales before y after.
Esto muta cls, reemplazando el atributo name con la nueva funcionalidad. Esto es útil cuando se crean decoradores de clase. El método puede definirse en cualquier clase padre.
Si se indican before o after , deben ser callables con una firma compatible con el método al que se hace referencia. Se llamarán inmediatamente antes o después del método, según corresponda, y se ignorará cualquier valor de retorno.
Parámetros
- cls (type) – la clase que se va a modificar.
- name (str) – el nombre del método de la clase a envolver.
- before (Callable | None) – una función que debe invocarse antes del método que se está envolviendo.
- after (Callable | None) – una función que debe ejecutarse después del método que se está envolviendo.
Eleva
ValueError - si el método nombrado no está definido en la clase ni en ninguna clase padre.
Multiprocesamiento
default_num_processes
qiskit.utils.default_num_processes()
Obtiene el número de procesos que una llamada paralela multiproceso utilizará por defecto.
Estas funciones suelen aceptar también un argumento de palabra clave num_processes que sustituirá al valor devuelto por esta función.
En orden de prioridad (de mayor a menor), el valor de retorno será:
- La variable de entorno
QISKIT_NUM_PROCS, si está definida. - La clave
num_processesdel archivo de configuración de usuario de Qiskit, si está configurada. - La mitad de las CPU lógicas disponibles para este proceso, si se puede determinar. Se trata de una aproximación al número de CPU físicas, asumiendo un multiproceso simultáneo doble (SMT); empíricamente, el rendimiento multiproceso de Qiskit parece ser peor cuando se intentan utilizar núcleos SMT.
- 1, si todo lo demás falla.
Si un valor configurado por el usuario se establece en un número inferior a 1, se trata como si fuera 1.
Tipo de retorno
is_main_process
qiskit.utils.is_main_process()
Comprueba si el proceso actual es el principal.
Dado que Python 3.8, esto es idéntico a la forma estándar Python de calcularlo:
>>> import multiprocessing
>>> multiprocessing.parent_process() is NoneEsta función se deja por compatibilidad con versiones anteriores, pero hay pocas razones para no utilizar las herramientas integradas de Python.
Tipo de retorno
local_hardware_info
qiskit.utils.local_hardware_info()
Información básica de hardware sobre la máquina local.
Intenta estimar el número de CPU físicas de la máquina, incluso cuando hyperthreading está activado. El recuento de CPU por defecto es 1 cuando no se puede determinar el recuento real.
Devuelve
La información del hardware.
Tipo de retorno
should_run_in_parallel
qiskit.utils.should_run_in_parallel(num_processes=None)
Decide si una función multiproceso debe generar subprocesos para su paralelización.
En concreto, así es como parallel_map() decide si utilizar el multiprocesamiento o no. El argumento num_processes por sí solo no impone el paralelismo; por defecto, Qiskit sólo utilizará el paralelismo basado en procesos cuando un método de inicio de generación de procesos similar a fork esté en efecto. Puede anular esta decisión configurando el método de inicio multiprocessing que utilice, estableciendo la variable de entorno QISKIT_PARALLEL en "TRUE", o estableciendo parallel = true en su archivo de configuración de usuario.
Esta función incluye dos gestores de contexto que pueden utilizarse para modificar temporalmente el valor de retorno de esta función:
override
should_run_in_parallel.override(value)
Un gestor de contexto dentro del cual should_run_in_parallel() devolverá la dirección value.
Esto no es una anulación completa; Qiskit nunca intentará paralelizar si sólo hay un único proceso disponible, y no permitirá el paralelismo basado en procesos a una profundidad mayor que 1.
Parámetros
value (bool)
ignore_user_settings
should_run_in_parallel.ignore_user_settings()
Un gestor de contexto dentro del cual should_run_in_parallel() ignorará las variables de configuración del entorno.
En particular, la variable de entorno QISKIT_PARALLEL y el archivo de configuración del usuario se ignoran en este contexto.
Parámetros
num_processes (int | None) – el número máximo de procesos solicitados para su uso (None implica el valor por defecto).
Tipo de retorno
Ejemplos
Anula temporalmente los ajustes configurados para desactivar el paralelismo:
>>> 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 función de ayuda para llamar a una función personalizada con Python ProcessPoolExecutor. Las tareas pueden ejecutarse en paralelo utilizando esta función.
parallel_map
qiskit.utils.parallel_map(task, values, task_args=(), task_kwargs=None, num_processes=None)
Ejecución paralela de una asignación de valores a la tarea de función. Esto es funcionalmente equivalente a:
result = [task(value, *task_args, **task_kwargs) for value in values]Esto paralelizará los resultados si el número de values es mayor que uno y should_run_in_parallel() devuelve True. Si no, funcionará en serie.
Parámetros
- task (func) – Función que debe llamarse para cada valor en
values. - values (array_like) – Lista o matriz de valores para los que debe evaluarse la función
task. - task_args (list) – Argumentos adicionales opcionales para la función
task. - task_kwargs (dict) – Argumento de palabra clave adicional opcional para la función
task. - num_processes (int) – Número de procesos a generar. Si no se indica, se utiliza el valor de retorno de
default_num_processes().
Devuelve
La lista de resultados contiene el valor de task(value, *task_args, **task_kwargs) para cada valor de values.
Tipo de retorno
Resultado
Ejemplos
import time
from qiskit.utils import parallel_map
def func(_):
time.sleep(0.1)
return 0
parallel_map(func, list(range(10)));Comprobadores de dependencias opcionales
Qiskit tiene varias funciones que sólo se activan si se cumplen determinadas condiciones opcionales. Este módulo, qiskit.utils.optionalstiene una colección de objetos que pueden ser usados para probar si cierta funcionalidad está disponible, y opcionalmente lanzar MissingOptionalLibraryError si la funcionalidad no está disponible.
Probadores disponibles
Componentes de Qiskit
qiskit.utils.optionals.HAS_AER
Qiskit Aer ofrece simuladores de alto rendimiento para los circuitos cuánticos creados en Qiskit.
qiskit.utils.optionals.HAS_IBMQ
Qiskit IBMQ Provider se utiliza para acceder al hardware de IBM Quantum en la nube IBM.
qiskit.utils.optionals.HAS_IGNIS
Qiskit Ignis proporciona herramientas para la verificación del hardware cuántico, la caracterización del ruido y la corrección de errores.
qiskit.utils.optionals.HAS_TOQM
Qiskit TOQM proporciona pases de transpilador para el algoritmo de mapeo Qubit óptimo en el tiempo.
Bibliotecas externas de Python
qiskit.utils.optionals.HAS_CONSTRAINT
python-constraint es un solucionador de problemas de satisfacción de restricciones, utilizado en el CSPLayout transpilador.
qiskit.utils.optionals.HAS_CPLEX
El optimizador CPLEX de IBM es un solucionador de programación matemática de alto rendimiento para programación lineal, mixta-entera y cuadrática. Qiskit ya no utiliza esta opción, pero sí lo hacía anteriormente, y se mantiene como opcional por motivos de compatibilidad con versiones anteriores.
qiskit.utils.optionals.HAS_CVXPY
CVXPY es un paquete Python para resolver problemas de optimización convexa. Es necesario para calcular las normas del diamante con quantum_info.diamond_norm().
qiskit.utils.optionals.HAS_DOCPLEX
IBM Decision Optimization CPLEX Modelling es una biblioteca para el análisis prescriptivo. Al igual que CPLEX, Qiskit ya no utiliza esta opción, pero sí lo hacía anteriormente y se mantiene por motivos de compatibilidad con versiones anteriores.
qiskit.utils.optionals.HAS_FIXTURES
El conjunto de pruebas tiene funciones adicionales que están disponibles si se instala el módulo opcional de accesorios. Esto generalmente también necesita HAS_TESTTOOLS también. Por lo general, esto sólo es necesario para los desarrolladores de Qiskit.
qiskit.utils.optionals.HAS_IPYTHON
Si el kernel IPython está disponible, ciertas visualizaciones adicionales y magias de línea están disponibles.
qiskit.utils.optionals.HAS_IPYWIDGETS
Se pueden proporcionar widgets de monitorización para trabajos que se ejecutan en backends externos si ipywidgets está disponible.
qiskit.utils.optionals.HAS_JAX
Algunos métodos de cálculo de gradientes dentro de opflow.gradients requieren JAX para la autodiferenciación.
qiskit.utils.optionals.HAS_JUPYTER
Algunas de las pruebas requieren una instalación completa de Jupyter para probar las funciones de interactividad.
qiskit.utils.optionals.HAS_MATPLOTLIB
Qiskit proporciona varias herramientas de visualización en el módulo visualization módulo. Casi todos ellos se construyen utilizando Matplotlib que debe instalarse para poder utilizarlos.
qiskit.utils.optionals.HAS_NETWORKX
Qiskit ya no lo utiliza. Internamente, Qiskit utiliza ahora la biblioteca de alto rendimiento rustworkx como una dependencia del núcleo, y durante el período de cambio, a veces era conveniente convertir las cosas en el formato Python -only NetworkX solamente. Algunas pruebas de módulos de aplicación, como Qiskit Nature, siguen utilizando NetworkX.
qiskit.utils.optionals.HAS_NLOPT
NLopt es una biblioteca de optimización no lineal, utilizada por los optimizadores globales del módulo algorithms.optimizers .
qiskit.utils.optionals.HAS_PIL
PIL es una biblioteca de manipulación de imágenes Python. En realidad, Qiskit utiliza la bifurcación de almohada de PIL si está disponible al generar ciertas visualizaciones, por ejemplo de ambos QuantumCircuit y DAGCircuit en determinados modos.
qiskit.utils.optionals.HAS_PYDOT
Para algunas visualizaciones de gráficos, Qiskit utiliza pydot como interfaz para GraphViz (véase HAS_GRAPHVIZ).
qiskit.utils.optionals.HAS_PYGMENTS
Pygments es un resaltador y formateador de código utilizado por muchos entornos que implican la visualización enriquecida de bloques de código, incluidos Sphinx y Jupyter. Qiskit lo utiliza cuando produce resultados enriquecidos para estos entornos.
qiskit.utils.optionals.HAS_PYLATEX
Varias visualizaciones de LaTeX-based, especialmente los cajones de circuitos, necesitan acceder al proyecto pylatexenc para funcionar correctamente.
qiskit.utils.optionals.HAS_QASM3_IMPORT
Las funciones qasm3.load() y qasm3.loads() para importar programas de OpenQASM 3 a instancias de QuantumCircuit instancias utilizan un paquete importador externo.
qiskit.utils.optionals.HAS_SEABORN
Qiskit proporciona varias herramientas de visualización en el módulo visualization módulo. Algunas de ellas están construidas con Seaborn, que debe instalarse para poder utilizarlas.
qiskit.utils.optionals.HAS_SKLEARN
Algunas de las funciones de gradiente en opflow.gradients utilizan métodos de regularización de Scikit Learn.
qiskit.utils.optionals.HAS_SKQUANT
Algunos de los optimizadores de algorithms.optimizers se basan en los de Scikit Quant, que debe instalarse para poder utilizarlos.
qiskit.utils.optionals.HAS_SQSNOBFIT
SQSnobFit es una biblioteca para el algoritmo de "optimización ruidosa estable por bifurcación y ajuste". Lo utiliza el optimizador SNOBFIT .
qiskit.utils.optionals.HAS_SYMENGINE
Symengine es un backend C++ rápido para la biblioteca de manipulación simbólica Sympy. Esta dependencia se utiliza para cargar formatos QPY heredados, en los que este paquete se utilizaba para manejar Parameters.
qiskit.utils.optionals.HAS_SYMPY
SymPy es una biblioteca de « Python » para matemáticas simbólicas. SymPy se utilizaba históricamente para la implementación de la ParameterExpression clase, pero ya no es así. Sin embargo, es necesario para algunas funciones heredadas que utilizan ParameterExpression.sympify(). También se utiliza en algunas funciones de visualización y en la comparación de plantillas.
qiskit.utils.optionals.HAS_TESTTOOLS
El conjunto de pruebas de Qiskit dispone de funciones más avanzadas si se instala la biblioteca opcional testtools. Por lo general, esto sólo es necesario para los desarrolladores de Qiskit.
qiskit.utils.optionals.HAS_TWEEDLEDUM
Tweedledum es una biblioteca de extensión para la síntesis y optimización de circuitos que pueden implicar oráculos clásicos. En el pasado Qiskit PhaseOracle lo utilizaba, pero Qiskit ya no lo utiliza.
qiskit.utils.optionals.HAS_Z3
Z3 es un probador de teoremas, utilizado en los pases CrosstalkAdaptiveSchedule y HoareOptimizer transpilador.
Herramientas externas de línea de comandos
qiskit.utils.optionals.HAS_GRAPHVIZ
Para algunas visualizaciones de gráficos, Qiskit utiliza la herramienta de GraphViz herramienta de visualización a través de su interfaz pydot (véase HAS_PYDOT).
qiskit.utils.optionals.HAS_PDFLATEX
Las herramientas de visualización que utilizan LaTeX en su salida, como los cajones de circuitos, requieren que pdflatex esté disponible. Por lo general, deberá asegurarse de que dispone de una instalación de LaTeX que funcione y del paquete qcircuit.tex .
qiskit.utils.optionals.HAS_PDFTOCAIRO
Las herramientas de visualización que convierten los archivos LaTeX-generated en imágenes rasterizadas utilizan la herramienta pdftocairo . Forma parte del conjunto de herramientas PDF de Poppler.
Clases Lazy Checker
Cada uno de los comprobadores perezosos es una instancia de LazyDependencyManager en una de sus dos subclases LazyImportTester y LazySubprocessTester. Estos deben importarse desde utils directamente si es necesario, como
from qiskit.utils import LazyImportTesterLazyDependencyManager
class qiskit.utils.LazyDependencyManager(*, name=None, callback=None, install=None, msg=None)
Bases: ABC
Un gestor para algunas funciones opcionales cuya importación o cuya verificación resultan costosas.
Estos objetos pueden utilizarse como booleanos, como if x, y evaluarán True si la dependencia que comprueban está disponible, y False en caso contrario. La presencia de la dependencia sólo se comprobará cuando se evalúe el booleano, por lo que puede utilizarse como prueba en tiempo de ejecución en funciones y métodos sin necesidad de una prueba en tiempo de importación.
Estos objetos también encapsulan el manejo de errores si su dependencia no está presente, por lo que puede hacer cosas como:
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:
...En todos estos casos, matplotlib no se importa hasta que se introducen las funciones. En el caso del decorador, se comprueba la importación de matplotlib cuando se llama a la función por primera vez. En el segundo y tercer caso, el cargador intenta importar matplotlib cuando se llama al método require_now() o cuando se evalúa el contexto booleano. Para los métodos require , se produce un error si la biblioteca no está disponible.
Esta es la clase base, que proporciona la comprobación booleana de contexto y la gestión de errores. Las clases concretas LazyImportTester y LazySubprocessTester proporcionan puntos de entrada convenientes para comprobar que ciertos símbolos son importables desde módulos, o que ciertas herramientas de línea de comandos están disponibles, respectivamente.
Parámetros
- name - el nombre de esta dependencia opcional.
- callback - un callback que se llama inmediatamente después de comprobar la disponibilidad de la biblioteca con el resultado. Sólo se llamará una vez.
- install - cómo instalar esta dependencia opcional. Pasado a
MissingOptionalLibraryErrorcomo parámetropip_install. - msg - un mensaje extra para incluir en el error planteado si esto es necesario.
_is_available
abstractmethod _is_available()
Las subclases de LazyDependencyManager deben anular este método para implementar la prueba de disponibilidad real. Este método debe devolver un booleano, donde True indica que la dependencia estaba disponible. Este método sólo se llamará una vez.
Tipo de retorno
disable_locally
disable_locally()
Crear un contexto, durante el cual el valor del gestor de dependencias será False. Esto significa que dentro del contexto, cualquier llamada a este objeto se comportará como si la dependencia no estuviera disponible, incluyendo la generación de errores. Es válido llamar a este método tanto si ya se ha evaluado la relación como si no. Esto es muy útil en las pruebas.
require_in_call
require_in_call(feature_or_callable: Callable) → Callable
require_in_call(feature_or_callable: str) → Callable[[Callable], Callable]
Crear un decorador para callables que requiera que la dependencia esté disponible cuando se llame a la función o método decorado.
Parámetros
feature_or_callable (str or Callable) – el nombre de la función que requiere estas dependencias. Si esta función se llama directamente como un decorador (por ejemplo @HAS_X.require_in_call en lugar de @HAS_X.require_in_call("my feature")), entonces el nombre de la función se tomará como el nombre de la función, o el nombre de la clase y el método según corresponda.
Devuelve
un decorador que hará que su argumento requiera esta dependencia antes de ser llamado.
Tipo de retorno
Invocable
require_in_instance
require_in_instance(feature_or_class: type) → type
require_in_instance(feature_or_class: str) → Callable[[type], type]
Un decorador de clase que requiere la dependencia está disponible cuando se inicializa la clase. Este decorador puede utilizarse incluso si la clase no define un método __init__ .
Parámetros
feature_or_class (str orType) – el nombre de la función que requiere estas dependencias. Si esta función se llama directamente como un decorador (por ejemplo @HAS_X.require_in_instance en lugar de @HAS_X.require_in_instance("my feature")), entonces el nombre de la característica se tomará como el nombre de la clase.
Devuelve
un decorador de clase que garantiza que la función envuelta esté presente si se inicializa la clase.
Tipo de retorno
Invocable
require_now
require_now(feature)
Intenta importar las dependencias de este objeto y lanza una excepción si no se pueden importar.
Parámetros
feature (str) – el nombre de la función que requiere estas dependencias.
Eleva
MissingOptionalLibraryError - si no se pueden importar las dependencias.
LazyImportTester
class qiskit.utils.LazyImportTester(name_map_or_modules, *, name=None, callback=None, install=None, msg=None)
Bases: LazyDependencyManager
Un comprobador de dependencias perezoso para módulos importables de Python. Los objetos necesarios sólo se importarán en el momento en que se compruebe el valor booleano de este objeto.
Parámetros
- name_map_or_modules (str |dict[str, Iterable[str]] | Iterable[str]) – si se trata de un mapa de nombres, entonces un diccionario en el que las claves son módulos o paquetes, y los valores son iterables de nombres que se intentarán importar desde ese módulo. Debería ser válido escribir
from <module> import <name1>, <name2>, .... Si se trata simplemente de una cadena o de una secuencia iterable de cadenas, debería ser válido escribirimport <module>para cada una de ellas. - name (str | None)
- callback (Callable[[bool], None] | None)
- install (str | None)
- msg (str | None)
Eleva
ValueError - si no se indican módulos.
LazySubprocessTester
class qiskit.utils.LazySubprocessTester(command, *, name=None, callback=None, install=None, msg=None)
Bases: LazyDependencyManager
Un comprobador perezoso que una herramienta de línea de comandos está disponible. El comando sólo se ejecutará una vez, en el momento en que se compruebe el valor booleano de este objeto.
Parámetros
- command (str |Iterable[str]) – las cadenas que componen el comando que se va a ejecutar. Por ejemplo,
["pdflatex", "-version"]. - name (str | None)
- callback (Callable[[bool], None] | None)
- install (str | None)
- msg (str | None)
Eleva
ValueError - si se da un comando vacío.