Skip to content

Latest commit

 

History

History
1040 lines (808 loc) · 48.9 KB

File metadata and controls

1040 lines (808 loc) · 48.9 KB
title PyFunction
sidebarTitle PyFunction
icon
description Extends Function for Python codebases.

import {Parameter} from '/snippets/Parameter.mdx'; import {ParameterWrapper} from '/snippets/ParameterWrapper.mdx'; import {Return} from '/snippets/Return.mdx'; import {HorizontalDivider} from '/snippets/HorizontalDivider.mdx'; import {GithubLinkNote} from '/snippets/GithubLinkNote.mdx'; import {Attribute} from '/snippets/Attribute.mdx';

Inherits from

PyHasBlock, PySymbol, Function, HasBlock, Symbol, Callable, Expression, Usable, Editable, Importable, HasName

Attributes

### body str } description="Returns the body of the function as a string." />

call_sites

list[ FunctionCall ] } description="Returns all call sites (invocations) of this callable in the codebase." />

code_block

PyCodeBlock } description="The block of code associated with the code object." />

comment

PyCommentGroup | None } description="Retrieves the comment group associated with a Python symbol." />

decorators

list[ PyDecorator ] } description="Returns a list of decorators associated with this symbol." />

docstring

PyCommentGroup | None } description="Gets the function's docstring." />

extended

SymbolGroup } description="Returns a SymbolGroup of all extended nodes associated with this element." />

extended_nodes

list[ Editable ] } description="Returns a list of Editable nodes associated with this symbol, including extended symbols." />

extended_source

str } description="Returns the source text representation of all extended nodes." />

file

PyFile } description="The file object that this Editable instance belongs to." />

filepath

str } description="The file path of the file that this Editable instance belongs to." />

full_name

str | None } description="Returns the full name of the object, including the namespace path." />

function_calls

list[ FunctionCall ] } description="Gets all function calls within the function and its parameters." />

function_signature

str } description="Returns the function signature as a string." />

inferred_return_type

str | None } description="Gets the inferred type of the function from the language's native language engine / compiler." />

inline_comment

PyCommentGroup | None } description="Returns the inline comment group associated with this symbol." />

is_async

bool } description="Returns True if the function is asynchronous." />

is_class_method

bool } description="Indicates whether the current function is decorated with @classmethod." />

is_constructor

bool } description="Determines if the current function is a constructor method." />

is_decorated

bool } description="Returns whether the symbol is decorated with decorators." />

is_exported

bool } description="Indicates whether a Python symbol is exported." />

is_magic

bool } description="Determines if a method is a magic method." />

is_method

bool } description="Returns whether the function is a method of a class." />

is_overload

bool } description="Determines whether a function is decorated with an overload decorator." />

is_private

bool } description="Determines if a method is a private method." />

is_property

bool } description="Determines if the function is a property." />

is_static_method

bool } description="Determines if the function is a static method." />

name

str | None } description="Retrieves the base name of the object without namespace prefixes." />

nested_functions

list[ PyFunction ] } description="Returns a list of nested functions defined within this function's code block." />

parameters

SymbolGroup [ PyParameter , PyFunction ] | list[ PyParameter ] } description="Retrieves all parameters of a callable symbol." />

parent

Editable } description="The parent node of this Editable instance." />

parent_class

PyClass | None } description="Find the class this node is contained in" />

parent_function

PyFunction | None } description="Find the function this node is contained in" />

parent_statement

Statement | None } description="Find the statement this node is contained in" />

resolved_value

Expression | list[ Expression ] } description="Returns the resolved type of an Expression." />

return_statements

list[ ReturnStatement ] } description="Returns a list of all return statements within this function's body." />

return_type

Type | Placeholder [ PyFunction ] } description="The type of value returned by the callable, or a placeholder." />

source

str } description="Returns the source code of the symbol." />

symbol_type

} description="The type of symbol, set to SymbolType.Function." />

type_parameters

TypeParameters[ Type , PyFunction ] | None } description="The type parameters of the symbol, if any." />

variable_usages

list[ Editable ] } description="Returns Editables for all TreeSitter node instances of variable usages within this node's" />

Methods

### add_comment Adds a new comment to the symbol. str } description="The comment text to be added." defaultValue="" /> bool } description="Whether to automatically format the text into a proper comment format." defaultValue="True" /> bool } description="Whether to clean and normalize the comment text before adding." defaultValue="True" /> PyCommentType } description="The style of comment to add (e.g., single-line, multi-line)." defaultValue="PyCommentType.SINGLE_LINE" />

