Spec-Zone.ru › Julia 1.11

Интерактивные утилиты

Модуль InteractiveUtils предоставляет утилиты для интерактивного использования Julia, такие как интроспекция кода и доступ к буферу обмена. Он предназначен для интерактивной работы и загружается автоматически в интерактивном режиме.

Base.Docs.aproposФункция

apropos([io::IO=stdout], pattern::Union{AbstractString,Regex})

Поиск доступных строк документации для записей, содержащих pattern.

Когда pattern является строкой, регистр игнорируется. Результаты выводятся в io.

apropos можно вызвать из режима справки в REPL, заключив запрос в двойные кавычки:

help?> "pattern"
исходный код

InteractiveUtils.varinfoФункция

varinfo(m::Module=Main, pattern::Regex=r""; all=false, imported=false, recursive=false, sortby::Symbol=:name, minsize::Int=0)

Возвращает таблицу Markdown, содержащую информацию о публичных глобальных переменных в модуле, необязательно ограниченных теми, которые соответствуют pattern.

Оценочное значение потребления памяти — это приблизительная нижняя граница размера внутренней структуры объекта.

  • all : также отображать объекты, не являющиеся общедоступными, определённые в модуле, устаревшие объекты и объекты, сгенерированные компилятором.
  • imported : также отображать объекты, явно импортированные из других модулей.
  • recursive : рекурсивно включать объекты в подмодулях, соблюдая те же настройки в каждом.
  • sortby : столбец, по которому сортировать результаты. Доступные варианты — :name (по умолчанию), :size, и :summary.
  • minsize : включать только объекты размером не менее minsize байт. По умолчанию — 0.

Вывод varinfo предназначен только для отображения. Обратитесь также к names, чтобы получить массив символов, определённых в модуле, пригодный для более общих манипуляций.

InteractiveUtils.versioninfoФункция

versioninfo(io::IO=stdout; verbose::Bool=false)

Выводит информацию о версии используемой Julia. Вывод контролируется булевыми ключевыми аргументами:

  • verbose: выводить всю дополнительную информацию

Вывод этой функции может содержать конфиденциальную информацию. Перед тем, как поделиться выводом, пожалуйста, проверьте его и удалите любые данные, которые не следует публиковать.

См. также: VERSION.

InteractiveUtils.methodswithФункция

methodswith(typ[, module or function]; supertypes::Bool=false])

Возвращает массив методов с аргументом типа typ.

Необязательный второй аргумент ограничивает поиск конкретным модулем или функцией (по умолчанию — все модули верхнего уровня).

Если ключевой аргумент supertypes равен true, также возвращает аргументы с типом-предком typ, исключая тип Any.

См. также: methods.

InteractiveUtils.subtypesФункция

subtypes(T::DataType)

Возвращает список непосредственных подтипов типа данных T. Обратите внимание, что все загруженные в настоящее время подтипы включены, включая те, которые не видны в текущем модуле.

См. также supertype, supertypes, methodswith.

Примеры

julia> subtypes(Integer)
3-element Vector{Any}:
 Bool
 Signed
 Unsigned

InteractiveUtils.supertypesФункция

supertypes(T::Type)

Возвращает кортеж (T, ..., Any) из T и всех его типов-предков, как определено последовательными вызовами функции supertype, перечисленных в порядке <: и завершённых Any.

См. также subtypes.

Примеры

julia> supertypes(Int)
(Int64, Signed, Integer, Real, Number, Any)

InteractiveUtils.editМетод

edit(path::AbstractString, line::Integer=0, column::Integer=0)

Редактирование файла или каталога, необязательно указав номер строки для редактирования файла. Возвращение к приглашению julia при выходе из редактора. Редактор можно изменить, задав JULIA_EDITOR, VISUAL или EDITOR как переменную окружения.

Аргумент column требует как минимум Julia 1.9.

См. также InteractiveUtils.define_editor.

InteractiveUtils.editМетод

edit(function, [types])
edit(module)

Редактирование определения функции, необязательно указав кортеж типов для указания, какой метод редактировать. Для модулей открывается основной файл исходного кода. Модуль нужно загрузить с помощью using или import предварительно.

edit для модулей требует как минимум Julia 1.1.

Для того, чтобы файл мог быть открыт на заданной строке, вам может потребоваться вызвать InteractiveUtils.define_editor предварительно.

InteractiveUtils.@editМакрос

@edit

Вычисляет аргументы вызова функции или макроса, определяет их типы и вызывает функцию edit с полученным выражением.

См. также: @less, @which.

InteractiveUtils.define_editorФункция

define_editor(fn, pattern; wait=false)

Определяет новый редактор, соответствующий pattern, который может быть использован для открытия файла (возможно, на заданном номере строки) с помощью fn.

Аргумент fn — функция, определяющая способ открытия файла указанным редактором. Она должна принимать четыре аргумента, как указано ниже:

  • cmd - базовый объект команды для редактора
  • path - путь к файлу исходного кода для открытия
  • line - номер строки для открытия редактора
  • column - номер столбца для открытия редактора

Редакторы, которые не могут открыть файл на определённой строке или столбце с помощью команды, могут проигнорировать аргументы line и/или column. Функция обратного вызова fn должна вернуть соответствующий объект Cmd для открытия файла или nothing, чтобы указать, что они не могут редактировать этот файл. Используйте nothing для указания того, что этот редактор не подходит для текущей среды, и следует попробовать другой. Возможно добавление более общих крючков редактирования, которым не нужно запускать внешние команды, путём непосредственного добавления функции обратного вызова в вектор EDITOR_CALLBACKS.

Аргумент pattern - строка, регулярное выражение или массив строк и регулярных выражений. Для вызова функции fn одно из шаблонов должно соответствовать значению EDITOR, VISUAL или JULIA_EDITOR Для строк строка должна быть равна basename первого слова команды редактора с удалённым расширением, если оно есть. Например, "vi" не соответствует "vim -g", но соответствует "/usr/bin/vi -m"; также соответствует vi.exe Если pattern - это регулярное выражение, оно соответствует всей команде редактора в виде строки, экранированной в стиле оболочки. Массив шаблонов соответствует, если соответствует любой из его элементов. Если несколько редакторов соответствуют, используется тот, который был добавлен последним.

По умолчанию Julia не ждёт закрытия редактора, запускает его в фоновом режиме. Однако, если редактор основан на терминале, вам, вероятно, захочется установить wait=true и Julia будет ждать закрытия редактора перед возобновлением работы.

Если одна из переменных окружения редактора установлена, но ни одна запись редактора не соответствует ей, вызывается запись редактора по умолчанию:

(cmd, path, line, column) -> `$cmd $path`

Обратите внимание, что многие редакторы уже определены. Все следующие команды должны уже работать:

  • emacs
  • emacsclient
  • vim
  • nvim
  • nano
  • micro
  • kak
  • helix
  • textmate
  • mate
  • kate
  • subl
  • atom
  • notepad++
  • Visual Studio Code
  • open
  • pycharm
  • bbedit

Примеры

Следующее определяет использование терминального emacs:

define_editor(
    r"\bemacs\b.*\s(-nw|--no-window-system)\b", wait=true) do cmd, path, line
    `$cmd +$line $path`
end

define_editor был представлен в Julia 1.4.

InteractiveUtils.lessМетод

less(file::AbstractString, [line::Integer])

Отображение файла с помощью стандартного средства просмотра, необязательно указав начальный номер строки. Возврат к приглашению julia при выходе из средства просмотра.

InteractiveUtils.lessМетод

less(function, [types])

Отображение определения функции с помощью стандартного средства просмотра, необязательно указав кортеж типов для указания, какой метод отобразить.

InteractiveUtils.@lessМакрос

@less

Вычисляет аргументы вызова функции или макроса, определяет их типы и вызывает функцию less с полученным выражением.

См. также: @edit, @which, @code_lowered.

InteractiveUtils.@whichМакрос

@which

Применяется к вызову функции или макроса, оценивает аргументы указанного вызова и возвращает объект Method для метода, который был бы вызван для этих аргументов. Применяется к переменной, возвращает модуль, в котором была связана переменная. Вызывает функцию which.

См. также: @less, @edit.

InteractiveUtils.@functionlocМакрос

@functionloc

Применяется к вызову функции или макроса, оценивает аргументы указанного вызова и возвращает кортеж (filename,line) с местоположением метода, который был бы вызван для этих аргументов. Вызывает функцию functionloc.

InteractiveUtils.@code_loweredМакрос

@code_lowered

Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_lowered для полученного выражения.

См. также: code_lowered, @code_warntype, @code_typed, @code_llvm, @code_native.

InteractiveUtils.@code_typedМакрос

@code_typed

Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_typed для полученного выражения. Используйте необязательный аргумент optimize с

@code_typed optimize=true foo(x)

для управления применением дополнительных оптимизаций, таких как встраивание.

См. также: code_typed, @code_warntype, @code_lowered, @code_llvm, @code_native.

InteractiveUtils.code_warntypeФункция

code_warntype([io::IO], f, types; debuginfo=:default)

Выводит пониженные и типизированные AST для методов, соответствующих заданной обобщенной функции и сигнатуре типа в io, по умолчанию stdout. AST аннотированы таким образом, чтобы выделить «нелистовые» типы, которые могут быть проблематичными для производительности (если доступен цвет, отображаются красным). Это служит предупреждением о потенциальной неустойчивости типов.

Не все нелистовые типы являются особенно проблемными для производительности, и характеристики производительности конкретного типа являются деталью реализации компилятора. code_warntype будет склоняться к окрашиванию типов в красный цвет, если они могут представлять собой проблему производительности, поэтому некоторые типы могут быть окрашены красным даже если они не влияют на производительность. Малые объединения конкретных типов обычно не являются проблемой, поэтому они выделяются желтым цветом.

