On Mon, Nov 23, 2020 at 11:56:47AM +1300, Greg Ewing wrote:
On 22/11/20 4:31 pm, Christopher Barker wrote:
unfortunately, that's not how most python packages are set up -- you install the whole thing at once. As an example, it's really tricky to use even one function from scipy without installing the whole thing.
Something needs to change about how Python packages are set up, then. Most other software development systems manage to strip out unused stuff without needing a bunch of flakey heuristics for each individual library.
In a language without declarations, how do you know that something is unused? One can, I guess, look for imports, but the presence of even a single eval or exec opens the flood-gates. And then there could be code that looks at sys.modules directly. Possibly via an alias: # Module spam from sys import modules as bunchofstuff # Module eggs from spam import bunchofstuff re = bunchofstuff['re'] I trust you're not going to say that if you write obfuscated code like that, you deserve whatever pain you get :-) -- Steve