<Return return_type={ None } description=""/>

add_decorator

Adds a decorator to a function or method.

str } description="The decorator to add, including the '@' symbol." defaultValue="" /> bool, optional } description="If True, skips adding if the decorator exists." defaultValue="False" />

<Return return_type={ bool } description="True if the decorator was added, False if skipped."/>

add_keyword

Insert a keyword in the appropriate place before this symbol if it doesn't already exist.

str } description="The keyword to be inserted. Must be a valid keyword in the language context." defaultValue="" />

<Return return_type={ None } description=""/>

add_statements

Adds statements to the end of a function body.

str } description="The lines of code to be added at the end of the function body." defaultValue="" />

<Return return_type={ None } description=""/>

ancestors

Find all ancestors of the node of the given type. Does not return itself

<Return return_type={ <>list[ <a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable ]</> } description=""/>

asyncify

Modifies the function to be asynchronous.

<Return return_type={ None } description=""/>

dependencies

Returns a list of symbols that this symbol depends on.

UsageType | None } description="The types of dependencies to search for. Defaults to UsageType.DIRECT." defaultValue="UsageType.DIRECT" /> int | None } description="Maximum depth to traverse in the dependency graph. If provided, will recursively collect" defaultValue="None" />

<Return return_type={ <>list[Union[ <a href="/api-reference/python/PySymbol" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PySymbol , <a href="/api-reference/python/PyImport" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyImport ]]</> } description="A list of symbols and imports that this symbol depends on, sorted by file location."/>

edit

Replace the source of this node with new_src.

str } description="The new source code to replace the current source with." defaultValue="" /> bool } description="If True, adjusts the indentation of new_src to match the current text's indentation. Defaults to False." defaultValue="False" /> int } description="The priority of this edit. Higher priority edits take precedence. Defaults to 0." defaultValue="0" /> bool } description="If True, prevents duplicate edits. Defaults to True." defaultValue="True" />

<Return return_type={ None } description=""/>

find

Find and return matching nodes or substrings within an Editable instance.

Union[list[str], str] } description="One or more strings to search for." defaultValue="" /> bool } description="If True, only return nodes whose source exactly matches one of the strings_to_match." defaultValue="False" />

<Return return_type={ <>list[ <a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable ]</> } description="A list of Editable instances that match the search criteria."/>

find_string_literals

Returns a list of string literals within this node's source that match any of the given

list[str] } description="A list of strings to search for in string literals." defaultValue="" /> bool } description="If True, matches substrings within string literals. If False, only matches exact strings. Defaults to False." defaultValue="False" />

<Return return_type={ <>list[ <a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable [ <a href="/api-reference/python/PyFunction" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyFunction ]]</> } description="A list of Editable objects representing the matching string literals."/>

flag

Flags a Python symbol by adding a flag comment and returning a CodeFlag.

<Return return_type={ <>CodeFlag[ <a href="/api-reference/python/PyFunction" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyFunction ]</> } description="The code flag object for tracking purposes"/>

get_import_string

Generates an import string for a Python symbol.

str | None } description="Optional alias name for the import. If provided and different from symbol name, creates aliased import." defaultValue="None" /> str | None } description="Optional module name to import from. If not provided, uses the symbol's file's module name." defaultValue="None" /> ImportType } description="Type of import to generate. If WILDCARD, generates star import. Defaults to UNKNOWN." defaultValue="ImportType.UNKNOWN" /> bool } description="Whether this is a type import. Currently unused. Defaults to False." defaultValue="False" />

<Return return_type={ str } description="The formatted import string. Will be one of: - "from {module} import * as {file_name}" (for WILDCARD imports) - "from {module} import {name} as {alias}" (for aliased imports) - "from {module} import {name}" (for standard imports)"/>

get_name

Returns the name node of the object.

<Return return_type={ <><a href="/api-reference/core/Name" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Name | <a href="/api-reference/python/PyChainedAttribute" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyChainedAttribute | None</> } description="The name node of the object. Can be a Name node for simple names, a ChainedAttribute for names with namespaces (e.g., a.b), or None if the object has no name."/>

get_parameter

Gets a specific parameter from the callable's parameters list by name.

