Runtime error generator raised stopiteration

Steps to reproduce pylint Current behavior Traceback (most recent call last): File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/protocols.py", line 306, in _a...

Steps to reproduce

  1. pylint

Current behavior

Traceback (most recent call last):
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/protocols.py", line 306, in _arguments_infer_argname
    context.extra_context)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/arguments.py", line 31, in __init__
    self._unpacked_kwargs = self._unpack_keywords(keywords)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/arguments.py", line 77, in _unpack_keywords
    inferred = next(value.infer(context=context))
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/bin/pylint", line 11, in <module>
    sys.exit(run_pylint())
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/__init__.py", line 19, in run_pylint
    Run(sys.argv[1:])
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/lint.py", line 1394, in __init__
    linter.check(args)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/lint.py", line 801, in check
    self._do_check(files_or_modules)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/lint.py", line 938, in _do_check
    self.check_astroid_module(ast_node, walker, rawcheckers, tokencheckers)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/lint.py", line 1018, in check_astroid_module
    walker.walk(ast_node)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/utils.py", line 1159, in walk
    self.walk(child)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/utils.py", line 1159, in walk
    self.walk(child)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/utils.py", line 1159, in walk
    self.walk(child)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/utils.py", line 1156, in walk
    cb(astroid)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/checkers/typecheck.py", line 1349, in visit_subscript
    inferred = safe_infer(node.value)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/pylint/checkers/utils.py", line 812, in safe_infer
    next(inferit)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/decorators.py", line 84, in wrapped
    res = next(generator)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/bases.py", line 113, in _infer_stmts
    for inferred in stmt.infer(context=context):
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/util.py", line 144, in limit_inference
    yield from islice(iterator, size)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/context.py", line 103, in cache_generator
    for result in generator:
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/decorators.py", line 84, in wrapped
    res = next(generator)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/bases.py", line 113, in _infer_stmts
    for inferred in stmt.infer(context=context):
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/util.py", line 144, in limit_inference
    yield from islice(iterator, size)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/context.py", line 103, in cache_generator
    for result in generator:
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/decorators.py", line 123, in raise_if_nothing_inferred
    yield next(generator)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/decorators.py", line 84, in wrapped
    res = next(generator)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/inference.py", line 197, in infer_call
    context=callcontext,
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/scoped_nodes.py", line 1609, in infer_call_result
    yield from returnnode.value.infer(context)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/util.py", line 144, in limit_inference
    yield from islice(iterator, size)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/context.py", line 103, in cache_generator
    for result in generator:
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/decorators.py", line 84, in wrapped
    res = next(generator)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/bases.py", line 113, in _infer_stmts
    for inferred in stmt.infer(context=context):
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/util.py", line 144, in limit_inference
    yield from islice(iterator, size)
  File "/Users/MYSELF/Sites/MYSITE/MYSITEenv/lib/python3.7/site-packages/astroid/context.py", line 103, in cache_generator
    for result in generator:
RuntimeError: generator raised StopIteration

Expected behavior

Report as normal.

pylint —version output

pylint 2.0.0
astroid 2.0.0.dev4
Python 3.7.0 (default, Jun 29 2018, 20:13:13)
[Clang 9.1.0 (clang-902.0.39.2)]

Hello,
I created this class:

class ssource:
    def __init__(self, n):
        self.list1=[]
        self.list2=[]
        self.i=0
        self.max=n
        self.At=stream(self, self.list1)
        self.Bt=stream(self, self.list2)
        
    def __next__(self):
        if self.i>=self.max: raise StopIteration
        print(f"NEXTSYNC:{self.i}")
        self.list1.append(f'A{self.i}')
        self.list2.append(f'B{self.i}')
        self.i += 1

And I am testing my class with this code script:

src=ssource(10)
Ai=src.Ait
Bi=src.Bit

for i in range(5):
    print(f'A->{next(Ai)}')
for i in range(8):
    print(f'B->{next(Bi)}')
for a in Ai : print(f'A->{a}')

And I am getting this error:

Error:

NEXTSYNC:0 A->A0 NEXTSYNC:1 A->A1 NEXTSYNC:2 A->A2 NEXTSYNC:3 A->A3 NEXTSYNC:4 A->A4 B->B0 B->B1 B->B2 B->B3 B->B4 NEXTSYNC:5 B->B5 NEXTSYNC:6 B->B6 NEXTSYNC:7 B->B7 A->A5 A->A6 A->A7 NEXTSYNC:8 A->A8 NEXTSYNC:9 A->A9 --------------------------------------------------------------------------- StopIteration Traceback (most recent call last) <ipython-input-36-b322da59c757> in stream(src, fifo) 4 while True: ----> 5 if len(fifo)==0: next(src) 6 yield(fifo.pop(0)) <ipython-input-36-b322da59c757> in __next__(self) 17 def __next__(self): ---> 18 if self.i>=self.max: raise StopIteration 19 print(f"NEXTSYNC:{self.i}") StopIteration: The above exception was the direct cause of the following exception: RuntimeError Traceback (most recent call last) <ipython-input-39-9b42e44489d5> in <module> 7 for i in range(8): 8 print(f'B->{next(Bi)}') ----> 9 for a in Ai : print(f'A->{a}') RuntimeError: generator raised StopIteration

here is my another function

def stream(src, flist):
    try:
        while True:
            while len(flist)==0: next(src) 
            yield(flist.pop(0))
    except StopIteration:
        pass
#        raise StopIteration

quest

Wafer-Thin Wafer


Posts: 82

Threads: 37

Joined: Nov 2020

Reputation:
0

Hello again,

I did nothing but now it is ok. I am studying on jupyter notebook maybe because of some connection problems I got this error.

OR If you have any idea, you are very welcome but it is not ok and I do not know how it is ok

Я пытаюсь запустить этот код:

import web

urls = (
    '/', 'index'
)

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()

Но это выдает мне эту ошибку каждый раз

C:UsersaidkeDesktop>python app.py
Traceback (most recent call last):
  File "C:UsersaidkeAppDataLocalProgramsPythonPython37-32libsite-packageswebutils.py", line 526, in take
    yield next(seq)
StopIteration

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "app.py", line 14, in <module>
    app = web.application(urls, globals())
  File "C:UsersaidkeAppDataLocalProgramsPythonPython37-32libsite-packageswebapplication.py", line 62, in __init__
    self.init_mapping(mapping)
  File "C:UsersaidkeAppDataLocalProgramsPythonPython37-32libsite-packageswebapplication.py", line 130, in init_mapping
    self.mapping = list(utils.group(mapping, 2))
  File "C:UsersaidkeAppDataLocalProgramsPythonPython37-32libsite-packageswebutils.py", line 531, in group
    x = list(take(seq, size))
RuntimeError: generator raised StopIteration

Я попробовал чужой код, и случилось то же самое. Кроме того, я попытался переустановить web.py (экспериментальный), но он все еще не работал.

Перейти к ответу
Данный вопрос помечен как решенный


Ответы
6

Судя по путям к файлам, похоже, что вы используете Python 3.7. Если так, то вас поймает новое в 3.7 поведение:

PEP 479 is enabled for all code in Python 3.7, meaning that StopIteration exceptions raised directly or indirectly in coroutines and generators are transformed into RuntimeError exceptions. (Contributed by Yury Selivanov in bpo-32670.)

До этого изменения StopIteration, поднятый генератором или проходящий через него, просто заканчивал срок службы генератора (исключение было тихо проглочено). Модуль, который вы используете, необходимо будет перекодировать, чтобы он работал с версией 3.7.

Скорее всего, их нужно будет изменить:

yield next(seq)

К:

try:
    yield next(seq)
except StopIteration:
    return

Итак, во время моего недавнего самообучения на Python, курс требовал, чтобы я установил Web.py, и я получал эту ошибку, и, как было сказано в одном из ответов, его нужно было обновить, чтобы он был совместим с Python 3.7.

Я установил пакет с pip3 install web.py==0.40-dev1, столкнулся с этой ошибкой и начал искать решение в Интернете.

Что я сделал, так это поискал через webpy git и нашел файл utils.py, который был более поздним в https://github.com/webpy/webpy/tree/master/web, загрузил его и использовал для замены того, который был в моей папке Lib / site-packages / web (я пользователь Windows) и это просто сработало.

Надеюсь, это кому-то поможет.

Они исправили эту проблему, просто удалите текущую версию web.py, и я получил сообщение об ошибке при запуске pip install web.py с windows 10. Поэтому я запускаю команду pip install -e git+https://github.com/webpy/webpy.git#egg=webpy, чтобы получить последнюю версию из ветки master. Это не приведет к ошибке RuntimeError: generator raised StopIteration, как упоминалось в вопросе.

Это должно быть исправлено в # 577:
https://github.com/webpy/webpy/pull/577

Мое решение состояло в том, чтобы обновить эти пипсы.

Mongoengine от 0.14.0 к 0.19.1
а также

Flask-mongoengine в 0.9.5

