My point was the pyc in the updated plugin should always have a newer timestamp than any py from before the update, which would cause python to use the pyc and ignore the py.
I may be wrong, but with 'hash-based' (python >= 3.7), the hash is checked, and if it doesn't match, a .pyc is generated from the .py file.
I tried after modifying the .py file: touch -t 202401010101 <file.py>, and every time, the .pyc was again generated from .py, when was changed its content.