str } description="The name of the parameter to retrieve." defaultValue="" />

<Return return_type={ <><a href="/api-reference/python/PyParameter" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyParameter | None</> } description="The parameter with the specified name, or None if no parameter with that name exists or if there are no parameters."/>

get_parameter_by_index

Returns the parameter at the given index.

int } description="The index of the parameter to retrieve." defaultValue="" />

<Return return_type={ <><a href="/api-reference/python/PyParameter" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyParameter | None</> } description="The parameter at the specified index, or None if the parameter list is empty or the index does not exist."/>

get_parameter_by_type

Retrieves a parameter from the callable by its type.

PySymbol } description="The type to search for." defaultValue="" />

<Return return_type={ <><a href="/api-reference/python/PyParameter" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyParameter | None</> } description="The parameter with the specified type, or None if no parameter is found or if the callable has no parameters."/>

get_variable_usages

Returns Editables for all TreeSitter nodes corresponding to instances of variable usage

str } description="The variable name to search for." defaultValue="" /> bool } description="If True, matches variables where var_name is a substring. If False, requires exact match. Defaults to False." defaultValue="False" />

<Return return_type={ <>Sequence[ <a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable [ <a href="/api-reference/python/PyFunction" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyFunction ]]</> } description="List of Editable objects representing variable usage nodes matching the given name."/>

insert_after

Inserts code after this node.

str } description="The source code to insert after this node." defaultValue="" /> bool, optional } description="Whether to adjust the indentation of new_src to match the current node. Defaults to False." defaultValue="False" /> bool, optional } description="Whether to add a newline before the new_src. Defaults to True." defaultValue="True" /> int, optional } description="Priority of the insertion transaction. Defaults to 0." defaultValue="0" /> bool, optional } description="Whether to deduplicate identical transactions. Defaults to True." defaultValue="True" />

<Return return_type={ None } description=""/>

insert_before

Inserts text before the current symbol node in the Abstract Syntax Tree.

str } description="The source code text to insert." defaultValue="" /> bool } description="Whether to adjust the indentation of new_src to match current text. Defaults to False." defaultValue="False" /> bool } description="Whether to add a newline after insertion. Defaults to True." defaultValue="True" /> int } description="Priority of this edit operation. Higher priority edits are applied first. Defaults to 0." defaultValue="0" /> bool } description="Whether to remove duplicate insertions. Defaults to True." defaultValue="True" /> bool } description="Whether to insert before extended nodes like comments and decorators. Defaults to True." defaultValue="True" />

<Return return_type={ None } description=""/>

insert_statements

Inserts lines of code into the function body at the specified index.

str } description="The code lines to insert into the function body." defaultValue="" /> int, optional } description="The position in the function body where the lines should be inserted. Defaults to 0." defaultValue="0" />

<Return return_type={ None } description=""/>

is_child_of

Checks if this node is a descendant of the given editable instance in the AST.

<Return return_type={ bool } description=""/>

is_wrapped_in

Check if this node is contained another node of the given class

<Return return_type={ bool } description=""/>

move_to_file

Moves the given symbol to a new file and updates its imports and references.

PyFile } description="The destination file to move the symbol to." defaultValue="" /> bool } description="If True, moves all dependencies of the symbol to the new file. If False, adds imports for the dependencies. Defaults to True." defaultValue="True" /> str } description="The strategy to use for updating imports. Can be either 'add_back_edge' or 'update_all_imports'. Defaults to 'update_all_imports'." defaultValue=""update_all_imports"" />

<Return return_type={ None } description=""/>

parent_of_type

Find the first ancestor of the node of the given type. Does not return itself

<Return return_type={ <><a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable | None</> } description=""/>

parent_of_types

Find the first ancestor of the node of the given type. Does not return itself

<Return return_type={ <><a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable | None</> } description=""/>

prepend_statements

Prepends statements to the start of the function body.

str } description="The code statements to prepend to the function body." defaultValue="" />

<Return return_type={ None } description="This method modifies the function in place."/>

reduce_condition

Reduces an editable to the following condition

<Return return_type={ None } description=""/>

remove

Deletes this Node and its related extended nodes (e.g. decorators, comments).

bool } description="Whether to delete surrounding whitespace and formatting. Defaults to True." defaultValue="True" /> int } description="Priority of the removal transaction. Higher priority transactions are executed first. Defaults to 0." defaultValue="0" /> bool } description="Whether to deduplicate removal transactions at the same location. Defaults to True." defaultValue="True" />