Это сработало.

На данный момент большинство основных пакетов устранили эту проблему, но один из основных пакетов, который не исправлен, — это клипы / выкройка. Он не обновлялся с августа 2018 года, поэтому исправления не было.

Так как это лучший результат Google для «стоп-итерации шаблона Python», вот обходной путь:

def pattern_stopiteration_workaround():
    try:
        print(lexeme('gave'))
    except:
        pass

def main():
    pattern_stopiteration_workaround()
    #Add your other code here

По сути, код, связанный с шаблоном, выйдет из строя только при первом запуске, поэтому вам сначала нужно запустить его один раз и поймать исключение, которое он генерирует.

Он достаточно хорошо работал с моими собственными сценариями, но я не знаю, устраняет ли он все возможные проблемы.

В идеале, однако, кто-то должен разветвить проект клипов / шаблонов, поскольку он больше не поддерживается.

Другие вопросы по теме

Следующие исключения являются исключениями, которые обычно возникают во время исполнения программы.

Содержание:

  • Исключение StopIteration
  • Исключение StopAsyncIteration
  • Исключение ArithmeticError
  • Исключение AssertionError
  • Исключение AttributeError
  • Исключение BufferError
  • Исключение EOFError
  • Исключение ImportError
    • Исключение ModuleNotFoundError
  • Исключение LookupError
    • Исключение IndexError
    • Исключение KeyError
  • Исключение MemoryError
  • Исключение NameError
    • Исключение UnboundLocalError
  • Исключение OSError
  • Исключение ReferenceError
  • Исключение RuntimeError
    • Исключение NotImplementedError
    • Исключение RecursionError
  • Исключение SyntaxError
    • Исключение IndentationError
    • Исключение TabError
  • Исключение SystemError
  • Исключение TypeError
  • Исключение ValueError
  • Исключение UnicodeError
  • Исключение EnvironmentError
  • Исключение IOError
  • Исключение WindowsError

StopIteration:

Исключение StopIteration вызывается встроенной функцией next() и методом итератора __next__(), чтобы сигнализировать, что итератор больше не производит никаких элементов.

Объект исключения имеет единственный атрибут value, который задается в качестве аргумента при создании исключения и по умолчанию равен None.

Когда функция генератора или сопрограммы возвращается, создается новый экземпляр StopIteration, и значение, возвращаемое функцией, используется в качестве параметра value для конструктора исключения.

Если код генератора прямо или косвенно поднимает StopIteration, он преобразуется в RuntimeError, сохраняя StopIteration как причину нового исключения.

StopAsyncIteration:

Исключение StopAsyncIteration вызывается методом __next__() объекта асинхронного итератора, чтобы остановить итерацию.

ArithmeticError:

AssertionError:

Исключение AssertionError вызывается когда оператор assert терпит неудачу.

AttributeError:

Исключение AttributeError вызывается при сбое ссылки на атрибут или присвоения. Если объект не поддерживает ссылки на атрибуты или назначения атрибутов вообще, вызывается TypeError.

BufferError:

Исключение BufferError вызывается когда операция, связанная с буфером, не может быть выполнена.

EOFError:

Исключение EOFError вызывается когда функция input() попадает в состояние конца файла без чтения каких-либо данных. Когда методы io.IOBase.read() and io.IOBase.readline() возвращают пустую строку при попадании в EOF.

ImportError:

Исключение ImportError вызывается когда оператор import имеет проблемы при попытке загрузить модуль. Также ImportError поднимается, когда “из списка» в конструкция from ... import имеет имя, которое не может быть найдено.

Атрибуты name и path можно задать с помощью аргументов конструктора, содержащих только ключевые слова. При установке они представляют имя модуля, который был предпринят для импорта, и путь к любому файлу, который вызвал исключение, соответственно.

  • ModuleNotFoundError:

    Исключение ModuleNotFoundError подкласс ImportError, который вызывается оператором import, когда модуль не может быть найден. Он также вызывается, когда в sys.modules имеет значение None.

LookupError:

Исключение LookupError — базовый класс для исключений, возникающих при недопустимости ключа или индекса, используемого в сопоставлении или последовательности: IndexError, KeyError. Исключение LookupError может быть вызван непосредственно codecs.lookup().

  • IndexError:

    Исключение IndexError вызывается когда индекс последовательности находится вне диапазона. Индексы среза усекаются без каких либо предупреждений, чтобы попасть в допустимый диапазон. Если индекс не является целым числом, поднимается исключение TypeError.

  • KeyError:

    Исключение KeyError вызывается когда ключ сопоставления словаря не найден в наборе существующих ключей.

