From 34db35ad07e53954536cf774380eeeb35eda6581 Mon Sep 17 00:00:00 2001 From: mcDandy Date: Thu, 11 Jun 2026 23:27:37 +0200 Subject: [PATCH] Add in node documentation (Partially AI) --- more_math/Parser/compile.ps1 | 58 +++- more_math/Parser/inbuilt_symbols.py | 468 ++++++++++++++-------------- web/autocomplete.js | 293 +++++++++++------ web/inbuilt_symbols.js | 468 ++++++++++++++-------------- 4 files changed, 715 insertions(+), 572 deletions(-) diff --git a/more_math/Parser/compile.ps1 b/more_math/Parser/compile.ps1 index fe6324f..05fb656 100644 --- a/more_math/Parser/compile.ps1 +++ b/more_math/Parser/compile.ps1 @@ -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.", "", diff --git a/more_math/Parser/inbuilt_symbols.py b/more_math/Parser/inbuilt_symbols.py index d7ad42e..804da91 100644 --- a/more_math/Parser/inbuilt_symbols.py +++ b/more_math/Parser/inbuilt_symbols.py @@ -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': ''}, } \ No newline at end of file diff --git a/web/autocomplete.js b/web/autocomplete.js index feff7e3..9df5a1f 100644 --- a/web/autocomplete.js +++ b/web/autocomplete.js @@ -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 = ` +
${selectedItem.name}
+
${meta.description}
+
${argsText}
+ `; + + 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 }; \ No newline at end of file diff --git a/web/inbuilt_symbols.js b/web/inbuilt_symbols.js index 7204da3..8104c4e 100644 --- a/web/inbuilt_symbols.js +++ b/web/inbuilt_symbols.js @@ -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: "" }, }; \ No newline at end of file