Usage of * or ** arguments should usually be done with care.
Generally, there is nothing wrong with usage of * or ** arguments.
For readability of the code base, we suggest to not over-use these language
constructs though.
For more information, we can recommend this
blog post from Ned Batchelder
including its comments which also touches this aspect.
Cyclic imports may cause partly loaded modules to be returned. This might lead to unexpected runtime behavior which is hard to debug.