Skip to content

User interface needs some updates

Context

Aidge user interface suffers from 3 type of issues that may be very armfull to the overall experience.

1. Inconsistencies

Inconsistencies make it hard to really know what exists and how to use it.

// cpp
dataType()
// python
dtype()
// two functions that return true with different naming conventions
empty();
isContiguous();
// some functions use get for getters, some don't

There should be a clear naming convention

2. Some variables are tricky to access

  • Outputs of a Graphview
  • If a name for a node was already used #296
  • many functions not binded
  • operator inputs/outputs from their names (myconv.i.weight) #293

3. flow of the interface

  • Aidge uses a functional interfaces that might feel odd #295
  • in-place operations are badly handled or non-existent #294

Suggested solution

Here is a table that summarises the syntax I propose to solve all these issues:

Category C++ Method Form Purpose / Behavior Python Binding Equivalent Notes
Getter X() Returns internal attribute (e.g. dtype, backend) tensor.x (property, readonly if setX does not exist) Always a const method; no side effects
Setter setX(...) Manually set internal attribute tensor.x = value (property) Used only when user explicitly sets internals
Functional op toX(...) Returns new tensor with updated X tensor.to_x(...) Non-mutating, allocates new storage
In-place op toX_(...) Modifies tensor in-place with new X tensor.to_x_(...) No allocation; modifies internal state
Boolean query isX() Returns true/false for internal state (e.g. isContiguous()) tensor.is_x (property) Predicate naming: always starts with is, returns bool
Edited by Maxence Naud