Необязательный ключевой аргумент debuginfo может быть одним из :source или :none (по умолчанию), чтобы указать подробность комментариев к коду.

См. раздел @code_warntype на странице «Советы по производительности» руководства для получения дополнительной информации.

См. также: @code_warntype, code_typed, code_lowered, code_llvm, code_native.

InteractiveUtils.@code_warntypeМакрос

@code_warntype

Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_warntype для полученного выражения.

См. также: code_warntype, @code_typed, @code_lowered, @code_llvm, @code_native.

InteractiveUtils.code_llvmФункция

code_llvm([io=stdout,], f, types; raw=false, dump_module=false, optimize=true, debuginfo=:default)

Выводит сгенерированный LLVM-байткод для выполнения метода, соответствующего заданной обобщенной функции и сигнатуре типа в io.

Если ключевое слово optimize не задано, код будет показан до оптимизации LLVM. Все метаданные и вызовы dbg.* будут удалены из выведенного байткода. Для полной IR установите ключевое слово raw в true. Для вывода всего модуля, содержащего функцию (с объявлениями), установите ключевое слово dump_module в true. Ключевой аргумент debuginfo может быть одним из source (по умолчанию) или none, чтобы указать подробность комментариев к коду.

См. также: @code_llvm, code_warntype, code_typed, code_lowered, code_native.

InteractiveUtils.@code_llvmМакрос

@code_llvm

Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_llvm для полученного выражения. Установите необязательные ключевые аргументы raw, dump_module, debuginfo, optimize перед вызовом функции, например:

@code_llvm raw=true dump_module=true debuginfo=:default f(x)
@code_llvm optimize=false f(x)

optimize управляет применением дополнительных оптимизаций, таких как встраивание. raw делает все метаданные и вызовы dbg.* видимыми. debuginfo может быть одним из :source (по умолчанию) или :none, чтобы указать подробность комментариев к коду. dump_module выводит весь модуль, содержащий функцию.

См. также: code_llvm, @code_warntype, @code_typed, @code_lowered, @code_native.

InteractiveUtils.code_nativeФункция

code_native([io=stdout,], f, types; syntax=:intel, debuginfo=:default, binary=false, dump_module=true)

Выводит сгенерированные машинные инструкции ассемблера для выполнения метода, соответствующего заданной обобщенной функции и сигнатуре типа в io.

  • Установите синтаксис ассемблера, задав syntax на :intel (по умолчанию) для Intel или :att для AT&T.
  • Укажите подробность комментариев к коду, задав debuginfo на :source (по умолчанию) или :none.
  • Если binary равно true, также выведите двоичный машинный код для каждой инструкции, предваряя её сокращённым адресом.
  • Если dump_module равно false, не выводите метаданные, такие как rodata или директивы.
  • Если raw равно false, выводите неинтересные инструкции (например, пролог функции safepoint) не будут выведены.

См. также: @code_native, code_warntype, code_typed, code_lowered, code_llvm.

InteractiveUtils.@code_nativeМакрос

@code_native

Оценивает аргументы вызова функции или макроса, определяет их типы и вызывает code_native для полученного выражения.

Установите любые необязательные ключевые аргументы syntax, debuginfo, binary или dump_module перед вызовом функции, например:

@code_native syntax=:intel debuginfo=:default binary=true dump_module=false f(x)
  • Установите синтаксис ассемблера, задав syntax на :intel (по умолчанию) для Intel или :att для AT&T.
  • Укажите подробность комментариев к коду, задав debuginfo на :source (по умолчанию) или :none.
  • Если binary равно true, также выведите двоичный машинный код для каждой инструкции, предваряя её сокращённым адресом.
  • Если dump_module равно false, не выводите метаданные, такие как rodata или директивы.

См. также: code_native, @code_warntype, @code_typed, @code_lowered, @code_llvm.

Base.@time_importsМакрос

@time_imports

Макрос для выполнения выражения и вывода отчёта о времени, затраченном на импорт пакетов и их зависимостей. Любое время компиляции будет отображено в процентах, и сколько из чего было перекомпиляцией, если таковая была.

Одна строка печатается для каждого пакета или расширения пакета. Показанное время — это время импорта самого пакета, а не загрузка любых его зависимостей.

В Julia 1.9+ расширения пакетов будут отображаться как Родитель → Расширение.

Во время процесса загрузки пакет последовательно импортирует все свои зависимости, а не только свои прямые зависимости.

julia> @time_imports using CSV
     50.7 ms  Parsers 17.52% compilation time
      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% compilation time
      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% compilation time
   1681.2 ms  CSV 92.40% compilation time

Для работы этого макроса требуется как минимум Julia 1.8

END_OF_DOCUMENT_MARKER

InteractiveUtils.clipboardФункция

clipboard(x)

Отправить печатную форму x в буфер обмена операционной системы ("скопировать").

clipboard() -> String

Возвратить строку с содержимым буфера обмена операционной системы ("вставить").

© 2009–2024 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.11/stdlib/InteractiveUtils/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API