Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error when connecting to Dataverse with nested metadata blocks: KeyError: 'none' #37

Open
vera opened this issue Jan 16, 2025 · 1 comment

Comments

@vera
Copy link

vera commented Jan 16, 2025

It seems that easyDataverse currently has no support for nested metadata blocks with nesting level > 2 (i.e. a compound field nested within another compound field). An error occurs when trying to connect to a Dataverse with such a block enabled.

Error log:

⠴ Connecting to http://localhost:8080/...
Traceback (most recent call last):
  File "/home/clemens/Documents/csh-ui/backend/scripts/update_search_index.py", line 62, in <module>
    main()
  File "/home/clemens/Documents/csh-ui/backend/scripts/update_search_index.py", line 15, in main
    dataverse_api = Dataverse(server_url=DATAVERSE_URL, api_token=DATAVERSE_API_TOKEN)
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/dataverse.py", line 67, in __init__
    self._connect()
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/dataverse.py", line 128, in _connect
    asyncio.run(asyncio.gather(*tasks))  # type: ignore
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/nest_asyncio.py", line 30, in run
    return loop.run_until_complete(task)
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/nest_asyncio.py", line 98, in run_until_complete
    return f.result()
  File "/usr/lib/python3.10/asyncio/tasks.py", line 232, in __step
    result = coro.send(None)
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/dataverse.py", line 161, in _process_metadatablock
    block_cls = create_dataverse_class(
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/classgen.py", line 67, in create_dataverse_class
    {
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/classgen.py", line 68, in <dictcomp>
    process_name(compound["name"], common_part): create_compound(
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/classgen.py", line 110, in create_compound
    sub_cls = create_dataverse_class(
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/classgen.py", line 56, in create_dataverse_class
    attributes = {
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/classgen.py", line 58, in <dictcomp>
    get_field_type(field),
  File "/home/clemens/Documents/csh-ui/backend/.venv/lib/python3.10/site-packages/easyDataverse/classgen.py", line 153, in get_field_type
    dtype = TYPE_MAPPING[field["type"].lower()]
KeyError: 'none'

I'd be interested in how difficult you think it would be to add support for that, and whether it's planned?

@pdurbin
Copy link
Member

pdurbin commented Jan 16, 2025

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants