My reaction to the first comment would be that for more flexibility you could write a Python script to generate the .ato netlist.
But that flexibility means that you lose a lot of common constraints that are actually desirable.
For example the INA228 from TI has a funky addressing scheme that is not possible to describe in ato, so we create a hybrid module:
atopile for the main structure: https://github.com/atopile/packages/blob/multi/adafruit_heis...
compose in an 'addressor' python module: https://github.com/atopile/packages/blob/multi/adafruit_heis...