Add in node documentation (Partially AI)

This commit is contained in:
mcDandy
2026-06-11 23:27:37 +02:00
parent 25d0a3ca8a
commit 34db35ad07
4 changed files with 715 additions and 572 deletions
+47 -11
View File
@@ -27,7 +27,6 @@ if (-not (Test-Path $g4Path)) {
$rawContent = [System.IO.File]::ReadAllText($g4Path, [System.Text.Encoding]::UTF8)
$content = $rawContent -replace '//.*', ''
$content = $content -replace '/\*[\s\S]*?\*/', ''
function Get-LexerNames([string]$grammarText) {
$map = @{}
@@ -78,7 +77,19 @@ function New-Snippet([string]$name) {
return "${name}()"
}
function Add-FunctionRuleLine([hashtable]$meta, [hashtable]$lexerMap, [string]$line) {
# Pomocná funkce pro vyčištění ANTLR docstringu do jednoho čistého řádku textu
function Clean-Docstring([string]$doc) {
if ([string]::IsNullOrEmpty($doc)) { return "" }
$lines = $doc -split "`r?`n"
$cleanLines = @()
foreach ($l in $lines) {
$t = $l.Trim().TrimStart('/*').TrimEnd('*/').TrimStart('*').Trim()
if ($t) { $cleanLines += $t }
}
return ($cleanLines -join " ") -replace '"', '\"'
}
function Add-FunctionRuleLine([hashtable]$meta, [hashtable]$lexerMap, [string]$line, [string]$currentDoc) {
$clean = (($line -split '\s+#')[0]).Trim().TrimEnd(';')
if ($clean -notmatch 'LPAREN') { return }
if ($clean -notmatch '(?:^\s*\|\s*)?(\w+)\s+LPAREN\s*(.*?)\s+RPAREN\s*$') { return }
@@ -89,10 +100,13 @@ function Add-FunctionRuleLine([hashtable]$meta, [hashtable]$lexerMap, [string]$l
$names = $lexerMap[$token]
if (-not $names) { return }
$cleanDoc = Clean-Docstring $currentDoc
foreach ($fn in $names) {
$entry = @{
minArgs = $bounds.min
snippet = (New-Snippet $fn)
minArgs = $bounds.min
snippet = (New-Snippet $fn)
description = $cleanDoc
}
if ($null -eq $bounds.max) {
$entry.maxArgs = $null
@@ -106,25 +120,46 @@ function Add-FunctionRuleLine([hashtable]$meta, [hashtable]$lexerMap, [string]$l
function Get-FunctionMeta([string]$grammarText, [hashtable]$lexerMap) {
$meta = @{}
$inFunc = $false
$currentDoc = ""
foreach ($line in ($grammarText -split "`r?`n")) {
# Zachytávání docstringů před pravidly
if ($line -match '^\s*/\*\*') {
$currentDoc = $line
if ($line -notmatch '\*/\s*$') {
# Pokud je komentář víceřádkový, podržíme ho, dokud neskončí
$inDocBlock = $true
continue
}
}
if ($inDocBlock) {
$currentDoc += "`n" + $line
if ($line -match '\*/\s*$') { $inDocBlock = $false }
continue
}
if ($line -match '^\s*//\s*LEXER') { $inFunc = $false }
if ($line -match '^\s*(func0|func1|func2|func3|func4|func5|funcN|funcNoise)\s*:\s*(.*)$') {
$inFunc = $true
$inline = $matches[2].Trim()
if ($inline -and $inline -match 'LPAREN') {
Add-FunctionRuleLine $meta $lexerMap $inline
Add-FunctionRuleLine $meta $lexerMap $inline $currentDoc
$currentDoc = "" # Reset po spotřebování docstringu
}
continue
}
if (-not $inFunc) { continue }
if (-not $inFunc) {
# Pokud řádek není prázdný a není to komentář, resetujeme docstring, pokud nepatří k funkci
if ($line.Trim() -and $line -notmatch '^\s*\|') { $currentDoc = "" }
continue
}
Add-FunctionRuleLine $meta $lexerMap $line
Add-FunctionRuleLine $meta $lexerMap $line $currentDoc
$currentDoc = "" # Reset po spotřebování
}
return $meta
}
# 1. Extract quoted symbols for keyword/function lists
$matches = [regex]::Matches($content, "'([a-zA-Z_][a-zA-Z0-9_]*)'")
$allSymbols = @()
@@ -167,7 +202,7 @@ $pyMetaLines = @()
foreach ($key in $sortedMetaKeys) {
$m = $functionMeta[$key]
$maxPart = if ($null -eq $m.maxArgs) { "None" } else { [string]$m.maxArgs }
$pyMetaLines += " '$key': {'min_args': $($m.minArgs), 'max_args': $maxPart, 'snippet': '$($m.snippet)'},"
$pyMetaLines += " '$key': {'min_args': $($m.minArgs), 'max_args': $maxPart, 'snippet': '$($m.snippet)', 'description': '$($m.description)'},"
}
$pyPath = "inbuilt_symbols.py"
@@ -196,12 +231,13 @@ $jsMetaLines = @()
foreach ($key in $sortedMetaKeys) {
$m = $functionMeta[$key]
if ($null -eq $m.maxArgs) {
$jsMetaLines += " $key`: { minArgs: $($m.minArgs), maxArgs: null, snippet: `"$($m.snippet)`" },"
$jsMetaLines += " $key`: { minArgs: $($m.minArgs), maxArgs: null, snippet: `"$($m.snippet)`", description: `"$($m.description)`" },"
} else {
$jsMetaLines += " $key`: { minArgs: $($m.minArgs), maxArgs: $($m.maxArgs), snippet: `"$($m.snippet)`" },"
$jsMetaLines += " $key`: { minArgs: $($m.minArgs), maxArgs: $($m.maxArgs), snippet: `"$($m.snippet)`", description: `"$($m.description)`" },"
}
}
$jsContent = @(
"// Generated automatically by compile.ps1. Do not edit.",
"",
+234 -234
View File
@@ -10,238 +10,238 @@ INBUILT_FUNCTIONS = {
}
INBUILT_FUNCTION_META = {
'abs': {'min_args': 1, 'max_args': 1, 'snippet': 'abs()'},
'acos': {'min_args': 1, 'max_args': 1, 'snippet': 'acos()'},
'acosh': {'min_args': 1, 'max_args': 1, 'snippet': 'acosh()'},
'all': {'min_args': 1, 'max_args': 1, 'snippet': 'all()'},
'angle': {'min_args': 1, 'max_args': 1, 'snippet': 'angle()'},
'any': {'min_args': 1, 'max_args': 1, 'snippet': 'any()'},
'append': {'min_args': 2, 'max_args': 2, 'snippet': 'append()'},
'argmax': {'min_args': 1, 'max_args': 1, 'snippet': 'argmax()'},
'argmin': {'min_args': 1, 'max_args': 1, 'snippet': 'argmin()'},
'argsort': {'min_args': 1, 'max_args': 2, 'snippet': 'argsort()'},
'asin': {'min_args': 1, 'max_args': 1, 'snippet': 'asin()'},
'asinh': {'min_args': 1, 'max_args': 1, 'snippet': 'asinh()'},
'atan': {'min_args': 1, 'max_args': 1, 'snippet': 'atan()'},
'atan2': {'min_args': 2, 'max_args': 2, 'snippet': 'atan2()'},
'atanh': {'min_args': 1, 'max_args': 1, 'snippet': 'atanh()'},
'band': {'min_args': 2, 'max_args': 2, 'snippet': 'band()'},
'batch_shuffle': {'min_args': 2, 'max_args': 2, 'snippet': 'batch_shuffle()'},
'bitcount': {'min_args': 1, 'max_args': 1, 'snippet': 'bitcount()'},
'bitwise_and': {'min_args': 2, 'max_args': 2, 'snippet': 'bitwise_and()'},
'bitwise_not': {'min_args': 1, 'max_args': 1, 'snippet': 'bitwise_not()'},
'bitwise_or': {'min_args': 2, 'max_args': 2, 'snippet': 'bitwise_or()'},
'bitwise_xor': {'min_args': 2, 'max_args': 2, 'snippet': 'bitwise_xor()'},
'blur': {'min_args': 2, 'max_args': 3, 'snippet': 'blur()'},
'bnot': {'min_args': 1, 'max_args': 1, 'snippet': 'bnot()'},
'bor': {'min_args': 2, 'max_args': 2, 'snippet': 'bor()'},
'botk': {'min_args': 2, 'max_args': 2, 'snippet': 'botk()'},
'botk_ind': {'min_args': 2, 'max_args': 2, 'snippet': 'botk_ind()'},
'botk_indices': {'min_args': 2, 'max_args': 2, 'snippet': 'botk_indices()'},
'bxor': {'min_args': 2, 'max_args': 2, 'snippet': 'bxor()'},
'cat': {'min_args': 2, 'max_args': None, 'snippet': 'cat()'},
'ceil': {'min_args': 1, 'max_args': 1, 'snippet': 'ceil()'},
'cellular': {'min_args': 2, 'max_args': 5, 'snippet': 'cellular()'},
'cellular_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'cellular_noise()'},
'cielab_to_rgb': {'min_args': 1, 'max_args': 3, 'snippet': 'cielab_to_rgb()'},
'clamp': {'min_args': 3, 'max_args': 3, 'snippet': 'clamp()'},
'cnt': {'min_args': 1, 'max_args': 1, 'snippet': 'cnt()'},
'concat': {'min_args': 2, 'max_args': None, 'snippet': 'concat()'},
'concatenate': {'min_args': 2, 'max_args': None, 'snippet': 'concatenate()'},
'conv': {'min_args': 2, 'max_args': None, 'snippet': 'conv()'},
'convolution': {'min_args': 2, 'max_args': None, 'snippet': 'convolution()'},
'corr': {'min_args': 2, 'max_args': 2, 'snippet': 'corr()'},
'correlation': {'min_args': 2, 'max_args': 2, 'snippet': 'correlation()'},
'cos': {'min_args': 1, 'max_args': 1, 'snippet': 'cos()'},
'cosh': {'min_args': 1, 'max_args': 1, 'snippet': 'cosh()'},
'cosine_similarity': {'min_args': 2, 'max_args': 2, 'snippet': 'cosine_similarity()'},
'cossim': {'min_args': 2, 'max_args': 2, 'snippet': 'cossim()'},
'count': {'min_args': 1, 'max_args': 1, 'snippet': 'count()'},
'cov': {'min_args': 2, 'max_args': 2, 'snippet': 'cov()'},
'crop': {'min_args': 3, 'max_args': 3, 'snippet': 'crop()'},
'cross': {'min_args': 2, 'max_args': 2, 'snippet': 'cross()'},
'cubic': {'min_args': 3, 'max_args': 3, 'snippet': 'cubic()'},
'cubic_ease': {'min_args': 3, 'max_args': 3, 'snippet': 'cubic_ease()'},
'cumprod': {'min_args': 1, 'max_args': 1, 'snippet': 'cumprod()'},
'cumsum': {'min_args': 1, 'max_args': 1, 'snippet': 'cumsum()'},
'dilate': {'min_args': 1, 'max_args': 2, 'snippet': 'dilate()'},
'dist': {'min_args': 4, 'max_args': 4, 'snippet': 'dist()'},
'distance': {'min_args': 4, 'max_args': 4, 'snippet': 'distance()'},
'domain_warp': {'min_args': 4, 'max_args': 8, 'snippet': 'domain_warp()'},
'domain_warp_noise': {'min_args': 4, 'max_args': 8, 'snippet': 'domain_warp_noise()'},
'dot': {'min_args': 2, 'max_args': 2, 'snippet': 'dot()'},
'edge': {'min_args': 1, 'max_args': 2, 'snippet': 'edge()'},
'elastic': {'min_args': 3, 'max_args': 3, 'snippet': 'elastic()'},
'elastic_ease': {'min_args': 3, 'max_args': 3, 'snippet': 'elastic_ease()'},
'entropy': {'min_args': 1, 'max_args': 1, 'snippet': 'entropy()'},
'erf': {'min_args': 1, 'max_args': 1, 'snippet': 'erf()'},
'erfinv': {'min_args': 1, 'max_args': 1, 'snippet': 'erfinv()'},
'erode': {'min_args': 1, 'max_args': 2, 'snippet': 'erode()'},
'exp': {'min_args': 1, 'max_args': 1, 'snippet': 'exp()'},
'ezconv': {'min_args': 2, 'max_args': None, 'snippet': 'ezconv()'},
'ezconvolution': {'min_args': 2, 'max_args': None, 'snippet': 'ezconvolution()'},
'fft': {'min_args': 1, 'max_args': 1, 'snippet': 'fft()'},
'find': {'min_args': 2, 'max_args': 2, 'snippet': 'find()'},
'flatten': {'min_args': 1, 'max_args': 1, 'snippet': 'flatten()'},
'flip': {'min_args': 2, 'max_args': 2, 'snippet': 'flip()'},
'float': {'min_args': 1, 'max_args': 1, 'snippet': 'float()'},
'floor': {'min_args': 1, 'max_args': 1, 'snippet': 'floor()'},
'flow_ang': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_ang()'},
'flow_angle': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_angle()'},
'flow_apply': {'min_args': 2, 'max_args': 2, 'snippet': 'flow_apply()'},
'flow_mag': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_mag()'},
'flow_magnitude': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_magnitude()'},
'flow_to_image': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_to_image()'},
'fract': {'min_args': 1, 'max_args': 1, 'snippet': 'fract()'},
'gamma': {'min_args': 1, 'max_args': 1, 'snippet': 'gamma()'},
'gaussian': {'min_args': 2, 'max_args': 3, 'snippet': 'gaussian()'},
'gelu': {'min_args': 1, 'max_args': 1, 'snippet': 'gelu()'},
'get_value': {'min_args': 2, 'max_args': 2, 'snippet': 'get_value()'},
'hist': {'min_args': 4, 'max_args': 4, 'snippet': 'hist()'},
'histogram': {'min_args': 4, 'max_args': 4, 'snippet': 'histogram()'},
'hsv_to_rgb': {'min_args': 1, 'max_args': 4, 'snippet': 'hsv_to_rgb()'},
'ifft': {'min_args': 1, 'max_args': 2, 'snippet': 'ifft()'},
'int': {'min_args': 1, 'max_args': 1, 'snippet': 'int()'},
'int_to_rgb': {'min_args': 1, 'max_args': 1, 'snippet': 'int_to_rgb()'},
'interpolate_area': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_area()'},
'interpolate_linear': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_linear()'},
'interpolate_nearest': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_nearest()'},
'interpolate_nearest_exact': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_nearest_exact()'},
'join': {'min_args': 1, 'max_args': 2, 'snippet': 'join()'},
'length': {'min_args': 1, 'max_args': 1, 'snippet': 'length()'},
'lerp': {'min_args': 3, 'max_args': 3, 'snippet': 'lerp()'},
'linspace': {'min_args': 3, 'max_args': 3, 'snippet': 'linspace()'},
'ln': {'min_args': 1, 'max_args': 1, 'snippet': 'ln()'},
'log': {'min_args': 1, 'max_args': 1, 'snippet': 'log()'},
'logspace': {'min_args': 4, 'max_args': 4, 'snippet': 'logspace()'},
'lower': {'min_args': 1, 'max_args': 1, 'snippet': 'lower()'},
'map': {'min_args': 2, 'max_args': None, 'snippet': 'map()'},
'matmul': {'min_args': 2, 'max_args': 2, 'snippet': 'matmul()'},
'mean': {'min_args': 1, 'max_args': 1, 'snippet': 'mean()'},
'median': {'min_args': 1, 'max_args': 1, 'snippet': 'median()'},
'mode': {'min_args': 1, 'max_args': 1, 'snippet': 'mode()'},
'moment': {'min_args': 3, 'max_args': 3, 'snippet': 'moment()'},
'morph_close': {'min_args': 1, 'max_args': 2, 'snippet': 'morph_close()'},
'morph_open': {'min_args': 1, 'max_args': 2, 'snippet': 'morph_open()'},
'motion_mask': {'min_args': 1, 'max_args': 1, 'snippet': 'motion_mask()'},
'nan_to_num': {'min_args': 4, 'max_args': 4, 'snippet': 'nan_to_num()'},
'noise': {'min_args': 1, 'max_args': 2, 'snippet': 'noise()'},
'now': {'min_args': 0, 'max_args': 0, 'snippet': 'now()'},
'nvl': {'min_args': 4, 'max_args': 4, 'snippet': 'nvl()'},
'oklab_to_rgb': {'min_args': 1, 'max_args': 3, 'snippet': 'oklab_to_rgb()'},
'overlay': {'min_args': 3, 'max_args': 4, 'snippet': 'overlay()'},
'pad': {'min_args': 2, 'max_args': 2, 'snippet': 'pad()'},
'percentile': {'min_args': 2, 'max_args': 2, 'snippet': 'percentile()'},
'perlin': {'min_args': 2, 'max_args': 5, 'snippet': 'perlin()'},
'perlin_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'perlin_noise()'},
'perm': {'min_args': 2, 'max_args': 2, 'snippet': 'perm()'},
'permute': {'min_args': 2, 'max_args': 2, 'snippet': 'permute()'},
'pinv': {'min_args': 1, 'max_args': 1, 'snippet': 'pinv()'},
'plasma': {'min_args': 2, 'max_args': 5, 'snippet': 'plasma()'},
'plasma_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'plasma_noise()'},
'popcnt': {'min_args': 1, 'max_args': 1, 'snippet': 'popcnt()'},
'popcount': {'min_args': 1, 'max_args': 1, 'snippet': 'popcount()'},
'pow': {'min_args': 2, 'max_args': 2, 'snippet': 'pow()'},
'prcnt': {'min_args': 2, 'max_args': 2, 'snippet': 'prcnt()'},
'print': {'min_args': 1, 'max_args': 1, 'snippet': 'print()'},
'print_shape': {'min_args': 1, 'max_args': 1, 'snippet': 'print_shape()'},
'pshp': {'min_args': 1, 'max_args': 1, 'snippet': 'pshp()'},
'quantile': {'min_args': 2, 'max_args': 2, 'snippet': 'quantile()'},
'quartil': {'min_args': 2, 'max_args': 2, 'snippet': 'quartil()'},
'quartile': {'min_args': 2, 'max_args': 2, 'snippet': 'quartile()'},
'rand': {'min_args': 1, 'max_args': 2, 'snippet': 'rand()'},
'randb': {'min_args': 2, 'max_args': 3, 'snippet': 'randb()'},
'randbeta': {'min_args': 3, 'max_args': 4, 'snippet': 'randbeta()'},
'randc': {'min_args': 3, 'max_args': 4, 'snippet': 'randc()'},
'rande': {'min_args': 2, 'max_args': 3, 'snippet': 'rande()'},
'randg': {'min_args': 3, 'max_args': 4, 'snippet': 'randg()'},
'randgumbel': {'min_args': 3, 'max_args': 4, 'snippet': 'randgumbel()'},
'randchi2': {'min_args': 2, 'max_args': 3, 'snippet': 'randchi2()'},
'randl': {'min_args': 3, 'max_args': 4, 'snippet': 'randl()'},
'randln': {'min_args': 3, 'max_args': 4, 'snippet': 'randln()'},
'randn': {'min_args': 1, 'max_args': 2, 'snippet': 'randn()'},
'random_bernoulli': {'min_args': 2, 'max_args': 3, 'snippet': 'random_bernoulli()'},
'random_beta': {'min_args': 3, 'max_args': 4, 'snippet': 'random_beta()'},
'random_cauchy': {'min_args': 3, 'max_args': 4, 'snippet': 'random_cauchy()'},
'random_exponential': {'min_args': 2, 'max_args': 3, 'snippet': 'random_exponential()'},
'random_gamma': {'min_args': 3, 'max_args': 4, 'snippet': 'random_gamma()'},
'random_gumbel': {'min_args': 3, 'max_args': 4, 'snippet': 'random_gumbel()'},
'random_chi2': {'min_args': 2, 'max_args': 3, 'snippet': 'random_chi2()'},
'random_laplace': {'min_args': 3, 'max_args': 4, 'snippet': 'random_laplace()'},
'random_log_normal': {'min_args': 3, 'max_args': 4, 'snippet': 'random_log_normal()'},
'random_normal': {'min_args': 1, 'max_args': 2, 'snippet': 'random_normal()'},
'random_poisson': {'min_args': 2, 'max_args': 3, 'snippet': 'random_poisson()'},
'random_studentt': {'min_args': 2, 'max_args': 3, 'snippet': 'random_studentt()'},
'random_uniform': {'min_args': 1, 'max_args': 2, 'snippet': 'random_uniform()'},
'random_weibull': {'min_args': 3, 'max_args': 4, 'snippet': 'random_weibull()'},
'randp': {'min_args': 2, 'max_args': 3, 'snippet': 'randp()'},
'randt': {'min_args': 2, 'max_args': 3, 'snippet': 'randt()'},
'randu': {'min_args': 1, 'max_args': 2, 'snippet': 'randu()'},
'randw': {'min_args': 3, 'max_args': 4, 'snippet': 'randw()'},
'range': {'min_args': 3, 'max_args': 3, 'snippet': 'range()'},
'relu': {'min_args': 1, 'max_args': None, 'snippet': 'relu()'},
'remap': {'min_args': 5, 'max_args': 5, 'snippet': 'remap()'},
'replace': {'min_args': 3, 'max_args': 3, 'snippet': 'replace()'},
'reshape': {'min_args': 2, 'max_args': 2, 'snippet': 'reshape()'},
'rgb_to_cielab': {'min_args': 1, 'max_args': 3, 'snippet': 'rgb_to_cielab()'},
'rgb_to_hsv': {'min_args': 1, 'max_args': 4, 'snippet': 'rgb_to_hsv()'},
'rgb_to_int': {'min_args': 1, 'max_args': 3, 'snippet': 'rgb_to_int()'},
'rgb_to_oklab': {'min_args': 1, 'max_args': 3, 'snippet': 'rgb_to_oklab()'},
'ridged': {'min_args': 2, 'max_args': 5, 'snippet': 'ridged()'},
'ridged_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'ridged_noise()'},
'rife': {'min_args': 4, 'max_args': 5, 'snippet': 'rife()'},
'roll': {'min_args': 2, 'max_args': 3, 'snippet': 'roll()'},
'round': {'min_args': 1, 'max_args': 1, 'snippet': 'round()'},
'rshp': {'min_args': 2, 'max_args': 2, 'snippet': 'rshp()'},
'select': {'min_args': 2, 'max_args': 2, 'snippet': 'select()'},
'shape': {'min_args': 1, 'max_args': 1, 'snippet': 'shape()'},
'shuffle': {'min_args': 2, 'max_args': 2, 'snippet': 'shuffle()'},
'sigm': {'min_args': 1, 'max_args': 1, 'snippet': 'sigm()'},
'sign': {'min_args': 1, 'max_args': 1, 'snippet': 'sign()'},
'sin': {'min_args': 1, 'max_args': 1, 'snippet': 'sin()'},
'sine': {'min_args': 3, 'max_args': 3, 'snippet': 'sine()'},
'sine_ease': {'min_args': 3, 'max_args': 3, 'snippet': 'sine_ease()'},
'sinh': {'min_args': 1, 'max_args': 1, 'snippet': 'sinh()'},
'smax': {'min_args': 1, 'max_args': None, 'snippet': 'smax()'},
'smin': {'min_args': 1, 'max_args': None, 'snippet': 'smin()'},
'smootherstep': {'min_args': 3, 'max_args': 3, 'snippet': 'smootherstep()'},
'smoothstep': {'min_args': 3, 'max_args': 3, 'snippet': 'smoothstep()'},
'snorm': {'min_args': 1, 'max_args': 1, 'snippet': 'snorm()'},
'softmax': {'min_args': 1, 'max_args': 2, 'snippet': 'softmax()'},
'softmin': {'min_args': 1, 'max_args': 2, 'snippet': 'softmin()'},
'softplus': {'min_args': 1, 'max_args': 1, 'snippet': 'softplus()'},
'sort': {'min_args': 1, 'max_args': 1, 'snippet': 'sort()'},
'split': {'min_args': 1, 'max_args': 2, 'snippet': 'split()'},
'sqrt': {'min_args': 1, 'max_args': 1, 'snippet': 'sqrt()'},
'stack_clear': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_clear()'},
'stack_get': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_get()'},
'stack_has': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_has()'},
'stack_pop': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_pop()'},
'stack_push': {'min_args': 2, 'max_args': 2, 'snippet': 'stack_push()'},
'std': {'min_args': 1, 'max_args': 1, 'snippet': 'std()'},
'step': {'min_args': 2, 'max_args': 2, 'snippet': 'step()'},
'substr': {'min_args': 2, 'max_args': 3, 'snippet': 'substr()'},
'substring': {'min_args': 2, 'max_args': 3, 'snippet': 'substring()'},
'sum': {'min_args': 1, 'max_args': 1, 'snippet': 'sum()'},
'swap': {'min_args': 4, 'max_args': 4, 'snippet': 'swap()'},
'tan': {'min_args': 1, 'max_args': 1, 'snippet': 'tan()'},
'tanh': {'min_args': 1, 'max_args': 1, 'snippet': 'tanh()'},
'tensor': {'min_args': 2, 'max_args': 3, 'snippet': 'tensor()'},
'text_image': {'min_args': 3, 'max_args': 9, 'snippet': 'text_image()'},
'timestamp': {'min_args': 0, 'max_args': 0, 'snippet': 'timestamp()'},
'tmax': {'min_args': 2, 'max_args': 2, 'snippet': 'tmax()'},
'tmin': {'min_args': 2, 'max_args': 2, 'snippet': 'tmin()'},
'tnorm': {'min_args': 1, 'max_args': 1, 'snippet': 'tnorm()'},
'topk': {'min_args': 2, 'max_args': 2, 'snippet': 'topk()'},
'topk_ind': {'min_args': 2, 'max_args': 2, 'snippet': 'topk_ind()'},
'topk_indices': {'min_args': 2, 'max_args': 2, 'snippet': 'topk_indices()'},
'trim': {'min_args': 1, 'max_args': 1, 'snippet': 'trim()'},
'turbulence': {'min_args': 2, 'max_args': 5, 'snippet': 'turbulence()'},
'unique': {'min_args': 1, 'max_args': 1, 'snippet': 'unique()'},
'upper': {'min_args': 1, 'max_args': 1, 'snippet': 'upper()'},
'var': {'min_args': 1, 'max_args': 1, 'snippet': 'var()'},
'voronoi': {'min_args': 2, 'max_args': 5, 'snippet': 'voronoi()'},
'voronoi_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'voronoi_noise()'},
'where': {'min_args': 3, 'max_args': 3, 'snippet': 'where()'},
'worley': {'min_args': 2, 'max_args': 5, 'snippet': 'worley()'},
'abs': {'min_args': 1, 'max_args': 1, 'snippet': 'abs()', 'description': ''},
'acos': {'min_args': 1, 'max_args': 1, 'snippet': 'acos()', 'description': ''},
'acosh': {'min_args': 1, 'max_args': 1, 'snippet': 'acosh()', 'description': ''},
'all': {'min_args': 1, 'max_args': 1, 'snippet': 'all()', 'description': ''},
'angle': {'min_args': 1, 'max_args': 1, 'snippet': 'angle()', 'description': ''},
'any': {'min_args': 1, 'max_args': 1, 'snippet': 'any()', 'description': ''},
'append': {'min_args': 2, 'max_args': 2, 'snippet': 'append()', 'description': ''},
'argmax': {'min_args': 1, 'max_args': 1, 'snippet': 'argmax()', 'description': ''},
'argmin': {'min_args': 1, 'max_args': 1, 'snippet': 'argmin()', 'description': ''},
'argsort': {'min_args': 1, 'max_args': 2, 'snippet': 'argsort()', 'description': ''},
'asin': {'min_args': 1, 'max_args': 1, 'snippet': 'asin()', 'description': ''},
'asinh': {'min_args': 1, 'max_args': 1, 'snippet': 'asinh()', 'description': ''},
'atan': {'min_args': 1, 'max_args': 1, 'snippet': 'atan()', 'description': ''},
'atan2': {'min_args': 2, 'max_args': 2, 'snippet': 'atan2()', 'description': ''},
'atanh': {'min_args': 1, 'max_args': 1, 'snippet': 'atanh()', 'description': ''},
'band': {'min_args': 2, 'max_args': 2, 'snippet': 'band()', 'description': ''},
'batch_shuffle': {'min_args': 2, 'max_args': 2, 'snippet': 'batch_shuffle()', 'description': ''},
'bitcount': {'min_args': 1, 'max_args': 1, 'snippet': 'bitcount()', 'description': ''},
'bitwise_and': {'min_args': 2, 'max_args': 2, 'snippet': 'bitwise_and()', 'description': ''},
'bitwise_not': {'min_args': 1, 'max_args': 1, 'snippet': 'bitwise_not()', 'description': ''},
'bitwise_or': {'min_args': 2, 'max_args': 2, 'snippet': 'bitwise_or()', 'description': ''},
'bitwise_xor': {'min_args': 2, 'max_args': 2, 'snippet': 'bitwise_xor()', 'description': ''},
'blur': {'min_args': 2, 'max_args': 3, 'snippet': 'blur()', 'description': ''},
'bnot': {'min_args': 1, 'max_args': 1, 'snippet': 'bnot()', 'description': ''},
'bor': {'min_args': 2, 'max_args': 2, 'snippet': 'bor()', 'description': ''},
'botk': {'min_args': 2, 'max_args': 2, 'snippet': 'botk()', 'description': ''},
'botk_ind': {'min_args': 2, 'max_args': 2, 'snippet': 'botk_ind()', 'description': ''},
'botk_indices': {'min_args': 2, 'max_args': 2, 'snippet': 'botk_indices()', 'description': ''},
'bxor': {'min_args': 2, 'max_args': 2, 'snippet': 'bxor()', 'description': ''},
'cat': {'min_args': 2, 'max_args': None, 'snippet': 'cat()', 'description': ''},
'ceil': {'min_args': 1, 'max_args': 1, 'snippet': 'ceil()', 'description': ''},
'cellular': {'min_args': 2, 'max_args': 5, 'snippet': 'cellular()', 'description': ''},
'cellular_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'cellular_noise()', 'description': ''},
'cielab_to_rgb': {'min_args': 1, 'max_args': 3, 'snippet': 'cielab_to_rgb()', 'description': ''},
'clamp': {'min_args': 3, 'max_args': 3, 'snippet': 'clamp()', 'description': ''},
'cnt': {'min_args': 1, 'max_args': 1, 'snippet': 'cnt()', 'description': ''},
'concat': {'min_args': 2, 'max_args': None, 'snippet': 'concat()', 'description': ''},
'concatenate': {'min_args': 2, 'max_args': None, 'snippet': 'concatenate()', 'description': ''},
'conv': {'min_args': 2, 'max_args': None, 'snippet': 'conv()', 'description': ''},
'convolution': {'min_args': 2, 'max_args': None, 'snippet': 'convolution()', 'description': ''},
'corr': {'min_args': 2, 'max_args': 2, 'snippet': 'corr()', 'description': ''},
'correlation': {'min_args': 2, 'max_args': 2, 'snippet': 'correlation()', 'description': ''},
'cos': {'min_args': 1, 'max_args': 1, 'snippet': 'cos()', 'description': ''},
'cosh': {'min_args': 1, 'max_args': 1, 'snippet': 'cosh()', 'description': ''},
'cosine_similarity': {'min_args': 2, 'max_args': 2, 'snippet': 'cosine_similarity()', 'description': ''},
'cossim': {'min_args': 2, 'max_args': 2, 'snippet': 'cossim()', 'description': ''},
'count': {'min_args': 1, 'max_args': 1, 'snippet': 'count()', 'description': ''},
'cov': {'min_args': 2, 'max_args': 2, 'snippet': 'cov()', 'description': ''},
'crop': {'min_args': 3, 'max_args': 3, 'snippet': 'crop()', 'description': ''},
'cross': {'min_args': 2, 'max_args': 2, 'snippet': 'cross()', 'description': ''},
'cubic': {'min_args': 3, 'max_args': 3, 'snippet': 'cubic()', 'description': ''},
'cubic_ease': {'min_args': 3, 'max_args': 3, 'snippet': 'cubic_ease()', 'description': ''},
'cumprod': {'min_args': 1, 'max_args': 1, 'snippet': 'cumprod()', 'description': ''},
'cumsum': {'min_args': 1, 'max_args': 1, 'snippet': 'cumsum()', 'description': ''},
'dilate': {'min_args': 1, 'max_args': 2, 'snippet': 'dilate()', 'description': ''},
'dist': {'min_args': 4, 'max_args': 4, 'snippet': 'dist()', 'description': ''},
'distance': {'min_args': 4, 'max_args': 4, 'snippet': 'distance()', 'description': ''},
'domain_warp': {'min_args': 4, 'max_args': 8, 'snippet': 'domain_warp()', 'description': ''},
'domain_warp_noise': {'min_args': 4, 'max_args': 8, 'snippet': 'domain_warp_noise()', 'description': ''},
'dot': {'min_args': 2, 'max_args': 2, 'snippet': 'dot()', 'description': ''},
'edge': {'min_args': 1, 'max_args': 2, 'snippet': 'edge()', 'description': ''},
'elastic': {'min_args': 3, 'max_args': 3, 'snippet': 'elastic()', 'description': ''},
'elastic_ease': {'min_args': 3, 'max_args': 3, 'snippet': 'elastic_ease()', 'description': ''},
'entropy': {'min_args': 1, 'max_args': 1, 'snippet': 'entropy()', 'description': ''},
'erf': {'min_args': 1, 'max_args': 1, 'snippet': 'erf()', 'description': ''},
'erfinv': {'min_args': 1, 'max_args': 1, 'snippet': 'erfinv()', 'description': ''},
'erode': {'min_args': 1, 'max_args': 2, 'snippet': 'erode()', 'description': ''},
'exp': {'min_args': 1, 'max_args': 1, 'snippet': 'exp()', 'description': ''},
'ezconv': {'min_args': 2, 'max_args': None, 'snippet': 'ezconv()', 'description': ''},
'ezconvolution': {'min_args': 2, 'max_args': None, 'snippet': 'ezconvolution()', 'description': ''},
'fft': {'min_args': 1, 'max_args': 1, 'snippet': 'fft()', 'description': ''},
'find': {'min_args': 2, 'max_args': 2, 'snippet': 'find()', 'description': ''},
'flatten': {'min_args': 1, 'max_args': 1, 'snippet': 'flatten()', 'description': ''},
'flip': {'min_args': 2, 'max_args': 2, 'snippet': 'flip()', 'description': ''},
'float': {'min_args': 1, 'max_args': 1, 'snippet': 'float()', 'description': ''},
'floor': {'min_args': 1, 'max_args': 1, 'snippet': 'floor()', 'description': ''},
'flow_ang': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_ang()', 'description': ''},
'flow_angle': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_angle()', 'description': ''},
'flow_apply': {'min_args': 2, 'max_args': 2, 'snippet': 'flow_apply()', 'description': ''},
'flow_mag': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_mag()', 'description': ''},
'flow_magnitude': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_magnitude()', 'description': ''},
'flow_to_image': {'min_args': 1, 'max_args': 1, 'snippet': 'flow_to_image()', 'description': ''},
'fract': {'min_args': 1, 'max_args': 1, 'snippet': 'fract()', 'description': ''},
'gamma': {'min_args': 1, 'max_args': 1, 'snippet': 'gamma()', 'description': ''},
'gaussian': {'min_args': 2, 'max_args': 3, 'snippet': 'gaussian()', 'description': ''},
'gelu': {'min_args': 1, 'max_args': 1, 'snippet': 'gelu()', 'description': ''},
'get_value': {'min_args': 2, 'max_args': 2, 'snippet': 'get_value()', 'description': ''},
'hist': {'min_args': 4, 'max_args': 4, 'snippet': 'hist()', 'description': ''},
'histogram': {'min_args': 4, 'max_args': 4, 'snippet': 'histogram()', 'description': ''},
'hsv_to_rgb': {'min_args': 1, 'max_args': 4, 'snippet': 'hsv_to_rgb()', 'description': ''},
'ifft': {'min_args': 1, 'max_args': 2, 'snippet': 'ifft()', 'description': ''},
'int': {'min_args': 1, 'max_args': 1, 'snippet': 'int()', 'description': ''},
'int_to_rgb': {'min_args': 1, 'max_args': 1, 'snippet': 'int_to_rgb()', 'description': ''},
'interpolate_area': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_area()', 'description': ''},
'interpolate_linear': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_linear()', 'description': ''},
'interpolate_nearest': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_nearest()', 'description': ''},
'interpolate_nearest_exact': {'min_args': 2, 'max_args': 2, 'snippet': 'interpolate_nearest_exact()', 'description': ''},
'join': {'min_args': 1, 'max_args': 2, 'snippet': 'join()', 'description': ''},
'length': {'min_args': 1, 'max_args': 1, 'snippet': 'length()', 'description': ''},
'lerp': {'min_args': 3, 'max_args': 3, 'snippet': 'lerp()', 'description': ''},
'linspace': {'min_args': 3, 'max_args': 3, 'snippet': 'linspace()', 'description': ''},
'ln': {'min_args': 1, 'max_args': 1, 'snippet': 'ln()', 'description': ''},
'log': {'min_args': 1, 'max_args': 1, 'snippet': 'log()', 'description': ''},
'logspace': {'min_args': 4, 'max_args': 4, 'snippet': 'logspace()', 'description': ''},
'lower': {'min_args': 1, 'max_args': 1, 'snippet': 'lower()', 'description': ''},
'map': {'min_args': 2, 'max_args': None, 'snippet': 'map()', 'description': ''},
'matmul': {'min_args': 2, 'max_args': 2, 'snippet': 'matmul()', 'description': ''},
'mean': {'min_args': 1, 'max_args': 1, 'snippet': 'mean()', 'description': ''},
'median': {'min_args': 1, 'max_args': 1, 'snippet': 'median()', 'description': ''},
'mode': {'min_args': 1, 'max_args': 1, 'snippet': 'mode()', 'description': ''},
'moment': {'min_args': 3, 'max_args': 3, 'snippet': 'moment()', 'description': ''},
'morph_close': {'min_args': 1, 'max_args': 2, 'snippet': 'morph_close()', 'description': ''},
'morph_open': {'min_args': 1, 'max_args': 2, 'snippet': 'morph_open()', 'description': ''},
'motion_mask': {'min_args': 1, 'max_args': 1, 'snippet': 'motion_mask()', 'description': ''},
'nan_to_num': {'min_args': 4, 'max_args': 4, 'snippet': 'nan_to_num()', 'description': ''},
'noise': {'min_args': 1, 'max_args': 2, 'snippet': 'noise()', 'description': ''},
'now': {'min_args': 0, 'max_args': 0, 'snippet': 'now()', 'description': ''},
'nvl': {'min_args': 4, 'max_args': 4, 'snippet': 'nvl()', 'description': ''},
'oklab_to_rgb': {'min_args': 1, 'max_args': 3, 'snippet': 'oklab_to_rgb()', 'description': ''},
'overlay': {'min_args': 3, 'max_args': 4, 'snippet': 'overlay()', 'description': ''},
'pad': {'min_args': 2, 'max_args': 2, 'snippet': 'pad()', 'description': ''},
'percentile': {'min_args': 2, 'max_args': 2, 'snippet': 'percentile()', 'description': ''},
'perlin': {'min_args': 2, 'max_args': 5, 'snippet': 'perlin()', 'description': ''},
'perlin_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'perlin_noise()', 'description': ''},
'perm': {'min_args': 2, 'max_args': 2, 'snippet': 'perm()', 'description': ''},
'permute': {'min_args': 2, 'max_args': 2, 'snippet': 'permute()', 'description': ''},
'pinv': {'min_args': 1, 'max_args': 1, 'snippet': 'pinv()', 'description': ''},
'plasma': {'min_args': 2, 'max_args': 5, 'snippet': 'plasma()', 'description': ''},
'plasma_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'plasma_noise()', 'description': ''},
'popcnt': {'min_args': 1, 'max_args': 1, 'snippet': 'popcnt()', 'description': ''},
'popcount': {'min_args': 1, 'max_args': 1, 'snippet': 'popcount()', 'description': ''},
'pow': {'min_args': 2, 'max_args': 2, 'snippet': 'pow()', 'description': ''},
'prcnt': {'min_args': 2, 'max_args': 2, 'snippet': 'prcnt()', 'description': ''},
'print': {'min_args': 1, 'max_args': 1, 'snippet': 'print()', 'description': ''},
'print_shape': {'min_args': 1, 'max_args': 1, 'snippet': 'print_shape()', 'description': ''},
'pshp': {'min_args': 1, 'max_args': 1, 'snippet': 'pshp()', 'description': ''},
'quantile': {'min_args': 2, 'max_args': 2, 'snippet': 'quantile()', 'description': ''},
'quartil': {'min_args': 2, 'max_args': 2, 'snippet': 'quartil()', 'description': ''},
'quartile': {'min_args': 2, 'max_args': 2, 'snippet': 'quartile()', 'description': ''},
'rand': {'min_args': 1, 'max_args': 2, 'snippet': 'rand()', 'description': ''},
'randb': {'min_args': 2, 'max_args': 3, 'snippet': 'randb()', 'description': ''},
'randbeta': {'min_args': 3, 'max_args': 4, 'snippet': 'randbeta()', 'description': ''},
'randc': {'min_args': 3, 'max_args': 4, 'snippet': 'randc()', 'description': ''},
'rande': {'min_args': 2, 'max_args': 3, 'snippet': 'rande()', 'description': ''},
'randg': {'min_args': 3, 'max_args': 4, 'snippet': 'randg()', 'description': ''},
'randgumbel': {'min_args': 3, 'max_args': 4, 'snippet': 'randgumbel()', 'description': ''},
'randchi2': {'min_args': 2, 'max_args': 3, 'snippet': 'randchi2()', 'description': ''},
'randl': {'min_args': 3, 'max_args': 4, 'snippet': 'randl()', 'description': ''},
'randln': {'min_args': 3, 'max_args': 4, 'snippet': 'randln()', 'description': ''},
'randn': {'min_args': 1, 'max_args': 2, 'snippet': 'randn()', 'description': ''},
'random_bernoulli': {'min_args': 2, 'max_args': 3, 'snippet': 'random_bernoulli()', 'description': ''},
'random_beta': {'min_args': 3, 'max_args': 4, 'snippet': 'random_beta()', 'description': ''},
'random_cauchy': {'min_args': 3, 'max_args': 4, 'snippet': 'random_cauchy()', 'description': ''},
'random_exponential': {'min_args': 2, 'max_args': 3, 'snippet': 'random_exponential()', 'description': ''},
'random_gamma': {'min_args': 3, 'max_args': 4, 'snippet': 'random_gamma()', 'description': ''},
'random_gumbel': {'min_args': 3, 'max_args': 4, 'snippet': 'random_gumbel()', 'description': ''},
'random_chi2': {'min_args': 2, 'max_args': 3, 'snippet': 'random_chi2()', 'description': ''},
'random_laplace': {'min_args': 3, 'max_args': 4, 'snippet': 'random_laplace()', 'description': ''},
'random_log_normal': {'min_args': 3, 'max_args': 4, 'snippet': 'random_log_normal()', 'description': ''},
'random_normal': {'min_args': 1, 'max_args': 2, 'snippet': 'random_normal()', 'description': ''},
'random_poisson': {'min_args': 2, 'max_args': 3, 'snippet': 'random_poisson()', 'description': ''},
'random_studentt': {'min_args': 2, 'max_args': 3, 'snippet': 'random_studentt()', 'description': ''},
'random_uniform': {'min_args': 1, 'max_args': 2, 'snippet': 'random_uniform()', 'description': ''},
'random_weibull': {'min_args': 3, 'max_args': 4, 'snippet': 'random_weibull()', 'description': ''},
'randp': {'min_args': 2, 'max_args': 3, 'snippet': 'randp()', 'description': ''},
'randt': {'min_args': 2, 'max_args': 3, 'snippet': 'randt()', 'description': ''},
'randu': {'min_args': 1, 'max_args': 2, 'snippet': 'randu()', 'description': ''},
'randw': {'min_args': 3, 'max_args': 4, 'snippet': 'randw()', 'description': ''},
'range': {'min_args': 3, 'max_args': 3, 'snippet': 'range()', 'description': ''},
'relu': {'min_args': 1, 'max_args': None, 'snippet': 'relu()', 'description': ''},
'remap': {'min_args': 5, 'max_args': 5, 'snippet': 'remap()', 'description': ''},
'replace': {'min_args': 3, 'max_args': 3, 'snippet': 'replace()', 'description': ''},
'reshape': {'min_args': 2, 'max_args': 2, 'snippet': 'reshape()', 'description': ''},
'rgb_to_cielab': {'min_args': 1, 'max_args': 3, 'snippet': 'rgb_to_cielab()', 'description': ''},
'rgb_to_hsv': {'min_args': 1, 'max_args': 4, 'snippet': 'rgb_to_hsv()', 'description': ''},
'rgb_to_int': {'min_args': 1, 'max_args': 3, 'snippet': 'rgb_to_int()', 'description': ''},
'rgb_to_oklab': {'min_args': 1, 'max_args': 3, 'snippet': 'rgb_to_oklab()', 'description': ''},
'ridged': {'min_args': 2, 'max_args': 5, 'snippet': 'ridged()', 'description': ''},
'ridged_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'ridged_noise()', 'description': ''},
'rife': {'min_args': 4, 'max_args': 5, 'snippet': 'rife()', 'description': ''},
'roll': {'min_args': 2, 'max_args': 3, 'snippet': 'roll()', 'description': ''},
'round': {'min_args': 1, 'max_args': 1, 'snippet': 'round()', 'description': ''},
'rshp': {'min_args': 2, 'max_args': 2, 'snippet': 'rshp()', 'description': ''},
'select': {'min_args': 2, 'max_args': 2, 'snippet': 'select()', 'description': ''},
'shape': {'min_args': 1, 'max_args': 1, 'snippet': 'shape()', 'description': ''},
'shuffle': {'min_args': 2, 'max_args': 2, 'snippet': 'shuffle()', 'description': ''},
'sigm': {'min_args': 1, 'max_args': 1, 'snippet': 'sigm()', 'description': ''},
'sign': {'min_args': 1, 'max_args': 1, 'snippet': 'sign()', 'description': ''},
'sin': {'min_args': 1, 'max_args': 1, 'snippet': 'sin()', 'description': ''},
'sine': {'min_args': 3, 'max_args': 3, 'snippet': 'sine()', 'description': ''},
'sine_ease': {'min_args': 3, 'max_args': 3, 'snippet': 'sine_ease()', 'description': ''},
'sinh': {'min_args': 1, 'max_args': 1, 'snippet': 'sinh()', 'description': ''},
'smax': {'min_args': 1, 'max_args': None, 'snippet': 'smax()', 'description': ''},
'smin': {'min_args': 1, 'max_args': None, 'snippet': 'smin()', 'description': ''},
'smootherstep': {'min_args': 3, 'max_args': 3, 'snippet': 'smootherstep()', 'description': ''},
'smoothstep': {'min_args': 3, 'max_args': 3, 'snippet': 'smoothstep()', 'description': ''},
'snorm': {'min_args': 1, 'max_args': 1, 'snippet': 'snorm()', 'description': ''},
'softmax': {'min_args': 1, 'max_args': 2, 'snippet': 'softmax()', 'description': ''},
'softmin': {'min_args': 1, 'max_args': 2, 'snippet': 'softmin()', 'description': ''},
'softplus': {'min_args': 1, 'max_args': 1, 'snippet': 'softplus()', 'description': ''},
'sort': {'min_args': 1, 'max_args': 1, 'snippet': 'sort()', 'description': ''},
'split': {'min_args': 1, 'max_args': 2, 'snippet': 'split()', 'description': ''},
'sqrt': {'min_args': 1, 'max_args': 1, 'snippet': 'sqrt()', 'description': ''},
'stack_clear': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_clear()', 'description': ''},
'stack_get': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_get()', 'description': ''},
'stack_has': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_has()', 'description': ''},
'stack_pop': {'min_args': 1, 'max_args': 1, 'snippet': 'stack_pop()', 'description': ''},
'stack_push': {'min_args': 2, 'max_args': 2, 'snippet': 'stack_push()', 'description': ''},
'std': {'min_args': 1, 'max_args': 1, 'snippet': 'std()', 'description': ''},
'step': {'min_args': 2, 'max_args': 2, 'snippet': 'step()', 'description': ''},
'substr': {'min_args': 2, 'max_args': 3, 'snippet': 'substr()', 'description': ''},
'substring': {'min_args': 2, 'max_args': 3, 'snippet': 'substring()', 'description': ''},
'sum': {'min_args': 1, 'max_args': 1, 'snippet': 'sum()', 'description': ''},
'swap': {'min_args': 4, 'max_args': 4, 'snippet': 'swap()', 'description': ''},
'tan': {'min_args': 1, 'max_args': 1, 'snippet': 'tan()', 'description': ''},
'tanh': {'min_args': 1, 'max_args': 1, 'snippet': 'tanh()', 'description': ''},
'tensor': {'min_args': 2, 'max_args': 3, 'snippet': 'tensor()', 'description': ''},
'text_image': {'min_args': 3, 'max_args': 9, 'snippet': 'text_image()', 'description': ''},
'timestamp': {'min_args': 0, 'max_args': 0, 'snippet': 'timestamp()', 'description': ''},
'tmax': {'min_args': 2, 'max_args': 2, 'snippet': 'tmax()', 'description': ''},
'tmin': {'min_args': 2, 'max_args': 2, 'snippet': 'tmin()', 'description': ''},
'tnorm': {'min_args': 1, 'max_args': 1, 'snippet': 'tnorm()', 'description': ''},
'topk': {'min_args': 2, 'max_args': 2, 'snippet': 'topk()', 'description': ''},
'topk_ind': {'min_args': 2, 'max_args': 2, 'snippet': 'topk_ind()', 'description': ''},
'topk_indices': {'min_args': 2, 'max_args': 2, 'snippet': 'topk_indices()', 'description': ''},
'trim': {'min_args': 1, 'max_args': 1, 'snippet': 'trim()', 'description': ''},
'turbulence': {'min_args': 2, 'max_args': 5, 'snippet': 'turbulence()', 'description': ''},
'unique': {'min_args': 1, 'max_args': 1, 'snippet': 'unique()', 'description': ''},
'upper': {'min_args': 1, 'max_args': 1, 'snippet': 'upper()', 'description': ''},
'var': {'min_args': 1, 'max_args': 1, 'snippet': 'var()', 'description': ''},
'voronoi': {'min_args': 2, 'max_args': 5, 'snippet': 'voronoi()', 'description': ''},
'voronoi_noise': {'min_args': 2, 'max_args': 5, 'snippet': 'voronoi_noise()', 'description': ''},
'where': {'min_args': 3, 'max_args': 3, 'snippet': 'where()', 'description': ''},
'worley': {'min_args': 2, 'max_args': 5, 'snippet': 'worley()', 'description': ''},
}
+200 -93
View File
@@ -1,32 +1,57 @@
import { FUNCTIONS, KEYWORDS, CONSTANTS, FUNCTION_META } from "./inbuilt_symbols.js";
const AUTOCOMPLETE_STYLE_ID = "mrmth-script-autocomplete-styles";
function ensureAutocompleteStyles() {
if (document.getElementById(AUTOCOMPLETE_STYLE_ID)) return;
const style = document.createElement("style");
style.id = AUTOCOMPLETE_STYLE_ID;
style.textContent = `
.mrmth-autocomplete {
position: fixed;
z-index: 10000;
min-width: 180px;
max-width: min(420px, 100vw - 16px);
max-height: 220px;
overflow-y: auto;
overscroll-behavior: contain;
pointer-events: auto;
margin: 0;
padding: 4px 0;
list-style: none;
border: 1px solid rgba(255, 255, 255, 0.18);
border-radius: 8px;
background: rgba(18, 20, 24, 0.97);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
font-family: monospace;
font-size: 12px;
}
.mrmth-autocomplete-tooltip {
display: none; /* Řízeno přes JS */
min-width: 200px;
max-width: 320px;
margin-left: 8px;
padding: 10px 12px;
border: 1px solid rgba(255, 255, 255, 0.12);
border-radius: 8px;
background: rgba(24, 28, 36, 0.98);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.5);
font-family: monospace;
font-size: 11px;
color: #b3b9c1;
line-height: 1.5;
pointer-events: auto;
}
.mrmth-autocomplete-layout {
display: flex !important;
flex-direction: row !important;
align-items: flex-start !important;
position: fixed !important; /* Pozici drží POUZE tento společný obal! */
z-index: 10000 !important;
pointer-events: none;
}
.mrmth-autocomplete {
/* !!! ZDE SMAŽ position: fixed; a z-index: 10000; !!! */
min-width: 180px;
max-height: 220px;
overflow-y: auto;
overscroll-behavior: contain;
pointer-events: auto;
margin: 0;
padding: 4px 0;
list-style: none;
border: 1px solid rgba(255, 255, 255, 0.18);
border-radius: 8px;
background: rgba(18, 20, 24, 0.97);
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.45);
font-family: monospace;
font-size: 12px;
}
.mrmth-autocomplete-item {
display: flex;
@@ -54,20 +79,6 @@ function ensureAutocompleteStyles() {
color: #c39bd3;
font-weight: 600;
}
.mrmth-autocomplete-item.is-keyword .mrmth-ac-name {
color: #e74c3c;
}
.mrmth-autocomplete-item.is-constant .mrmth-ac-name {
color: #f1c40f;
}
.mrmth-autocomplete-item .mrmth-ac-hint {
color: #7f8c8d;
font-size: 11px;
white-space: nowrap;
}
`;
document.head.appendChild(style);
}
@@ -261,10 +272,83 @@ function getCaretScreenPosition(textarea, position) {
export function attachAutocomplete(textarea, _containerEl) {
ensureAutocompleteStyles();
const dropdown = document.createElement("ul");
dropdown.className = "mrmth-autocomplete";
dropdown.hidden = true;
document.body.appendChild(dropdown);
// 1. Deklarace prvků nového rozvržení
let layoutEl = null;
let listEl = null; // Toto plně nahradí tvůj původní samostatný "dropdown"
let tooltipEl = null;
// 2. Opravené vytvoření dropdownu, které se spustí ihned
function createDropdown() {
layoutEl = document.createElement("div");
layoutEl.className = "mrmth-autocomplete-layout";
layoutEl.style.position = "fixed";
layoutEl.style.zIndex = "10000";
layoutEl.style.display = "flex";
layoutEl.hidden = true;
listEl = document.createElement("ul");
listEl.className = "mrmth-autocomplete";
listEl.addEventListener("wheel", onDropdownWheel, { passive: false });
layoutEl.appendChild(listEl);
tooltipEl = document.createElement("div");
tooltipEl.className = "mrmth-autocomplete-tooltip";
tooltipEl.style.display = "none";
layoutEl.appendChild(tooltipEl);
document.body.appendChild(layoutEl);
}
function updateTooltip(selectedItem) {
if (!tooltipEl || !layoutEl) return;
const meta = FUNCTION_META[selectedItem?.name] || selectedItem;
if (!meta || !meta.description) {
tooltipEl.style.display = "none";
return;
}
let argsText = `Arguments: min ${meta.minArgs ?? 0}`;
if (meta.maxArgs !== undefined && meta.maxArgs !== null) {
argsText += `, max ${meta.maxArgs}`;
} else {
argsText += "+ (variadic)";
}
tooltipEl.innerHTML = `
<div class="mrmth-tt-title">${selectedItem.name}</div>
<div class="mrmth-tt-desc">${meta.description}</div>
<div class="mrmth-tt-args">${argsText}</div>
`;
tooltipEl.style.display = "block";
const rect = tooltipEl.getBoundingClientRect();
if (rect.right > window.innerWidth) {
layoutEl.style.flexDirection = "row-reverse";
tooltipEl.style.marginLeft = "0";
tooltipEl.style.marginRight = "8px";
} else {
layoutEl.style.flexDirection = "row";
tooltipEl.style.marginLeft = "8px";
tooltipEl.style.marginRight = "0";
}
}
const onDropdownWheel = (e) => {
e.stopPropagation();
const maxScroll = Math.max(0, listEl.scrollHeight - listEl.clientHeight);
const atTop = listEl.scrollTop <= 0;
const atBottom = listEl.scrollTop >= maxScroll;
if ((e.deltaY < 0 && atTop) || (e.deltaY > 0 && atBottom)) {
e.preventDefault();
}
};
createDropdown();
let items = [];
let selectedIndex = 0;
@@ -273,45 +357,34 @@ export function attachAutocomplete(textarea, _containerEl) {
const close = () => {
open = false;
dropdown.hidden = true;
dropdown.innerHTML = "";
if (layoutEl) layoutEl.hidden = true;
if (listEl) listEl.innerHTML = "";
if (tooltipEl) tooltipEl.style.display = "none";
items = [];
selectedIndex = 0;
prefixInfo = null;
};
const scrollSelectedIntoView = () => {
const selected = dropdown.querySelector(".mrmth-autocomplete-item.is-selected");
const selected = layoutEl.querySelector(".mrmth-autocomplete-item.is-selected");
if (!selected) return;
const itemTop = selected.offsetTop;
const itemBottom = itemTop + selected.offsetHeight;
const viewTop = dropdown.scrollTop;
const viewBottom = viewTop + dropdown.clientHeight;
const viewTop = listEl.scrollTop;
const viewBottom = viewTop + listEl.clientHeight;
const pad = 2;
if (itemTop < viewTop + pad) {
dropdown.scrollTop = Math.max(0, itemTop - pad);
listEl.scrollTop = Math.max(0, itemTop - pad);
} else if (itemBottom > viewBottom - pad) {
dropdown.scrollTop = itemBottom - dropdown.clientHeight + pad;
listEl.scrollTop = itemBottom - listEl.clientHeight + pad;
}
};
const onDropdownWheel = (e) => {
e.stopPropagation();
const maxScroll = Math.max(0, dropdown.scrollHeight - dropdown.clientHeight);
const atTop = dropdown.scrollTop <= 0;
const atBottom = dropdown.scrollTop >= maxScroll;
// Block scroll chaining to the node/canvas when the list cannot move further.
if ((e.deltaY < 0 && atTop) || (e.deltaY > 0 && atBottom)) {
e.preventDefault();
}
};
const render = () => {
dropdown.innerHTML = "";
listEl.innerHTML = "";
items.forEach((item, index) => {
const li = document.createElement("li");
li.className = `mrmth-autocomplete-item is-${item.kind}${index === selectedIndex ? " is-selected" : ""}`;
@@ -332,19 +405,37 @@ export function attachAutocomplete(textarea, _containerEl) {
li.appendChild(left);
li.appendChild(right);
li.appendChild(kind);
li.addEventListener("mousedown", (e) => {
e.preventDefault();
selectedIndex = index;
applySelected();
});
dropdown.appendChild(li);
li.addEventListener("mouseenter", () => {
selectedIndex = index;
listEl.querySelectorAll(".mrmth-autocomplete-item").forEach((el, i) => {
el.classList.toggle("is-selected", i === index);
});
updateTooltip(item);
});
listEl.appendChild(li);
});
scrollSelectedIntoView();
if (items[selectedIndex]) {
updateTooltip(items[selectedIndex]);
} else {
tooltipEl.style.display = "none";
}
if (open) positionDropdown();
};
const positionDropdown = () => {
if (!prefixInfo) return;
if (!prefixInfo || !layoutEl || !listEl) return; // Změna kontroly prvků
const cursorPos = textarea.selectionStart;
const caret = getCaretScreenPosition(textarea, cursorPos);
@@ -362,7 +453,6 @@ export function attachAutocomplete(textarea, _containerEl) {
const spaceAbove = lineTop - gap - viewportPad;
const spaceRight = window.innerWidth - textareaRect.right - gap - viewportPad;
// Prefer below the active line so the list never covers what you are typing.
let placement = "below";
if (spaceBelow < minListHeight) {
if (spaceRight >= 160) {
@@ -395,18 +485,22 @@ export function attachAutocomplete(textarea, _containerEl) {
left = textareaRect.right + gap;
}
dropdown.style.width = `${dropdownWidthTarget}px`;
dropdown.style.maxHeight = `${maxHeight}px`;
dropdown.style.top = `${top}px`;
listEl.style.width = `260px`;
dropdown.style.visibility = "hidden";
dropdown.style.left = "0px";
const dropdownWidth = dropdown.offsetWidth || dropdownWidthTarget;
listEl.style.maxHeight = `${maxHeight}px`;
layoutEl.style.top = `${top}px`;
layoutEl.style.visibility = "hidden";
layoutEl.style.left = "0px";
const dropdownWidth = 260;
left = Math.max(viewportPad, Math.min(left, window.innerWidth - dropdownWidth - viewportPad));
dropdown.style.left = `${left}px`;
dropdown.style.visibility = "";
layoutEl.style.left = `${left}px`;
layoutEl.style.visibility = "";
};
const openWith = (nextItems, nextPrefix) => {
if (!nextItems.length) {
close();
@@ -416,27 +510,20 @@ export function attachAutocomplete(textarea, _containerEl) {
selectedIndex = 0;
prefixInfo = nextPrefix;
open = true;
dropdown.hidden = false;
if (layoutEl) layoutEl.hidden = false;
render();
positionDropdown();
};
const applySelected = () => {
if (!open || !prefixInfo || !items[selectedIndex]) return;
if (selectedIndex < 0 || selectedIndex >= items.length) return;
const item = items[selectedIndex];
const before = textarea.value.slice(0, prefixInfo.start);
const after = textarea.value.slice(textarea.selectionEnd);
const insert = item.insertText;
textarea.value = `${before}${insert}${after}`;
const cursorPos = before.length + insert.length;
if (item.kind === "function" && insert.endsWith("()")) {
textarea.selectionStart = textarea.selectionEnd = cursorPos - 1;
} else {
textarea.selectionStart = textarea.selectionEnd = cursorPos;
}
const text = textarea.value;
const before = text.slice(0, prefixInfo.start);
const after = text.slice(textarea.selectionStart);
textarea.value = before + item.insertText + after;
textarea.selectionStart = textarea.selectionEnd = before.length + item.insertText.length;
textarea.dispatchEvent(new Event("input", { bubbles: true }));
close();
};
@@ -480,7 +567,17 @@ export function attachAutocomplete(textarea, _containerEl) {
const onKeyDown = (e) => {
if (e.ctrlKey && e.key === " ") {
e.preventDefault();
maybeOpen(true);
if (typeof maybeOpen === "function") {
maybeOpen(true);
} else {
const text = textarea.value;
const cursor = textarea.selectionStart;
const prefix = getWordPrefix(text, cursor);
if (prefix) {
const suggestions = buildSuggestions(prefix.word);
if (suggestions.length > 0) openWith(suggestions, prefix);
}
}
return;
}
@@ -517,14 +614,20 @@ export function attachAutocomplete(textarea, _containerEl) {
if (open) positionDropdown();
};
textarea.addEventListener("input", onInput);
textarea.addEventListener("input", typeof onInput === "function" ? onInput : () => {
const text = textarea.value;
const cursor = textarea.selectionStart;
const prefix = getWordPrefix(text, cursor);
if (!prefix) { close(); return; }
const suggestions = buildSuggestions(prefix.word);
if (suggestions.length > 0) openWith(suggestions, prefix);
else close();
});
textarea.addEventListener("keydown", onKeyDown);
textarea.addEventListener("blur", onBlur);
textarea.addEventListener("scroll", onReposition);
dropdown.addEventListener("mousedown", (e) => {
e.preventDefault();
});
dropdown.addEventListener("wheel", onDropdownWheel, { passive: false });
window.addEventListener("scroll", onReposition, true);
window.addEventListener("resize", onReposition);
@@ -532,16 +635,20 @@ export function attachAutocomplete(textarea, _containerEl) {
close,
destroy() {
close();
dropdown.removeEventListener("wheel", onDropdownWheel);
window.removeEventListener("scroll", onReposition, true);
window.removeEventListener("resize", onReposition);
dropdown.remove();
textarea.removeEventListener("input", onInput);
if (layoutEl) {
layoutEl.remove();
}
textarea.removeEventListener("keydown", onKeyDown);
textarea.removeEventListener("blur", onBlur);
textarea.removeEventListener("scroll", onReposition);
if (typeof onInput === "function") {
textarea.removeEventListener("input", onInput);
}
},
};
}
export { buildSuggestions, getWordPrefix, isCursorInStringOrComment, formatArgHint };
export { buildSuggestions, getWordPrefix, isCursorInStringOrComment, formatArgHint };
+234 -234
View File
@@ -13,238 +13,238 @@ export const FUNCTIONS = new Set([
]);
export const FUNCTION_META = {
abs: { minArgs: 1, maxArgs: 1, snippet: "abs()" },
acos: { minArgs: 1, maxArgs: 1, snippet: "acos()" },
acosh: { minArgs: 1, maxArgs: 1, snippet: "acosh()" },
all: { minArgs: 1, maxArgs: 1, snippet: "all()" },
angle: { minArgs: 1, maxArgs: 1, snippet: "angle()" },
any: { minArgs: 1, maxArgs: 1, snippet: "any()" },
append: { minArgs: 2, maxArgs: 2, snippet: "append()" },
argmax: { minArgs: 1, maxArgs: 1, snippet: "argmax()" },
argmin: { minArgs: 1, maxArgs: 1, snippet: "argmin()" },
argsort: { minArgs: 1, maxArgs: 2, snippet: "argsort()" },
asin: { minArgs: 1, maxArgs: 1, snippet: "asin()" },
asinh: { minArgs: 1, maxArgs: 1, snippet: "asinh()" },
atan: { minArgs: 1, maxArgs: 1, snippet: "atan()" },
atan2: { minArgs: 2, maxArgs: 2, snippet: "atan2()" },
atanh: { minArgs: 1, maxArgs: 1, snippet: "atanh()" },
band: { minArgs: 2, maxArgs: 2, snippet: "band()" },
batch_shuffle: { minArgs: 2, maxArgs: 2, snippet: "batch_shuffle()" },
bitcount: { minArgs: 1, maxArgs: 1, snippet: "bitcount()" },
bitwise_and: { minArgs: 2, maxArgs: 2, snippet: "bitwise_and()" },
bitwise_not: { minArgs: 1, maxArgs: 1, snippet: "bitwise_not()" },
bitwise_or: { minArgs: 2, maxArgs: 2, snippet: "bitwise_or()" },
bitwise_xor: { minArgs: 2, maxArgs: 2, snippet: "bitwise_xor()" },
blur: { minArgs: 2, maxArgs: 3, snippet: "blur()" },
bnot: { minArgs: 1, maxArgs: 1, snippet: "bnot()" },
bor: { minArgs: 2, maxArgs: 2, snippet: "bor()" },
botk: { minArgs: 2, maxArgs: 2, snippet: "botk()" },
botk_ind: { minArgs: 2, maxArgs: 2, snippet: "botk_ind()" },
botk_indices: { minArgs: 2, maxArgs: 2, snippet: "botk_indices()" },
bxor: { minArgs: 2, maxArgs: 2, snippet: "bxor()" },
cat: { minArgs: 2, maxArgs: null, snippet: "cat()" },
ceil: { minArgs: 1, maxArgs: 1, snippet: "ceil()" },
cellular: { minArgs: 2, maxArgs: 5, snippet: "cellular()" },
cellular_noise: { minArgs: 2, maxArgs: 5, snippet: "cellular_noise()" },
cielab_to_rgb: { minArgs: 1, maxArgs: 3, snippet: "cielab_to_rgb()" },
clamp: { minArgs: 3, maxArgs: 3, snippet: "clamp()" },
cnt: { minArgs: 1, maxArgs: 1, snippet: "cnt()" },
concat: { minArgs: 2, maxArgs: null, snippet: "concat()" },
concatenate: { minArgs: 2, maxArgs: null, snippet: "concatenate()" },
conv: { minArgs: 2, maxArgs: null, snippet: "conv()" },
convolution: { minArgs: 2, maxArgs: null, snippet: "convolution()" },
corr: { minArgs: 2, maxArgs: 2, snippet: "corr()" },
correlation: { minArgs: 2, maxArgs: 2, snippet: "correlation()" },
cos: { minArgs: 1, maxArgs: 1, snippet: "cos()" },
cosh: { minArgs: 1, maxArgs: 1, snippet: "cosh()" },
cosine_similarity: { minArgs: 2, maxArgs: 2, snippet: "cosine_similarity()" },
cossim: { minArgs: 2, maxArgs: 2, snippet: "cossim()" },
count: { minArgs: 1, maxArgs: 1, snippet: "count()" },
cov: { minArgs: 2, maxArgs: 2, snippet: "cov()" },
crop: { minArgs: 3, maxArgs: 3, snippet: "crop()" },
cross: { minArgs: 2, maxArgs: 2, snippet: "cross()" },
cubic: { minArgs: 3, maxArgs: 3, snippet: "cubic()" },
cubic_ease: { minArgs: 3, maxArgs: 3, snippet: "cubic_ease()" },
cumprod: { minArgs: 1, maxArgs: 1, snippet: "cumprod()" },
cumsum: { minArgs: 1, maxArgs: 1, snippet: "cumsum()" },
dilate: { minArgs: 1, maxArgs: 2, snippet: "dilate()" },
dist: { minArgs: 4, maxArgs: 4, snippet: "dist()" },
distance: { minArgs: 4, maxArgs: 4, snippet: "distance()" },
domain_warp: { minArgs: 4, maxArgs: 8, snippet: "domain_warp()" },
domain_warp_noise: { minArgs: 4, maxArgs: 8, snippet: "domain_warp_noise()" },
dot: { minArgs: 2, maxArgs: 2, snippet: "dot()" },
edge: { minArgs: 1, maxArgs: 2, snippet: "edge()" },
elastic: { minArgs: 3, maxArgs: 3, snippet: "elastic()" },
elastic_ease: { minArgs: 3, maxArgs: 3, snippet: "elastic_ease()" },
entropy: { minArgs: 1, maxArgs: 1, snippet: "entropy()" },
erf: { minArgs: 1, maxArgs: 1, snippet: "erf()" },
erfinv: { minArgs: 1, maxArgs: 1, snippet: "erfinv()" },
erode: { minArgs: 1, maxArgs: 2, snippet: "erode()" },
exp: { minArgs: 1, maxArgs: 1, snippet: "exp()" },
ezconv: { minArgs: 2, maxArgs: null, snippet: "ezconv()" },
ezconvolution: { minArgs: 2, maxArgs: null, snippet: "ezconvolution()" },
fft: { minArgs: 1, maxArgs: 1, snippet: "fft()" },
find: { minArgs: 2, maxArgs: 2, snippet: "find()" },
flatten: { minArgs: 1, maxArgs: 1, snippet: "flatten()" },
flip: { minArgs: 2, maxArgs: 2, snippet: "flip()" },
float: { minArgs: 1, maxArgs: 1, snippet: "float()" },
floor: { minArgs: 1, maxArgs: 1, snippet: "floor()" },
flow_ang: { minArgs: 1, maxArgs: 1, snippet: "flow_ang()" },
flow_angle: { minArgs: 1, maxArgs: 1, snippet: "flow_angle()" },
flow_apply: { minArgs: 2, maxArgs: 2, snippet: "flow_apply()" },
flow_mag: { minArgs: 1, maxArgs: 1, snippet: "flow_mag()" },
flow_magnitude: { minArgs: 1, maxArgs: 1, snippet: "flow_magnitude()" },
flow_to_image: { minArgs: 1, maxArgs: 1, snippet: "flow_to_image()" },
fract: { minArgs: 1, maxArgs: 1, snippet: "fract()" },
gamma: { minArgs: 1, maxArgs: 1, snippet: "gamma()" },
gaussian: { minArgs: 2, maxArgs: 3, snippet: "gaussian()" },
gelu: { minArgs: 1, maxArgs: 1, snippet: "gelu()" },
get_value: { minArgs: 2, maxArgs: 2, snippet: "get_value()" },
hist: { minArgs: 4, maxArgs: 4, snippet: "hist()" },
histogram: { minArgs: 4, maxArgs: 4, snippet: "histogram()" },
hsv_to_rgb: { minArgs: 1, maxArgs: 4, snippet: "hsv_to_rgb()" },
ifft: { minArgs: 1, maxArgs: 2, snippet: "ifft()" },
int: { minArgs: 1, maxArgs: 1, snippet: "int()" },
int_to_rgb: { minArgs: 1, maxArgs: 1, snippet: "int_to_rgb()" },
interpolate_area: { minArgs: 2, maxArgs: 2, snippet: "interpolate_area()" },
interpolate_linear: { minArgs: 2, maxArgs: 2, snippet: "interpolate_linear()" },
interpolate_nearest: { minArgs: 2, maxArgs: 2, snippet: "interpolate_nearest()" },
interpolate_nearest_exact: { minArgs: 2, maxArgs: 2, snippet: "interpolate_nearest_exact()" },
join: { minArgs: 1, maxArgs: 2, snippet: "join()" },
length: { minArgs: 1, maxArgs: 1, snippet: "length()" },
lerp: { minArgs: 3, maxArgs: 3, snippet: "lerp()" },
linspace: { minArgs: 3, maxArgs: 3, snippet: "linspace()" },
ln: { minArgs: 1, maxArgs: 1, snippet: "ln()" },
log: { minArgs: 1, maxArgs: 1, snippet: "log()" },
logspace: { minArgs: 4, maxArgs: 4, snippet: "logspace()" },
lower: { minArgs: 1, maxArgs: 1, snippet: "lower()" },
map: { minArgs: 2, maxArgs: null, snippet: "map()" },
matmul: { minArgs: 2, maxArgs: 2, snippet: "matmul()" },
mean: { minArgs: 1, maxArgs: 1, snippet: "mean()" },
median: { minArgs: 1, maxArgs: 1, snippet: "median()" },
mode: { minArgs: 1, maxArgs: 1, snippet: "mode()" },
moment: { minArgs: 3, maxArgs: 3, snippet: "moment()" },
morph_close: { minArgs: 1, maxArgs: 2, snippet: "morph_close()" },
morph_open: { minArgs: 1, maxArgs: 2, snippet: "morph_open()" },
motion_mask: { minArgs: 1, maxArgs: 1, snippet: "motion_mask()" },
nan_to_num: { minArgs: 4, maxArgs: 4, snippet: "nan_to_num()" },
noise: { minArgs: 1, maxArgs: 2, snippet: "noise()" },
now: { minArgs: 0, maxArgs: 0, snippet: "now()" },
nvl: { minArgs: 4, maxArgs: 4, snippet: "nvl()" },
oklab_to_rgb: { minArgs: 1, maxArgs: 3, snippet: "oklab_to_rgb()" },
overlay: { minArgs: 3, maxArgs: 4, snippet: "overlay()" },
pad: { minArgs: 2, maxArgs: 2, snippet: "pad()" },
percentile: { minArgs: 2, maxArgs: 2, snippet: "percentile()" },
perlin: { minArgs: 2, maxArgs: 5, snippet: "perlin()" },
perlin_noise: { minArgs: 2, maxArgs: 5, snippet: "perlin_noise()" },
perm: { minArgs: 2, maxArgs: 2, snippet: "perm()" },
permute: { minArgs: 2, maxArgs: 2, snippet: "permute()" },
pinv: { minArgs: 1, maxArgs: 1, snippet: "pinv()" },
plasma: { minArgs: 2, maxArgs: 5, snippet: "plasma()" },
plasma_noise: { minArgs: 2, maxArgs: 5, snippet: "plasma_noise()" },
popcnt: { minArgs: 1, maxArgs: 1, snippet: "popcnt()" },
popcount: { minArgs: 1, maxArgs: 1, snippet: "popcount()" },
pow: { minArgs: 2, maxArgs: 2, snippet: "pow()" },
prcnt: { minArgs: 2, maxArgs: 2, snippet: "prcnt()" },
print: { minArgs: 1, maxArgs: 1, snippet: "print()" },
print_shape: { minArgs: 1, maxArgs: 1, snippet: "print_shape()" },
pshp: { minArgs: 1, maxArgs: 1, snippet: "pshp()" },
quantile: { minArgs: 2, maxArgs: 2, snippet: "quantile()" },
quartil: { minArgs: 2, maxArgs: 2, snippet: "quartil()" },
quartile: { minArgs: 2, maxArgs: 2, snippet: "quartile()" },
rand: { minArgs: 1, maxArgs: 2, snippet: "rand()" },
randb: { minArgs: 2, maxArgs: 3, snippet: "randb()" },
randbeta: { minArgs: 3, maxArgs: 4, snippet: "randbeta()" },
randc: { minArgs: 3, maxArgs: 4, snippet: "randc()" },
rande: { minArgs: 2, maxArgs: 3, snippet: "rande()" },
randg: { minArgs: 3, maxArgs: 4, snippet: "randg()" },
randgumbel: { minArgs: 3, maxArgs: 4, snippet: "randgumbel()" },
randchi2: { minArgs: 2, maxArgs: 3, snippet: "randchi2()" },
randl: { minArgs: 3, maxArgs: 4, snippet: "randl()" },
randln: { minArgs: 3, maxArgs: 4, snippet: "randln()" },
randn: { minArgs: 1, maxArgs: 2, snippet: "randn()" },
random_bernoulli: { minArgs: 2, maxArgs: 3, snippet: "random_bernoulli()" },
random_beta: { minArgs: 3, maxArgs: 4, snippet: "random_beta()" },
random_cauchy: { minArgs: 3, maxArgs: 4, snippet: "random_cauchy()" },
random_exponential: { minArgs: 2, maxArgs: 3, snippet: "random_exponential()" },
random_gamma: { minArgs: 3, maxArgs: 4, snippet: "random_gamma()" },
random_gumbel: { minArgs: 3, maxArgs: 4, snippet: "random_gumbel()" },
random_chi2: { minArgs: 2, maxArgs: 3, snippet: "random_chi2()" },
random_laplace: { minArgs: 3, maxArgs: 4, snippet: "random_laplace()" },
random_log_normal: { minArgs: 3, maxArgs: 4, snippet: "random_log_normal()" },
random_normal: { minArgs: 1, maxArgs: 2, snippet: "random_normal()" },
random_poisson: { minArgs: 2, maxArgs: 3, snippet: "random_poisson()" },
random_studentt: { minArgs: 2, maxArgs: 3, snippet: "random_studentt()" },
random_uniform: { minArgs: 1, maxArgs: 2, snippet: "random_uniform()" },
random_weibull: { minArgs: 3, maxArgs: 4, snippet: "random_weibull()" },
randp: { minArgs: 2, maxArgs: 3, snippet: "randp()" },
randt: { minArgs: 2, maxArgs: 3, snippet: "randt()" },
randu: { minArgs: 1, maxArgs: 2, snippet: "randu()" },
randw: { minArgs: 3, maxArgs: 4, snippet: "randw()" },
range: { minArgs: 3, maxArgs: 3, snippet: "range()" },
relu: { minArgs: 1, maxArgs: null, snippet: "relu()" },
remap: { minArgs: 5, maxArgs: 5, snippet: "remap()" },
replace: { minArgs: 3, maxArgs: 3, snippet: "replace()" },
reshape: { minArgs: 2, maxArgs: 2, snippet: "reshape()" },
rgb_to_cielab: { minArgs: 1, maxArgs: 3, snippet: "rgb_to_cielab()" },
rgb_to_hsv: { minArgs: 1, maxArgs: 4, snippet: "rgb_to_hsv()" },
rgb_to_int: { minArgs: 1, maxArgs: 3, snippet: "rgb_to_int()" },
rgb_to_oklab: { minArgs: 1, maxArgs: 3, snippet: "rgb_to_oklab()" },
ridged: { minArgs: 2, maxArgs: 5, snippet: "ridged()" },
ridged_noise: { minArgs: 2, maxArgs: 5, snippet: "ridged_noise()" },
rife: { minArgs: 4, maxArgs: 5, snippet: "rife()" },
roll: { minArgs: 2, maxArgs: 3, snippet: "roll()" },
round: { minArgs: 1, maxArgs: 1, snippet: "round()" },
rshp: { minArgs: 2, maxArgs: 2, snippet: "rshp()" },
select: { minArgs: 2, maxArgs: 2, snippet: "select()" },
shape: { minArgs: 1, maxArgs: 1, snippet: "shape()" },
shuffle: { minArgs: 2, maxArgs: 2, snippet: "shuffle()" },
sigm: { minArgs: 1, maxArgs: 1, snippet: "sigm()" },
sign: { minArgs: 1, maxArgs: 1, snippet: "sign()" },
sin: { minArgs: 1, maxArgs: 1, snippet: "sin()" },
sine: { minArgs: 3, maxArgs: 3, snippet: "sine()" },
sine_ease: { minArgs: 3, maxArgs: 3, snippet: "sine_ease()" },
sinh: { minArgs: 1, maxArgs: 1, snippet: "sinh()" },
smax: { minArgs: 1, maxArgs: null, snippet: "smax()" },
smin: { minArgs: 1, maxArgs: null, snippet: "smin()" },
smootherstep: { minArgs: 3, maxArgs: 3, snippet: "smootherstep()" },
smoothstep: { minArgs: 3, maxArgs: 3, snippet: "smoothstep()" },
snorm: { minArgs: 1, maxArgs: 1, snippet: "snorm()" },
softmax: { minArgs: 1, maxArgs: 2, snippet: "softmax()" },
softmin: { minArgs: 1, maxArgs: 2, snippet: "softmin()" },
softplus: { minArgs: 1, maxArgs: 1, snippet: "softplus()" },
sort: { minArgs: 1, maxArgs: 1, snippet: "sort()" },
split: { minArgs: 1, maxArgs: 2, snippet: "split()" },
sqrt: { minArgs: 1, maxArgs: 1, snippet: "sqrt()" },
stack_clear: { minArgs: 1, maxArgs: 1, snippet: "stack_clear()" },
stack_get: { minArgs: 1, maxArgs: 1, snippet: "stack_get()" },
stack_has: { minArgs: 1, maxArgs: 1, snippet: "stack_has()" },
stack_pop: { minArgs: 1, maxArgs: 1, snippet: "stack_pop()" },
stack_push: { minArgs: 2, maxArgs: 2, snippet: "stack_push()" },
std: { minArgs: 1, maxArgs: 1, snippet: "std()" },
step: { minArgs: 2, maxArgs: 2, snippet: "step()" },
substr: { minArgs: 2, maxArgs: 3, snippet: "substr()" },
substring: { minArgs: 2, maxArgs: 3, snippet: "substring()" },
sum: { minArgs: 1, maxArgs: 1, snippet: "sum()" },
swap: { minArgs: 4, maxArgs: 4, snippet: "swap()" },
tan: { minArgs: 1, maxArgs: 1, snippet: "tan()" },
tanh: { minArgs: 1, maxArgs: 1, snippet: "tanh()" },
tensor: { minArgs: 2, maxArgs: 3, snippet: "tensor()" },
text_image: { minArgs: 3, maxArgs: 9, snippet: "text_image()" },
timestamp: { minArgs: 0, maxArgs: 0, snippet: "timestamp()" },
tmax: { minArgs: 2, maxArgs: 2, snippet: "tmax()" },
tmin: { minArgs: 2, maxArgs: 2, snippet: "tmin()" },
tnorm: { minArgs: 1, maxArgs: 1, snippet: "tnorm()" },
topk: { minArgs: 2, maxArgs: 2, snippet: "topk()" },
topk_ind: { minArgs: 2, maxArgs: 2, snippet: "topk_ind()" },
topk_indices: { minArgs: 2, maxArgs: 2, snippet: "topk_indices()" },
trim: { minArgs: 1, maxArgs: 1, snippet: "trim()" },
turbulence: { minArgs: 2, maxArgs: 5, snippet: "turbulence()" },
unique: { minArgs: 1, maxArgs: 1, snippet: "unique()" },
upper: { minArgs: 1, maxArgs: 1, snippet: "upper()" },
var: { minArgs: 1, maxArgs: 1, snippet: "var()" },
voronoi: { minArgs: 2, maxArgs: 5, snippet: "voronoi()" },
voronoi_noise: { minArgs: 2, maxArgs: 5, snippet: "voronoi_noise()" },
where: { minArgs: 3, maxArgs: 3, snippet: "where()" },
worley: { minArgs: 2, maxArgs: 5, snippet: "worley()" },
abs: { minArgs: 1, maxArgs: 1, snippet: "abs()", description: "" },
acos: { minArgs: 1, maxArgs: 1, snippet: "acos()", description: "" },
acosh: { minArgs: 1, maxArgs: 1, snippet: "acosh()", description: "" },
all: { minArgs: 1, maxArgs: 1, snippet: "all()", description: "" },
angle: { minArgs: 1, maxArgs: 1, snippet: "angle()", description: "" },
any: { minArgs: 1, maxArgs: 1, snippet: "any()", description: "" },
append: { minArgs: 2, maxArgs: 2, snippet: "append()", description: "" },
argmax: { minArgs: 1, maxArgs: 1, snippet: "argmax()", description: "" },
argmin: { minArgs: 1, maxArgs: 1, snippet: "argmin()", description: "" },
argsort: { minArgs: 1, maxArgs: 2, snippet: "argsort()", description: "" },
asin: { minArgs: 1, maxArgs: 1, snippet: "asin()", description: "" },
asinh: { minArgs: 1, maxArgs: 1, snippet: "asinh()", description: "" },
atan: { minArgs: 1, maxArgs: 1, snippet: "atan()", description: "" },
atan2: { minArgs: 2, maxArgs: 2, snippet: "atan2()", description: "" },
atanh: { minArgs: 1, maxArgs: 1, snippet: "atanh()", description: "" },
band: { minArgs: 2, maxArgs: 2, snippet: "band()", description: "" },
batch_shuffle: { minArgs: 2, maxArgs: 2, snippet: "batch_shuffle()", description: "" },
bitcount: { minArgs: 1, maxArgs: 1, snippet: "bitcount()", description: "" },
bitwise_and: { minArgs: 2, maxArgs: 2, snippet: "bitwise_and()", description: "" },
bitwise_not: { minArgs: 1, maxArgs: 1, snippet: "bitwise_not()", description: "" },
bitwise_or: { minArgs: 2, maxArgs: 2, snippet: "bitwise_or()", description: "" },
bitwise_xor: { minArgs: 2, maxArgs: 2, snippet: "bitwise_xor()", description: "" },
blur: { minArgs: 2, maxArgs: 3, snippet: "blur()", description: "" },
bnot: { minArgs: 1, maxArgs: 1, snippet: "bnot()", description: "" },
bor: { minArgs: 2, maxArgs: 2, snippet: "bor()", description: "" },
botk: { minArgs: 2, maxArgs: 2, snippet: "botk()", description: "" },
botk_ind: { minArgs: 2, maxArgs: 2, snippet: "botk_ind()", description: "" },
botk_indices: { minArgs: 2, maxArgs: 2, snippet: "botk_indices()", description: "" },
bxor: { minArgs: 2, maxArgs: 2, snippet: "bxor()", description: "" },
cat: { minArgs: 2, maxArgs: null, snippet: "cat()", description: "" },
ceil: { minArgs: 1, maxArgs: 1, snippet: "ceil()", description: "" },
cellular: { minArgs: 2, maxArgs: 5, snippet: "cellular()", description: "" },
cellular_noise: { minArgs: 2, maxArgs: 5, snippet: "cellular_noise()", description: "" },
cielab_to_rgb: { minArgs: 1, maxArgs: 3, snippet: "cielab_to_rgb()", description: "" },
clamp: { minArgs: 3, maxArgs: 3, snippet: "clamp()", description: "" },
cnt: { minArgs: 1, maxArgs: 1, snippet: "cnt()", description: "" },
concat: { minArgs: 2, maxArgs: null, snippet: "concat()", description: "" },
concatenate: { minArgs: 2, maxArgs: null, snippet: "concatenate()", description: "" },
conv: { minArgs: 2, maxArgs: null, snippet: "conv()", description: "" },
convolution: { minArgs: 2, maxArgs: null, snippet: "convolution()", description: "" },
corr: { minArgs: 2, maxArgs: 2, snippet: "corr()", description: "" },
correlation: { minArgs: 2, maxArgs: 2, snippet: "correlation()", description: "" },
cos: { minArgs: 1, maxArgs: 1, snippet: "cos()", description: "" },
cosh: { minArgs: 1, maxArgs: 1, snippet: "cosh()", description: "" },
cosine_similarity: { minArgs: 2, maxArgs: 2, snippet: "cosine_similarity()", description: "" },
cossim: { minArgs: 2, maxArgs: 2, snippet: "cossim()", description: "" },
count: { minArgs: 1, maxArgs: 1, snippet: "count()", description: "" },
cov: { minArgs: 2, maxArgs: 2, snippet: "cov()", description: "" },
crop: { minArgs: 3, maxArgs: 3, snippet: "crop()", description: "" },
cross: { minArgs: 2, maxArgs: 2, snippet: "cross()", description: "" },
cubic: { minArgs: 3, maxArgs: 3, snippet: "cubic()", description: "" },
cubic_ease: { minArgs: 3, maxArgs: 3, snippet: "cubic_ease()", description: "" },
cumprod: { minArgs: 1, maxArgs: 1, snippet: "cumprod()", description: "" },
cumsum: { minArgs: 1, maxArgs: 1, snippet: "cumsum()", description: "" },
dilate: { minArgs: 1, maxArgs: 2, snippet: "dilate()", description: "" },
dist: { minArgs: 4, maxArgs: 4, snippet: "dist()", description: "" },
distance: { minArgs: 4, maxArgs: 4, snippet: "distance()", description: "" },
domain_warp: { minArgs: 4, maxArgs: 8, snippet: "domain_warp()", description: "" },
domain_warp_noise: { minArgs: 4, maxArgs: 8, snippet: "domain_warp_noise()", description: "" },
dot: { minArgs: 2, maxArgs: 2, snippet: "dot()", description: "" },
edge: { minArgs: 1, maxArgs: 2, snippet: "edge()", description: "" },
elastic: { minArgs: 3, maxArgs: 3, snippet: "elastic()", description: "" },
elastic_ease: { minArgs: 3, maxArgs: 3, snippet: "elastic_ease()", description: "" },
entropy: { minArgs: 1, maxArgs: 1, snippet: "entropy()", description: "" },
erf: { minArgs: 1, maxArgs: 1, snippet: "erf()", description: "" },
erfinv: { minArgs: 1, maxArgs: 1, snippet: "erfinv()", description: "" },
erode: { minArgs: 1, maxArgs: 2, snippet: "erode()", description: "" },
exp: { minArgs: 1, maxArgs: 1, snippet: "exp()", description: "" },
ezconv: { minArgs: 2, maxArgs: null, snippet: "ezconv()", description: "" },
ezconvolution: { minArgs: 2, maxArgs: null, snippet: "ezconvolution()", description: "" },
fft: { minArgs: 1, maxArgs: 1, snippet: "fft()", description: "" },
find: { minArgs: 2, maxArgs: 2, snippet: "find()", description: "" },
flatten: { minArgs: 1, maxArgs: 1, snippet: "flatten()", description: "" },
flip: { minArgs: 2, maxArgs: 2, snippet: "flip()", description: "" },
float: { minArgs: 1, maxArgs: 1, snippet: "float()", description: "" },
floor: { minArgs: 1, maxArgs: 1, snippet: "floor()", description: "" },
flow_ang: { minArgs: 1, maxArgs: 1, snippet: "flow_ang()", description: "" },
flow_angle: { minArgs: 1, maxArgs: 1, snippet: "flow_angle()", description: "" },
flow_apply: { minArgs: 2, maxArgs: 2, snippet: "flow_apply()", description: "" },
flow_mag: { minArgs: 1, maxArgs: 1, snippet: "flow_mag()", description: "" },
flow_magnitude: { minArgs: 1, maxArgs: 1, snippet: "flow_magnitude()", description: "" },
flow_to_image: { minArgs: 1, maxArgs: 1, snippet: "flow_to_image()", description: "" },
fract: { minArgs: 1, maxArgs: 1, snippet: "fract()", description: "" },
gamma: { minArgs: 1, maxArgs: 1, snippet: "gamma()", description: "" },
gaussian: { minArgs: 2, maxArgs: 3, snippet: "gaussian()", description: "" },
gelu: { minArgs: 1, maxArgs: 1, snippet: "gelu()", description: "" },
get_value: { minArgs: 2, maxArgs: 2, snippet: "get_value()", description: "" },
hist: { minArgs: 4, maxArgs: 4, snippet: "hist()", description: "" },
histogram: { minArgs: 4, maxArgs: 4, snippet: "histogram()", description: "" },
hsv_to_rgb: { minArgs: 1, maxArgs: 4, snippet: "hsv_to_rgb()", description: "" },
ifft: { minArgs: 1, maxArgs: 2, snippet: "ifft()", description: "" },
int: { minArgs: 1, maxArgs: 1, snippet: "int()", description: "" },
int_to_rgb: { minArgs: 1, maxArgs: 1, snippet: "int_to_rgb()", description: "" },
interpolate_area: { minArgs: 2, maxArgs: 2, snippet: "interpolate_area()", description: "" },
interpolate_linear: { minArgs: 2, maxArgs: 2, snippet: "interpolate_linear()", description: "" },
interpolate_nearest: { minArgs: 2, maxArgs: 2, snippet: "interpolate_nearest()", description: "" },
interpolate_nearest_exact: { minArgs: 2, maxArgs: 2, snippet: "interpolate_nearest_exact()", description: "" },
join: { minArgs: 1, maxArgs: 2, snippet: "join()", description: "" },
length: { minArgs: 1, maxArgs: 1, snippet: "length()", description: "" },
lerp: { minArgs: 3, maxArgs: 3, snippet: "lerp()", description: "" },
linspace: { minArgs: 3, maxArgs: 3, snippet: "linspace()", description: "" },
ln: { minArgs: 1, maxArgs: 1, snippet: "ln()", description: "" },
log: { minArgs: 1, maxArgs: 1, snippet: "log()", description: "" },
logspace: { minArgs: 4, maxArgs: 4, snippet: "logspace()", description: "" },
lower: { minArgs: 1, maxArgs: 1, snippet: "lower()", description: "" },
map: { minArgs: 2, maxArgs: null, snippet: "map()", description: "" },
matmul: { minArgs: 2, maxArgs: 2, snippet: "matmul()", description: "" },
mean: { minArgs: 1, maxArgs: 1, snippet: "mean()", description: "" },
median: { minArgs: 1, maxArgs: 1, snippet: "median()", description: "" },
mode: { minArgs: 1, maxArgs: 1, snippet: "mode()", description: "" },
moment: { minArgs: 3, maxArgs: 3, snippet: "moment()", description: "" },
morph_close: { minArgs: 1, maxArgs: 2, snippet: "morph_close()", description: "" },
morph_open: { minArgs: 1, maxArgs: 2, snippet: "morph_open()", description: "" },
motion_mask: { minArgs: 1, maxArgs: 1, snippet: "motion_mask()", description: "" },
nan_to_num: { minArgs: 4, maxArgs: 4, snippet: "nan_to_num()", description: "" },
noise: { minArgs: 1, maxArgs: 2, snippet: "noise()", description: "" },
now: { minArgs: 0, maxArgs: 0, snippet: "now()", description: "" },
nvl: { minArgs: 4, maxArgs: 4, snippet: "nvl()", description: "" },
oklab_to_rgb: { minArgs: 1, maxArgs: 3, snippet: "oklab_to_rgb()", description: "" },
overlay: { minArgs: 3, maxArgs: 4, snippet: "overlay()", description: "" },
pad: { minArgs: 2, maxArgs: 2, snippet: "pad()", description: "" },
percentile: { minArgs: 2, maxArgs: 2, snippet: "percentile()", description: "" },
perlin: { minArgs: 2, maxArgs: 5, snippet: "perlin()", description: "" },
perlin_noise: { minArgs: 2, maxArgs: 5, snippet: "perlin_noise()", description: "" },
perm: { minArgs: 2, maxArgs: 2, snippet: "perm()", description: "" },
permute: { minArgs: 2, maxArgs: 2, snippet: "permute()", description: "" },
pinv: { minArgs: 1, maxArgs: 1, snippet: "pinv()", description: "" },
plasma: { minArgs: 2, maxArgs: 5, snippet: "plasma()", description: "" },
plasma_noise: { minArgs: 2, maxArgs: 5, snippet: "plasma_noise()", description: "" },
popcnt: { minArgs: 1, maxArgs: 1, snippet: "popcnt()", description: "" },
popcount: { minArgs: 1, maxArgs: 1, snippet: "popcount()", description: "" },
pow: { minArgs: 2, maxArgs: 2, snippet: "pow()", description: "" },
prcnt: { minArgs: 2, maxArgs: 2, snippet: "prcnt()", description: "" },
print: { minArgs: 1, maxArgs: 1, snippet: "print()", description: "" },
print_shape: { minArgs: 1, maxArgs: 1, snippet: "print_shape()", description: "" },
pshp: { minArgs: 1, maxArgs: 1, snippet: "pshp()", description: "" },
quantile: { minArgs: 2, maxArgs: 2, snippet: "quantile()", description: "" },
quartil: { minArgs: 2, maxArgs: 2, snippet: "quartil()", description: "" },
quartile: { minArgs: 2, maxArgs: 2, snippet: "quartile()", description: "" },
rand: { minArgs: 1, maxArgs: 2, snippet: "rand()", description: "" },
randb: { minArgs: 2, maxArgs: 3, snippet: "randb()", description: "" },
randbeta: { minArgs: 3, maxArgs: 4, snippet: "randbeta()", description: "" },
randc: { minArgs: 3, maxArgs: 4, snippet: "randc()", description: "" },
rande: { minArgs: 2, maxArgs: 3, snippet: "rande()", description: "" },
randg: { minArgs: 3, maxArgs: 4, snippet: "randg()", description: "" },
randgumbel: { minArgs: 3, maxArgs: 4, snippet: "randgumbel()", description: "" },
randchi2: { minArgs: 2, maxArgs: 3, snippet: "randchi2()", description: "" },
randl: { minArgs: 3, maxArgs: 4, snippet: "randl()", description: "" },
randln: { minArgs: 3, maxArgs: 4, snippet: "randln()", description: "" },
randn: { minArgs: 1, maxArgs: 2, snippet: "randn()", description: "" },
random_bernoulli: { minArgs: 2, maxArgs: 3, snippet: "random_bernoulli()", description: "" },
random_beta: { minArgs: 3, maxArgs: 4, snippet: "random_beta()", description: "" },
random_cauchy: { minArgs: 3, maxArgs: 4, snippet: "random_cauchy()", description: "" },
random_exponential: { minArgs: 2, maxArgs: 3, snippet: "random_exponential()", description: "" },
random_gamma: { minArgs: 3, maxArgs: 4, snippet: "random_gamma()", description: "" },
random_gumbel: { minArgs: 3, maxArgs: 4, snippet: "random_gumbel()", description: "" },
random_chi2: { minArgs: 2, maxArgs: 3, snippet: "random_chi2()", description: "" },
random_laplace: { minArgs: 3, maxArgs: 4, snippet: "random_laplace()", description: "" },
random_log_normal: { minArgs: 3, maxArgs: 4, snippet: "random_log_normal()", description: "" },
random_normal: { minArgs: 1, maxArgs: 2, snippet: "random_normal()", description: "" },
random_poisson: { minArgs: 2, maxArgs: 3, snippet: "random_poisson()", description: "" },
random_studentt: { minArgs: 2, maxArgs: 3, snippet: "random_studentt()", description: "" },
random_uniform: { minArgs: 1, maxArgs: 2, snippet: "random_uniform()", description: "" },
random_weibull: { minArgs: 3, maxArgs: 4, snippet: "random_weibull()", description: "" },
randp: { minArgs: 2, maxArgs: 3, snippet: "randp()", description: "aaa" },
randt: { minArgs: 2, maxArgs: 3, snippet: "randt()", description: "" },
randu: { minArgs: 1, maxArgs: 2, snippet: "randu()", description: "" },
randw: { minArgs: 3, maxArgs: 4, snippet: "randw()", description: "" },
range: { minArgs: 3, maxArgs: 3, snippet: "range()", description: "" },
relu: { minArgs: 1, maxArgs: null, snippet: "relu()", description: "" },
remap: { minArgs: 5, maxArgs: 5, snippet: "remap()", description: "" },
replace: { minArgs: 3, maxArgs: 3, snippet: "replace()", description: "" },
reshape: { minArgs: 2, maxArgs: 2, snippet: "reshape()", description: "" },
rgb_to_cielab: { minArgs: 1, maxArgs: 3, snippet: "rgb_to_cielab()", description: "" },
rgb_to_hsv: { minArgs: 1, maxArgs: 4, snippet: "rgb_to_hsv()", description: "" },
rgb_to_int: { minArgs: 1, maxArgs: 3, snippet: "rgb_to_int()", description: "" },
rgb_to_oklab: { minArgs: 1, maxArgs: 3, snippet: "rgb_to_oklab()", description: "" },
ridged: { minArgs: 2, maxArgs: 5, snippet: "ridged()", description: "" },
ridged_noise: { minArgs: 2, maxArgs: 5, snippet: "ridged_noise()", description: "" },
rife: { minArgs: 4, maxArgs: 5, snippet: "rife()", description: "" },
roll: { minArgs: 2, maxArgs: 3, snippet: "roll()", description: "" },
round: { minArgs: 1, maxArgs: 1, snippet: "round()", description: "" },
rshp: { minArgs: 2, maxArgs: 2, snippet: "rshp()", description: "" },
select: { minArgs: 2, maxArgs: 2, snippet: "select()", description: "" },
shape: { minArgs: 1, maxArgs: 1, snippet: "shape()", description: "" },
shuffle: { minArgs: 2, maxArgs: 2, snippet: "shuffle()", description: "" },
sigm: { minArgs: 1, maxArgs: 1, snippet: "sigm()", description: "" },
sign: { minArgs: 1, maxArgs: 1, snippet: "sign()", description: "" },
sin: { minArgs: 1, maxArgs: 1, snippet: "sin()", description: "" },
sine: { minArgs: 3, maxArgs: 3, snippet: "sine()", description: "" },
sine_ease: { minArgs: 3, maxArgs: 3, snippet: "sine_ease()", description: "" },
sinh: { minArgs: 1, maxArgs: 1, snippet: "sinh()", description: "" },
smax: { minArgs: 1, maxArgs: null, snippet: "smax()", description: "" },
smin: { minArgs: 1, maxArgs: null, snippet: "smin()", description: "" },
smootherstep: { minArgs: 3, maxArgs: 3, snippet: "smootherstep()", description: "" },
smoothstep: { minArgs: 3, maxArgs: 3, snippet: "smoothstep()", description: "" },
snorm: { minArgs: 1, maxArgs: 1, snippet: "snorm()", description: "" },
softmax: { minArgs: 1, maxArgs: 2, snippet: "softmax()", description: "" },
softmin: { minArgs: 1, maxArgs: 2, snippet: "softmin()", description: "" },
softplus: { minArgs: 1, maxArgs: 1, snippet: "softplus()", description: "" },
sort: { minArgs: 1, maxArgs: 1, snippet: "sort()", description: "" },
split: { minArgs: 1, maxArgs: 2, snippet: "split()", description: "" },
sqrt: { minArgs: 1, maxArgs: 1, snippet: "sqrt()", description: "" },
stack_clear: { minArgs: 1, maxArgs: 1, snippet: "stack_clear()", description: "" },
stack_get: { minArgs: 1, maxArgs: 1, snippet: "stack_get()", description: "" },
stack_has: { minArgs: 1, maxArgs: 1, snippet: "stack_has()", description: "" },
stack_pop: { minArgs: 1, maxArgs: 1, snippet: "stack_pop()", description: "" },
stack_push: { minArgs: 2, maxArgs: 2, snippet: "stack_push()", description: "" },
std: { minArgs: 1, maxArgs: 1, snippet: "std()", description: "" },
step: { minArgs: 2, maxArgs: 2, snippet: "step()", description: "" },
substr: { minArgs: 2, maxArgs: 3, snippet: "substr()", description: "" },
substring: { minArgs: 2, maxArgs: 3, snippet: "substring()", description: "" },
sum: { minArgs: 1, maxArgs: 1, snippet: "sum()", description: "" },
swap: { minArgs: 4, maxArgs: 4, snippet: "swap()", description: "" },
tan: { minArgs: 1, maxArgs: 1, snippet: "tan()", description: "" },
tanh: { minArgs: 1, maxArgs: 1, snippet: "tanh()", description: "" },
tensor: { minArgs: 2, maxArgs: 3, snippet: "tensor()", description: "" },
text_image: { minArgs: 3, maxArgs: 9, snippet: "text_image()", description: "" },
timestamp: { minArgs: 0, maxArgs: 0, snippet: "timestamp()", description: "" },
tmax: { minArgs: 2, maxArgs: 2, snippet: "tmax()", description: "" },
tmin: { minArgs: 2, maxArgs: 2, snippet: "tmin()", description: "" },
tnorm: { minArgs: 1, maxArgs: 1, snippet: "tnorm()", description: "" },
topk: { minArgs: 2, maxArgs: 2, snippet: "topk()", description: "" },
topk_ind: { minArgs: 2, maxArgs: 2, snippet: "topk_ind()", description: "" },
topk_indices: { minArgs: 2, maxArgs: 2, snippet: "topk_indices()", description: "" },
trim: { minArgs: 1, maxArgs: 1, snippet: "trim()", description: "" },
turbulence: { minArgs: 2, maxArgs: 5, snippet: "turbulence()", description: "" },
unique: { minArgs: 1, maxArgs: 1, snippet: "unique()", description: "" },
upper: { minArgs: 1, maxArgs: 1, snippet: "upper()", description: "" },
var: { minArgs: 1, maxArgs: 1, snippet: "var()", description: "" },
voronoi: { minArgs: 2, maxArgs: 5, snippet: "voronoi()", description: "" },
voronoi_noise: { minArgs: 2, maxArgs: 5, snippet: "voronoi_noise()", description: "" },
where: { minArgs: 3, maxArgs: 3, snippet: "where()", description: "" },
worley: { minArgs: 2, maxArgs: 5, snippet: "worley()", description: "" },
};