Suppose that I am developing a module A that should fulfill functions f1, f2, ..., fn.
It has methods A.do_f1(), A.do_f2(), ..., A.do_fn(), written in pure Python or using non-GPL modules that can be used in a proprietary software.
Suppose now that module B, under GPL, can fulfill functions fi and fj.
There are two cases:
Case 1 : A has no method for fulfilling fi and fj, and I write methods A.do_fi_using_B() and A.do_fj_using_B() which, if module B is installed, import B and call B.do_fi() and B.do_fj(), or return an error if B is not installed.
Case 2 : A has alternative methods A.do_fi() and A.do_fj(), and I write the same methods A.do_fi_using_B() and A.do_fj_using_B() as above in order to let the user choose between alternative implementations.
I don't want to use a GPL for module A. Are the two above cases equivalent in this respect?
I can't understand how to apply the GPL FAQ (#NFUseGPLPlugins) when it comes to optional Python modules. It says: "If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins.".
If I strictly apply what I read, if any GPL module can be imported and used by A, it is in the same Python kernel instance and shares data structures with A through its methods, so you just have to license A under a GPL-compatible licence?
Main question: Can I license module A under a non-free licence if it provides in its API optional functions that will embed the use of GPL module B?