Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Python schema doesn't accept optional attributes of types List and Set #407

Open
Labels
area: python clientrelevant to python client bugSomething isn't working triageissue to be triage
@micgor32

Description

Describe the bug
The Python schema.py does not allow attributes to be the type of List or Set, when they are meant to be optional.

To Reproduce
When I try to commit the following code using tdbpy commit:

class Organization(DocumentTemplate):
 name: Optional[str]
 id: Optional[str]
 identifier: Optional[Identifier]
 additionalIdentifiers: Optional[Identifier]
 address: Optional[Address]
 contactPoint: Optional[ContactPoint]
 roles: Optional[List[str]]

I get the following error message:

Error logs

Traceback (most recent call last):
 File "/home/micgor32/.local/bin/tdbpy", line 8, in <module>
 sys.exit(tdbpy())
 ^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
 return self.main(*args, **kwargs)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/click/core.py", line 1055, in main
 rv = self.invoke(ctx)
 ^^^^^^^^^^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
 return _process_result(sub_ctx.command.invoke(sub_ctx))
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/click/core.py", line 1404, in invoke
 return ctx.invoke(self.callback, **ctx.params)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/click/core.py", line 760, in invoke
 return __callback(*args, **kwargs)
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/terminusdb_client/scripts/scripts.py", line 361, in commit
 schema_obj.commit(client, commit_msg=message, full_replace=True)
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/terminusdb_client/schema/schema.py", line 676, in commit
 client.insert_document(
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/terminusdb_client/client/Client.py", line 1248, in insert_document
 result = json.loads(_finish_response(result))
 ^^^^^^^^^^^^^^^^^^^^^^^^
 File "/home/micgor32/.local/pipx/venvs/terminusdb-client/lib/python3.11/site-packages/terminusdb_client/woql_utils.py", line 52, in _finish_response
 raise DatabaseError(request_response)
terminusdb_client.errors.DatabaseError: Type error for json{'@class':"xsd:string",'@type':"List"} which should be text
{
 "api:message": "Type error for json{'@class':\"xsd:string\",'@type':\"List\"} which should be text",
 "api:status": "api:failure",
 "system:witnesses": [
 {
 "@type": "vio:ViolationWithDatatypeObject",
 "vio:literal": "json{'@class':\"xsd:string\",'@type':\"List\"}",
 "vio:message": "Type error for json{'@class':\"xsd:string\",'@type':\"List\"} which should be text",
 "vio:type": "text"
 }
 ]
}

Same happens when roles: Optional[List[str]] is changed to roles: Optional[Set[str]].

Expected behavior
I would expect the changes to be accepted and added to the schema.

System information (please complete the following information):

  • OS: Docker
  • terminus-client-python 10.2.3

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: python clientrelevant to python client bugSomething isn't working triageissue to be triage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /