Описание тега libcst

1 ответ

LibCST: преобразование произвольных узлов в код

Можно ли выгрузить произвольный узел LibCST в код Python? Мой вариант использования заключается в том, что я хочу извлечь код для функций, соответствующих определенной схеме именования. Я могу извлечьFunctionDef узлы, которые мне нужны, но я, похоже…
26 мар '20 в 16:04
1 ответ

Python Libcst: невозможно сгенерировать код из узла в классе посетителей

Я ищу способ получить код из узла в посетителе. Пример: import libcst code_example = """ from ast import parse threshold = 1 print(threshold) """ class CodeVisitor(libcst.CSTVisitor): def visit_Assign(self, node: libcst…
07 июл '20 в 12:04
2 ответа

libcst: при вставке нового узла добавляется встроенный код и точка с запятой

Я пытаюсь ввести новый узел (как новую строку кода) непосредственно перед узлом Assign. Проблема возникает при использовании FlattenSentinel чтобы представить новый узел, поскольку я хочу, чтобы узел был отдельным, но libcst объединяет их, используя…
10 июн '21 в 19:53
0 ответов

Проблемы с добавлением дополнительного узла If к существующему if elif else в Libcst

Я новичок в LibCST. Я пишу инструмент, который модифицирует код. Я хочу добавить elif (orelse=If) к существующему узлу If elif else. Простой пример: # before if data == "a": execute_a(data) elif data == "b": execute_b(data) else: raise RuntimeError(…
03 авг '21 в 20:33
1 ответ

Как определить, есть ли в строке Python комментарий, и разбить строку на `[code, comment]`

Мне интересно, как определить (True / False), есть ли в строке кода Python комментарий разделить строку на code, comment Что-то вроде: loc_1 = "print('hello') # this is a comment" Это очень просто, но что-то вроде: loc_2 = for char in "(*#& eht …
21 авг '21 в 21:17
1 ответ

Замена всех функций на «pass» при отправке на github

Я хотел бы создать репозиторий для проприетарного модуля python, аналогично тому, как этот пакет python mlfinlabs. Они опустошили все функции следующим образом: def bet_size_dynamic(current_pos, max_pos, market_price, forecast_price, cal_divergence=…
27 янв '22 в 18:42
0 ответов

Использование сопоставления LibCST

Скажем, у вас есть трансформатор: class Transformer(cst.CSTTransformer): def on_leave(self, original_node: CSTNodeT, updated_node: CSTNodeT) -> Union[CSTNodeT, RemovalSentinel]: # Visit line nodes with print function calls if not isinstance(updat…
12 янв '21 в 09:48
2 ответа

Найдите узлы if, за которыми сразу следует узел повышения в Python с помощью libcst

сейчас я работаю над проектом для университетского курса. У меня есть несколько случайных функций, и у большинства из них где-то в коде есть оператор if-raise. Я пытаюсь найти такие, но только эти 1 или 2 строки. Я преобразовываю функции в AST, а за…
23 май '22 в 15:29
0 ответов

Ошибки компиляции Rust при установке libcst на alpine python

попытка установить модули python на alpine linux, используя образ 3.7.9 alpine-python Не удалось найти какое-либо решение о том, как решить указанные ниже проблемы, любая помощь очень поможет. error[E0658]: or-patterns syntax is experimental 6908 --…
18 сен '22 в 08:58
1 ответ

Есть ли в libcst функция декодирования для преобразования дерева в исходный код python?

Я получил фрагмент вывода из примера программы libcst.parse_module, например: Module( body=[ SimpleStatementLine( body=[ Assign( targets=[ AssignTarget( target=Name( value='hi', lpar=[], rpar=[], ), whitespace_before_equal=SimpleWhitespace( value=' …
05 дек '22 в 08:00
0 ответов

Как я могу написать правило Lint для предотвращения мутации глобальных переменных в Python?

Глобальные переменные — это зло, мы все это знаем (под глобальными переменными я подразумеваю переменные уровня модуля). Я хочу написать собственное правило lint для защиты его обновления. Например, GLOBAL_DICT = { 'a': 1, 'b': 2, } def func(): var_…
24 сен '22 в 19:13
1 ответ

Как отличить переменную, переданную в качестве входных данных в жестко закодированную функцию, от локально определенной переменной?

Если бы у меня был: def my_func(x: str) -> void: // def my_caller_func()-> void local_var = "xyz" local_var_2 = "zzz" my_func(x=local_var) Я пытаюсь написать посетитель libcst, который обнаружит, что входное значение, переданное на вход x my_f…
15 мар '23 в 17:14
1 ответ

Примените libcst codemod и пропустите тестовые файлы.

Я пишу кодмод с libcst , который наследуется отVisitorBasedCodemodCommand. Он работает нормально, но довольно медленно. Один простой трюк — пропустить все тестовые файлы, начинающиеся сtest_условно. Однако мне не удалось найти место для добавления т…
01 июн '23 в 13:16
1 ответ

Преобразовать аннотацию типа LibCST обратно в тип?

После создания запуска функции, преобразующей тип аннотации обратно в тип: @typechecked def extract_type_from_annotation( *, annotation: Union[ Subscript, Index, Name, Annotation, Attribute, BinaryOperation ], ) -> str: """Extract the type inform…
28 окт '23 в 14:14
1 ответ

Замена SimpleString внутри определения функции libcst? (dataclasses.FrozenInstanceError: невозможно назначить поле «тело»)

Контекст При попытке использоватьlibcstмодуля, у меня возникли некоторые трудности с обновлением документации по функции. МВЕ Чтобы воспроизвести ошибку, включен следующий минимальный рабочий пример (MWE): from libcst import ( # type: ignore[import]…
25 сен '23 в 14:31