-
Notifications
You must be signed in to change notification settings - Fork 62
Closed
Milestone
Description
It turned out that the features of the Composite
structure introduced in #668 -- namely, the flat name space across all arrays and table columns in a container -- create more complexity then bring benefits. The same functionality can be implemented via specs on the container objects and enforced by the Python client.
New proposed solution:
- A container, which a user wants to present with a flat namespace if tagged with a
Composite
spec. - Python client knows that it needs to list names of all table columns in addition to the arrays as the container contents, and requests like
c[container_name/column_name]
should work (even though, internally, the client would be using thecontainer_name/table_name?column=column_name
endpoint). Moreover,c[container_name/table_name]
should also work as in a usual container. - Nesting is not allowed; e.g. a "Composite" container can only have tables and arrays as its children, not other containers.
- Attempts to add an array or a table with conflicting (column) names results in client error (without even making any server requests).
- Attempts to tag a container with already conflicting contents' names as a "Composite" also results in a error (on the client?).
- If a client encounters a container tagged as "Composite" that has conflicting names in its namespace (or nested containers), it displays and treats it as a usual container ignoring the spec, possibly issuing a warning to the user (and an error if the user attempts to access table columns directly).
danielballan
Metadata
Metadata
Assignees
Labels
No labels