PK!7!papermill_sftp/__init__.pyimport os import urllib import pathlib import tempfile import pysftp sftp_username = os.getenv("SFTP_USERNAME") sftp_password = os.getenv("SFTP_PASSWORD") cnopts = pysftp.CnOpts() cnopts.hostkeys = None class SFTPHandler: """ SFTP IO handling for papermill. """ @classmethod def read(cls, path): """ Read a notebook from an SFTP server. """ parsed_url = urllib.parse.urlparse(path) with tempfile.TemporaryDirectory() as tmpdir: tmp_file = ( pathlib.Path(tmpdir) / pathlib.Path(parsed_url.path).name ) with pysftp.Connection( parsed_url.hostname, username=sftp_username, password=sftp_password, port=(parsed_url.port or 22), cnopts=cnopts, ) as sftp: sftp.get(parsed_url.path, str(tmp_file)) return tmp_file.read_text() @classmethod def write(cls, file_content, path): """ Write a notebook to an SFTP server. """ parsed_url = urllib.parse.urlparse(path) with tempfile.TemporaryDirectory() as tmpdir: tmp_file = pathlib.Path(tmpdir) / "output.ipynb" tmp_file.write_text(file_content) with pysftp.Connection( parsed_url.hostname, username=sftp_username, password=sftp_password, port=(parsed_url.port or 22), cnopts=cnopts, ) as sftp: sftp.put(str(tmp_file), parsed_url.path) @classmethod def pretty_path(cls, path): return path @classmethod def listdir(cls, path): raise NotImplementedError( "SFTPHandler does not support listing content." ) PK!HڽTU$papermill_sftp-0.0.1.dist-info/WHEEL A н#Z;/"d&F[xzw@Zpy3Fv]\fi4WZ^EgM_-]#0(q7PK!Hy'papermill_sftp-0.0.1.dist-info/METADATAOs0)v Ċi( CJdQK2ouȐ^8&=3 mH(1 <1/aA lf9rwP`~.qK~r4>8:jb}7b^!<^GJ^ؑm Iwͨ*8¿z9eA:̜N^.[J֖yC9!:bjvߜx}tW62F<7',73+NU(2xa/' ?TIo@+̱eT( bjSbCDXz5Xږ7BVCrN`ƕIsmp½B/]/-c9#PK!H5%papermill_sftp-0.0.1.dist-info/RECORDKr0нg 1 Jd21C)ENߕ|xl(FfL4bdLWO0<8Dou5}WcENf]mƄpF0j)mOiʧ b}5Ll)i>;u2=?sL>v~Zdex%JCe*:)  J ]$<9PK!7!papermill_sftp/__init__.pyPK!HڽTU$Vpapermill_sftp-0.0.1.dist-info/WHEELPK!Hy'papermill_sftp-0.0.1.dist-info/METADATAPK!H5% papermill_sftp-0.0.1.dist-info/RECORDPKB