diffusers icon indicating copy to clipboard operation
diffusers copied to clipboard

DummyObjects are impeding PyCharm

Open keturn opened this issue 2 years ago • 2 comments

I'm subclassing StableDiffusionPipeline (because it seems like that's the intended way to make a DiffusionPipeline that is still able to take advantage of StableDiffusionPipeline's methods to enable attention slicing, decode latents, etc.), and I've noticed a distinct lack of help from the IDE when it comes to attributes and arguments that I know this class has.

I think that's because when I hit "go to definition" of the StableDiffusionPipeline I'm using as a superclass, it brings me to this https://github.com/huggingface/diffusers/blob/0b7225e91852df668ce85a7f7a670c00272c9ed0/src/diffusers/utils/dummy_torch_and_transformers_objects.py#L127-L139

no defined arguments to the class __init__, no indication that it's an ancestor of DiffusionPipeline, no __call__ method, none of the documentation or type hits that you've so diligently included in your code.

Should I be importing directly from the full path diffusers.pipelines.stable_diffusion.pipeline_stable_diffusion.StableDiffusionPipeline instead of diffusers.StableDiffusionPipeline?

If so, please remove the diffusers.StableDiffusionPipeline stunt double so that I'm not presented with two options when autocompleting and left to probably pick the wrong one.

keturn avatar Nov 30 '22 02:11 keturn

If so, please remove the diffusers.StableDiffusionPipeline stunt double so that I'm not presented with two options when autocompleting and left to probably pick the wrong one.

It's actually worse than that, it seems PyCharm assumes the one higher-up in the namespace is the right one, why wouldn't it be? so it doesn't even give me the option of picking the right one. It's always the wrong one and I have to manually correct it.

keturn avatar Nov 30 '22 03:11 keturn

+1, this negatively affects my performance as well :( The workaround I'm currently using is to provide an explicit type hint upon an instantiation of a pipeline: image

vvsotnikov avatar Nov 30 '22 05:11 vvsotnikov

So, it's not just me then? :P

d8ahazard avatar Dec 01 '22 16:12 d8ahazard

Thanks for the issue! We should indeed look into this :-)

I'm not using PyCharm, but @anton-l @patil-suraj I think you've noticed similar problems?

Also cc @sgugger if I remember correctly we had a similar issue in transformers a while back - do you remember how we fixed it? :-)

patrickvonplaten avatar Dec 02 '22 16:12 patrickvonplaten

Found the transformers solution, didn't know it was already addressed there: https://github.com/huggingface/transformers/pull/16578 Assigning to myself as the only pycharm user on the team :sweat_smile:

anton-l avatar Dec 02 '22 16:12 anton-l

Assigning to myself as the only pycharm user on the team 😅

The same thing happens to me in VSCode :) Happy to learn that there's a solution!

pcuenca avatar Dec 02 '22 16:12 pcuenca

Yes, the PR mentioned above fixes all editors normally, and will make them point to the dummy objects when the framework is not installed, and the real ones when it is :-)

sgugger avatar Dec 05 '22 14:12 sgugger

Should be fixed now, and scheduled for this week's release!

anton-l avatar Dec 08 '22 13:12 anton-l