I’m thinking about a Python user perspective, they may want to run it in a thread safe (with multiple Python threads) and concurrently, solving a problem with a function that it is solving inside another problem (although it may be stupid to do that).
Without global and saved variables I think it should be ok. And of course if there is an error the routines shouldn’t stop but report back an error code.
And, of course, they don’t have to access the operative system.
The previous thread on thread safety seems to be quite exhaustive: Thread safety of modern Fortran libraries: what and how?.