Ok, so I've just spent an hour trying to recreate the old problems I have (without the PARSE_DECLTYPES), and I am unable to.
I know for sure that I was occasionally getting strings back when I expected a datetime() object, because I had a test in the code that would report that, and it stopped reporting after I started using the PARSE_DECLTYPES when you added the driver_args={} parameter in February. So either there was some other bug that was fixed in the meantime, or it had something to do with the data that was already in my sqlite, or I'm not remembering what triggered the problem. I spent an hour or so reviewing dal.py (including historical versions), and can't see a way for strings returned from the database to escape to the caller and not be converted by parse(). And as I can't produce a test case that shows this is needed, I apologize for the trouble; as it does change the semantics (e.g., it supports microseconds if already stored in the database, unlike before the change), it is probably wise to back this out until I manage to recreate the problem.