Tinkoff / invest-python

Tinkoff Invest Python gRPC client
https://tinkoff.github.io/invest-python/
Apache License 2.0
317 stars 89 forks source link

get_portfolio #72

Closed zig323 closed 2 years ago

zig323 commented 2 years ago

Что случилось?

issue Добрый день!

Подскажите пожалуйста почему не работает метод "get_portfolio" сервиса "operation"? Я передаю в метод один аргумент "account_id". А ошибка говорит, что было передано 2 позиционных аргумента. Если в метод вообще ничего не передать, то будет ошибка, требующая обязательного аргумента "account_id". Отмечу, что аналогичный пример с "get_accounts" работает как должен. То есть проблема именно в методе и его использовании.

Воспроизведение

`import os from dotenv import load_dotenv import tinkoff.invest as ti

load_dotenv()

token = os.getenv('token') account_id = os.getenv('BROKER_ID') client = ti.Client(token)

with ti.Client(token) as client: print(client.operations.get_portfolio(account_id))`

Tinkoff Invest Version

0.2.0-beta27

Python Version

3.8

OS

Windows

Логи

No response

irusland commented 2 years ago

Судя по сигнатуре метода

def get_portfolio(self, *, account_id: str = "") -> PortfolioResponse:

Вызов необходимо осуществлять явно указывая название аргумента

client.operations.get_portfolio(account_id=account_id)
irusland commented 2 years ago

@daxartio, подскажи для чего нам нужна такая логика с астериск операторами?

zig323 commented 2 years ago

Да, указав напрямую account_id=account_id сработало. Благодарю за оперативный ответ! Подскажите, а где вы взяли сигнатуру метода, где можно это найти?

daxartio commented 2 years ago

https://github.com/Tinkoff/invest-python/blob/0a1f5020053cbf16297355a98ada8361aa8b4955/tinkoff/invest/services.py#L857 Здесь можно посмотреть

irusland commented 2 years ago

Сигнатуру метода можно посмотреть в исходном коде библиотеки

https://github.com/Tinkoff/invest-python/blob/main/tinkoff/invest/services.py

Строка 857