Ошибка типа: объект типа «фильтр» не имеет len () - PullRequest
1 голос
/ 03 октября 2019

При выполнении скрипта Python я получаю следующую ошибку ...

Traceback (most recent call last):
File "/usr/local/bin/jira-cycle-extract", line 10, in <module>
    sys.exit(main())
File "/usr/local/lib/python3.7/site-packages/jira_cycle_extract/cli.py", line 144, in main
    cycle_data = q.cycle_data(verbose=args.verbose)
File "/usr/local/lib/python3.7/site-packages/jira_cycle_extract/cycletime.py", line 141, in cycle_data
for snapshot in self.iter_changes(issue, False):
File "/usr/local/lib/python3.7/site-packages/jira_cycle_extract/query.py", line 114, in iter_changes
last_status = status_changes[0].fromString if len(status_changes) != 0 else issue.fields.status.name
TypeError: object of type 'filter' has no len()

Я попытался решить эту проблему, добавив следующий код, основанный на других исследованиях, и изменив его с * 1004. * до not empty или других форм, чтобы проверить пустой список, но не повезло.

Это код вопроса ...

status_changes = filter(
        lambda h: h.field == 'status',
        itertools.chain.from_iterable([c.items for c in issue.changelog.histories])
    )

last_status = status_changes[0].fromString if len(status_changes) != 0 else issue.fields.status.name
    last_resolution = None

1 Ответ

1 голос
/ 03 октября 2019

Вы можете использовать функцию next с выражением генератора и значением по умолчанию. Код в вашем вопросе может быть переписан как:

last_status = next((h.fromString for c in issue.changelog.histories for h in c.items if h.field == 'status'), issue.fields.status.name)
last_resolution = None
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...