PyImport
Extends Import for Python codebases.
Inherits from
Import, GraphSitterBase, Exportable, Importable, HasName, Expression, Editable
Properties
dependencies
Symbols that this symbol depends on. Opposite of usages
export
Returns the export object that exports this symbol. Returns none if this symbol is not exported.
exported_name
Returns the name the symbol is exported as. If the symbol is not exported, returns None.
extended
Returns a SymbolGroup of all extended nodes. This allows a common edit interface for all of extended nodes.
extended_source
Text representation of all its extended nodes
file
The file object that this Editable instance belongs to
filepath
The file path of the file that this Editable instance belongs to
from_file
SourceFile that we are importing from. Goes through Symbol edge
full_name
The full name including the object lookup (if applicable).
Examples: For a.b, the full name is a.b
function_calls
Returns all contained function calls. Useful for renaming function invocations etc.
import_specifier
Returns the specific editable text representation of the import identifier within the import statement
e.g. import { a as b } from 'c'
-> a as b
e.g. from a.b import c
-> c
import_statement
Returns the ImportStatement that this import belongs to
imported_exports
Returns the enumerated list of symbols imported from a module import. If the import is not a module import, returns the single imported symbol.
imported_symbol
Returns the symbol directly being imported, including an indirect import and an External Module.
is_exported
Returns True iff the symbol is exported from the file it’s defined in
is_reexported
Returns True if the symbol is re-exported from a file it is not defined in (if applicable)
name
Returns the name or alias of the symbol being imported. Alias if it exists, otherwise name.
namespace
Returns the namespace prefix that must be used with dot notation to reference the imported symbol. For symbol imports or unnamed wildcard imports, the namespace is None. For module imports, the namespace is the module name or the module alias.
resolved_symbol
Returns the Symbol, SourceFile or External module this import resolves to (hops through indirect imports).
resolved_value
If the expression is a resolvable value, returns the last assigned expression value. Else, returns itself.
Example: a = 1 b = a foo(b)
If we call resolve_value on b, it returns 1.
source
Text representation of the Editable instance
to_file
SourceFile that this import resides in
variable_usages
Returns Editables for all TreeSitter node instances of variable usages. (Excludes: property identifiers and argument keywords) This is useful for renaming variables locally and analyzing variable usages.
Attributes
symbol_name
The name of the symbol being imported. For instance import a as b has a symbol_name of a.
Methods
commit
Commit just this node
edit
Replace the source of this Editable
with new_src
.
When fix_indentation
is True, the indentation of new_src
will be adjusted to match the current text’s indentation.
find
Returns a list of all substring match in strings_to_match
, similar to python’s str.find(..)
Args: exact: Only match individual nodes which exactly match the query
find_string_literals
Returns a list of all editable substrings within string literals that match strings_to_match
flag
Adds a comment so the developer can see this Editable
get_all_symbol_usages
Returns a list of all symbols that uses this exportable object, via direct or indirect usages. Equivalent to get_symbol_usages(UsageType.DIRECT | UsageType.INDIRECT | UsageType.ALIASED)
get_all_usages
Returns a list of all usages of this exportable object, via direct or indirect usages. Equivalent to get_usages(UsageType.DIRECT | UsageType.INDIRECT | UsageType.ALIASED)
get_import_string
Returns the import string needed to import this symbol.
- If
alias
is specified, formats the import using the alias. - If
module
is specified, uses the specified module, otherwise defaults to the current module. - If
import_type
is ImportType.WILDCARD, imports the symbol’s module. e.g.from module import symbol as alias
get_name
Returns the Name of the object, as a Name
(editable)
get_symbol_usages
Symbols that uses this exportable object, or imports that imports this exportable object.
By default, only returns direct usages, such as Imports or usages within the same file. In other words, it will tell you where this symbol is imported, but not where it is used.
Inverse of dependencies
.
Arguments: usage_types: What kind of usages to search for
get_usages
Returns a list of usages of the exportable object. By default, only returns direct usages, such as Imports or usages within the same file. In other words, it will tell you where this symbol is imported, but not where it is used. Useful for dead code deletion.
Arguments: usage_types: What kind of usages to search for
get_variable_usages
Returns Editables for all TreeSitter nodes corresponding to instances of variable usage that matches the given variable name.
(Excludes: property identifiers and argument keywords)
fuzzy_match
allows for partial matching of variable names and effectively does var_name in usage.name
insert_after
Inserts new_src after this node
insert_before
Inserts new_src before this node
is_aliased_import
Returns True if this import is aliased.
is_module_import
Returns True if this import is importing an entire module/file.
is_reexport
Returns true if the Import object is also an Export object. If the import is an export, it implies there are no usages of the import within the file it is defined in.
is_symbol_import
Returns True if this import is importing a symbol rather than a module. Opposite of is_module_import
is_wildcard_import
Returns True if the import symbol is a wildcard import. Wildcard imports only import named exports.
remove
Remove this import from the import statement
rename
Renames the import symbol name as well as its usages
Sets name (not alias) of an import JUST at the declaration, e.g. doing d -> XYZ in:
replace
Search and replace an instance of substring
within this node’s source. Similar to python’s string.replace(..)
Throws ValueError if there are more than one occurrence of substring in this node’s source.
Arguments:
old: the occurrences of this string to replace
new: the string to replace with
count: the max number of occurrences to replace. Default value: -1 (replace all)
is_regex: whether old
is a regex pattern. Default value: False
Returns:
The total count of old
occurrences replaced.
search
Returns a list of all regex match of regex_pattern
, similar to python’s re.search(…)
When include_strings
is False, the search will exclude the contents of string literals from the search.
When include_comments
is False, the search will exclude the contents of comments from the search.
set_import_module
Sets the module of an import.
For example, original:
from a.b.c import d
Then, you do set_import_module(imp, "x.y.z")
, you get:
from x.y.z import d
For example, original:
import from ‘a/b/c’
Then, you do set_import_module(imp, "x/y/z")
, you get:
import from ‘x/y/z’
set_import_symbol_alias
Sets alias (including name if no alias) of an import JUST at the declaration, e.g. doing e -> XYZ in:
Breaks imports and callsites.
set_name
Sets the name of the object
Was this page helpful?