Skip to main content
IBM Quantum Platform

Utilitaires

qiskit.utils


Dépréciations

add_deprecation_to_docstring

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

GitHub

Insérer dynamiquement le message de dépréciation dans la docstring de func.

Paramètres

  • func (Callable) – La fonction à modifier.
  • msg (str) – Le message de dépréciation complet.
  • since (str | None) – La version à laquelle la dépréciation a commencé.
  • pending (bool) – La dépréciation est-elle toujours en cours?

Type de retour

Aucun

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

Décorateur indiquant qu'un argument a été déprécié d'une manière ou d'une autre.

Ce décorateur peut être utilisé plusieurs fois sur la même fonction, une fois par argument déprécié. Il doit être placé en dessous d'autres décorateurs tels que @staticmethod et les décorateurs immobiliers.

Paramètres

  • name (str) – Le nom de l'argument déprécié.
  • since (str) – La version à laquelle la dépréciation a commencé. Si la dépréciation est en cours, fixez la version au moment où elle a commencé; mais plus tard, lorsque vous passerez de la catégorie "en cours" à la catégorie "dépréciée", mettez à jour "depuis" avec la nouvelle version.
  • deprecation_description (str | None) – Qu'est-ce qui est déprécié? E.g. "Setting my_func()'s my_arg argument to None" Si elle n'est pas définie, la valeur par défaut sera " {func_name} 's argument {name} ".
  • additional_msg (str | None) – Indiquez ici toute information supplémentaire, par exemple ce qu'il faut utiliser à la place (si new_alias n'est pas défini). Par exemple, "Utilisez plutôt l'argument new_arg, qui est similaire mais n'a pas d'impact sur la configuration du circuit"
  • pending (bool) – Vrai si la dépréciation est toujours en cours.
  • package_name (str) – Le nom du paquet indiqué dans le message de dépréciation (par exemple, le nom du paquet PyPI ).
  • new_alias (str | None) – Si l'arg a simplement été renommé, il faut lui attribuer le nouveau nom. Le décorateur mettra dynamiquement à jour les kwargs de sorte que lorsque l'utilisateur définira l'ancien arg, celui-ci sera transmis en tant que nouvel arg d'alias.
  • predicate (Callable[[Any], bool] | None) – Enregistrez l'avertissement d'exécution uniquement si le prédicat renvoie la valeur True. Cela est utile pour déprécier certaines valeurs ou certains types pour un argument, par exemple lambda my_arg : isinstance(my_arg, dict). Que le prédicat soit défini ou non, l'avertissement d'exécution ne sera consigné que lorsque l'utilisateur spécifie l'argument.
  • removal_timeline (str) – Dans combien de temps cette dépréciation pourra-t-elle être supprimée? Attend une valeur telle que "au plus tôt 6 mois après la dernière version" ou "dans la version 9.99 ".

Retours

L'objet à appeler décoré.

Type de retour

Appelable

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

Décorateur indiquant qu'une fonction a été dépréciée.

Il doit être placé en dessous d'autres décorateurs comme @staticmethod et les décorateurs de propriété.

Lors de la dépréciation d'une classe, ce décorateur est appliqué à sa fonction \N_init_\N.

