I discovered a problem with a custom component, but this is NOT necessarily custom-component related – it can apply to any component and would aid in debugging of core releases.
First the problem – component (hacs winix) depends upon pypi winix library, which depends upon warrant and warrent-light, which depend upon python-jose, which had pinned an older version of pyasn1 and pyasn1_modules libraries. This caused pyasn1 to uninstall pyasn1 current and install an older version, which caused conflicts with other components (google calendar).
The proposed solution – any time a library is uninstalled or replaced to fix a version conflict, log a warning message to home assistant logs. Include in it which component was being installed that caused the conflict. Optionally include in the error message the dependency chain.
I am surprised that the installation of a custom component would downgrade a library. When doing beta testing for HA I sometimes see custom components failing to load because they rely on old libraries. When uninstalling those, those custom components usually fail to install for the same reasons. This is always logged. So I have never had what you describe.
Could it be both custom components rely on a library that is not part of core, without explicitly stating what version they require? That would be a problem in the custom component, and I do dot see how HA could detect and log this. That is up to the custom components to do right.
The other component in conflict, google, relies on the deprecated oauth2client library (issue # 142486), which pulls in pyasn1 (‘pyasn1>=0.1.7’, ‘pyasn1-modules>=0.0.5’,) as well.
Turns out also breaks airvisual component (issue 139405).
I inadvertently ended up filing a bunch of related issues because of this root problem:
142486 google component uses deprecated oauth2client library
142375 detected blocking call it import_module with args (homeassistant.components.google)
140470 regression upgrading to 2025.3.2 from 2025.3.1 failed to import pyasn1
139405 2025.3.0b0 crash in pyasn1