MemoryError:

Исключение MemoryError вызывается, когда операции не хватает памяти, но ситуация все еще может быть спасена путем удаления некоторых объектов. Значение представляет собой строку, указывающую какой внутренней операции не хватило памяти. Обратите внимание, что из-за базовой архитектуры управления памятью интерпретатор не всегда может полностью восстановиться в этой ситуации. Тем не менее, возникает исключение, чтобы можно было напечатать трассировку стека.

NameError:

Исключение NameError вызывается, когда локальное или глобальное имя не найдено. Значение — это сообщение об ошибке, содержащее имя, которое не удалось найти.

  • UnboundLocalError:

    Исключение UnboundLocalError вызывается, когда ссылка сделана на локальную переменную в функции или методе, но никакое значение не было привязано к этой переменной. Это подкласс NameError.

OSError:

ReferenceError:

Исключение ReferenceError вызывается, когда слабый эталонный прокси-сервер, созданный функцией weakref.proxy() используется для доступа к атрибуту референта после сбора его мусора.

RuntimeError:

Исключение RuntimeError вызывается при обнаружении ошибки, которая не попадает ни в одну из других категорий. Связанное значение является строкой, указывающей, что именно пошло не так.

  • NotImplementedError:

    Исключение NotImplementedError получено из RuntimeError. В определяемых пользователем базовых классах абстрактные методы должны вызывать это исключение, когда им требуется, чтобы производные классы переопределяли метод, или когда класс разрабатывается, чтобы указать, что реальная реализация все еще должна быть добавлена.

    Заметки:

    1. Его не следует использовать для указания того, что оператор или метод вообще не предполагается поддерживать — в этом случае либо оставьте оператор/метод неопределенным, либо, установите его в None.
    2. NotImplementedError и NotImplemented не являются взаимозаменяемыми, даже если они имеют схожие имена и цели. Смотрите подробности NotImplemented о том, когда его использовать.
  • RecursionError:

    Исключение RecursionError получено из RuntimeError. Исключение RecursionError вызывается, когда интерпретатор обнаруживает, что максимальная глубина рекурсии sys.getrecursionlimit() превышена.

SyntaxError:

Исключение SyntaxError вызывается, когда синтаксический анализатор обнаруживает синтаксическую ошибку. Ошибка данного типа может произойти в инструкции import, при вызове встроенной функции exec() или eval(), или при чтении первоначального сценария или стандартный ввода, также в интерактивном режиме.

Экземпляры этого класса имеют атрибуты filename, lineno, offset и text для облегчения доступа к информации. Функция str() экземпляра исключения возвращает только сообщение.

  • IndentationError:

    Исключение IndentationError служит базовым классом для синтаксических ошибок, связанных с неправильным отступом. Это подкласс SyntaxError.

  • TabError:

Исключение TabError вызывается, когда отступ содержит несоответствующее использование символов табуляции и пробелов. Это подкласс IndentationError.

SystemError:

Исключение SystemError вызывается, когда интерпретатор обнаруживает внутреннюю ошибку, но ситуация не выглядит настолько серьезной, чтобы заставить его отказаться от всякой надежды. Ассоциированное значение — это строка, указывающая, что пошло не так (в терминах низкого уровня).

TypeError:

Исключение TypeError вызывается, когда операция или функция применяется к объекту неподходящего типа. Связанное значение представляет собой строку, содержащую сведения о несоответствии типов.

Исключение TypeError может быть вызвано пользовательским кодом, чтобы указать, что попытка выполнения операции над объектом не поддерживается и не должна поддерживаться. Если объект предназначен для поддержки данной операции, но еще не предоставил реализацию, то вызывайте исключение NotImplementedError.

Передача аргументов неправильного типа, например передача списка, когда ожидается целое число, должна привести к TypeError, но передача аргументов с неправильным значением, например число вне ожидаемых границ, должна привести к ValueError.

ValueError:

Исключение ValueError вызывается, когда операция или функция получает аргумент, который имеет правильный тип, но недопустимое значение, и ситуация не описывается более точным исключением, таким как IndexError.

UnicodeError:

EnvironmentError:

Доступно только в Windows.

IOError:

Доступно только в Windows.

WindowsError:

Доступно только в Windows.

Понравилась статья? Поделить с друзьями:
  • Runtime error filestream
  • Runtime error system32 nvvsvc exe
  • Runtime error exceeded the vertex countskin skin что делать
  • Runtime error stepik
  • Runtime error dragon age origins