polyEvaluate behavior

I’ve made it into a habit to always select stuff before doing polyEvaluate because when I don’t, odd shit starts to happen.

polyEvaluate
If you deselect your selection prior to using polyEvaluate - it will return weird data

import pymel.core as pm
sel = pm.ls(selection=True, flatten=True)
pm.select(deselect=True) # Comment this
uvBox = pm.polyEvaluate(sel, boundingBoxComponent2d=True)
print(uvBox)
# Gives ((0.0, 0.0), (0.0, 0.0)) - but comment away the deselection and you get the real data, like:
# ((0.36, 0.69), (0.30, 0.63))

So you can only do polyEvaluate on a collection of components, if you actually have the mesh or any components selected. This is a real bummer as most of you will already know that doing selections/deselections inside a function that deals with large component data will severely affect it’s execution speed!

polyEditUV
Is totally fine with you passing a collection of components to it without you actually having an active selection. Awesome! Why can’t polyEvaluate behave like this?
The different behavior here makes it annoying when you want to iterate over say a selection of UV shells, perform an evaluation on each shell (polyEvaluate - to get something like the bounding box) and then do a transformation on that shell only (polyEditUV).
It feels like I am missing something here. People have always told me to try and stay away from doing selections inside my functions yet here it seems to be the only way to deal with this problem - or is there some other way of calculating component bounding boxes without actually having to select stuff?