Skip to content

dict of a Document instance leads to TypeError #231

Description

@larsborn

I expected that the following code will print all key/value pairs from the document with key existing_document_key:

doc = connection['your_database']['your_collection']['existing_document_key']
for key, value in dict(doc).items():
    print(f'{key}: {value}')

But it causes a TypeError: 'NoneType' object is not callable exception in the for key, value in dict(doc).items(): line. After some digging, it looks as if the __dict__ implementation of the pyArango.document.Document class is not correct:

def __dict__(self):
    if not self._store:
        return {}
    return dict(self._store)

But DocumentStore does not implement any sensible __dict__ method. Might it be that the __dict__ method of Document` should rather be:

def __dict__(self):
    if not self._store:
        return {}
    return self._store.getStore()

P.S.: After writing up this issue, I was also able to rewrite my initial code to

doc = connection['your_database']['your_collection']['existing_document_key']
for key, value in doc.getStore().items():
    print(f'{key}: {value}')

I would be happy create an MR for the behavior change of __dict__ in Document or, alternatively, to add a paragraph to the README.md or documentation. If there is an even better solution, I'd also be happy to contribute. Just let me know what you prefer!

Environment:

  • Python Version: 3.9
  • Operating System: Windows
  • pyArango Version: 2.,0.1

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions