Closed
Description
Describe the bug
In Python versions less than 3.10, the default python typing package does not have the name attribute for formats like List and Tuple. As a result, an issue occurs in diffusers versions (>=0.32.2).
One way to solve this issue like #10762
Reproduction
from diffusers import ControlNetModel, StableDiffusionControlNetPipeline
controlnet = ControlNetModel.from_pretrained("hf-internal-testing/tiny-controlnet")
pipe = StableDiffusionControlNetPipeline.from_pretrained("hf-internal-testing/tiny-stable-diffusion-torch", controlnet=controlnet)
pipe.save_pretrained("sd_controlnet")
pipe = StableDiffusionControlNetPipeline.from_pretrained("sd_controlnet", controlnet=controlnet)
Logs
.venv/lib/python3.9/site-packages/huggingface_hub/utils/_validators.py:114: in _inner_fn
return fn(*args, **kwargs)
.venv/lib/python3.9/site-packages/diffusers/pipelines/pipeline_utils.py:850: in from_pretrained
_expected_class_types.append(expected_type.__name__)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = typing.List[diffusers.models.controlnets.controlnet.ControlNetModel]
attr = '__name__'
def __getattr__(self, attr):
# We are careful for copy and pickle.
# Also for simplicity we don't relay any dunder names
if '__origin__' in self.__dict__ and not _is_dunder(attr):
return getattr(self.__origin__, attr)
> raise AttributeError(attr)
E AttributeError: __name__
System Info
diffusers (0.32.2)
python (<3.10)