<Return return_type={ None } description=""/>

rename

Renames a symbol and updates all its references in the codebase.

str } description="The new name for the symbol." defaultValue="" /> int } description="Priority of the edit operation. Defaults to 0." defaultValue="0" />

<Return return_type={ tuple[NodeId, NodeId] } description="A tuple containing the file node ID and the new node ID of the renamed symbol."/>

rename_local_variable

Renames a local variable and all its usages within a function body.

str } description="The current name of the local variable to be renamed." defaultValue="" /> str } description="The new name to give to the local variable." defaultValue="" /> bool, optional } description="If True, matches variable names that contain old_var_name. Defaults to False." defaultValue="False" />

<Return return_type={ None } description="The method modifies the AST in place."/>

replace

Search and replace occurrences of text within this node's source and its extended nodes.

str } description="The text or pattern to search for." defaultValue="" /> str } description="The text to replace matches with." defaultValue="" /> int, optional } description="Maximum number of replacements to make. Defaults to -1 (replace all)." defaultValue="-1" /> bool, optional } description="Whether to treat 'old' as a regex pattern. Defaults to False." defaultValue="False" /> int, optional } description="Priority of the replacement operation. Defaults to 0." defaultValue="0" />

<Return return_type={ int } description="The total number of replacements made."/>

search

Returns a list of all regex match of regex_pattern, similar to python's re.search().

str } description="The regular expression pattern to search for." defaultValue="" /> bool } description="When False, excludes the contents of string literals from the search. Defaults to True." defaultValue="True" /> bool } description="When False, excludes the contents of comments from the search. Defaults to True." defaultValue="True" />

<Return return_type={ <>list[ <a href="/api-reference/core/Editable" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Editable ]</> } description="A list of Editable objects corresponding to the matches found."/>

set_comment

Sets a comment for the Python symbol.

str } description="The comment text to be added or set." defaultValue="" /> bool, optional } description="If True, automatically formats the text as a comment." defaultValue="True" /> bool, optional } description="If True, cleans the format of the comment before" defaultValue="True" /> PyCommentType , optional } description="Type of comment to add (e.g., single line," defaultValue="PyCommentType.SINGLE_LINE" />

<Return return_type={ None } description="This method modifies the symbol's comment in place."/>

set_docstring

Sets or updates a docstring for a Python function or class.

str } description="The docstring content to set." defaultValue="" /> bool, optional } description="Whether to format the text into a proper docstring format. Defaults to True." defaultValue="True" /> bool, optional } description="Whether to clean and normalize the docstring format before insertion. Defaults to True." defaultValue="True" /> bool, optional } description="Whether to force single-line comments to be converted to multi-line format. Defaults to False." defaultValue="False" />

<Return return_type={ None } description=""/>

set_inline_comment

Sets an inline comment to the symbol.

str } description="The inline comment text to add." defaultValue="" /> bool, optional } description="If True, formats the text into a proper inline" defaultValue="True" /> bool, optional } description="If True, cleans the comment text before insertion" defaultValue="True" />

<Return return_type={ None } description=""/>

set_name

Sets the name of a code element.

str } description="The new name to set for the object." defaultValue="" />

<Return return_type={ None } description=""/>

set_return_type

Sets or modifies the return type annotation of a function.

str } description="The new return type annotation to set. Provide an empty string to remove the return type annotation." defaultValue="" />

<Return return_type={ None } description=""/>

symbol_usages

Returns a list of symbols that use or import the exportable object.

UsageType | None } description="The types of usages to search for. Defaults to any." defaultValue="None" />

<Return return_type={ <>list[ <a href="/api-reference/python/PyImport" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PyImport | <a href="/api-reference/python/PySymbol" style={ {fontWeight: "inherit", fontSize: "inherit"} }>PySymbol | <a href="/api-reference/core/Export" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Export ]</> } description="A list of symbols that use or import the exportable object."/>

usages

Returns a list of usages of the exportable object.

UsageType | None } description="Specifies which types of usages to include in the results. Default is any usages." defaultValue="None" />

<Return return_type={ <>list[ <a href="/api-reference/core/Usage" style={ {fontWeight: "inherit", fontSize: "inherit"} }>Usage ]</> } description="A sorted list of Usage objects representing where this exportable is used, ordered by source location in reverse."/>