Skip to content

Loading... hangs on launch with packaging.version.InvalidVersion #153

@robbi5

Description

@robbi5

Looks kinda related to #139, but now with the actual (empty) version string.

Using Datasette.app 0.2.2 on macOS 12.6.3 / M1 (2020)

After opening the Datasette.app for the first time, it is installing all the python packages, finishes with Took 6514 ms, but then the spinner keeps spinning and nothing else happens.

Image 29 01 23 at 13 20

Starting the Datasette.app from the Terminal (/Applications/Datasette.app/Contents/MacOS/Datasette), a stacktrace is visible:

(Extracted from the json messages for easier readability)

Traceback (most recent call last):
  File "/Users/robbi5/.datasette-app/venv/bin/datasette", line 8, in <module>
    sys.exit(cli())
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/cli.py", line 143, in wrapped
    return fn(*args, **kwargs)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/cli.py", line 612, in serve
    asyncio.get_event_loop().run_until_complete(ds.invoke_startup())
  File "/Users/robbi5/Downloads/Datasette.app/Contents/Resources/python/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete
    return future.result()
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/app.py", line 412, in invoke_startup
    await await_me_maybe(hook)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/utils/__init__.py", line 111, in await_me_maybe
    value = await value
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette_app_support/__init__.py", line 29, in inner
    for plugin in (await datasette.client.get("/-/plugins.json")).json()
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/app.py", line 1573, in get
    return await client.get(self._fix(path), **kwargs)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1757, in get
    return await self.request(
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1533, in request
    return await self.send(request, auth=auth, follow_redirects=follow_redirects)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1620, in send
    response = await self._send_handling_auth(
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1648, in _send_handling_auth
    response = await self._send_handling_redirects(
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1685, in _send_handling_redirects
    response = await self._send_single_request(request)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1722, in _send_single_request
    response = await transport.handle_async_request(request)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_transports/asgi.py", line 162, in handle_async_request
    await self.app(scope, receive, send)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/utils/asgi.py", line 444, in __call__
    await hook()
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/app.py", line 412, in invoke_startup
    await await_me_maybe(hook)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/utils/__init__.py", line 111, in await_me_maybe
    value = await value
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette_app_support/__init__.py", line 44, in inner
    < version.parse(plugin.get("tag_name", ""))
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/packaging/version.py", line 52, in parse
    return Version(version)
  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/packaging/version.py", line 197, in __init__
    raise InvalidVersion(f"Invalid version: '{version}'")
packaging.version.InvalidVersion: Invalid version: ''
Full terminal output
$ /Applications/Datasette.app/Contents/MacOS/Datasette
2023-01-29 13:22:55.136 Datasette[29736:322852] NSDocumentController Info.plist warning: The values of CFBundleTypeRole entries must be 'Editor', 'Viewer', 'None', or 'Shell'.
feedURL https://update.electronjs.org/simonw/datasette-app/darwin-x64/0.2.2
requestHeaders { 'User-Agent': 'update-electron-app/2.0.1 (darwin: x64)' }
/Users/robbi5/.datasette-app/venv/bin/python3.9 [ '--version' ]
/Applications/Datasette.app/Contents/Resources/python/bin/python3.9 [ '-m', 'venv', '/Users/robbi5/.datasette-app/venv' ]
(node:29736) [DEP0147] DeprecationWarning: In future versions of Node.js, fs.rmdir(path, { recursive: true }) will be removed. Use fs.rm(path, { recursive: true }) instead
(Use `Datasette --trace-deprecation ...` to show where the warning was created)
objc[29747]: Class WebSwapCGLLayer is implemented in both /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks/libANGLE-shared.dylib (0x7ffb5ec3cec8) and /Applications/Datasette.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Libraries/libGLESv2.dylib (0x1128f4ce0). One of the two will be used. Which one is undefined.
checking-for-update
update-not-available
/Users/robbi5/.datasette-app/venv/bin/python3.9 [ '--version' ]
/Users/robbi5/.datasette-app/venv/bin/pip [
  'install',
  'datasette>=0.59',
  'datasette-app-support>=0.11.6',
  'datasette-vega>=0.6.2',
  'datasette-cluster-map>=0.17.1',
  'datasette-pretty-json>=0.2.1',
  'datasette-edit-schema>=0.4',
  'datasette-configure-fts>=1.1',
  'datasette-leaflet>=0.2.2',
  '--disable-pip-version-check'
]
{
  message: 'Traceback (most recent call last):',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.690Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/bin/datasette", line 8, in <module>',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.692Z
}
{
  message: '    sys.exit(cli())',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.695Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1130, in __call__',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.695Z
}
{
  message: '    return self.main(*args, **kwargs)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.701Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1055, in main',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.703Z
}
{
  message: '    rv = self.invoke(ctx)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.705Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1657, in invoke',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.707Z
}
{
  message: '    return _process_result(sub_ctx.command.invoke(sub_ctx))',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.709Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 1404, in invoke',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.711Z
}
{
  message: '    return ctx.invoke(self.callback, **ctx.params)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.712Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/click/core.py", line 760, in invoke',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.714Z
}
{
  message: '    return __callback(*args, **kwargs)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.714Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/cli.py", line 143, in wrapped',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.714Z
}
{
  message: '    return fn(*args, **kwargs)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.715Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/cli.py", line 612, in serve',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.715Z
}
{
  message: '    asyncio.get_event_loop().run_until_complete(ds.invoke_startup())',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.716Z
}
{
  message: '  File "/Applications/Datasette.app/Contents/Resources/python/lib/python3.9/asyncio/base_events.py", line 642, in run_until_complete',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '    return future.result()',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/app.py", line 412, in invoke_startup',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '    await await_me_maybe(hook)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/utils/__init__.py", line 111, in await_me_maybe',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '    value = await value',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette_app_support/__init__.py", line 29, in inner',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '    for plugin in (await datasette.client.get("/-/plugins.json")).json()',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.719Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/app.py", line 1573, in get',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.720Z
}
{
  message: '    return await client.get(self._fix(path), **kwargs)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.721Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1757, in get',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.722Z
}
{
  message: '    return await self.request(',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1533, in request',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    return await self.send(request, auth=auth, follow_redirects=follow_redirects)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1620, in send',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    response = await self._send_handling_auth(',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1648, in _send_handling_auth',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    response = await self._send_handling_redirects(',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1685, in _send_handling_redirects',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    response = await self._send_single_request(request)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_client.py", line 1722, in _send_single_request',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    response = await transport.handle_async_request(request)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/httpx/_transports/asgi.py", line 162, in handle_async_request',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    await self.app(scope, receive, send)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/utils/asgi.py", line 444, in __call__',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    await hook()',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/app.py", line 412, in invoke_startup',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    await await_me_maybe(hook)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette/utils/__init__.py", line 111, in await_me_maybe',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    value = await value',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/datasette_app_support/__init__.py", line 44, in inner',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    < version.parse(plugin.get("tag_name", ""))',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/packaging/version.py", line 52, in parse',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '    return Version(version)',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: '  File "/Users/robbi5/.datasette-app/venv/lib/python3.9/site-packages/packaging/version.py", line 197, in __init__',
  type: 'stderr',
  ts: 2023-01-29T12:23:05.723Z
}
{
  message: `    raise InvalidVersion(f"Invalid version: '{version}'")`,
  type: 'stderr',
  ts: 2023-01-29T12:23:05.724Z
}
{
  message: "packaging.version.InvalidVersion: Invalid version: ''",
  type: 'stderr',
  ts: 2023-01-29T12:23:05.724Z
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions