Lovely. I think we should strongly consider wrapping up all the arguments to init into a single object for terseness. It would just be internal. The public interface (make_airflow_dag_for_operator) would still have all the args exploded.
let's make this a function too. "check_storage_specified" or something? The existing code isn't the best actually (we really shouldn't be doing checks against the environment dict like this anyways). At a minimum let's get this into a function so when we do improve it
Another approach would be for the init method to take a single object that wraps up all of those parameters. Then within the init of *that* object we could do all these checks. Would also reduce the number of lines of code in all of our operator implementations.
fantastic. plz consider that final comment about the listing out props versus the tricksy metaprogramming.
also: cc: @nate who was interested in this
a little cute. i just prefer writing out all the property names here for greppability/understandability etc. even thought it is slightly more code