Interface for storage/publishing formats
- Refactor S3 into interface
- Add Git
As for S3 as an interface, I'd love to see that set up similarly to how papermill or dask abstracts object store level storage.
For git, are you thinking a commit blob per save?
I believe that was the intention for git support.
I agree that having an abstract object store would help support this. Do you think we should be consolidating the abstract stores for notebooks into a central repository? Scrapbook and papermill both need the same interface capabilities.
The only core difference I see is that bookstore, as a jupyter server extension, is wholly dependent on asyncio backed futures for remote requests. This is largely a requirement because of the tornado server.
And that would add a python 3 only dependency.
We could release the package with only blocking methods on python2 and async + blocking methods in python3 perhaps?
Or make an async package wrapping the blocking package for use in async python 3 clients
Amusingly we wrapped the blocking package previously with a thread pool executor, only to recently tear it out in favor of aiobotocore. It's pretty lean and I'm pleased with the conciseness of the code.
There's a part of me that wonders if papermill, like jupyter notebook, could adopt Python3 as the release target (since it runs kernels directly). scrapbook however would need to remain Py2 and Py3 compatible.
For papermill python 2 downloads is declining (26398 vs 105360 over past 6 months), but are still present.
https://docs.google.com/spreadsheets/d/1tkNxlxY-qlZATGpqC1IxDE30mwDW8Uedfov3KcH3iJk/edit?usp=sharing
I do not think we should make this package python2 compatible. It's not worth the opportunity cost (clear, async/await native asynchronous calls) along with the additional support and testing burden when Python2 is being deprecated this year.
There's a part of me that wonders if papermill, like jupyter notebook, could adopt Python3 as the release target (since it runs kernels directly). scrapbook however would need to remain Py2 and Py3 compatible.
I agree with this assessment.
I marked python 2 as supported through the end of 2019 for papermill and scrapbook in the latest release's README for each project respectively. Sometime at the end of the year I was planning on ripping out python 2 support entirely.