Paramètres

  • since (str) – La version à laquelle la dépréciation a commencé. Si la dépréciation est en cours, fixez la version à la date de début de la dépréciation; mais plus tard, lorsque vous passerez de la catégorie "en cours" à la catégorie "dépréciée", mettez à jour since en fonction de la nouvelle version.
  • additional_msg (str | None) – Indiquez ici toute information supplémentaire, par exemple ce qu'il convient d'utiliser à la place. Par exemple, "Utilisez plutôt la fonction new_func du module <my_module>.<my_submodule>, qui est similaire mais utilise l'accélération GPU"
  • pending (bool) – Défini à True si la dépréciation est toujours en cours.
  • package_name (str) – Le nom du paquet indiqué dans le message de dépréciation (par exemple, le nom du paquet PyPI ).
  • removal_timeline (str) – Dans combien de temps cette dépréciation pourra-t-elle être supprimée? Attend une valeur telle que "au plus tôt 6 mois après la dernière version" ou "dans la version 9.99 ".
  • is_property (bool) – Si la fonction obsolète est une @property, définissez cette option sur True afin que le message généré la présente correctement comme telle. (Cela n'est pas nécessaire pour les accesseurs de propriété, car leur chaîne de documentation est ignorée par Python.)
  • stacklevel (int) – Niveau de pile transmis à warnings.warn().

Retours

L'objet à appeler décoré.

Type de retour

Appelable


Conversion des unités SI

apply_prefix

qiskit.utils.apply_prefix(value, unit)

GitHub

Étant donné le préfixe et la valeur d'une unité SI, appliquer le préfixe pour convertir en unité SI standard.

Paramètres

Retours

Valeur convertie.

Type de retour

float | ParameterExpression

Remarque

Cela peut induire une erreur de valeur minuscule due à la représentation interne de l'objet flottant. Voir https://docs.python.org/3/tutorial/floatingpoint.html pour plus de détails.

Augmentations

ValueError – Si le unit n'est pas reconnu.

Paramètres

Type de retour

float | ParameterExpression

detach_prefix

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

GitHub

Étant donné la valeur d'une unité SI, trouver le préfixe le plus approprié pour mettre cette valeur à l'échelle.

Par exemple, le site value = 1.3e8 sera converti en un tuple de (130.0, "M"), qui représente une valeur mise à l'échelle et une unité auxiliaire pouvant être utilisée pour afficher la valeur. Dans l'exemple ci-dessus, cette valeur pourrait être affichée sous la forme 130 MHz (l'unité est ici arbitraire).

Exemple

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

Paramètres

  • value (float) – Le numéro de recherche du préfixe.
  • decimal (int | None) – En option. Un nombre entier arbitraire pour représenter la précision de la valeur. Si elle est spécifiée, elle tente d'arrondir la mantisse et d'ajuster le préfixe à la valeur arrondie. Par exemple, 999_999.91 deviendra 999.9999 k avec decimal=4, tandis que 1.0 M avec decimal=3 ou moins.

Retours

Un tuple de la valeur mise à l'échelle et du préfixe.

Type de retour

tuple[ float, str ]

Remarque

Cela peut induire une erreur de valeur minuscule due à la représentation interne de l'objet flottant. Voir https://docs.python.org/3/tutorial/floatingpoint.html pour plus de détails.

Augmentations

  • ValueError - Si le site value est hors de portée.
  • ValueError - Si le value n'est pas un nombre réel.

Paramètres

Type de retour

tuple[ float, str ]


Outils de classe

wrap_method

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

GitHub

Envelopper la fonctionnalité de la méthode d'instance ou de classe cls.name avec un comportement supplémentaire before et after.

Cette opération fait muter cls, en remplaçant l'attribut name par la nouvelle fonctionnalité. Ceci est utile lors de la création de décorateurs de classe. La méthode peut être définie dans n'importe quelle classe mère à la place.

Si before ou after sont fournis, ils doivent être des callables dont la signature est compatible avec la méthode à laquelle il est fait référence. Elles seront appelées immédiatement avant ou après la méthode, selon le cas, et toute valeur de retour sera ignorée.

Paramètres

  • cls (type) – la classe à modifier.
  • name (str) – le nom de la méthode de la classe à intégrer.
  • before (Callable | None) – une fonction qui doit être appelée avant la méthode encapsulée.
  • after (Callable | None) – une fonction qui doit être appelée après la méthode encapsulée.

Augmentations

ValueError - si la méthode nommée n'est pas définie dans la classe ou dans une classe parente.


Multitraitement

default_num_processes

qiskit.utils.default_num_processes()

GitHub

Obtenir le nombre de processus qu'un appel parallèle multiprocessus utilisera par défaut.

Ces fonctions acceptent généralement un mot-clé num_processes qui remplacera la valeur renvoyée par cette fonction.

Par ordre de priorité (du plus élevé au plus bas), la valeur de retour sera la suivante :

  1. La variable d'environnement QISKIT_NUM_PROCS , si elle est définie.
  2. La clé num_processes du fichier de configuration utilisateur de Qiskit, si elle est définie.
  3. La moitié des CPU logiques disponibles pour ce processus, si cela peut être déterminé. Il s'agit d'une approximation du nombre de CPU physiques, en supposant un double multithreading simultané (SMT); empiriquement, les performances de Qiskit en matière de multiprocessing semblent être moins bonnes lorsque l'on tente d'utiliser des cœurs SMT.
  4. 1, si tout le reste échoue.

Si une valeur configurée par l'utilisateur est fixée à un nombre inférieur à 1, elle est traitée comme si elle était égale à 1.

Type de retour

int

is_main_process

qiskit.utils.is_main_process()

GitHub

Vérifie si le processus en cours est le processus principal.

Puisque Python 3.8, ce calcul est identique à la méthode standard Python :

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

Cette fonction est laissée pour la compatibilité ascendante, mais il y a peu de raisons de ne pas utiliser l'outillage intégré de Python.

Type de retour

booléen

local_hardware_info

qiskit.utils.local_hardware_info()

GitHub

Informations matérielles de base sur la machine locale.

Tente d'estimer le nombre de CPU physiques dans la machine, même lorsque l'hyperthreading est activé. Le nombre de CPU est fixé par défaut à 1 lorsque le nombre réel ne peut être déterminé.

Retours

Les informations sur le matériel.

Type de retour

dict

should_run_in_parallel

qiskit.utils.should_run_in_parallel(num_processes=None)

GitHub

Décider si une fonction multiprocessus doit générer des sous-processus pour la parallélisation.

En particulier, c'est ainsi que parallel_map() décide d'utiliser ou non le multiprocessing. L'argument num_processes seul n'impose pas le parallélisme; par défaut, Qiskit n'utilisera le parallélisme basé sur les processus que lorsqu'une méthode de démarrage de processus de type fork est en vigueur. Vous pouvez passer outre cette décision en définissant la méthode de démarrage que vous utilisez multiprocessing que vous utilisez, en définissant la variable d'environnement QISKIT_PARALLEL sur "TRUE", ou en définissant parallel = true dans votre fichier de paramètres utilisateur.

Cette fonction comprend deux gestionnaires de contexte qui peuvent être utilisés pour modifier temporairement la valeur de retour de cette fonction :

override

should_run_in_parallel.override(value)

GitHub

Un gestionnaire de contexte dans lequel should_run_in_parallel() renverra l'adresse value.

Il ne s'agit pas d'un remplacement complet; Qiskit n'essaiera jamais de paralléliser si un seul processus est disponible, et n'autorisera pas le parallélisme basé sur les processus à une profondeur supérieure à 1.

Paramètres

value (bool)

ignore_user_settings

should_run_in_parallel.ignore_user_settings()

GitHub

Un gestionnaire de contexte dans lequel should_run_in_parallel() ignore les variables de configuration de l'environnement.

En particulier, la variable d'environnement QISKIT_PARALLEL et le fichier de configuration de l'utilisateur sont ignorés dans ce contexte.

Paramètres

num_processes (int | None) – le nombre maximal de processus à utiliser (None est la valeur par défaut).

Type de retour

booléen

Exemples

Remplacer temporairement les paramètres configurés pour désactiver le parallélisme :

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

Une fonction d'aide pour appeler une fonction personnalisée avec Python ProcessPoolExecutor. Cette fonction permet d'exécuter des tâches en parallèle.

parallel_map

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

GitHub

Exécution parallèle d'un mappage de valeurs à la tâche de la fonction. Cela équivaut fonctionnellement à :

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

Les résultats seront parallélisés si le nombre d'adresses values est supérieur à un should_run_in_parallel() renvoie True. Si ce n'est pas le cas, il sera exécuté en série.

Paramètres

  • task (func) – Fonction qui doit être appelée pour chaque valeur dans values.
  • values (array_like) – Liste ou tableau de valeurs pour lesquelles la fonction task doit être évaluée.
  • task_args (list) – Arguments supplémentaires facultatifs pour la fonction task .
  • task_kwargs (dict) – Mot-clé supplémentaire facultatif pour la fonction task .
  • num_processes (int) – Nombre de processus à lancer. Si elle n'est pas donnée, la valeur de retour de default_num_processes() est utilisée.

Retours

La liste des résultats contient la valeur de task(value, *task_args, **task_kwargs) pour chaque valeur de values.

Type de retour

résultat

Exemples

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

Vérificateurs de dépendance facultatifs

Qiskit possède plusieurs fonctionnalités qui ne sont activées que si certaines dépendances optionnelles sont satisfaites. Ce module, qiskit.utils.optionalspossède une collection d'objets qui peuvent être utilisés pour tester si une certaine fonctionnalité est disponible, et optionnellement lever MissingOptionalLibraryError si la fonctionnalité n'est pas disponible.

Testeurs disponibles

Composants Qiskit

qiskit.utils.optionals.HAS_AER

Qiskit Aer propose des simulateurs hautement performants pour les circuits quantiques créés dans Qiskit.

qiskit.utils.optionals.HAS_IBMQ

Le site Qiskit IBMQ Provider est utilisé pour accéder au matériel IBM Quantum dans le nuage IBM.

qiskit.utils.optionals.HAS_IGNIS

Qiskit Ignis fournit des outils pour la vérification du matériel quantique, la caractérisation du bruit et la correction des erreurs.

qiskit.utils.optionals.HAS_TOQM

Qiskit TOQM fournit des passes de transpilation pour l' algorithme de mappage Qubit optimal en temps.

Bibliothèques d' Python s externes

qiskit.utils.optionals.HAS_CONSTRAINT

python-constraint est un solveur de problèmes de satisfaction de contraintes, utilisé dans la CSPLayout passe de transcompilation.

qiskit.utils.optionals.HAS_CPLEX

L'optimiseur CPLEX d' IBM est un solveur de programmation mathématique hautement performant destiné à la programmation linéaire, mixte-entière et quadratique. Cette option n'est plus utilisée par Qiskit, mais elle l'était auparavant et est conservée à des fins de compatibilité ascendante.

qiskit.utils.optionals.HAS_CVXPY

CVXPY est un paquetage Python pour la résolution de problèmes d'optimisation convexe. Il est nécessaire pour calculer les normes de diamant avec quantum_info.diamond_norm().

qiskit.utils.optionals.HAS_DOCPLEX

IBM Decision Optimization CPLEX Modelling est une bibliothèque dédiée à l'analyse prescriptive. Tout comme CPLEX, cette option n'est plus utilisée par Qiskit, mais elle l'était auparavant et a été conservée à des fins de compatibilité ascendante.

qiskit.utils.optionals.HAS_FIXTURES

La suite de tests comporte des fonctionnalités supplémentaires qui sont disponibles si le module de fixation optionnel est installé. En règle générale, il faut également HAS_TESTTOOLS également. Ceci n'est généralement nécessaire que pour les développeurs Qiskit.

qiskit.utils.optionals.HAS_IPYTHON

Si le noyau IPython est disponible, certaines visualisations supplémentaires et certaines magies de ligne sont disponibles.

qiskit.utils.optionals.HAS_IPYWIDGETS

Des widgets de surveillance pour les travaux exécutés sur des serveurs externes peuvent être fournis si ipywidgets est disponible.

qiskit.utils.optionals.HAS_JAX

Certaines méthodes de calcul de gradient dans opflow.gradients nécessitent JAX pour l'autodifférenciation.

qiskit.utils.optionals.HAS_JUPYTER

Certains tests nécessitent une installation complète de Jupyter pour tester les fonctions d'interactivité.

qiskit.utils.optionals.HAS_MATPLOTLIB

Qiskit fournit plusieurs outils de visualisation dans le module visualization module. La quasi-totalité d'entre eux sont construits à l'aide de Matplotlib qui doit être installé pour pouvoir les utiliser.

qiskit.utils.optionals.HAS_NETWORKX

N'est plus utilisé par Qiskit. En interne, Qiskit utilise maintenant la bibliothèque haute performance rustworkx comme dépendance principale, et pendant la période de transition, il était parfois pratique de convertir les choses dans le format Python -only NetworkX uniquement. Certains tests de modules d'application, tels que Qiskit Nature, utilisent encore NetworkX.

qiskit.utils.optionals.HAS_NLOPT

NLopt est une bibliothèque d'optimisation non linéaire, utilisée par les optimiseurs globaux du module algorithms.optimizers .

qiskit.utils.optionals.HAS_PIL

PIL est une bibliothèque de manipulation d'images de type « Python ». Qiskit utilise en fait le fork « pillow » de PIL s’il est disponible lors de la génération de certaines visualisations, par exemple celles de QuantumCircuit et DAGCircuit dans certains modes.

qiskit.utils.optionals.HAS_PYDOT

Pour certaines visualisations de graphes, Qiskit utilise pydot comme interface avec GraphViz (voir HAS_GRAPHVIZ).

qiskit.utils.optionals.HAS_PYGMENTS

Pygments est un surligneur de code et un formateur utilisé par de nombreux environnements qui impliquent un affichage riche des blocs de code, y compris Sphinx et Jupyter. Qiskit l'utilise pour produire des documents riches pour ces environnements.

qiskit.utils.optionals.HAS_PYLATEX

Diverses visualisations de LaTeX-based, en particulier les tiroirs de circuits, ont besoin d'un accès au projet pylatexenc pour fonctionner correctement.

qiskit.utils.optionals.HAS_QASM3_IMPORT

Les fonctions qasm3.load() et qasm3.loads() pour importer les programmes OpenQASM 3 dans les instances QuantumCircuit instances utilisent un paquetage d'importateur externe.

qiskit.utils.optionals.HAS_SEABORN

Qiskit fournit plusieurs outils de visualisation dans le module visualization module. Certains d'entre eux sont construits à l'aide de Seaborn, qui doit être installé pour pouvoir les utiliser.

qiskit.utils.optionals.HAS_SKLEARN

Certaines fonctions de gradient dans opflow.gradients utilisent des méthodes de régularisation de Scikit Learn.

qiskit.utils.optionals.HAS_SKQUANT

Certains optimiseurs de algorithms.optimizers sont basés sur ceux de Scikit Quant, qui doit être installé pour les utiliser.

qiskit.utils.optionals.HAS_SQSNOBFIT

SQSnobFit est une bibliothèque pour l'algorithme "stable noisy optimization by branch and fit". Il est utilisé par l'optimiseur SNOBFIT .

qiskit.utils.optionals.HAS_SYMENGINE

Symengine est un backend C++ rapide pour la bibliothèque de manipulation symbolique Sympy. ParameterCette dépendance sert à charger les anciens formats QPY, pour lesquels ce paquet était utilisé.

qiskit.utils.optionals.HAS_SYMPY

SymPy est une bibliothèque d' Python s dédiée aux mathématiques symboliques. SymPy était autrefois utilisé pour l'implémentation de la ParameterExpression classe, mais ce n'est plus le cas aujourd'hui. Cependant, cela est nécessaire pour certaines fonctionnalités héritées qui utilisent ParameterExpression.sympify(). Il est également utilisé dans certaines fonctions de visualisation et dans la reconnaissance de formes.

qiskit.utils.optionals.HAS_TESTTOOLS

La suite de tests de Qiskit dispose de fonctionnalités plus avancées si la bibliothèque optionnelle testtools est installée. Ceci n'est généralement nécessaire que pour les développeurs Qiskit.

qiskit.utils.optionals.HAS_TWEEDLEDUM

Tweedledum est une bibliothèque d'extension dédiée à la synthèse et à l'optimisation de circuits pouvant faire appel à des oracles classiques. Par le passé, Qiskit PhaseOracle utilisait cette fonctionnalité, mais elle n'est plus utilisée par Qiskit.

qiskit.utils.optionals.HAS_Z3

Z3 est un démonstrateur de théorèmes, utilisé dans les CrosstalkAdaptiveSchedule étapes de compilation et HoareOptimizer .

Outils de ligne de commande externes

qiskit.utils.optionals.HAS_GRAPHVIZ

Pour certaines visualisations de graphes, Qiskit utilise l'outil de visualisation GraphViz via son interface pydot (voir HAS_PYDOT).

qiskit.utils.optionals.HAS_PDFLATEX

Les outils de visualisation qui utilisent LaTeX dans leurs résultats, tels que les tiroirs de circuits, nécessitent que pdflatex soit disponible. Vous devrez généralement vous assurer que vous disposez d'une installation LaTeX fonctionnelle et du paquetage qcircuit.tex .

qiskit.utils.optionals.HAS_PDFTOCAIRO

Les outils de visualisation qui convertissent les fichiers LaTeX-generated en images tramées utilisent l'outil pdftocairo . Il fait partie de la suite d'outils PDF Poppler.

Classes Lazy Checker

Chacun des vérificateurs paresseux est une instance de LazyDependencyManager dans l'une de ses deux sous-classes : LazyImportTester et LazySubprocessTester. Ceux-ci doivent être importés directement de utils directement si nécessaire, comme par exemple :

from qiskit.utils import LazyImportTester

LazyDependencyManager

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

GitHub

Bases : ABC

Un gestionnaire pour certaines fonctionnalités optionnelles dont l'importation ou la vérification de l'existence est coûteuse.

Ces objets peuvent être utilisés comme des booléens, tels que if x, et évalueront True si la dépendance qu'ils testent est disponible, et False si elle ne l'est pas. La présence de la dépendance ne sera testée que lors de l'évaluation du booléen, ce qui permet de l'utiliser comme test d'exécution dans les fonctions et les méthodes sans nécessiter de test d'importation.

Ces objets encapsulent également la gestion des erreurs si leur dépendance n'est pas présente, de sorte que vous pouvez faire des choses telles que :

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:
        ...

Dans tous ces cas, matplotlib n'est pas importé tant que les fonctions ne sont pas saisies. Dans le cas du décorateur, matplotlib est testé pour l'importation lorsque la fonction est appelée pour la première fois. Dans les deuxième et troisième cas, le chargeur tente d'importer matplotlib lorsque la méthode est appelée ou lorsque le contexte booléen est évalué require_now() est appelée ou lorsque le contexte booléen est évalué. Pour les méthodes require , une erreur est soulevée si la bibliothèque n'est pas disponible.

Il s'agit de la classe de base qui assure la vérification du contexte booléen et la gestion des erreurs. Les classes concrètes LazyImportTester et LazySubprocessTester fournissent des points d'entrée pratiques pour tester que certains symboles sont importables à partir de modules, ou que certains outils de ligne de commande sont disponibles, respectivement.

Paramètres

  • name - le nom de cette dépendance optionnelle.
  • callback - un callback qui est appelé immédiatement après que la disponibilité de la bibliothèque a été testée avec le résultat. Elle ne sera appelée qu'une seule fois.
  • install - comment installer cette dépendance optionnelle. Transmis à MissingOptionalLibraryError comme paramètre pip_install .
  • msg - un message supplémentaire à inclure dans l'erreur soulevée si cela est nécessaire.
_is_available

abstractmethod _is_available()

GitHub

Les sous-classes de LazyDependencyManager doivent remplacer cette méthode pour mettre en œuvre le test de disponibilité proprement dit. Cette méthode doit renvoyer un booléen, où True indique que la dépendance était disponible. Cette méthode ne sera appelée qu'une seule fois.

Type de retour

booléen

disable_locally

disable_locally()

GitHub

Créer un contexte, pendant lequel la valeur du gestionnaire de dépendances sera False. Cela signifie que dans le contexte, tout appel à cet objet se comportera comme si la dépendance n'était pas disponible, y compris en soulevant des erreurs. Il est possible d'appeler cette méthode, que la dépendance ait déjà été évaluée ou non. Cette fonction est particulièrement utile pour les tests.

require_in_call

require_in_call(feature_or_callable: Callable) → Callable

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

GitHub

Créer un décorateur pour les éléments appelables qui exige que la dépendance soit disponible lorsque la fonction ou la méthode décorée est appelée.

Paramètres

feature_or_callable (str or Callable) – le nom de l'élément qui nécessite ces dépendances. Si cette fonction est appelée directement en tant que décorateur (par exemple @HAS_X.require_in_call au lieu de @HAS_X.require_in_call("my feature")), le nom de l'élément sera considéré comme étant le nom de la fonction, ou le nom de la classe et de la méthode, selon le cas.

Retours

un décorateur qui fera en sorte que son argument nécessite cette dépendance avant d'être appelé.

Type de retour

Appelable

require_in_instance

require_in_instance(feature_or_class: type) → type

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

GitHub

Un décorateur de classe qui exige la dépendance est disponible lors de l'initialisation de la classe. Ce décorateur peut être utilisé même si la classe ne définit pas de méthode __init__ .

Paramètres

feature_or_class (str orType) – le nom de l'élément qui nécessite ces dépendances. Si cette fonction est appelée directement en tant que décorateur (par exemple @HAS_X.require_in_instance au lieu de @HAS_X.require_in_instance("my feature")), le nom de l'élément sera considéré comme le nom de la classe.

Retours

un décorateur de classe qui garantit que la fonctionnalité enveloppée est présente lors de l'initialisation de la classe.

Type de retour

Appelable

require_now

require_now(feature)

GitHub

Tente avec enthousiasme d'importer les dépendances de cet objet et lève une exception si elles ne peuvent pas être importées.

Paramètres

feature (str) – le nom de l'élément qui nécessite ces dépendances.

Augmentations

MissingOptionalLibraryError - si les dépendances ne peuvent pas être importées.

LazyImportTester

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

GitHub

Bases : LazyDependencyManager

Un testeur de dépendance paresseux pour les modules importables de Python. Tous les objets requis ne seront importés qu'au moment où cet objet est testé pour sa valeur booléenne.

Paramètres

  • name_map_or_modules (str |dict[str, Iterable[str]] | Iterable[str]) – s'il s'agit d'une table de noms, alors un dictionnaire dont les clés sont des modules ou des paquets, et dont les valeurs sont des séquences de noms à importer à partir de ce module. Il devrait être possible d'écrire from <module> import <name1>, <name2>, .... S'il s'agit simplement d'une chaîne de caractères ou d'un ensemble itérable de chaînes, il devrait alors être possible d'écrire « import <module> pour chacune d'entre elles ».
  • name (str | None) – le nom de cette dépendance facultative.
  • callback (Callable[[bool], None] | None) – une fonction de rappel qui est appelée dès que la disponibilité de la bibliothèque a été vérifiée, avec le résultat. Cette fonction ne sera appelée qu'une seule fois.
  • install (str | None) – Comment installer cette dépendance facultative. Transmis à MissingOptionalLibraryError en tant que pip_install paramètre.
  • msg (str | None) – un message supplémentaire à inclure dans l'erreur générée si cela s'avère nécessaire.

Augmentations

ValueError - si aucun module n'est indiqué.

LazySubprocessTester

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

GitHub

Bases : LazyDependencyManager

Vérifie paresseusement qu'un outil en ligne de commande est disponible. La commande ne sera exécutée qu'une seule fois, au moment où la valeur booléenne de cet objet est vérifiée.

Paramètres

  • command (str |Iterable[str]) – les chaînes de caractères qui composent la commande à exécuter. Par exemple, ["pdflatex", "-version"].
  • name (str | None) – le nom de cette dépendance facultative.
  • callback (Callable[[bool], None] | None) – une fonction de rappel qui est appelée dès que la disponibilité de la bibliothèque a été vérifiée, avec le résultat. Cette fonction ne sera appelée qu'une seule fois.
  • install (str | None) – Comment installer cette dépendance facultative. Transmis à MissingOptionalLibraryError en tant que pip_install paramètre.
  • msg (str | None) – un message supplémentaire à inclure dans l'erreur générée si cela s'avère nécessaire.

Augmentations

ValueError - si une commande vide est donnée.

Cette page a-t-elle été utile ?
Signaler un bogue, une coquille ou proposer du contenu sur GitHub.