# TODOs ## Testing - Doctests. A little more involved with Myst I think. ## Docs - explain the forced guarantees of foreign_keys = ON and autocommit=True somewhere. Also really make sure we want that! **SOON** - How can we make sphinx decide where items actually get doc'd? Especially to silence the complaints when building the docs. - Why are links to anchors not working, despite doing it like myst says to? ## Functionality - User functions **NEXT AFTER** - default functions: one for each python builtin (like str.startswith, etc.) - Should there be a way to run your converter on all rows at once, and collect the errors in parallel? ### Transactions - Do Savepoint objects properly handle when they're invalidated due to a rollback? Has to be checked on the inner functions too? Or is that mainly handled from exit... - Should TransactionControlException _not_ subclass coolqlite error? it should basically never be exposed so idk. we could make a BaseException subclass. - It's called this for now to clarify it should _only_ be used as a context manager. if we ever have a version that allows manual control, it should perhaps be a separate class or whatnot. - Do we still allow using the connection as a context manager, and it just keeps an internal savepoint? I _would_ say let that be closing() but we want to not confuse people used to the stdlib. - **UOH**: generators might non-obviously hold open a savepoint... How do we catch that? If one exits while another is held? Good god this is what rust is for... ## Other - Sqlite `NOW` doesn't use a Z. Maybe we really should have DDL support, To have you fall into the pit of success? - We could support dynamically-sized `IN (list)` easily enough. - Since temporal types accept format strings... I hope people won't expect that to work. Maybe we should document that somewhere. (Maybe _that's_ what we use `!s` for? Later if so.) ## done-ish but revisit maybe