Interactive Utilities
Le module InteractiveUtils fournit des utilitaires pour l'utilisation interactive de Julia, tels que l'introspection de code et l'accès au presse-papiers. Il est destiné au travail interactif et est chargé automatiquement dans interactive mode.
Base.Docs.apropos — Functionapropos([io::IO=stdout], pattern::Union{AbstractString,Regex})Recherchez les docstrings disponibles pour les entrées contenant pattern.
Lorsque pattern est une chaîne, la casse est ignorée. Les résultats sont imprimés dans io.
apropos peut être appelé depuis le mode d'aide dans le REPL en entourant la requête de guillemets doubles :
help?> "pattern"InteractiveUtils.varinfo — Functionvarinfo(m::Module=Main, pattern::Regex=r""; all=false, imported=false, recursive=false, sortby::Symbol=:name, minsize::Int=0)Retourne un tableau markdown donnant des informations sur les variables globales publiques dans un module, éventuellement restreintes à celles correspondant à pattern.
L'estimation de la consommation mémoire est une limite inférieure approximative de la taille de la structure interne de l'objet.
all: liste également les objets non publics définis dans le module, les objets obsolètes et les objets générés par le compilateur.imported: liste également les objets explicitement importés d'autres modules.recursive: inclut récursivement les objets dans les sous-modules, en respectant les mêmes paramètres dans chaque.sortby: la colonne par laquelle trier les résultats. Les options sont:name(par défaut),:sizeet:summary.minsize: inclut uniquement les objets d'une taille d'au moinsminsizeoctets. Par défaut, c'est0.
La sortie de varinfo est destinée à des fins d'affichage uniquement. Voir aussi names pour obtenir un tableau de symboles définis dans un module, qui est adapté à des manipulations plus générales.
InteractiveUtils.versioninfo — Functionversioninfo(io::IO=stdout; verbose::Bool=false)Imprime des informations sur la version de Julia en cours d'utilisation. La sortie est contrôlée par des arguments clés booléens :
verbose: imprimer toutes les informations supplémentaires
La sortie de cette fonction peut contenir des informations sensibles. Avant de partager la sortie, veuillez la revoir et supprimer toute donnée qui ne devrait pas être partagée publiquement.
Voir aussi : VERSION.
InteractiveUtils.methodswith — Functionmethodswith(typ[, module ou fonction]; supertypes::Bool=false])Renvoie un tableau de méthodes avec un argument de type typ.
Le deuxième argument optionnel restreint la recherche à un module ou une fonction particulière (la valeur par défaut est tous les modules de niveau supérieur).
Si le mot-clé supertypes est true, renvoie également les arguments avec un type parent de typ, en excluant le type Any.
Voir aussi : methods.
InteractiveUtils.subtypes — Functionsubtypes(T::DataType)Renvoie une liste des sous-types immédiats du type de données T. Notez que tous les sous-types actuellement chargés sont inclus, y compris ceux qui ne sont pas visibles dans le module actuel.
Voir aussi supertype, supertypes, methodswith.
Exemples
julia> subtypes(Integer)
3-element Vector{Any}:
Bool
Signed
UnsignedInteractiveUtils.supertypes — Functionsupertypes(T::Type)Renvoie un tuple (T, ..., Any) de T et de tous ses supertypes, déterminé par des appels successifs à la fonction supertype, listés dans l'ordre de <: et terminés par Any.
Voir aussi subtypes.
Exemples
julia> supertypes(Int)
(Int64, Signed, Integer, Real, Number, Any)InteractiveUtils.edit — Methodedit(path::AbstractString, line::Integer=0, column::Integer=0)Modifiez un fichier ou un répertoire en fournissant éventuellement un numéro de ligne pour modifier le fichier à cet endroit. Retournez à l'invite julia lorsque vous quittez l'éditeur. L'éditeur peut être changé en définissant JULIA_EDITOR, VISUAL ou EDITOR en tant que variable d'environnement.
L'argument column nécessite au moins Julia 1.9.
Voir aussi InteractiveUtils.define_editor.
InteractiveUtils.edit — Methodedit(function, [types])
edit(module)Modifiez la définition d'une fonction, en spécifiant éventuellement un tuple de types pour indiquer quelle méthode modifier. Pour les modules, ouvrez le fichier source principal. Le module doit d'abord être chargé avec using ou import.
edit sur les modules nécessite au moins Julia 1.1.
Pour vous assurer que le fichier peut être ouvert à la ligne donnée, vous devrez peut-être appeler InteractiveUtils.define_editor d'abord.
InteractiveUtils.@edit — Macro@editÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle la fonction edit sur l'expression résultante.
InteractiveUtils.define_editor — Functiondefine_editor(fn, pattern; wait=false)Définir un nouvel éditeur correspondant à pattern qui peut être utilisé pour ouvrir un fichier (éventuellement à un numéro de ligne donné) en utilisant fn.
L'argument fn est une fonction qui détermine comment ouvrir un fichier avec l'éditeur donné. Il doit prendre quatre arguments, comme suit :
cmd- un objet de commande de base pour l'éditeurpath- le chemin vers le fichier source à ouvrirline- le numéro de ligne pour ouvrir l'éditeurcolumn- le numéro de colonne pour ouvrir l'éditeur
Les éditeurs qui ne peuvent pas s'ouvrir à une ligne spécifique avec une commande ou une colonne spécifique peuvent ignorer l'argument line et/ou column. Le rappel fn doit retourner soit un objet Cmd approprié pour ouvrir un fichier, soit nothing pour indiquer qu'ils ne peuvent pas éditer ce fichier. Utilisez nothing pour indiquer que cet éditeur n'est pas approprié pour l'environnement actuel et qu'un autre éditeur doit être tenté. Il est possible d'ajouter des hooks d'édition plus généraux qui n'ont pas besoin de lancer des commandes externes en poussant un rappel directement dans le vecteur EDITOR_CALLBACKS.
L'argument pattern est une chaîne, une expression régulière ou un tableau de chaînes et d'expressions régulières. Pour que fn soit appelé, l'un des motifs doit correspondre à la valeur de EDITOR, VISUAL ou JULIA_EDITOR. Pour les chaînes, la chaîne doit être égale à la basename du premier mot de la commande de l'éditeur, avec son extension, le cas échéant, supprimée. Par exemple, "vi" ne correspond pas à "vim -g" mais correspond à "/usr/bin/vi -m" ; elle correspond également à vi.exe. Si pattern est une regex, elle est comparée à toute la commande de l'éditeur sous forme de chaîne échappée par le shell. Un motif de tableau correspond si l'un de ses éléments correspond. Si plusieurs éditeurs correspondent, celui ajouté le plus récemment est utilisé.
Par défaut, julia n'attend pas que l'éditeur se ferme, l'exécutant en arrière-plan. Cependant, si l'éditeur est basé sur un terminal, vous voudrez probablement définir wait=true et julia attendra que l'éditeur se ferme avant de reprendre.
Si l'une des variables d'environnement de l'éditeur est définie, mais qu'aucune entrée d'éditeur ne correspond, l'entrée d'éditeur par défaut est invoquée :
(cmd, path, line, column) -> `$cmd $path`Notez que de nombreux éditeurs sont déjà définis. Toutes les commandes suivantes devraient déjà fonctionner :
- emacs
- emacsclient
- vim
- nvim
- nano
- micro
- kak
- helix
- textmate
- mate
- kate
- subl
- atom
- notepad++
- Visual Studio Code
- open
- pycharm
- bbedit
Exemples
Le suivant définit l'utilisation de emacs basé sur un terminal :
define_editor(
r"\bemacs\b.*\s(-nw|--no-window-system)\b", wait=true) do cmd, path, line
`$cmd +$line $path`
enddefine_editor a été introduit dans Julia 1.4.
InteractiveUtils.less — Methodless(file::AbstractString, [line::Integer])Affiche un fichier en utilisant le pager par défaut, en fournissant éventuellement un numéro de ligne de départ. Retourne à l'invite julia lorsque vous quittez le pager.
InteractiveUtils.less — Methodless(function, [types])Affiche la définition d'une fonction en utilisant le pager par défaut, en spécifiant éventuellement un tuple de types pour indiquer quelle méthode voir.
InteractiveUtils.@less — Macro@lessÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle la fonction less sur l'expression résultante.
Voir aussi : @edit, @which, @code_lowered.
InteractiveUtils.@which — Macro@whichAppliqué à un appel de fonction ou de macro, il évalue les arguments de l'appel spécifié et renvoie l'objet Method pour la méthode qui serait appelée pour ces arguments. Appliqué à une variable, il renvoie le module dans lequel la variable a été liée. Il appelle la fonction which.
InteractiveUtils.@functionloc — Macro@functionlocAppliqué à un appel de fonction ou de macro, il évalue les arguments de l'appel spécifié et renvoie un tuple (nom_fichier, ligne) donnant l'emplacement de la méthode qui serait appelée pour ces arguments. Il appelle la fonction functionloc.
InteractiveUtils.@code_lowered — Macro@code_loweredÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle code_lowered sur l'expression résultante.
Voir aussi : code_lowered, @code_warntype, @code_typed, @code_llvm, @code_native.
InteractiveUtils.@code_typed — Macro@code_typedÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle code_typed sur l'expression résultante. Utilisez l'argument optionnel optimize avec
@code_typed optimize=true foo(x)pour contrôler si des optimisations supplémentaires, telles que l'inlining, sont également appliquées.
Voir aussi : code_typed, @code_warntype, @code_lowered, @code_llvm, @code_native.
InteractiveUtils.code_warntype — Functioncode_warntype([io::IO], f, types; debuginfo=:default)Imprime les AST abaissés et inférés par type pour les méthodes correspondant à la fonction générique donnée et à la signature de type pour io, qui par défaut est stdout. Les AST sont annotés de manière à mettre en évidence les types "non-feuilles" qui peuvent poser des problèmes de performance (s'ils sont disponibles en couleur, affichés en rouge). Cela sert d'avertissement sur une éventuelle instabilité de type.
Tous les types non-feuilles ne sont pas particulièrement problématiques pour la performance, et les caractéristiques de performance d'un type particulier sont un détail d'implémentation du compilateur. code_warntype aura tendance à colorer les types en rouge s'ils pourraient poser un problème de performance, donc certains types peuvent être colorés en rouge même s'ils n'impactent pas la performance. Les petites unions de types concrets ne posent généralement pas de problème, donc celles-ci sont mises en évidence en jaune.
L'argument clé debuginfo peut être l'un de :source ou :none (par défaut), pour spécifier la verbosité des commentaires de code.
Voir la section @code_warntype dans la page des Conseils de Performance du manuel pour plus d'informations.
Voir aussi : @code_warntype, code_typed, code_lowered, code_llvm, code_native.
InteractiveUtils.@code_warntype — Macro@code_warntypeÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle code_warntype sur l'expression résultante.
Voir aussi : code_warntype, @code_typed, @code_lowered, @code_llvm, @code_native.
InteractiveUtils.code_llvm — Functioncode_llvm([io=stdout,], f, types; raw=false, dump_module=false, optimize=true, debuginfo=:default)Imprime les bitcodes LLVM générés pour l'exécution de la méthode correspondant à la fonction générique donnée et à la signature de type dans io.
Si le mot-clé optimize n'est pas défini, le code sera affiché avant les optimisations LLVM. Toutes les métadonnées et les appels dbg.* sont supprimés du bitcode imprimé. Pour obtenir l'IR complet, définissez le mot-clé raw sur true. Pour afficher l'ensemble du module qui encapsule la fonction (avec les déclarations), définissez le mot-clé dump_module sur true. L'argument clé debuginfo peut être l'un de source (par défaut) ou none, pour spécifier la verbosité des commentaires de code.
Voir aussi : @code_llvm, code_warntype, code_typed, code_lowered, code_native.
InteractiveUtils.@code_llvm — Macro@code_llvmÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle code_llvm sur l'expression résultante. Définissez les arguments de mot-clé optionnels raw, dump_module, debuginfo, optimize en les plaçant avec leur valeur avant l'appel de fonction, comme ceci :
@code_llvm raw=true dump_module=true debuginfo=:default f(x)
@code_llvm optimize=false f(x)optimize contrôle si des optimisations supplémentaires, telles que l'inlining, sont également appliquées. raw rend toutes les métadonnées et les appels dbg.* visibles. debuginfo peut être l'un de :source (par défaut) ou :none, pour spécifier la verbosité des commentaires de code. dump_module imprime l'ensemble du module qui encapsule la fonction.
Voir aussi : code_llvm, @code_warntype, @code_typed, @code_lowered, @code_native.
InteractiveUtils.code_native — Functioncode_native([io=stdout,], f, types; syntax=:intel, debuginfo=:default, binary=false, dump_module=true)Imprime les instructions d'assemblage natif générées pour exécuter la méthode correspondant à la fonction générique donnée et à la signature de type dans io.
- Définissez la syntaxe d'assemblage en réglant
syntaxsur:intel(par défaut) pour la syntaxe intel ou:attpour la syntaxe AT&T. - Spécifiez la verbosité des commentaires de code en réglant
debuginfosur:source(par défaut) ou:none. - Si
binaryesttrue, imprimez également le code machine binaire pour chaque instruction précédé d'une adresse abrégée. - Si
dump_moduleestfalse, ne pas imprimer les métadonnées telles que rodata ou directives. - Si
rawestfalse, les instructions peu intéressantes (comme le prologue de la fonction de point de sécurité) sont omises.
Voir aussi : @code_native, code_warntype, code_typed, code_lowered, code_llvm.
InteractiveUtils.@code_native — Macro@code_nativeÉvalue les arguments de l'appel de fonction ou de macro, détermine leurs types et appelle code_native sur l'expression résultante.
Définissez n'importe quel des arguments optionnels syntax, debuginfo, binary ou dump_module en les plaçant avant l'appel de fonction, comme ceci :
@code_native syntax=:intel debuginfo=:default binary=true dump_module=false f(x)- Définissez la syntaxe d'assemblage en réglant
syntaxsur:intel(par défaut) pour la syntaxe Intel ou:attpour la syntaxe AT&T. - Spécifiez la verbosité des commentaires de code en réglant
debuginfosur:source(par défaut) ou:none. - Si
binaryesttrue, imprimez également le code machine binaire pour chaque instruction précédée d'une adresse abrégée. - Si
dump_moduleestfalse, ne pas imprimer les métadonnées telles que rodata ou directives.
Voir aussi : code_native, @code_warntype, @code_typed, @code_lowered, @code_llvm.
Base.@time_imports — Macro@time_importsUne macro pour exécuter une expression et produire un rapport de tout le temps passé à importer des packages et leurs dépendances. Tout le temps de compilation sera rapporté en pourcentage, ainsi que la part de recompilation, le cas échéant.
Une ligne est imprimée par package ou extension de package. La durée affichée est le temps pour importer ce package lui-même, sans inclure le temps pour charger ses dépendances.
Sur Julia 1.9+ package extensions apparaîtra comme Parent → Extension.
Pendant le processus de chargement, un package importe séquentiellement toutes ses dépendances, pas seulement ses dépendances directes.
julia> @time_imports using CSV
50.7 ms Parsers 17.52% temps de compilation
0.2 ms DataValueInterfaces
1.6 ms DataAPI
0.1 ms IteratorInterfaceExtensions
0.1 ms TableTraits
17.5 ms Tables
26.8 ms PooledArrays
193.7 ms SentinelArrays 75.12% temps de compilation
8.6 ms InlineStrings
20.3 ms WeakRefStrings
2.0 ms TranscodingStreams
1.4 ms Zlib_jll
1.8 ms CodecZlib
0.8 ms Compat
13.1 ms FilePathsBase 28.39% temps de compilation
1681.2 ms CSV 92.40% temps de compilationCette macro nécessite au moins Julia 1.8
InteractiveUtils.clipboard — Functionclipboard(x)Envoie une forme imprimée de x au presse-papiers du système d'exploitation ("copier").
clipboard() -> StringRenvoie une chaîne contenant le contenu du presse-papiers du système d'exploitation ("coller").