Open jeromelecoq opened 1 month ago
Both of these classes should be seen as abstract classes (we can even inherit from the ABC module, but this would preclude users from using #30, which might not be a bad idea...).
Subclassing and building your own models is what affords validation (the argument is the same if you want to use aind-data-schemas, one could also just use a very large dictionary). If you don't subclass you can't impose a structure, if you cant impose a struct everything will be validated, best case scenario, to a dictionary. How do you propose and API validating Metrics that users send to an endpoint if we don't require a known structure? How to you ensure inter-operability across users and tools? We just run a check for known dictionary keys?
I understand, and agree, with the need for things to be "easy" and "user-friendly", but I feel this argument must be weighted against rigor and scalability. That being said, if there is a way to strike a better balance we should go for it, but I would like to see alternatives before removing this pattern.
It looks like this approach expect any user to understand all of those concepts and layers. I think I have already some experience with declaring behavior tasks with another package and I am confused. So any person that is new to tracking behavior will have to learn this new logic. As you said we have to balance rigor with usage. I am providing feedback on usage from a fresh angle. I am willing to put the effort to get to your level. But already I can say this is not easy.
I am going through the repo with an eye for simplicity. why do we need this empty class?
See here : https://github.com/AllenNeuralDynamics/aind-behavior-curriculum/blob/bb28161608b4544e5f71e23c2190a6682f17dcaf/src/aind_behavior_curriculum/task.py#L19C22-L19C44