[aur-general] Keras circular dependency resolution
Keras recently moved two of its submodules to separate modules---keras-applications, and keras-preprocessing [1]. These also import keras and will not work without it, nor will keras work without those submodules. Currently the submodule packages depend on keras, but making keras depend on the submodules creates unresolvable circular dependencies. Currently the submodules are listed as optional dependencies of keras with the note that keras will not work without them. This seems like a problem to me. Someone wanting to install keras will be able to do so without installing the submodules but won't be able to use it without them. The only warning will be the optional dependencies which seems insufficient to me. Since both actually depend on the other(s) to work, the only solution I can see is to include them all in the python-keras package. Is there any other way to resolve this? Is it not as big of a deal as I think it is? How would such a change even get implemented? Thanks. [1]: https://github.com/keras-team/keras/pull/10339
On 07/30/2018 11:36 PM, Robby Stokoe via aur-general wrote:
Keras recently moved two of its submodules to separate modules---keras-applications, and keras-preprocessing [1]. These also import keras and will not work without it, nor will keras work without those submodules. Currently the submodule packages depend on keras, but making keras depend on the submodules creates unresolvable circular dependencies. Currently the submodules are listed as optional dependencies of keras with the note that keras will not work without them.
This seems like a problem to me. Someone wanting to install keras will be able to do so without installing the submodules but won't be able to use it without them. The only warning will be the optional dependencies which seems insufficient to me. Since both actually depend on the other(s) to work, the only solution I can see is to include them all in the python-keras package. Is there any other way to resolve this? Is it not as big of a deal as I think it is? How would such a change even get implemented? Thanks.
Circular dependencies are a *bootstrapping* problem, which, if this were in a binary repository, might be less of a problem. The trick is that to build one, you need the other installed, which means you need the first one installed too (even though it's not built yet). So, consider the following solution: add the dependency to package(){ depends=(foo) ... } This will result in it *not* being a build-time dependency. In order to install one, you might have to pacman -U all of them in the same transaction, but that is a different matter. Aside: the link you gave references another discussion, which seems to confusingly claim both that they import from each other, and that "Keras doesn't depend on them at all, and they're just consumers of a stable subset of the Keras API". So I've got no clue what is happening here. :/ -- Eli Schwartz Bug Wrangler and Trusted User
participants (2)
-
Eli Schwartz
-
Robby Stokoe