layday / instawow

World of Warcraft add-on manager CLI and GUI
GNU General Public License v3.0
161 stars 9 forks source link

internal error updating weakauras-companion-autoupdate #51

Closed hauk92 closed 4 years ago

hauk92 commented 4 years ago

I upgraded instawow from 1.14.1 to 1.14.3. After the upgrade weakauras-companion-autoupdate gives an internal error.

Upgrade output:

pipx upgrade instawow
  Overwriting file C:\Users\Blabla\.local\bin\instawow.exe with C:\Users\Blabla\.local\pipx\venvs\instawow\Scripts\instawow.exe
upgraded package instawow from 1.14.1 to 1.14.3 (location: C:\Users\Blabla\.local\pipx\venvs\instawow)

Output:

instawow update
! instawow:weakauras-companion-autoupdate
  internal error

error.log:

2020-09-20 12:06:10.124 | ERROR    | instawow.manager:_capture_exc_async:265 - unclassed error
Traceback (most recent call last):

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\base.py", line 1204, in _execute_context
    context = constructor(dialect, self, conn, *args)
              |           |        |     |      -> (<sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x0000026E9F6409A0>, [{'description': 'A WeakAuras Companion clone...
              |           |        |     -> <sqlalchemy.pool.base._ConnectionFairy object at 0x0000026E9B089670>
              |           |        -> <sqlalchemy.engine.base.Connection object at 0x0000026E9F957A30>
              |           -> <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x0000026E9AFE80D0>
              -> <bound method DefaultExecutionContext._init_compiled of <class 'sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext'>>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\default.py", line 839, in _init_compiled
    param.append(processors[key](compiled_params[key]))
    |     |      |          |    |               -> 'date_published'
    |     |      |          |    -> {'slug': 'weakauras-companion-autoupdate', 'name': 'WeakAuras Companion', 'description': 'A WeakAuras Companion clone.', 'url...
    |     |      |          -> 'date_published'
    |     |      -> {'date_published': <function TypeDecorator.bind_processor.<locals>.process at 0x0000026E9F69B820>}
    |     -> <method 'append' of 'list' objects>
    -> ['weakauras-companion-autoupdate', 'WeakAuras Companion', 'A WeakAuras Companion clone.', 'https://github.com/layday/instawow...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\sql\type_api.py", line 1230, in process
    return impl_processor(process_param(value, dialect))
           |              |             |      -> <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x0000026E9AFE80D0>
           |              |             -> datetime.datetime(2020, 9, 20, 12, 6, 10, 87015)
           |              -> <bound method TZDateTime.process_bind_param of TZDateTime()>
           -> <function DATETIME.bind_processor.<locals>.process at 0x0000026E9F69B700>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\models.py", line 75, in process_bind_param
    raise TypeError('tzinfo is required')

TypeError: tzinfo is required

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

Traceback (most recent call last):

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
           |         |     -> {'__name__': '__main__', '__doc__': None, '__package__': '', '__loader__': <zipimporter object "C:\Users\Blabla\.local\bin\ins...
           |         -> <code object <module> at 0x0000026E980D4DF0, file "C:\Users\Blabla\.local\bin\instawow.exe\__main__.py", line 2>
           -> <function _run_code at 0x0000026E97ED8B80>

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
         |     -> {'__name__': '__main__', '__doc__': None, '__package__': '', '__loader__': <zipimporter object "C:\Users\Blabla\.local\bin\ins...
         -> <code object <module> at 0x0000026E980D4DF0, file "C:\Users\Blabla\.local\bin\instawow.exe\__main__.py", line 2>

  File "C:\Users\Blabla\.local\bin\instawow.exe\__main__.py", line 7, in <module>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\click\core.py", line 829, in __call__
    return self.main(*args, **kwargs)
           |    |     |       -> {}
           |    |     -> ()
           |    -> <function BaseCommand.main at 0x0000026E99D97E50>
           -> <Group main>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\click\core.py", line 782, in main
    rv = self.invoke(ctx)
         |    |      -> <click.core.Context object at 0x0000026E9A882F70>
         |    -> <function MultiCommand.invoke at 0x0000026E99D9AC10>
         -> <Group main>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\click\core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
           |               |       |       |      -> <click.core.Context object at 0x0000026E98221B20>
           |               |       |       -> <function Command.invoke at 0x0000026E99D9A820>
           |               |       -> <Command update>
           |               -> <click.core.Context object at 0x0000026E98221B20>
           -> <function MultiCommand.invoke.<locals>._process_result at 0x0000026E97CA61F0>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\click\core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
           |   |      |    |           |   -> {'addons': []}
           |   |      |    |           -> <click.core.Context object at 0x0000026E98221B20>
           |   |      |    -> <function update at 0x0000026E9A88A670>
           |   |      -> <Command update>
           |   -> <function Context.invoke at 0x0000026E99D97940>
           -> <click.core.Context object at 0x0000026E98221B20>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\click\core.py", line 610, in invoke
    return callback(*args, **kwargs)
           |         |       -> {'addons': []}
           |         -> ()
           -> <function update at 0x0000026E9A88A670>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\click\decorators.py", line 33, in new_func
    return f(get_current_context().obj, *args, **kwargs)
           | |                           |       -> {'addons': []}
           | |                           -> ()
           | -> <function get_current_context at 0x0000026E99B3FF70>
           -> <function update at 0x0000026E9A88A5E0>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\cli.py", line 304, in update
    results = obj.m.run(
              |   | -> <function CliManager.run at 0x0000026E9AF7F040>
              |   -> <instawow.manager.CliManager object at 0x0000026E9AFD9A30>
              -> <instawow.cli.ManagerWrapper object at 0x0000026E98232790>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\manager.py", line 783, in run
    return loop.run_until_complete(run())
           |    |                  -> <function CliManager.run.<locals>.run at 0x0000026E9BE62670>
           |    -> <function BaseEventLoop.run_until_complete at 0x0000026E99FE6F70>
           -> <_WindowsSelectorEventLoop running=True closed=False debug=False>

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\asyncio\base_events.py", line 603, in run_until_complete
    self.run_forever()
    |    -> <function BaseEventLoop.run_forever at 0x0000026E99FE6EE0>
    -> <_WindowsSelectorEventLoop running=True closed=False debug=False>

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\asyncio\base_events.py", line 570, in run_forever
    self._run_once()
    |    -> <function BaseEventLoop._run_once at 0x0000026E99FE9A60>
    -> <_WindowsSelectorEventLoop running=True closed=False debug=False>

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\asyncio\base_events.py", line 1859, in _run_once
    handle._run()
    |      -> <function Handle._run at 0x0000026E99F87790>
    -> <Handle <TaskWakeupMethWrapper object at 0x0000026E9F945D30>(<Future finis...is required')>)>

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\asyncio\events.py", line 81, in _run
    self._context.run(self._callback, *self._args)
    |    |            |    |           |    -> <member '_args' of 'Handle' objects>
    |    |            |    |           -> <Handle <TaskWakeupMethWrapper object at 0x0000026E9F945D30>(<Future finis...is required')>)>
    |    |            |    -> <member '_callback' of 'Handle' objects>
    |    |            -> <Handle <TaskWakeupMethWrapper object at 0x0000026E9F945D30>(<Future finis...is required')>)>
    |    -> <member '_context' of 'Handle' objects>
    -> <Handle <TaskWakeupMethWrapper object at 0x0000026E9F945D30>(<Future finis...is required')>)>

> File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\manager.py", line 258, in _capture_exc_async
    return await coro()
                 -> functools.partial(<function Manager.update_pkg at 0x0000026E9F96AF70>, <instawow.models.Pkg object at 0x0000026E9C32C640>, <i...

  File "c:\users\blabla\appdata\local\programs\python\python38\lib\concurrent\futures\thread.py", line 57, in run
    result = self.fn(*self.args, **self.kwargs)
             |        |            -> None
             |        -> None
             -> None

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\utils.py", line 173, in <lambda>
    return loop.run_in_executor(None, lambda: fn(*args, **kwargs))
                                              |   |       -> {}
                                              |   -> (<instawow.models.Pkg object at 0x0000026E9C32C640>, <instawow.models.Pkg object at 0x0000026E9C3E5A30>, WindowsPath('C:/User...
                                              -> <bound method Manager.update_pkg of <instawow.manager.CliManager object at 0x0000026E9AFD9A30>>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\manager.py", line 457, in update_pkg
    self.database.merge(
    |    |        -> <function Session.merge at 0x0000026E9AE9EAF0>
    |    -> <sqlalchemy.orm.session.Session object at 0x0000026E9AFD98B0>
    -> <instawow.manager.CliManager object at 0x0000026E9AFD9A30>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\session.py", line 2144, in merge
    self._autoflush()
    |    -> <function Session._autoflush at 0x0000026E9AEA0F70>
    -> <sqlalchemy.orm.session.Session object at 0x0000026E9AFD98B0>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\session.py", line 1628, in _autoflush
    util.raise_(e, with_traceback=sys.exc_info()[2])
    |    |                        |   -> <built-in function exc_info>
    |    |                        -> <module 'sys' (built-in)>
    |    -> <function raise_ at 0x0000026E9A8FE0D0>
    -> <module 'sqlalchemy.util' from 'c:\\users\\blabla\\.local\\pipx\\venvs\\instawow\\lib\\site-packages\\sqlalchemy\\util\\__init...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\util\compat.py", line 182, in raise_
    raise exception

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\session.py", line 1617, in _autoflush
    self.flush()
    |    -> <function Session.flush at 0x0000026E9AEA11F0>
    -> <sqlalchemy.orm.session.Session object at 0x0000026E9AFD98B0>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\session.py", line 2523, in flush
    self._flush(objects)
    |    |      -> None
    |    -> <function Session._flush at 0x0000026E9AEA13A0>
    -> <sqlalchemy.orm.session.Session object at 0x0000026E9AFD98B0>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\session.py", line 2664, in _flush
    transaction.rollback(_capture_exception=True)
    |           -> <function SessionTransaction.rollback at 0x0000026E9AE9DC10>
    -> <sqlalchemy.orm.session.SessionTransaction object at 0x0000026E9F957F40>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\util\langhelpers.py", line 68, in __exit__
    compat.raise_(
    |      -> <function raise_ at 0x0000026E9A8FE0D0>
    -> <module 'sqlalchemy.util.compat' from 'c:\\users\\blabla\\.local\\pipx\\venvs\\instawow\\lib\\site-packages\\sqlalchemy\\util\...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\util\compat.py", line 182, in raise_
    raise exception

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\session.py", line 2624, in _flush
    flush_context.execute()
    |             -> <function UOWTransaction.execute at 0x0000026E9AE6AB80>
    -> <sqlalchemy.orm.unitofwork.UOWTransaction object at 0x0000026E9C401340>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 422, in execute
    rec.execute(self)
    |   |       -> <sqlalchemy.orm.unitofwork.UOWTransaction object at 0x0000026E9C401340>
    |   -> <function SaveUpdateAll.execute at 0x0000026E9AE72430>
    -> SaveUpdateAll(mapped class Pkg->pkg)

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 586, in execute
    persistence.save_obj(
    |           -> <function save_obj at 0x0000026E9AE14AF0>
    -> <module 'sqlalchemy.orm.persistence' from 'c:\\users\\blabla\\.local\\pipx\\venvs\\instawow\\lib\\site-packages\\sqlalchemy\\o...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\persistence.py", line 230, in save_obj
    _emit_update_statements(
    -> <function _emit_update_statements at 0x0000026E9AE170D0>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\orm\persistence.py", line 994, in _emit_update_statements
    c = cached_connections[connection].execute(
        |                  -> <sqlalchemy.engine.base.Connection object at 0x0000026E9B0896A0>
        -> {<sqlalchemy.engine.base.Connection object at 0x0000026E9B0896A0>: <sqlalchemy.engine.base.Connection object at 0x0000026E9F9...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\base.py", line 1011, in execute
    return meth(self, multiparams, params)
           |    |     |            -> {}
           |    |     -> ([{'description': 'A WeakAuras Companion clone.', 'version': '4d32366', 'download_url': 'file:///C:/Users/Blabla/AppData/Roami...
           |    -> <sqlalchemy.engine.base.Connection object at 0x0000026E9F957A30>
           -> <bound method ClauseElement._execute_on_connection of <sqlalchemy.sql.dml.Update object at 0x0000026E9AA3BD00>>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\sql\elements.py", line 298, in _execute_on_connection
    return connection._execute_clauseelement(self, multiparams, params)
           |          |                      |     |            -> {}
           |          |                      |     -> ([{'description': 'A WeakAuras Companion clone.', 'version': '4d32366', 'download_url': 'file:///C:/Users/Blabla/AppData/Roami...
           |          |                      -> <sqlalchemy.sql.dml.Update object at 0x0000026E9AA3BD00>
           |          -> <function Connection._execute_clauseelement at 0x0000026E9AC24040>
           -> <sqlalchemy.engine.base.Connection object at 0x0000026E9F957A30>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\base.py", line 1124, in _execute_clauseelement
    ret = self._execute_context(
          |    -> <function Connection._execute_context at 0x0000026E9AC241F0>
          -> <sqlalchemy.engine.base.Connection object at 0x0000026E9F957A30>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\base.py", line 1206, in _execute_context
    self._handle_dbapi_exception(
    |    -> <function Connection._handle_dbapi_exception at 0x0000026E9AC243A0>
    -> <sqlalchemy.engine.base.Connection object at 0x0000026E9F957A30>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\base.py", line 1510, in _handle_dbapi_exception
    util.raise_(
    |    -> <function raise_ at 0x0000026E9A8FE0D0>
    -> <module 'sqlalchemy.util' from 'c:\\users\\blabla\\.local\\pipx\\venvs\\instawow\\lib\\site-packages\\sqlalchemy\\util\\__init...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\util\compat.py", line 182, in raise_
    raise exception

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\base.py", line 1204, in _execute_context
    context = constructor(dialect, self, conn, *args)
              |           |        |     |      -> (<sqlalchemy.dialects.sqlite.base.SQLiteCompiler object at 0x0000026E9F6409A0>, [{'description': 'A WeakAuras Companion clone...
              |           |        |     -> <sqlalchemy.pool.base._ConnectionFairy object at 0x0000026E9B089670>
              |           |        -> <sqlalchemy.engine.base.Connection object at 0x0000026E9F957A30>
              |           -> <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x0000026E9AFE80D0>
              -> <bound method DefaultExecutionContext._init_compiled of <class 'sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext'>>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\engine\default.py", line 839, in _init_compiled
    param.append(processors[key](compiled_params[key]))
    |     |      |          |    |               -> 'date_published'
    |     |      |          |    -> {'slug': 'weakauras-companion-autoupdate', 'name': 'WeakAuras Companion', 'description': 'A WeakAuras Companion clone.', 'url...
    |     |      |          -> 'date_published'
    |     |      -> {'date_published': <function TypeDecorator.bind_processor.<locals>.process at 0x0000026E9F69B820>}
    |     -> <method 'append' of 'list' objects>
    -> ['weakauras-companion-autoupdate', 'WeakAuras Companion', 'A WeakAuras Companion clone.', 'https://github.com/layday/instawow...

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\sqlalchemy\sql\type_api.py", line 1230, in process
    return impl_processor(process_param(value, dialect))
           |              |             |      -> <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x0000026E9AFE80D0>
           |              |             -> datetime.datetime(2020, 9, 20, 12, 6, 10, 87015)
           |              -> <bound method TZDateTime.process_bind_param of TZDateTime()>
           -> <function DATETIME.bind_processor.<locals>.process at 0x0000026E9F69B700>

  File "c:\users\blabla\.local\pipx\venvs\instawow\lib\site-packages\instawow\models.py", line 75, in process_bind_param
    raise TypeError('tzinfo is required')

sqlalchemy.exc.StatementError: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely)
(builtins.TypeError) tzinfo is required
[SQL: UPDATE pkg SET slug=?, name=?, description=?, url=?, download_url=?, date_published=?, version=? WHERE pkg.source = ? AND pkg.id = ?]
[parameters: [{'description': 'A WeakAuras Companion clone.', 'version': '4d32366', 'download_url': 'file:///C:/Users/Blabla/AppData/Roaming/instawow/profiles/__def ... (137 characters truncated) ... (2020, 9, 20, 12, 6, 10, 87015), 'name': 'WeakAuras Companion', 'url': 'https://github.com/layday/instawow', 'pkg_source': 'instawow', 'pkg_id': '1'}]]
layday commented 4 years ago

Thank you for the report. If you'd like, you can install 1.14.2 where this bug is not present until the next version is out.

layday commented 4 years ago

Released 1.14.4 on PyPI. Thanks again.

hauk92 commented 4 years ago

Thanks for the fast fix!