Skip to content

Remove Composite Structure #1081

@genematx

Description

@genematx

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:

  1. A container, which a user wants to present with a flat namespace if tagged with a Composite spec.
  2. 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 the container_name/table_name?column=column_name endpoint). Moreover, c[container_name/table_name] should also work as in a usual container.
  3. Nesting is not allowed; e.g. a "Composite" container can only have tables and arrays as its children, not other containers.
  4. Attempts to add an array or a table with conflicting (column) names results in client error (without even making any server requests).
  5. Attempts to tag a container with already conflicting contents' names as a "Composite" also results in a error (on the client?).
  6. 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).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions