While it's very nice to have uproot (and I have contributed to it!), unfortunately it isn't able to read all of the ROOT files I generate... probably because I'm not aware of its limitations. (See e.g. https://github.com/scikit-hep/uproot5/issues/586 )
Of course solving the general problem of all ROOT I/O (which can involve custom serialization or schema migration code in C++) won't (and doesn't need to, for most people) work.