Как я могу динамически определить сигнатуру функции для pylance и т. д.? ⇐ Python

Программы на Python
Anonymous
Как я могу динамически определить сигнатуру функции для pylance и т. д.?

Сообщение Anonymous »

Я создаю платформу, построенную на pydantic.BaseModel, которая будет управлять размещением и получением записей из dynamodb.
Пример модели следующий:< /p>

Код: Выделить всё

class User(DynamoDanticBaseModel):
user_id: str
first_name: str

@classmethod
def primary_key(cls) -> str:
return "USER#{user_id}"

@classmethod
def sort_key(cls) -> str:
return "USER"
Используя __init_subclass__, я могу получить форматируемые строки и проверить, что необходимые части PK/SK определены в классе.
Общим определением является метод класса get, который использует эти значения для вызова boto3 ниже и получения записи, заполнения модели и возврата экземпляра новой модели.

Код: Выделить всё

user = User(user_id='example', first_name='Bacon')
user.put(dynamo_table_ref)

user = User.get(dynamo_table_ref, user_id='example')
user.first_name # => "Bacon"
Все это работает. Моя проблема в том, что интерфейс методов получения: def get(cls, table, **kwargs):. Разработчик не может видеть, какие параметры необходимы.
Есть ли способ разметки моего кода или шаблон, который мне следует использовать, это означало бы, что я мог бы использовать подсказку подписи, показывающую необходимые параметры ? Динамически по отношению к обязательным параметрам, определенным в методе первичного ключа и ключа сортировки?
например. def get(cls, table, user_id: str):

Подробнее здесь: https://stackoverflow.com/questions/790 ... ylance-etc

Вернуться в «Python»