As much as the integration looked fancy and appealing at the start it is becoming really hard to catch all the possible cases. There are some inherent issues with the idea. For example, to be able to automate the process you need to have pollination-dsl installed to import related classes to pass them to setup.py - that means if someone wants to use pip install for the first time and doesn't have pollination-dsl installed then it will fail.
I tried to address this issue by catching the case on the first install which works for a plugin - but will fail for a recipe with dependencies since there is a chance based on how one installs the package either the first dependency or the package itself will not be installed. Even if I can address this issue one has to use pip in a very specific manner for this packaging to work which misses the whole point.
To address this issue I'm thinking to separate them into two steps. pip installs the python package and pollination dsl package for packaging. This will make the process more explicit and it will still use all the information from setup.py and we can use python package versioning, etc. The only drawback is that now one needs to run an extra command to package the library. I think as long as the library handles packaging the dependencies under the hood this might even be a better more explicit approach depending on how you look at it.
As much as the integration looked fancy and appealing at the start it is becoming really hard to catch all the possible cases. There are some inherent issues with the idea. For example, to be able to automate the process you need to have
pollination-dsl
installed to import related classes to pass them to setup.py - that means if someone wants to use pip install for the first time and doesn't have pollination-dsl installed then it will fail.I tried to address this issue by catching the case on the first install which works for a plugin - but will fail for a recipe with dependencies since there is a chance based on how one installs the package either the first dependency or the package itself will not be installed. Even if I can address this issue one has to use pip in a very specific manner for this packaging to work which misses the whole point.
To address this issue I'm thinking to separate them into two steps.
pip
installs the python package andpollination dsl package
for packaging. This will make the process more explicit and it will still use all the information from setup.py and we can use python package versioning, etc. The only drawback is that now one needs to run an extra command to package the library. I think as long as the library handles packaging the dependencies under the hood this might even be a better more explicit approach depending on how you look at it.