From b7d6aff0760d952dbd583f78c8fdc49aa414581d Mon Sep 17 00:00:00 2001 From: Github Action Date: Thu, 2 May 2024 11:03:37 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20exasol/b?= =?UTF-8?q?ucketfs-python@989e88611039f68e377edfa4e0187463348d46ac=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .doctrees/changes/unreleased.doctree | Bin 9360 -> 9545 bytes .doctrees/environment.pickle | Bin 2212679 -> 2216727 bytes _modules/exasol/bucketfs/_buckets.html | 100 +++++++++++++++++++++---- _sources/changes/unreleased.md.txt | 1 + changes/unreleased.html | 3 +- searchindex.js | 2 +- 6 files changed, 90 insertions(+), 16 deletions(-) diff --git a/.doctrees/changes/unreleased.doctree b/.doctrees/changes/unreleased.doctree index 0298d7eac3ce66d712e516f2686a386e39f53b34..86208621d882fad4910aaf76e239f0b4407a2fc6 100644 GIT binary patch delta 1055 zcmbu7-%C?r7{~XXZMm&YkG3D~EbDl5rM8s|1tVOjRFwTd?4qEE<<2}ix}7o4F$BZB z2wE%>pLr985p=CJjPAM!BqN9*=q6}nP!RMF^uylwocGKwyzA!SJ>T#1{XFlFGk0qJ zwEd=iAs&8WUvb(mMv=t=E3QuX>U`1b>PsfYB%jXY#>I@7RTFAj$?{5yS0$0}*G9%f z^-Ow9;(_Fz#uH_x=y+AXHq9uwEm;2hTIq4@#-`y;!$~B-1-1izHH6V~ z!u61`VG3S_%e!*ujWN${Tc=Fu^s{IU`uweM)tiHzJ{CTCBj`Ksi@~9QgV{iEBoLy8 z2WEVG(QnhVZ4gSu(~3_3KLQS0g;L42?5BeX{5Hce@Xi~AFa97SF!0dV3CDsC#6eGB zx9KT?Ak$U#Y#dW%yW1!$Ks0*ore=Kf&Xwj34~g^rmA*p}~;GKCK#Pm=PKlx0#Dh%t|gR&-_) z8Bv|e;Vt0NGRYP6OhNB2=)DC^Y9=lLN^YGdMGX}B=XI34idS0ElTs8lTRz@0i2eem Cfj40Q delta 822 zcmZuvO=uHA6z*)2cDLsLXS3OjTX&P%lBC5D8j4CUg4pyddhw@+>agl2)&#L2+C!kR zDT*%vZ&E!7N+A+GNh<{}9;$dN^dgD~UZe+q59-Y9u6pR@G4H+aXXed&S-Lgpx$bG# z(~mtJfopz-?f!l6NqFA<*dK6#>EA^AVLCM8o5SkV0N#yrSTTw)9~gHRQBM!7_KgZo zxd3m%Su_B9f_HjPlBRJA)`IuYWx~&UHJe+dtk=8tCK9H z7?v0z)^HY2{D-c>vJ!=3kpj}d7s|lX$RO%4yR@yhV%ZJBTmLR7MGv4Ce=P@X$U3uh zvNiZAra_8TxGe+$DFOFm8Yp5ADj}5(VXsZwg5R;E11gFd`ofgyoc=+Ul?dFFB*Cd{ zGA}2iUJED;ekloe<8imlk=abRGR$Yl_6fswJjp->cW!3@lC!WX@?3y}^=L+LnATJH z#4MU57BaLGd6-KCq2yAbEO|+l5QSme=P-1n0#b@y-Z;gax%}IW6E$^<_W@j zRB(rXafY};Fo#gO`$3uI(6jDw^}S2ZkF{{$i53={t~@!{Tl1}}EwW5MIC!PU;k>S* zZ?LGV+;{~0ND;M)wx}P0i!6M#7OJ(S<>3P>vDo7qYS)bq4(ck8<$g9+nf{{}it!78F z?3uuGyR*5gBhDgwY|V}d4Zg+}+3PZUt;l>H*==g}*(~ye2D8W3=)u~Yl=J zaFaT|@CMe#^@3!zxF9)v5|#uC#!ENS_Tqb5@j2YGT{e4UOIJs@*=6hM$RNvIkP+L} zF(lY3&$KgzgTwu{@P7Sfm7eW*?db2vom6Ut_J@Jvl*V3d%NeCvXvh2CsZ{rBcSk64 zuXgdGViMYk$rF`jz1qu%6tmDyj`u4y{$7=wRxG{R7b%KWXs3QspwtQN#lu#mrC0ml z0YwqoOP?kvONI9G**_`uLObobqTD95SC1`J8p2b0p8m|BiAs|wJkyb-emZp;*wn&l zx$3TII<;dNgHqSsGYFtfDGI8*QTc)L1TTUelW77bTt7mZO@ z7wOdQqNqWgtlhpPCyJ8PHANY;6x}wcpBJS;lRC0^0W4J=#cfclzEfNY&Fa3J6QUcH zW7wdfpU(XtnMl2a_$USHI!y)-7^wEEuNjFqCi|GNKwebmL zY5@DPY>tD)vGNxjClP-%_(HbLKvdeHv(cct~o_pEpMfj6l6EaJ+0>(jKiH{Z;a*he$8Ds>uHei%sAp6RLtHTg96oI4|14Q#7W>(9q&v1AmW zz&)F{qi3p6&u`y{o~c4T&;JQ}rV90ZWM>Ii9zP&y6L+EK2RfX%R3@vVAFNPII(eVB zJcxZR>7<@hwHF_nO_ga{)x+qOQtI`{Bj^1^EvHRv@1h20aItaI{JeR}j}!h|?|~ z9tBk5o=bmG64Yp~4m>@TYx|#R2KD@J(nxnUj8IFqO`+YyEg)NsIZ~mzj`2>eK7vp0 zIu@_(I=Yw%DxHSRXMe+#E$1TC&!2l!y?p3y+%&S)_0LzR=MRt4K6oB$oj)9>CH}6K z3F@7XWoi!}o6eOlU+<6AQnkcC;M7vH`r|fGn}3z2KDc)Q?mG2q$5Gz=(eQZ=Zcy=^IAR=_MfZgzCr)^Q4kFjS` zzxbpZTC}}aUjVWq3FrONrwX|(H5f>1KFb2CC2HFB3MR#CL%vuUl(v1jj!S_&fKP&A zK{yn1kz9!dDX=>NW^?^uB>00yn+Jdr6o(9gM}p$BQSg&6^#^;Mbjz33bdB{euy`mW z0c!C9e+*c-gsx>S+2a9+083SjLDD}Fx?ySHU?Lm|+wzGMkBi~tvm~fc|MbbIKyxyT z0F>eaTT);qm);oxE4buL1)NA)dOfX2YR`b>oDG)XDt2=Sj!^yVB+{M*6{IzW4^!Yu z7GwZb;{&6!;pU*YVl?1#WAyzTxEvHe90Ry$C?)TXfUyDRI4}ftS1RNMuI9nKp#FIp z=Ynahl!;H=vX7sv)8J#uEf`d@zv#DrjJ!xkhX=nXtXWeLLy=Z5hXlH$BXI*G#J!oegXlL!W zv*z1b%(Sz{+gaP~tm$^vayz?Dwfn5icxkq3zT_oSo&tEZSD z56rY@NuA+CsKi@G&DBActJDKsJI584o85k!75AEBUF6(Pky*WE^%Y8PLRULWM3R5t&PAB&h{MxsI4x zU=DYbq|UpPOn!?x;&?mMVdk>q;Z{eUwzGbHV#l@6LW)}PxfQaz74HBFiFJS{l5Qa# ziE7Lj!^kcN)F8g<06)h`L=QN&Tb-~F`MXZ2$83%ZOqlI);YqEKoaL~S8|RUjK^Wd2 zFNgKW*ScXHEG1zcJaU(kTRgbxmXaTMaG@+E$30L+7T4n{%J$;W){|N|(2MQY zla5swH^Wz8@hl&Vh@`t(M>08?2Px!EAIwLK`Zjcc786j;za5Im-76p$<;Pdx2;4?K zUV#IB8!1`|RhVsAi4%4kd2=N?N4Sb<*oGWQH_9H*v2Bc_=T@{j*#>6J(02o7=vGgT z-i}kyux&Lg!c(qlHI!qvb2UCz6M1bl%)l&T4cPf-;ElKut?yDgF;mz!wV8u10k(3m zU4Z*I*eSsM96Tt%LmWIJz-|tHCcw{A`;DaSJ|W1H+@za=T9UmMHu%}c@E18hO*sRv zaBxO|vmCr8!0Q}b5a10C-V)%i9K1sT`-uN82NwnSM`}Mm?cilW-sdJC32=pjs{&l( z;JN^xbI>mhn_=${03~!9AwYi)1`05UgJ{e~@j62|i4`Vs93(P8PTm2F{Om=<7|!!3 zXJ9-B`2yU)!6X3+IG8NJ6b_06DCVGq0``)ll!Gz>W~T9xst{y0H>niB$iX}c*!z+B z94r!`ii2taYB;DBppJuj3fP+!GY1yT{G7;~ScQp=1G@mN9JmBn&ViQ#_Lj!S!72gT zI9MaVS`O|M;I1@3o7Hucuopb{aFZVj(9S`J02?{z6ksz4T>@<7V7mbKaj;W>`#E@! zjz4erAx<6N$rv><>pOYhk9Od9S0e-{5 z?*ur;!EpgjaPWcvFLH2NfLAy;Bfwb>UZdmB?s>}VoLrzL?5)}x9K0pKUpaV3fOk2# zD8N5BxGcc?9DF3e6%MWn;J?PnbwNJopkI1VM*t;{*AYXtRIGEG}{7L~QlY59V zg@Ymr*c;4Z4oUqzuHkb}qXqD2X!SQ zUfJZb`#e!m%t&5k_Bic&kJ;?eH`;Bo!>f0?WCwob6jXa^mioL_EVVV7y|U#NW~noK zbPKWKzZCf$-f#8Z>a@sqkG{!f7o97oa?mH0ztsorC3WD@+if1NiHWqoe)_1MHb*1% zMjy@8TmC(qVh3d$E$X&s6sS{^MfRGJS%mjKhRnTR_YK3^+i9Q6?lfDzga1B;->Li4 z`Jh;wD;?jlg%Hyy;<{Z*BAu<$tH<=nBQ8H z9NH?~Nam~3T>)jA^d-b(mIa@eyCG}0OGz`bExLv_uk6wNi_<7wpFiHUMyt=!V)EE- zm-}=xaAdob69y*ow;j@}q~%^Ip4`4h8ojLY)>*S=F3{T?P0rlR1+v#|lULA|ahdcy zHjO$&`phw+v6VKj_3Ian!<&m=7|SMHw&Zs{DRtYuQe;m`z^;0oEwZDS4Z8`un@6Na zrA#!4aJbDjtmkx?d=7b)OK!vkYVvr^UZ1CUk=rMap>fLB_Egai`s|HPhZmQ$uK25K zB-h;7==3?fCYvSLU@s8u_D{E%y=K;BVb+KA+BNaEi+MICO7ww7DO;ISb#$bbdA#mA z?98&dUK5Mlq;t!SKDWoVg0DnVqtkB3XLP!A9k_)|WrJCcp2+4MQbH+xE?bk17U>(U zHoL_wJ3^nDTF@|Nr8=AAE4Fl4ho%49Hd!t5%x-CvUvyt@cHx$3Vg14F)@$wijM$Rf z>GYatk7#SbK@aWIzim!b?c>rddwp()Zjfl7=ypmIO(F64FUzSnD(T|oounf{|NaXx zDgUQ2$#&~L`{}oaV)}Oo!}MV-a$9ll*_X?npG9c;(9q~4d;QWpf5=#Vbx-@Iq0G|F z*XtJH4uHP`p+~l^(d^LSFGno&WOKA((3#z4T%c|bjRoq7c116iL>8ToGQU%|Qr0`5P2u4Es*PQA9@%A+C8$zMnZ1?otpU4-Rq~ZBJ8&aQR?_0xw?u3yUx;`6F zaOdhn#Fi8}T=#DSf;sXB_e-&7(P`=V!|eq}-{o|8WIf+zaZkdRnNFV!}LEWXe)ouA_0v;hALd)fC6;2V1aIOJCK-9lKx zVeS*M-xS2jX!^}zT!a>(+nZSFSVGUqubXvUF%9HNkZ{E}q*xI}3gkSg7OMOF3Q<$@1M&!lJKj;QzT&$cwwBq>AsiI(nw!zq&qp8liW% z@3%rAYMWP*M)q}pS5U88Hn;LS99tlH(fs0qw^ST-61GDcKQVN_!6{{z*icF*yUixs zExeHI+bfNoL#K<+R#EVFr?Xk6>Q?g`X77b>EnlbfqSx1;Pml(#-7lrahvymcNpiQ8 z9)6>tkWA^8M*1fk$~NFnB72Vy}bdA2a+6%?ERH_R%HiXOH0tqT45p z2>&00MvC`INoh|R0%#f?G^LU63ECbuJV%yO+vg3xCHL-=lKsaFXVG>@&^F`&|7^I3 zMKL`^p}oIkj07x=4vYz;aKDrh zF$|1Jq-MXA8j%9V38ZbmlooLV7^jdORGJ3Hx#SnrZXOtAa&Etr9?=X&>o!dq*55b? zC1Td31d^voF%fIQcn_Jbp~(g?w$p;lh#!M-BiW##gH2%EO!jD!E&usO1*FxXHgwAg`eFJm!DQWmvR;Q=1Cwv+FO0zZs2c=Z71@Ohq zn!)+ZWDvfYz#ijAMD#~n8GwLBTOXBwG0oohq>#7f;}@!%TBXRqr$?oH=uazo$V2$f KC&K4z(Ek%@JD>3Y delta 8389 zcmbW6d013Ow!l5mq9_Q>BBCsP!38%YiQt9`1{7`DC5nJHLIVxmm!%0!yCGsSMyE~t zL<%hv_rxWMan#&ATj!a$XU06^_RLInHH#Co_)Ic!iA&z8DkvrM=AZC=#X09!r%qMf zI=AZfy>!QN_{*~8u(x}1h`!Y7w3k;8DRz}qSnFymbvCjkIh>@W^dM6kbtxXb%W17G zEO*&UtwV|}PJ4;7#p7$KvA1|aN^F+ua;tNQtGd=&X|*`5r7fP0_UcmWd<@aETVQKs zA;|2M!K8n350a451BQ|GlnCA9iAgQ=K`IRP@x;=nYao_5Q^F&LBlYOpVhdU6C?^M! z2l@_8Owv9`>FV2P_U+JNLi&fEkNdBGccE&R)`p!^)e>oK95zw4KD1u5sm0RTlrU7S zcxY|fq!vE3zA>n?q_w&JQ?>M=^?|QyYn0}eao?!<53N_q)dFd4&Hh%+lh(_g7PaW1 zbvj)wm)5pV#;S9qwf*o7Rh8Bb)uYaq*3ObBwahoNZT34i|5>%j%2(nF$uA>E`LnCD zswKe_LzavR>r~>Xo@=eGBMV1m_z2VumvpYZ#F|*MpruL8BS%Li7+CkLO<-c;kf$=! zGfbI@waz-MW+TB0axT^2=c=i6SW3y2)JW2lI>5h)5A6S~4AX~N=Ub|3DltD=dn21u zd-*o0W#oQpG+0Ql(NDn~QaySB*vZ$Uvq|lkuz(Wv6!vE9;BuWkCnJTti}E#O!_V{}>i9JBU3xruZ+s;=fsq`y;z{F#G-5<{{g*hR%St1oC&ttF z0wJ0#MdR>N*BlI;-26#&Su0gJ~>z)Wb|;DXgAmS{c(mWE#s{^(tyEkFL&v zJ4-`Lf@;<_8v6jb($HJGnymnswa$~5F|lfjhJvh`5~-P|?PV(D4$y{8Kg-ml1(BK| z=Q8ty+?$N7uEj;1-ifZt1V1ey{}`+KcGk~KTruBa9@vH$a`d!mJap0m3YYj`)k@3j ztZJntlIBi_K&_|*5EFfQq*iZT!y4<$`!dJj_Scy8h1#20ovXN|RrhD!t7{{*n>8=8 z`qj1XGf`gGiMcuE9$_MB!J7zM`w!N-)%*BhCh8l`HRtL{FbyRg7asz zgXd+xl~u&ClUHj8R_Xzb5VGlLFYV@kOcF+t)?ce{N)^Vp%c8ZbtH%fi>G>kVzTn+AkDIF5>wNgMrv1INM-6r%M!I|>&Kv~ zHEpP20yZs%=35TDBZiZ{Te8SUw|Z;MTX0w(-O`hdN29g#TPF%*h&DjWc^QYrYQ9+( zqaE3X!(zsk4F+wVa8e(iitl5|);v*;}<; zZx*(Cu=$SKKZ;vn+6r$OkV_|@ZM#te2tAlZYEJ338wYy>Dk5b1f8j`KPCcQ$d1xf3 zZ@gU&7+3ufob;v(A=;*+Gno=bR(N}AamP<` z+WeW0+&}R-DL))dw(POume7YRdnb!{j*8YlzJskjN5iy;zveR~gzS1#(Oy0^mK&mV zlos~ixOS{^?}aF>;dC~T9v2OCrvpGeLkxi1z7O90gM{&tpKQ?7d(E(q*j! zx1K>nyO`CyNi>OlKL(mNg=ka$HkwK7OMB_>i#SU9u&WQNGJRag?YBQkV)Bj8inv*O z>2WUiU(Vyw@VSsHzL>@Bn_nh!nQ}FU%Z>l|9A%hBu6@nzmER_FdGR|Nmy@s83HyJm zxt#HXs9*o%XWV}NpDrIdHv&_`ajSyPi4qw>9^BdsMcSU*=YVYXIB*wLNm`Sb+oHSi zfJTV6?;hS9ObL82Pbh1DUCI^jAb?v!OZJ7)T%$h+gW}z;1590PwBHXJg~#enpb9O} zAGQhYco$gjLw)1H!8UCxz0^;P%R93hL;y2Gyp2In+Nxq`YpYrr0%byFt4%wG!Csi- z-5&-=d`ROj4&3&;)4LInMK<5#)A5$~fSx$Xdm&yD2^m7W))QPz3!`TS!2s`uD3~HD z?ngsCukdWbi

;^+&JLClP;PrABJPTbg;Mgr(qC+xAQ^0 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 code for exasol.bucketfs._buckets

 import requests
 from requests import HTTPError
 from requests.auth import HTTPBasicAuth
+from urllib.parse import quote_plus
+
+from exasol.saas.client.openapi.client import AuthenticatedClient as SaasAuthenticatedClient
+from exasol.saas.client.openapi.models.file import File as SaasFile
+from exasol.saas.client.openapi.api.files.list_files import sync as saas_list_files
+from exasol.saas.client.openapi.api.files.delete_file import sync_detailed as saas_delete_file
+from exasol.saas.client.openapi.api.files.upload_file import sync_detailed as saas_upload_file
+from exasol.saas.client.openapi.api.files.download_file import sync_detailed as saas_download_file
 
 from exasol.bucketfs._error import BucketFsError
 from exasol.bucketfs._logging import LOGGER
@@ -398,7 +406,7 @@ 

Source code for exasol.bucketfs._buckets

     @property
     def files(self) -> Iterable[str]:
         url = _build_url(service_url=self._service, bucket=self.name)
-        LOGGER.info(f"Retrieving bucket listing for {self.name}.")
+        LOGGER.info("Retrieving bucket listing for %s.", self.name)
         response = requests.get(url, auth=self._auth, verify=self._verify)
         try:
             response.raise_for_status()
@@ -422,7 +430,7 @@ 

Source code for exasol.bucketfs._buckets

             data: raw content of the file.
         """
         url = _build_url(service_url=self._service, bucket=self.name, path=path)
-        LOGGER.info(f"Uploading {path} to bucket {self.name}.")
+        LOGGER.info("Uploading %s to bucket %s.", path, self.name)
         response = requests.put(url, data=data, auth=self._auth, verify=self._verify)
         try:
             response.raise_for_status()
@@ -440,8 +448,9 @@ 

Source code for exasol.bucketfs._buckets

             A BucketFsError if the operation couldn't be executed successfully.
         """
         url = _build_url(service_url=self._service, bucket=self.name, path=path)
-        LOGGER.info(f"Deleting {path} from bucket {self.name}.")
+        LOGGER.info("Deleting %s from bucket %s.", path, self.name)
         response = requests.delete(url, auth=self._auth, verify=self._verify)
+
         try:
             response.raise_for_status()
         except HTTPError as ex:
@@ -460,7 +469,8 @@ 

Source code for exasol.bucketfs._buckets

         """
         url = _build_url(service_url=self._service, bucket=self.name, path=path)
         LOGGER.info(
-            f"Downloading {path} using a chunk size of {chunk_size} bytes from bucket {self.name}."
+            "Downloading %s using a chunk size of %d bytes from bucket %s.",
+            path, chunk_size, self.name
         )
         with requests.get(
             url, stream=True, auth=self._auth, verify=self._verify
@@ -478,7 +488,7 @@ 

Source code for exasol.bucketfs._buckets

     def __init__(self, url: str, account_id: str, database_id: str, pat: str) -> None:
         self._url = url
         self._account_id = account_id
-        self.database_id = database_id
+        self._database_id = database_id
         self._pat = pat
 
     @property
@@ -489,24 +499,86 @@ 

Source code for exasol.bucketfs._buckets

     def udf_path(self) -> str:
         return f'/buckets/uploads/{self.name}'
 
+    @property
     def files(self) -> Iterable[str]:
-        """To be provided"""
-        raise NotImplementedError()
+        LOGGER.info("Retrieving the bucket listing.")
+        with SaasAuthenticatedClient(base_url=self._url,
+                                     token=self._pat,
+                                     raise_on_unexpected_status=True) as client:
+            content = saas_list_files(account_id=self._account_id,
+                                      database_id=self._database_id,
+                                      client=client)
+
+        file_list: list[str] = []
+
+        def recursive_file_collector(node: SaasFile) -> None:
+            if node.children:
+                for child in node.children:
+                    recursive_file_collector(child)
+            else:
+                file_list.append(node.path)
+
+        for root_node in content:
+            recursive_file_collector(root_node)
+
+        return file_list
 
     def delete(self, path: str) -> None:
-        """To be provided"""
-        raise NotImplementedError()
+        LOGGER.info("Deleting %s from the bucket.", path)
+        with SaasAuthenticatedClient(base_url=self._url,
+                                     token=self._pat,
+                                     raise_on_unexpected_status=True) as client:
+            saas_delete_file(account_id=self._account_id,
+                             database_id=self._database_id,
+                             key=quote_plus(path),
+                             client=client)
 
     def upload(self, path: str, data: ByteString | BinaryIO) -> None:
-        """To be provided"""
-        raise NotImplementedError()
+        LOGGER.info("Uploading %s to the bucket.", path)
+        # Q. The service can handle any characters in the path.
+        #    Do we need to check this path for presence of characters deemed
+        #    invalid in the BucketLike protocol?
+        with SaasAuthenticatedClient(base_url=self._url,
+                                     token=self._pat,
+                                     raise_on_unexpected_status=False) as client:
+            response = saas_upload_file(account_id=self._account_id,
+                                        database_id=self._database_id,
+                                        key=quote_plus(path),
+                                        client=client)
+            if response.status_code >= 400:
+                # Q. Is it the right type of exception?
+                raise RuntimeError(f'Request for a presigned url to upload the file {path} '
+                                   f'failed with the status code {response.status_code}')
+            upload_url = response.parsed.url.replace(r'\u0026', '&')
+
+        response = requests.put(upload_url, data=data)
+        response.raise_for_status()
 
     def download(self, path: str, chunk_size: int = 8192) -> Iterable[ByteString]:
-        """To be provided"""
-        raise NotImplementedError()
+        LOGGER.info("Downloading %s from the bucket.", path)
+        with SaasAuthenticatedClient(base_url=self._url,
+                                     token=self._pat,
+                                     raise_on_unexpected_status=False) as client:
+            response = saas_download_file(account_id=self._account_id,
+                                          database_id=self._database_id,
+                                          key=quote_plus(path),
+                                          client=client)
+            if response.status_code == 404:
+                raise BucketFsError("The file {path} doesn't exist in the SaaS BucketFs.")
+            elif response.status_code >= 400:
+                # Q. Is it the right type of exception?
+                raise RuntimeError(f'Request for a presigned url to download the file {path} '
+                                   f'failed with the status code {response.status_code}')
+            download_url = response.parsed.url.replace(r'\u0026', '&')
+
+        response = requests.get(download_url, stream=True)
+        response.raise_for_status()
+        for chunk in response.iter_content(chunk_size=chunk_size):
+            if chunk:
+                yield chunk
 
     def __str__(self):
-        return f"SaaSBucket<{self.name} | on: {self._url}>"
+        return f"SaaSBucket<account id: {self._account_id}, database id: {self._database_id}>"
 
 
 class MountedBucket:
diff --git a/_sources/changes/unreleased.md.txt b/_sources/changes/unreleased.md.txt
index beb549d9..d67b1416 100644
--- a/_sources/changes/unreleased.md.txt
+++ b/_sources/changes/unreleased.md.txt
@@ -27,6 +27,7 @@
     Extracted bucket interface into BucketLike protocol.
     Implemented PathLike for buckets based on BucketLike protocol.
     Added a path factory function.
+    Added implementation of the BucketLike for the SaaS BucketFS.
 
   - `verify` parameter to the old interface. 
 
diff --git a/changes/unreleased.html b/changes/unreleased.html
index b2b2c3d4..c5413d2f 100644
--- a/changes/unreleased.html
+++ b/changes/unreleased.html
@@ -245,7 +245,8 @@ 

Added#

Added the PathLike protocol as described in the design document. Extracted bucket interface into BucketLike protocol. Implemented PathLike for buckets based on BucketLike protocol. -Added a path factory function.

+Added a path factory function. +Added implementation of the BucketLike for the SaaS BucketFS.

  • verify parameter to the old interface.

  • diff --git a/searchindex.js b/searchindex.js index 0bb4d08a..a92b775f 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "changes/changelog", "changes/changes_0.1.0", "changes/changes_0.2.0", "changes/changes_0.3.0", "changes/changes_0.4.0", "changes/changes_0.5.0", "changes/changes_0.6.0", "changes/changes_0.7.0", "changes/changes_0.8.0", "changes/changes_0.9.0", "changes/unreleased", "design/bucketpath", "design/design", "developer_guide/developer_guide", "index", "user_guide/advanced", "user_guide/basics", "user_guide/upload_github_release_to_bucket", "user_guide/user_guide"], "filenames": ["api.rst", "changes/changelog.md", "changes/changes_0.1.0.md", "changes/changes_0.2.0.md", "changes/changes_0.3.0.md", "changes/changes_0.4.0.md", "changes/changes_0.5.0.md", "changes/changes_0.6.0.md", "changes/changes_0.7.0.md", "changes/changes_0.8.0.md", "changes/changes_0.9.0.md", "changes/unreleased.md", "design/bucketpath.rst", "design/design.rst", "developer_guide/developer_guide.rst", "index.rst", "user_guide/advanced.rst", "user_guide/basics.rst", "user_guide/upload_github_release_to_bucket.rst", "user_guide/user_guide.rst"], "titles": ["\ud83e\uddf0 API Reference", "\ud83d\udcdd Changes", "BucketFs Utils Python 0.1.0, released 2022-01-18", "BucketFs Utils Python 0.2.0, released 2022-04-29", "BucketFs Utils Python 0.3.0, released 2022-07-20", "BucketFs Python 0.4.0, released 2022-09-28", "BucketFs Python 0.5.0, released 2022-10-12", "BucketFs Python 0.6.0, released 2022-11-11", "BucketFs Python 0.7.0, released 2022-12-22", "BucketFs Python 0.8.0, released 2023-03-21", "BucketFs Python 0.9.0, released 2024-02-16", "Unreleased", "Design Document Bucket Path(s)", "\ud83d\udcd1 Design Documents", "\ud83d\udee0 Developer Guide", "Exasol Bucketfs", "Advanced", "Basic\u2019s", "Github Artifacts", "\ud83d\udc64 User Guide"], "terms": {"class": [0, 12], "url": [0, 5, 16, 17, 19], "str": [0, 12], "credenti": [0, 12, 16, 17, 19], "map": 0, "none": [0, 5, 12], "verifi": [0, 11], "bool": [0, 12], "true": [0, 12], "service_nam": 0, "option": [0, 12], "sourc": [0, 3, 4, 18], "base": [0, 11, 12], "object": [0, 2, 11, 12, 16, 17], "provid": [0, 2, 7, 12, 16, 17], "simpl": [0, 12], "us": [0, 3, 7, 9, 11, 12, 17, 18], "access": [0, 6, 12], "list": [0, 3, 4, 6, 12, 15, 19], "all": [0, 6, 12, 15, 16, 19], "avail": [0, 6, 7, 19], "__init__": [0, 12], "creat": [0, 12], "new": [0, 3, 5, 7, 12, 14], "instanc": 0, "paramet": [0, 11, 12], "e": [0, 9, 12], "g": [0, 9, 12], "http": [0, 12, 16, 17, 18, 19], "": [0, 5, 7, 13, 15, 18, 19], "127": [0, 12], "0": [0, 1, 11, 12, 14, 16, 17, 19], "1": [0, 1, 5, 11, 12, 16], "2580": 0, "A": [0, 12, 17], "contain": [0, 2, 17], "usernam": [0, 16, 17, 19], "password": [0, 16, 17, 18, 19], "bucket1": 0, "foo": 0, "bar": 0, "either": [0, 12], "boolean": 0, "which": [0, 7, 12, 14, 16, 17], "case": [0, 11, 12, 16, 17], "control": 0, "whether": 0, "we": [0, 3, 9, 12], "server": 0, "tl": [0, 10], "certif": 0, "string": [0, 2, 3, 5, 12, 16, 17], "must": [0, 12, 14], "path": [0, 3, 4, 5, 11, 13, 16, 17, 18], "ca": 0, "bundl": 0, "default": [0, 12, 16, 17, 19], "name": [0, 2, 3, 4, 5, 12], "properti": [0, 12], "mutablemap": 0, "implement": [0, 2, 11, 12], "On": 0, "premis": 0, "where": [0, 12, 16], "thi": [0, 2, 3, 4, 7, 12, 16, 17, 18, 19], "i": [0, 2, 4, 7, 12, 15, 16, 19], "host": [0, 17, 18], "authent": 0, "delet": [0, 3, 12, 14, 15, 19], "specif": [0, 3, 12], "file": [0, 2, 3, 12, 15, 18, 19], "point": [0, 12], "shall": [0, 12], "rais": [0, 12], "oper": [0, 12], "couldn": 0, "t": [0, 12], "execut": [0, 12], "successfulli": [0, 12, 14], "download": [0, 2, 15, 19], "chunk_siz": [0, 12], "int": [0, 12], "8192": [0, 12], "iter": [0, 12, 17], "bytestr": [0, 12], "return": [0, 12], "an": [0, 5, 12, 17, 18], "binari": 0, "chunk": [0, 12, 17], "repres": [0, 12], "udf_path": [0, 12], "upload": [0, 2, 4, 14, 15, 18, 19], "data": [0, 12, 16, 17, 19], "binaryio": [0, 12], "onto": 0, "associ": [0, 12], "raw": [0, 16, 17], "content": [0, 12, 16, 17, 19], "transform": 0, "set": [0, 12, 16, 17], "byte": [0, 16, 17], "like": [0, 9, 12, 16, 17], "concaten": 0, "singl": [0, 17], "continu": 0, "encod": [0, 16, 17], "utf": [0, 16, 17], "8": [0, 1, 4, 15, 16, 17], "convert": [0, 12], "represent": 0, "filenam": [0, 12, 16, 17], "written": 0, "algorithm": 0, "sha1": 0, "calcul": 0, "hash": 0, "input": [0, 5], "checksum": 0, "hex": 0, "digest": 0, "wrap": 0, "variou": [0, 12], "conveni": [0, 16], "featur": [0, 12, 16], "index": 0, "even": [0, 12, 16], "though": [0, 16], "veri": [0, 16], "interfac": [0, 11], "function": [0, 11, 12, 18], "should": [0, 11, 12, 16, 17], "care": 0, "mai": [0, 12, 16, 17], "obviou": [0, 16], "do": [0, 7, 12, 16], "involv": [0, 16], "interact": [0, 15, 16, 17], "background": [0, 16], "sync": [0, 16], "etc": [0, 12, 16], "keep": [0, 17], "mind": 0, "when": [0, 12, 17], "size": 0, "except": [0, 12], "arg": [0, 12], "kwarg": [0, 12], "error": [0, 12], "occur": 0, "while": [0, 12], "f": [0, 12, 16, 17], "unreleas": 1, "9": 1, "7": [1, 2], "6": [1, 2, 19], "5": [1, 19], "4": [1, 6, 10, 11, 14, 19], "3": [1, 12, 15, 16, 19], "2": [1, 5, 16, 19], "code": [2, 3, 4, 7, 8, 12], "initi": 2, "version": [2, 3, 4, 5, 9, 10, 14], "It": [2, 12, 16], "allow": [2, 12], "you": [2, 16, 18], "from": [2, 3, 4, 11, 12, 14, 15, 18, 19], "insid": 2, "udf": [2, 4, 5, 12], "altern": 2, "can": [2, 11, 12, 15, 17, 18, 19], "read": [2, 12], "also": [2, 12, 19], "local": [2, 12, 14], "bucket": [2, 3, 4, 5, 6, 11, 13, 15, 18, 19], "system": [2, 10, 11, 12], "ad": [2, 3, 4, 5, 6, 8, 10, 12], "fileobj": 2, "fileboj": 2, "29": 2, "add": [2, 4, 6, 7, 8, 12], "sphinx": 2, "13": 2, "joblib": 2, "obj": 2, "languag": 2, "45": 2, "droid": 2, "github": [2, 10, 14, 19], "workflow": [2, 10, 12, 14], "prepar": [2, 5], "49": 2, "complaint": 2, "regard": [2, 12, 17], "changelog": [2, 14], "47": 2, "15": 2, "remov": [2, 3, 4, 7, 12], "dephel": 2, "depend": [2, 7, 8, 11, 12, 17, 19], "becaus": [2, 3], "maintain": [2, 12], "anymor": 2, "42": 2, "move": 2, "locat": [2, 12], "over": [2, 12], "exasol_data_science_utils_python": 2, "n": 2, "method": [3, 4, 5, 12], "introduc": [3, 12], "two": [3, 12], "certain": 3, "under": 3, "furthermor": [3, 4], "numpi": [3, 4], "build": [3, 4, 11], "against": 3, "buffer": 3, "overflow": 3, "vulner": [3, 7, 9], "55": 3, "61": 3, "54": 3, "posixpath": 3, "convers": 3, "alter": 3, "session": 3, "58": [3, 9], "type": [3, 12], "hint": 3, "51": 3, "bucketfsloc": [4, 5], "gener": [4, 5, 12, 16, 17], "upgrad": 4, "generate_bucket_udf_path": 4, "bucketfsloct": 4, "In": [4, 12, 14, 17], "addit": [4, 12], "ar": [4, 12, 16], "72": [4, 5], "63": 4, "correct": 4, "fileobject": 4, "mock": 4, "66": 4, "localf": 4, "74": 4, "53": 4, "again": 4, "38": 4, "replac": 4, "old": [4, 7, 11], "bash": 4, "script": [4, 16], "sphinx_github": 4, "page": 4, "migrat": 4, "nox": [4, 7], "68": 4, "instal": 4, "instruct": 4, "readm": 4, "first": 5, "pypi": [5, 14], "test": 5, "handl": [5, 12, 16], "base_path": 5, "empti": [5, 12], "79": 5, "joinpath": [5, 12], "81": 5, "updat": [5, 8, 9, 10, 11], "poetri": [5, 9, 11, 14], "ci": [5, 14], "project": [5, 7, 8, 11], "prerequisit": 5, "adjust": [5, 12], "contributor": 5, "support": [6, 8, 10, 11, 12], "servic": [6, 11, 12, 15, 16, 19], "inform": [6, 12], "how": 6, "trigger": 6, "doe": [7, 12], "major": 7, "api": [7, 12, 15], "rework": 7, "still": [7, 16, 17], "consid": [7, 12], "deprec": 7, "futur": [7, 12], "integr": [7, 12], "more": [7, 17, 19], "easili": 7, "abil": 7, "standard": [7, 12], "built": 7, "mechan": 7, "achiev": 7, "desir": 7, "outcom": 7, "without": [7, 16], "need": [7, 12, 14, 16], "extend": [7, 12], "exist": [7, 12], "entir": [7, 12], "match": [7, 14], "structur": [7, 12], "packag": [7, 11, 14], "exasol": [7, 8, 11, 12, 14, 16, 17, 18, 19], "warn": 7, "issu": [7, 9, 12, 14], "evalu": 7, "cve": [7, 9], "42969": 7, "silenc": 7, "The": [7, 11, 12, 15, 19], "affect": 7, "our": [7, 9, 12], "itself": [7, 12], "nor": [7, 12], "pull": 7, "librari": [7, 9, 12, 15, 16], "check": [7, 9], "search": 7, "pytest": 7, "track": 7, "toolbox": [8, 10], "fix": [8, 10, 14], "invalid": 8, "command": 8, "develop": [8, 12], "guid": 8, "exampl": [8, 10, 14, 18], "basic": [8, 19], "user": [8, 9, 12, 17, 18], "setup": [8, 11, 19], "section": [8, 11, 19], "pre": 8, "commit": 8, "hook": 8, "attent": [9, 12, 16], "have": [9, 12, 19], "been": 9, "address": [9, 12], "henc": 9, "advis": 9, "own": 9, "tree": [9, 12], "scanner": 9, "trivi": 9, "intern": [9, 12], "lock": [9, 12], "0286": 9, "23931": 9, "restrict": [9, 12, 17], "typeguard": [9, 10], "configur": [10, 11, 19], "ssl": 10, "valid": 10, "overview": [10, 11, 19], "typo": 10, "60": 10, "lockfil": 10, "pin": [10, 12], "log": [11, 14], "bucketf": [11, 14, 16, 18], "logger": [11, 16], "referenc": 11, "via": [11, 12], "import": [11, 12, 16, 17, 18, 19], "get": [11, 16, 19], "getlogg": [11, 16], "For": [11, 12, 14, 19], "most": [11, 17], "suffici": [11, 16], "just": [11, 12], "root": [11, 12, 16], "order": [11, 12, 14, 17], "retriev": 11, "basicconfig": [11, 16, 17], "level": [11, 12, 16, 17], "info": [11, 16, 17], "view": 11, "directori": [11, 12], "pathlik": 11, "protocol": [11, 12], "describ": [11, 16], "design": 11, "document": [11, 19], "extract": 11, "bucketlik": 11, "factori": 11, "propag": 11, "flag": 11, "relock": 11, "abatilo": 11, "action": [11, 12, 14], "v2": 11, "v3": 11, "python": [11, 12, 14, 15, 16], "v5": 11, "pyproject": 11, "toml": 11, "restructur": 11, "diffrent": 12, "context": 12, "outsid": 12, "db": 12, "within": 12, "common": 12, "task": 12, "pretti": 12, "tediou": 12, "due": [12, 19], "fact": [12, 19], "know": 12, "concept": 12, "so": 12, "simplifi": 12, "streamlin": 12, "frequent": 12, "uniform": 12, "accross": 12, "actual": 12, "behind": 12, "abstract": 12, "filesystem": 12, "part": 12, "share": 12, "its": 12, "howev": 12, "experi": 12, "present": 12, "sever": 12, "particularli": 12, "term": 12, "versatil": 12, "eas": 12, "across": 12, "differ": 12, "both": 12, "extern": 12, "databas": [12, 19], "defin": 12, "dual": 12, "mode": 12, "complex": [12, 19], "ineffici": 12, "especi": 12, "focus": 12, "manag": 12, "aim": 12, "ensur": [12, 16], "reflect": 12, "scope": 12, "These": 12, "relev": 12, "logic": 12, "conceal": 12, "end": 12, "contextu": 12, "face": 12, "difficulti": 12, "switch": 12, "between": 12, "versu": 12, "dure": 12, "lack": 12, "seamless": 12, "transit": 12, "hinder": 12, "product": 12, "additon": 12, "inher": 12, "understood": 12, "tradit": 12, "absenc": 12, "complic": 12, "make": 12, "what": 12, "cumbersom": 12, "time": 12, "consum": 12, "forc": 12, "lower": 12, "onli": 12, "counterintuit": 12, "There": 12, "notabl": 12, "underli": 12, "inconsist": 12, "pattern": [12, 16], "being": 12, "To": 12, "identifi": 12, "layer": 12, "approach": 12, "pathlib": 12, "modul": 12, "mirror": 12, "By": [12, 16], "adopt": 12, "similar": 12, "proven": 12, "decis": 12, "leverag": 12, "intuit": 12, "model": 12, "fit": 12, "requir": 12, "focu": 12, "essenti": [12, 16], "although": 12, "inspir": 12, "includ": [12, 16], "necessari": 12, "effect": 12, "diverg": 12, "area": 12, "tailor": 12, "enhanc": 12, "facilit": 12, "unifi": 12, "wai": 12, "regardless": 12, "meet": 12, "uniqu": 12, "practic": 12, "improv": 12, "effici": [12, 17], "primari": 12, "work": 12, "usag": [12, 17], "additionali": 12, "wan": 12, "compat": 12, "wide": 12, "possibl": 12, "implent": 12, "persist": 12, "process": [12, 14], "reduc": 12, "learn": 12, "curv": 12, "familiar": 12, "sure": 12, "behaviour": 12, "follow": [12, 16], "wherev": 12, "flexibl": [12, 17], "enough": 12, "accommod": 12, "divid": 12, "four": 12, "main": 12, "compon": 12, "central": 12, "opt": 12, "elimin": 12, "inherit": 12, "unnecessari": 12, "clear": 12, "specifi": 12, "least": 12, "one": [12, 17, 18, 19], "anoth": 12, "purpos": 12, "capabl": 12, "plan": 12, "prevent": 12, "travers": 12, "abov": 12, "emul": 12, "custom": 12, "behavior": 12, "natur": 12, "appropri": [12, 14], "Not": 12, "uniformli": 12, "applic": 12, "determin": 12, "uri": 12, "openli": 12, "compil": 12, "straightforward": 12, "align": 12, "some": [12, 16, 17, 18], "aspect": 12, "fulli": 12, "note": [12, 16], "feasibl": 12, "along": 12, "semant": 12, "signific": 12, "deviat": 12, "definit": 12, "choos": 12, "distinct": 12, "clariti": 12, "guidelin": 12, "embrac": 12, "convent": 12, "avoid": 12, "confus": 12, "terminologi": 12, "subsequ": 12, "subsect": 12, "snippet": 12, "intend": 12, "primarili": 12, "refer": [12, 16], "therefor": 12, "comment": 12, "docstr": 12, "sudo": 12, "adapt": 12, "def": 12, "final": 12, "exclud": 12, "drive": 12, "ani": 12, "suffix": 12, "parent": 12, "as_uri": 12, "reconstruct": 12, "is_dir": 12, "fals": 12, "kind": 12, "is_fil": 12, "regular": 12, "pathslik": 12, "yiel": 12, "notafileerror": 12, "filenotfounderror": 12, "If": 12, "write": [12, 16, 17, 19], "after": 12, "yield": 12, "alreadi": 12, "overwritten": 12, "writen": 12, "rm": 12, "otherwis": 12, "thrown": 12, "rmdir": 12, "recurs": 12, "stai": 12, "close": 12, "won": 12, "non": 12, "subdir": 12, "permissionerror": 12, "pathseg": 12, "call": 12, "equival": 12, "combin": 12, "each": [12, 19], "given": 12, "turn": 12, "walk": 12, "tupl": 12, "top": 12, "down": 12, "bottom": 12, "up": 12, "try": 12, "mimik": 12, "doc": [12, 16], "org": [12, 16], "html": [12, 16], "dirpath": 12, "dirnam": 12, "iterdir": 12, "noth": 12, "direct": 12, "children": 12, "overload": 12, "join": 12, "see": [12, 14], "__truediv__": 12, "member": 12, "indic": 12, "clearli": 12, "implment": 12, "bucketpath": 12, "serv": 12, "bf": 12, "bfss": 12, "accss": 12, "localpath": 12, "bfsl": 12, "encapsul": 12, "exactli": 12, "chang": [12, 14], "valu": 12, "other": [12, 16, 17], "potenti": 12, "self": 12, "rectrict": 12, "protect": 12, "stop": 12, "proect": 12, "whith": 12, "proection": 12, "throw": 12, "pathbuild": 12, "credentails_stor": 12, "init": 12, "besid": 12, "credentail_stor": 12, "yet": 12, "pleas": [12, 19], "bellow": [12, 19], "tbd": 12, "alias": 12, "pass": 12, "__call__": 12, "assembl": 12, "apropri": 12, "_determine_typ": 12, "facori": 12, "_create_udf_path": 12, "_create_bucket_path": 12, "_create_chroot_path": 12, "tar": 12, "gz": 12, "http_bucket_path": 12, "8888": 12, "https_bucket_path": 12, "chroot_path": 12, "sub": 12, "subsub": 12, "readonly_path": 12, "ro": 12, "as_udf_path": 12, "udfpath": 12, "git": 14, "com": 14, "run": [14, 19], "date": 14, "latest": [14, 15, 18], "tag": 14, "changes_0": 14, "md": 14, "push": 14, "further": 14, "detail": [14, 19], "cd": 14, "yml": 14, "number": 14, "x": 14, "y": 14, "z": 14, "origin": 14, "d": 14, "remot": 14, "lead": 14, "start": 14, "begin": [14, 16], "finish": 14, "redo": 14, "manual": 14, "scenario": 14, "publish": 14, "wa": 14, "got": 14, "interrupt": 14, "solut": 14, "pip": 15, "found": 15, "here": 15, "come": 16, "handi": 16, "localhost": [16, 17, 19], "6666": [16, 17, 19], "w": [16, 17, 19], "default_bucket": [16, 17, 19], "io": [16, 17], "65": [16, 17], "file1": [16, 17], "bin": [16, 17], "open": [16, 17, 18], "myfile1": 16, "txt": [16, 17, 19], "rb": [16, 17], "destin": [16, 17], "file_lik": [16, 17], "bytesio": [16, 17], "b": [16, 17, 19], "file2": [16, 17], "conent": 16, "text": [16, 17], "abcd": [16, 17], "_": [16, 17], "rang": [16, 17, 19], "10": [16, 17], "as_byt": [16, 17, 19], "as_fil": [16, 17], "myfil": [16, 17, 19], "my_utf8_str": [16, 17], "as_str": [16, 17], "utf8": [16, 17], "my_ascii_str": [16, 17], "ascii": [16, 17], "del": 16, "your": 16, "messag": 16, "those": 16, "correctli": 16, "proper": 16, "might": 16, "appear": 16, "expect": 16, "explicityli": 16, "bucketfs_logg": 16, "notset": 16, "11": 16, "lot": 16, "approri": 16, "setlevel": 16, "debug": 16, "multipl": 17, "request": 17, "myfile2": 17, "back": 17, "caller": 17, "recept": 17, "memori": 17, "prefer": 17, "tangibl": [17, 19], "as_hash": 17, "With": 18, "public": 18, "releas": 18, "want": 18, "artefact": 18, "repositori": 18, "exasol_bucketfs_utils_python": 18, "github_release_file_bucketfs_upload": 18, "githubreleasefilebucketfsupload": 18, "release_upload": 18, "file_to_download_nam": 18, "github_us": 18, "repository_nam": 18, "release_nam": 18, "path_inside_bucket": 18, "port": 18, "straight": 19, "forward": 19, "fairli": 19, "worker": 19, "cluster": 19, "node": 19, "hold": 19, "tri": 19, "illustr": 19, "manner": 19, "look": 19, "advanc": 19, "artifact": 19}, "objects": {"exasol.bucketfs": [[0, 0, 1, "", "Bucket"], [0, 3, 1, "", "BucketFsError"], [0, 0, 1, "", "MappedBucket"], [0, 4, 1, "", "as_bytes"], [0, 4, 1, "", "as_file"], [0, 4, 1, "", "as_hash"], [0, 4, 1, "", "as_string"]], "exasol.bucketfs.Bucket": [[0, 1, 1, "", "__init__"], [0, 1, 1, "", "delete"], [0, 1, 1, "", "download"], [0, 2, 1, "", "files"], [0, 2, 1, "", "name"], [0, 2, 1, "", "udf_path"], [0, 1, 1, "", "upload"]], "exasol.bucketfs.MappedBucket": [[0, 1, 1, "", "__init__"], [0, 2, 1, "", "chunk_size"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:exception", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "exception", "Python exception"], "4": ["py", "function", "Python function"]}, "titleterms": {"api": 0, "refer": [0, 17], "exasol": [0, 15], "bucketf": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 17, 19], "servic": [0, 17], "bucket": [0, 12, 16, 17], "as_byt": 0, "as_str": 0, "as_fil": 0, "as_hash": 0, "mappedbucket": [0, 16], "bucketfserror": 0, "chang": [1, 8], "util": [2, 3, 4, 12], "python": [2, 3, 4, 5, 6, 7, 8, 9, 10], "0": [2, 3, 4, 5, 6, 7, 8, 9, 10], "1": 2, "releas": [2, 3, 4, 5, 6, 7, 8, 9, 10, 14], "2022": [2, 3, 4, 5, 6, 7, 8], "01": 2, "18": 2, "summari": [2, 3, 4, 5, 6, 7, 8, 9], "featur": [2, 3, 4, 5, 6, 7, 10, 15], "enhanc": [2, 3, 4, 5, 6, 7], "bug": [2, 3, 4, 5, 11], "fix": [2, 3, 4, 5, 11], "document": [2, 4, 5, 6, 7, 8, 10, 12, 13, 15], "refactor": [2, 3, 4, 5, 7], "secur": [2, 3, 7, 9], "2": 3, "04": 3, "29": 3, "3": 4, "07": 4, "20": 4, "4": 5, "09": 5, "28": 5, "5": 6, "10": 6, "12": [6, 8], "6": 7, "11": 7, "7": 8, "22": 8, "8": 9, "2023": 9, "03": 9, "21": 9, "depend": [9, 10, 14], "9": 10, "2024": 10, "02": 10, "16": 10, "intern": [10, 11], "unreleas": 11, "ad": 11, "design": [12, 13], "path": 12, "": [12, 14, 17], "problem": 12, "descript": 12, "delimit": 12, "challeng": 12, "current": 12, "interact": 12, "propos": 12, "solut": 12, "desgin": 12, "goal": 12, "architectur": 12, "overview": 12, "interfac": 12, "backend": 12, "extens": 12, "chroot": 12, "readonli": 12, "creation": 12, "detail": 12, "pathlik": 12, "concret": 12, "modifi": 12, "factori": 12, "builder": 12, "exampl": 12, "develop": 14, "guid": [14, 19], "set": 14, "up": [14, 19], "workspac": 14, "checkout": 14, "project": 14, "instal": [14, 15], "setup": 14, "pre": 14, "commit": 14, "hook": 14, "creat": 14, "prerequisit": [14, 15], "trigger": 14, "what": 14, "do": 14, "fail": 14, "The": [14, 16, 17], "dure": 14, "check": 14, "One": 14, "step": 14, "partial": 14, "advanc": 16, "list": [16, 17], "file": [16, 17], "upload": [16, 17], "download": [16, 17], "from": [16, 17], "delet": [16, 17], "configur": [16, 17], "log": [16, 17], "basic": 17, "get": 17, "class": 17, "avail": 17, "convert": 17, "github": 18, "artifact": 18, "user": 19, "quickstart": 19, "follow": 19}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"\ud83e\uddf0 API Reference": [[0, "api-reference"]], "exasol.bucketfs.Service": [[0, "exasol-bucketfs-service"]], "exasol.bucketfs.Bucket": [[0, "exasol-bucketfs-bucket"]], "exasol.bucketfs.as_bytes": [[0, "exasol-bucketfs-as-bytes"]], "exasol.bucketfs.as_string": [[0, "exasol-bucketfs-as-string"]], "exasol.bucketfs.as_file": [[0, "exasol-bucketfs-as-file"]], "exasol.bucketfs.as_hash": [[0, "exasol-bucketfs-as-hash"]], "exasol.bucketfs.MappedBucket": [[0, "exasol-bucketfs-mappedbucket"]], "exasol.bucketfs.BucketFsError": [[0, "exasol-bucketfs-bucketfserror"]], "\ud83d\udcdd Changes": [[1, "changes"]], "BucketFs Utils Python 0.1.0, released 2022-01-18": [[2, "bucketfs-utils-python-0-1-0-released-2022-01-18"]], "Summary": [[2, "summary"], [3, "summary"], [4, "summary"], [5, "summary"], [6, "summary"], [7, "summary"], [8, "summary"], [9, "summary"]], "Features / Enhancements": [[2, "features-enhancements"], [3, "features-enhancements"], [4, "features-enhancements"], [5, "features-enhancements"], [6, "features-enhancements"], [7, "features-enhancements"]], "Bug Fixes": [[2, "bug-fixes"], [3, "bug-fixes"], [4, "bug-fixes"], [5, "bug-fixes"]], "Documentation": [[2, "documentation"], [4, "documentation"], [5, "documentation"], [6, "documentation"], [7, "documentation"], [8, "documentation"], [10, "documentation"]], "Refactoring": [[2, "refactoring"], [3, "refactoring"], [4, "refactoring"], [5, "refactoring"], [7, "refactoring"]], "Security": [[2, "security"], [3, "security"], [7, "security"], [9, "security"]], "BucketFs Utils Python 0.2.0, released 2022-04-29": [[3, "bucketfs-utils-python-0-2-0-released-2022-04-29"]], "BucketFs Utils Python 0.3.0, released 2022-07-20": [[4, "bucketfs-utils-python-0-3-0-released-2022-07-20"]], "BucketFs Python 0.4.0, released 2022-09-28": [[5, "bucketfs-python-0-4-0-released-2022-09-28"]], "BucketFs Python 0.5.0, released 2022-10-12": [[6, "bucketfs-python-0-5-0-released-2022-10-12"]], "BucketFs Python 0.6.0, released 2022-11-11": [[7, "bucketfs-python-0-6-0-released-2022-11-11"]], "BucketFs Python 0.7.0, released 2022-12-22": [[8, "bucketfs-python-0-7-0-released-2022-12-22"]], "Changes": [[8, "changes"]], "BucketFs Python 0.8.0, released 2023-03-21": [[9, "bucketfs-python-0-8-0-released-2023-03-21"]], "Dependencies": [[9, "dependencies"], [10, "dependencies"]], "BucketFs Python 0.9.0, released 2024-02-16": [[10, "bucketfs-python-0-9-0-released-2024-02-16"]], "Feature": [[10, "feature"]], "Internal": [[10, "internal"], [11, "internal"]], "Unreleased": [[11, "unreleased"]], "Added": [[11, "added"]], "Bug Fixing": [[11, "bug-fixing"]], "Design Document Bucket Path(s)": [[12, "design-document-bucket-path-s"]], "Problem Description": [[12, "problem-description"]], "Delimitation": [[12, "delimitation"]], "Challenges with Current BucketFS Interactions": [[12, "challenges-with-current-bucketfs-interactions"]], "Proposed Solution": [[12, "proposed-solution"]], "Desgin": [[12, "desgin"]], "Design Goals": [[12, "design-goals"]], "Architecture": [[12, "architecture"]], "Overview": [[12, "overview"]], "Interface": [[12, "interface"]], "Backends": [[12, "backends"]], "Extensions": [[12, "extensions"]], "Chroot": [[12, "chroot"]], "ReadOnly": [[12, "readonly"]], "Path Creation": [[12, "path-creation"]], "Detailed Design": [[12, "detailed-design"]], "Pathlike": [[12, "pathlike"]], "Concrete Paths (Backends)": [[12, "concrete-paths-backends"]], "Modifiers (Extensions)": [[12, "modifiers-extensions"]], "Factory & Builders": [[12, "factory-builders"]], "Examples": [[12, "examples"]], "Utilities": [[12, "utilities"]], "\ud83d\udcd1 Design Documents": [[13, "design-documents"]], "\ud83d\udee0 Developer Guide": [[14, "developer-guide"]], "Setting up the workspace": [[14, "setting-up-the-workspace"]], "Checkout the Project": [[14, "checkout-the-project"]], "Install project dependencies": [[14, "install-project-dependencies"]], "Setup pre-commit hook(s)": [[14, "setup-pre-commit-hook-s"]], "Creating a Release": [[14, "creating-a-release"]], "Prerequisites": [[14, "prerequisites"]], "Triggering the Release": [[14, "triggering-the-release"]], "What to do if the release failed?": [[14, "what-to-do-if-the-release-failed"]], "The release failed during pre-release checks": [[14, "the-release-failed-during-pre-release-checks"]], "One of the release steps failed (Partial Release)": [[14, "one-of-the-release-steps-failed-partial-release"]], "Exasol Bucketfs": [[15, "exasol-bucketfs"]], "\ud83d\ude80 Features": [[15, "features"]], "\ud83d\udd0c\ufe0f Prerequisites": [[15, "prerequisites"]], "\ud83d\udcbe Installation": [[15, "installation"]], "\ud83d\udcda Documentation": [[15, "documentation"]], "Advanced": [[16, "advanced"]], "The MappedBucket": [[16, "the-mappedbucket"]], "List files in a Bucket": [[16, "list-files-in-a-bucket"], [17, "list-files-in-a-bucket"]], "Upload files to a Bucket": [[16, "upload-files-to-a-bucket"], [17, "upload-files-to-a-bucket"]], "Download files from a Bucket": [[16, "download-files-from-a-bucket"], [17, "download-files-from-a-bucket"]], "Delete files from Bucket": [[16, "delete-files-from-bucket"], [17, "delete-files-from-bucket"]], "Configure logging": [[16, "configure-logging"], [17, "configure-logging"]], "Basic\u2019s": [[17, "basic-s"]], "The Bucketfs Service": [[17, "the-bucketfs-service"]], "List buckets": [[17, "list-buckets"]], "Get a Bucket reference": [[17, "get-a-bucket-reference"]], "Bucket class": [[17, "bucket-class"]], "Available Converters": [[17, "available-converters"]], "Github Artifacts": [[18, "github-artifacts"]], "\ud83d\udc64 User Guide": [[19, "user-guide"]], "Bucketfs": [[19, "bucketfs"]], "Quickstart": [[19, "quickstart"]], "Follow Up": [[19, "follow-up"]]}, "indexentries": {"bucket (class in exasol.bucketfs)": [[0, "exasol.bucketfs.Bucket"]], "bucketfserror": [[0, "exasol.bucketfs.BucketFsError"]], "mappedbucket (class in exasol.bucketfs)": [[0, "exasol.bucketfs.MappedBucket"]], "__init__() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.__init__"]], "__init__() (exasol.bucketfs.mappedbucket method)": [[0, "exasol.bucketfs.MappedBucket.__init__"]], "as_bytes() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_bytes"]], "as_file() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_file"]], "as_hash() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_hash"]], "as_string() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_string"]], "chunk_size (exasol.bucketfs.mappedbucket property)": [[0, "exasol.bucketfs.MappedBucket.chunk_size"]], "delete() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.delete"]], "download() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.download"]], "files (exasol.bucketfs.bucket property)": [[0, "exasol.bucketfs.Bucket.files"]], "name (exasol.bucketfs.bucket property)": [[0, "exasol.bucketfs.Bucket.name"]], "udf_path (exasol.bucketfs.bucket property)": [[0, "exasol.bucketfs.Bucket.udf_path"]], "upload() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.upload"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "changes/changelog", "changes/changes_0.1.0", "changes/changes_0.2.0", "changes/changes_0.3.0", "changes/changes_0.4.0", "changes/changes_0.5.0", "changes/changes_0.6.0", "changes/changes_0.7.0", "changes/changes_0.8.0", "changes/changes_0.9.0", "changes/unreleased", "design/bucketpath", "design/design", "developer_guide/developer_guide", "index", "user_guide/advanced", "user_guide/basics", "user_guide/upload_github_release_to_bucket", "user_guide/user_guide"], "filenames": ["api.rst", "changes/changelog.md", "changes/changes_0.1.0.md", "changes/changes_0.2.0.md", "changes/changes_0.3.0.md", "changes/changes_0.4.0.md", "changes/changes_0.5.0.md", "changes/changes_0.6.0.md", "changes/changes_0.7.0.md", "changes/changes_0.8.0.md", "changes/changes_0.9.0.md", "changes/unreleased.md", "design/bucketpath.rst", "design/design.rst", "developer_guide/developer_guide.rst", "index.rst", "user_guide/advanced.rst", "user_guide/basics.rst", "user_guide/upload_github_release_to_bucket.rst", "user_guide/user_guide.rst"], "titles": ["\ud83e\uddf0 API Reference", "\ud83d\udcdd Changes", "BucketFs Utils Python 0.1.0, released 2022-01-18", "BucketFs Utils Python 0.2.0, released 2022-04-29", "BucketFs Utils Python 0.3.0, released 2022-07-20", "BucketFs Python 0.4.0, released 2022-09-28", "BucketFs Python 0.5.0, released 2022-10-12", "BucketFs Python 0.6.0, released 2022-11-11", "BucketFs Python 0.7.0, released 2022-12-22", "BucketFs Python 0.8.0, released 2023-03-21", "BucketFs Python 0.9.0, released 2024-02-16", "Unreleased", "Design Document Bucket Path(s)", "\ud83d\udcd1 Design Documents", "\ud83d\udee0 Developer Guide", "Exasol Bucketfs", "Advanced", "Basic\u2019s", "Github Artifacts", "\ud83d\udc64 User Guide"], "terms": {"class": [0, 12], "url": [0, 5, 16, 17, 19], "str": [0, 12], "credenti": [0, 12, 16, 17, 19], "map": 0, "none": [0, 5, 12], "verifi": [0, 11], "bool": [0, 12], "true": [0, 12], "service_nam": 0, "option": [0, 12], "sourc": [0, 3, 4, 18], "base": [0, 11, 12], "object": [0, 2, 11, 12, 16, 17], "provid": [0, 2, 7, 12, 16, 17], "simpl": [0, 12], "us": [0, 3, 7, 9, 11, 12, 17, 18], "access": [0, 6, 12], "list": [0, 3, 4, 6, 12, 15, 19], "all": [0, 6, 12, 15, 16, 19], "avail": [0, 6, 7, 19], "__init__": [0, 12], "creat": [0, 12], "new": [0, 3, 5, 7, 12, 14], "instanc": 0, "paramet": [0, 11, 12], "e": [0, 9, 12], "g": [0, 9, 12], "http": [0, 12, 16, 17, 18, 19], "": [0, 5, 7, 13, 15, 18, 19], "127": [0, 12], "0": [0, 1, 11, 12, 14, 16, 17, 19], "1": [0, 1, 5, 11, 12, 16], "2580": 0, "A": [0, 12, 17], "contain": [0, 2, 17], "usernam": [0, 16, 17, 19], "password": [0, 16, 17, 18, 19], "bucket1": 0, "foo": 0, "bar": 0, "either": [0, 12], "boolean": 0, "which": [0, 7, 12, 14, 16, 17], "case": [0, 11, 12, 16, 17], "control": 0, "whether": 0, "we": [0, 3, 9, 12], "server": 0, "tl": [0, 10], "certif": 0, "string": [0, 2, 3, 5, 12, 16, 17], "must": [0, 12, 14], "path": [0, 3, 4, 5, 11, 13, 16, 17, 18], "ca": 0, "bundl": 0, "default": [0, 12, 16, 17, 19], "name": [0, 2, 3, 4, 5, 12], "properti": [0, 12], "mutablemap": 0, "implement": [0, 2, 11, 12], "On": 0, "premis": 0, "where": [0, 12, 16], "thi": [0, 2, 3, 4, 7, 12, 16, 17, 18, 19], "i": [0, 2, 4, 7, 12, 15, 16, 19], "host": [0, 17, 18], "authent": 0, "delet": [0, 3, 12, 14, 15, 19], "specif": [0, 3, 12], "file": [0, 2, 3, 12, 15, 18, 19], "point": [0, 12], "shall": [0, 12], "rais": [0, 12], "oper": [0, 12], "couldn": 0, "t": [0, 12], "execut": [0, 12], "successfulli": [0, 12, 14], "download": [0, 2, 15, 19], "chunk_siz": [0, 12], "int": [0, 12], "8192": [0, 12], "iter": [0, 12, 17], "bytestr": [0, 12], "return": [0, 12], "an": [0, 5, 12, 17, 18], "binari": 0, "chunk": [0, 12, 17], "repres": [0, 12], "udf_path": [0, 12], "upload": [0, 2, 4, 14, 15, 18, 19], "data": [0, 12, 16, 17, 19], "binaryio": [0, 12], "onto": 0, "associ": [0, 12], "raw": [0, 16, 17], "content": [0, 12, 16, 17, 19], "transform": 0, "set": [0, 12, 16, 17], "byte": [0, 16, 17], "like": [0, 9, 12, 16, 17], "concaten": 0, "singl": [0, 17], "continu": 0, "encod": [0, 16, 17], "utf": [0, 16, 17], "8": [0, 1, 4, 15, 16, 17], "convert": [0, 12], "represent": 0, "filenam": [0, 12, 16, 17], "written": 0, "algorithm": 0, "sha1": 0, "calcul": 0, "hash": 0, "input": [0, 5], "checksum": 0, "hex": 0, "digest": 0, "wrap": 0, "variou": [0, 12], "conveni": [0, 16], "featur": [0, 12, 16], "index": 0, "even": [0, 12, 16], "though": [0, 16], "veri": [0, 16], "interfac": [0, 11], "function": [0, 11, 12, 18], "should": [0, 11, 12, 16, 17], "care": 0, "mai": [0, 12, 16, 17], "obviou": [0, 16], "do": [0, 7, 12, 16], "involv": [0, 16], "interact": [0, 15, 16, 17], "background": [0, 16], "sync": [0, 16], "etc": [0, 12, 16], "keep": [0, 17], "mind": 0, "when": [0, 12, 17], "size": 0, "except": [0, 12], "arg": [0, 12], "kwarg": [0, 12], "error": [0, 12], "occur": 0, "while": [0, 12], "f": [0, 12, 16, 17], "unreleas": 1, "9": 1, "7": [1, 2], "6": [1, 2, 19], "5": [1, 19], "4": [1, 6, 10, 11, 14, 19], "3": [1, 12, 15, 16, 19], "2": [1, 5, 16, 19], "code": [2, 3, 4, 7, 8, 12], "initi": 2, "version": [2, 3, 4, 5, 9, 10, 14], "It": [2, 12, 16], "allow": [2, 12], "you": [2, 16, 18], "from": [2, 3, 4, 11, 12, 14, 15, 18, 19], "insid": 2, "udf": [2, 4, 5, 12], "altern": 2, "can": [2, 11, 12, 15, 17, 18, 19], "read": [2, 12], "also": [2, 12, 19], "local": [2, 12, 14], "bucket": [2, 3, 4, 5, 6, 11, 13, 15, 18, 19], "system": [2, 10, 11, 12], "ad": [2, 3, 4, 5, 6, 8, 10, 12], "fileobj": 2, "fileboj": 2, "29": 2, "add": [2, 4, 6, 7, 8, 12], "sphinx": 2, "13": 2, "joblib": 2, "obj": 2, "languag": 2, "45": 2, "droid": 2, "github": [2, 10, 14, 19], "workflow": [2, 10, 12, 14], "prepar": [2, 5], "49": 2, "complaint": 2, "regard": [2, 12, 17], "changelog": [2, 14], "47": 2, "15": 2, "remov": [2, 3, 4, 7, 12], "dephel": 2, "depend": [2, 7, 8, 11, 12, 17, 19], "becaus": [2, 3], "maintain": [2, 12], "anymor": 2, "42": 2, "move": 2, "locat": [2, 12], "over": [2, 12], "exasol_data_science_utils_python": 2, "n": 2, "method": [3, 4, 5, 12], "introduc": [3, 12], "two": [3, 12], "certain": 3, "under": 3, "furthermor": [3, 4], "numpi": [3, 4], "build": [3, 4, 11], "against": 3, "buffer": 3, "overflow": 3, "vulner": [3, 7, 9], "55": 3, "61": 3, "54": 3, "posixpath": 3, "convers": 3, "alter": 3, "session": 3, "58": [3, 9], "type": [3, 12], "hint": 3, "51": 3, "bucketfsloc": [4, 5], "gener": [4, 5, 12, 16, 17], "upgrad": 4, "generate_bucket_udf_path": 4, "bucketfsloct": 4, "In": [4, 12, 14, 17], "addit": [4, 12], "ar": [4, 12, 16], "72": [4, 5], "63": 4, "correct": 4, "fileobject": 4, "mock": 4, "66": 4, "localf": 4, "74": 4, "53": 4, "again": 4, "38": 4, "replac": 4, "old": [4, 7, 11], "bash": 4, "script": [4, 16], "sphinx_github": 4, "page": 4, "migrat": 4, "nox": [4, 7], "68": 4, "instal": 4, "instruct": 4, "readm": 4, "first": 5, "pypi": [5, 14], "test": 5, "handl": [5, 12, 16], "base_path": 5, "empti": [5, 12], "79": 5, "joinpath": [5, 12], "81": 5, "updat": [5, 8, 9, 10, 11], "poetri": [5, 9, 11, 14], "ci": [5, 14], "project": [5, 7, 8, 11], "prerequisit": 5, "adjust": [5, 12], "contributor": 5, "support": [6, 8, 10, 11, 12], "servic": [6, 11, 12, 15, 16, 19], "inform": [6, 12], "how": 6, "trigger": 6, "doe": [7, 12], "major": 7, "api": [7, 12, 15], "rework": 7, "still": [7, 16, 17], "consid": [7, 12], "deprec": 7, "futur": [7, 12], "integr": [7, 12], "more": [7, 17, 19], "easili": 7, "abil": 7, "standard": [7, 12], "built": 7, "mechan": 7, "achiev": 7, "desir": 7, "outcom": 7, "without": [7, 16], "need": [7, 12, 14, 16], "extend": [7, 12], "exist": [7, 12], "entir": [7, 12], "match": [7, 14], "structur": [7, 12], "packag": [7, 11, 14], "exasol": [7, 8, 11, 12, 14, 16, 17, 18, 19], "warn": 7, "issu": [7, 9, 12, 14], "evalu": 7, "cve": [7, 9], "42969": 7, "silenc": 7, "The": [7, 11, 12, 15, 19], "affect": 7, "our": [7, 9, 12], "itself": [7, 12], "nor": [7, 12], "pull": 7, "librari": [7, 9, 12, 15, 16], "check": [7, 9], "search": 7, "pytest": 7, "track": 7, "toolbox": [8, 10], "fix": [8, 10, 14], "invalid": 8, "command": 8, "develop": [8, 12], "guid": 8, "exampl": [8, 10, 14, 18], "basic": [8, 19], "user": [8, 9, 12, 17, 18], "setup": [8, 11, 19], "section": [8, 11, 19], "pre": 8, "commit": 8, "hook": 8, "attent": [9, 12, 16], "have": [9, 12, 19], "been": 9, "address": [9, 12], "henc": 9, "advis": 9, "own": 9, "tree": [9, 12], "scanner": 9, "trivi": 9, "intern": [9, 12], "lock": [9, 12], "0286": 9, "23931": 9, "restrict": [9, 12, 17], "typeguard": [9, 10], "configur": [10, 11, 19], "ssl": 10, "valid": 10, "overview": [10, 11, 19], "typo": 10, "60": 10, "lockfil": 10, "pin": [10, 12], "log": [11, 14], "bucketf": [11, 14, 16, 18], "logger": [11, 16], "referenc": 11, "via": [11, 12], "import": [11, 12, 16, 17, 18, 19], "get": [11, 16, 19], "getlogg": [11, 16], "For": [11, 12, 14, 19], "most": [11, 17], "suffici": [11, 16], "just": [11, 12], "root": [11, 12, 16], "order": [11, 12, 14, 17], "retriev": 11, "basicconfig": [11, 16, 17], "level": [11, 12, 16, 17], "info": [11, 16, 17], "view": 11, "directori": [11, 12], "pathlik": 11, "protocol": [11, 12], "describ": [11, 16], "design": 11, "document": [11, 19], "extract": 11, "bucketlik": 11, "factori": 11, "saa": 11, "propag": 11, "flag": 11, "relock": 11, "abatilo": 11, "action": [11, 12, 14], "v2": 11, "v3": 11, "python": [11, 12, 14, 15, 16], "v5": 11, "pyproject": 11, "toml": 11, "restructur": 11, "diffrent": 12, "context": 12, "outsid": 12, "db": 12, "within": 12, "common": 12, "task": 12, "pretti": 12, "tediou": 12, "due": [12, 19], "fact": [12, 19], "know": 12, "concept": 12, "so": 12, "simplifi": 12, "streamlin": 12, "frequent": 12, "uniform": 12, "accross": 12, "actual": 12, "behind": 12, "abstract": 12, "filesystem": 12, "part": 12, "share": 12, "its": 12, "howev": 12, "experi": 12, "present": 12, "sever": 12, "particularli": 12, "term": 12, "versatil": 12, "eas": 12, "across": 12, "differ": 12, "both": 12, "extern": 12, "databas": [12, 19], "defin": 12, "dual": 12, "mode": 12, "complex": [12, 19], "ineffici": 12, "especi": 12, "focus": 12, "manag": 12, "aim": 12, "ensur": [12, 16], "reflect": 12, "scope": 12, "These": 12, "relev": 12, "logic": 12, "conceal": 12, "end": 12, "contextu": 12, "face": 12, "difficulti": 12, "switch": 12, "between": 12, "versu": 12, "dure": 12, "lack": 12, "seamless": 12, "transit": 12, "hinder": 12, "product": 12, "additon": 12, "inher": 12, "understood": 12, "tradit": 12, "absenc": 12, "complic": 12, "make": 12, "what": 12, "cumbersom": 12, "time": 12, "consum": 12, "forc": 12, "lower": 12, "onli": 12, "counterintuit": 12, "There": 12, "notabl": 12, "underli": 12, "inconsist": 12, "pattern": [12, 16], "being": 12, "To": 12, "identifi": 12, "layer": 12, "approach": 12, "pathlib": 12, "modul": 12, "mirror": 12, "By": [12, 16], "adopt": 12, "similar": 12, "proven": 12, "decis": 12, "leverag": 12, "intuit": 12, "model": 12, "fit": 12, "requir": 12, "focu": 12, "essenti": [12, 16], "although": 12, "inspir": 12, "includ": [12, 16], "necessari": 12, "effect": 12, "diverg": 12, "area": 12, "tailor": 12, "enhanc": 12, "facilit": 12, "unifi": 12, "wai": 12, "regardless": 12, "meet": 12, "uniqu": 12, "practic": 12, "improv": 12, "effici": [12, 17], "primari": 12, "work": 12, "usag": [12, 17], "additionali": 12, "wan": 12, "compat": 12, "wide": 12, "possibl": 12, "implent": 12, "persist": 12, "process": [12, 14], "reduc": 12, "learn": 12, "curv": 12, "familiar": 12, "sure": 12, "behaviour": 12, "follow": [12, 16], "wherev": 12, "flexibl": [12, 17], "enough": 12, "accommod": 12, "divid": 12, "four": 12, "main": 12, "compon": 12, "central": 12, "opt": 12, "elimin": 12, "inherit": 12, "unnecessari": 12, "clear": 12, "specifi": 12, "least": 12, "one": [12, 17, 18, 19], "anoth": 12, "purpos": 12, "capabl": 12, "plan": 12, "prevent": 12, "travers": 12, "abov": 12, "emul": 12, "custom": 12, "behavior": 12, "natur": 12, "appropri": [12, 14], "Not": 12, "uniformli": 12, "applic": 12, "determin": 12, "uri": 12, "openli": 12, "compil": 12, "straightforward": 12, "align": 12, "some": [12, 16, 17, 18], "aspect": 12, "fulli": 12, "note": [12, 16], "feasibl": 12, "along": 12, "semant": 12, "signific": 12, "deviat": 12, "definit": 12, "choos": 12, "distinct": 12, "clariti": 12, "guidelin": 12, "embrac": 12, "convent": 12, "avoid": 12, "confus": 12, "terminologi": 12, "subsequ": 12, "subsect": 12, "snippet": 12, "intend": 12, "primarili": 12, "refer": [12, 16], "therefor": 12, "comment": 12, "docstr": 12, "sudo": 12, "adapt": 12, "def": 12, "final": 12, "exclud": 12, "drive": 12, "ani": 12, "suffix": 12, "parent": 12, "as_uri": 12, "reconstruct": 12, "is_dir": 12, "fals": 12, "kind": 12, "is_fil": 12, "regular": 12, "pathslik": 12, "yiel": 12, "notafileerror": 12, "filenotfounderror": 12, "If": 12, "write": [12, 16, 17, 19], "after": 12, "yield": 12, "alreadi": 12, "overwritten": 12, "writen": 12, "rm": 12, "otherwis": 12, "thrown": 12, "rmdir": 12, "recurs": 12, "stai": 12, "close": 12, "won": 12, "non": 12, "subdir": 12, "permissionerror": 12, "pathseg": 12, "call": 12, "equival": 12, "combin": 12, "each": [12, 19], "given": 12, "turn": 12, "walk": 12, "tupl": 12, "top": 12, "down": 12, "bottom": 12, "up": 12, "try": 12, "mimik": 12, "doc": [12, 16], "org": [12, 16], "html": [12, 16], "dirpath": 12, "dirnam": 12, "iterdir": 12, "noth": 12, "direct": 12, "children": 12, "overload": 12, "join": 12, "see": [12, 14], "__truediv__": 12, "member": 12, "indic": 12, "clearli": 12, "implment": 12, "bucketpath": 12, "serv": 12, "bf": 12, "bfss": 12, "accss": 12, "localpath": 12, "bfsl": 12, "encapsul": 12, "exactli": 12, "chang": [12, 14], "valu": 12, "other": [12, 16, 17], "potenti": 12, "self": 12, "rectrict": 12, "protect": 12, "stop": 12, "proect": 12, "whith": 12, "proection": 12, "throw": 12, "pathbuild": 12, "credentails_stor": 12, "init": 12, "besid": 12, "credentail_stor": 12, "yet": 12, "pleas": [12, 19], "bellow": [12, 19], "tbd": 12, "alias": 12, "pass": 12, "__call__": 12, "assembl": 12, "apropri": 12, "_determine_typ": 12, "facori": 12, "_create_udf_path": 12, "_create_bucket_path": 12, "_create_chroot_path": 12, "tar": 12, "gz": 12, "http_bucket_path": 12, "8888": 12, "https_bucket_path": 12, "chroot_path": 12, "sub": 12, "subsub": 12, "readonly_path": 12, "ro": 12, "as_udf_path": 12, "udfpath": 12, "git": 14, "com": 14, "run": [14, 19], "date": 14, "latest": [14, 15, 18], "tag": 14, "changes_0": 14, "md": 14, "push": 14, "further": 14, "detail": [14, 19], "cd": 14, "yml": 14, "number": 14, "x": 14, "y": 14, "z": 14, "origin": 14, "d": 14, "remot": 14, "lead": 14, "start": 14, "begin": [14, 16], "finish": 14, "redo": 14, "manual": 14, "scenario": 14, "publish": 14, "wa": 14, "got": 14, "interrupt": 14, "solut": 14, "pip": 15, "found": 15, "here": 15, "come": 16, "handi": 16, "localhost": [16, 17, 19], "6666": [16, 17, 19], "w": [16, 17, 19], "default_bucket": [16, 17, 19], "io": [16, 17], "65": [16, 17], "file1": [16, 17], "bin": [16, 17], "open": [16, 17, 18], "myfile1": 16, "txt": [16, 17, 19], "rb": [16, 17], "destin": [16, 17], "file_lik": [16, 17], "bytesio": [16, 17], "b": [16, 17, 19], "file2": [16, 17], "conent": 16, "text": [16, 17], "abcd": [16, 17], "_": [16, 17], "rang": [16, 17, 19], "10": [16, 17], "as_byt": [16, 17, 19], "as_fil": [16, 17], "myfil": [16, 17, 19], "my_utf8_str": [16, 17], "as_str": [16, 17], "utf8": [16, 17], "my_ascii_str": [16, 17], "ascii": [16, 17], "del": 16, "your": 16, "messag": 16, "those": 16, "correctli": 16, "proper": 16, "might": 16, "appear": 16, "expect": 16, "explicityli": 16, "bucketfs_logg": 16, "notset": 16, "11": 16, "lot": 16, "approri": 16, "setlevel": 16, "debug": 16, "multipl": 17, "request": 17, "myfile2": 17, "back": 17, "caller": 17, "recept": 17, "memori": 17, "prefer": 17, "tangibl": [17, 19], "as_hash": 17, "With": 18, "public": 18, "releas": 18, "want": 18, "artefact": 18, "repositori": 18, "exasol_bucketfs_utils_python": 18, "github_release_file_bucketfs_upload": 18, "githubreleasefilebucketfsupload": 18, "release_upload": 18, "file_to_download_nam": 18, "github_us": 18, "repository_nam": 18, "release_nam": 18, "path_inside_bucket": 18, "port": 18, "straight": 19, "forward": 19, "fairli": 19, "worker": 19, "cluster": 19, "node": 19, "hold": 19, "tri": 19, "illustr": 19, "manner": 19, "look": 19, "advanc": 19, "artifact": 19}, "objects": {"exasol.bucketfs": [[0, 0, 1, "", "Bucket"], [0, 3, 1, "", "BucketFsError"], [0, 0, 1, "", "MappedBucket"], [0, 4, 1, "", "as_bytes"], [0, 4, 1, "", "as_file"], [0, 4, 1, "", "as_hash"], [0, 4, 1, "", "as_string"]], "exasol.bucketfs.Bucket": [[0, 1, 1, "", "__init__"], [0, 1, 1, "", "delete"], [0, 1, 1, "", "download"], [0, 2, 1, "", "files"], [0, 2, 1, "", "name"], [0, 2, 1, "", "udf_path"], [0, 1, 1, "", "upload"]], "exasol.bucketfs.MappedBucket": [[0, 1, 1, "", "__init__"], [0, 2, 1, "", "chunk_size"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:exception", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "exception", "Python exception"], "4": ["py", "function", "Python function"]}, "titleterms": {"api": 0, "refer": [0, 17], "exasol": [0, 15], "bucketf": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 17, 19], "servic": [0, 17], "bucket": [0, 12, 16, 17], "as_byt": 0, "as_str": 0, "as_fil": 0, "as_hash": 0, "mappedbucket": [0, 16], "bucketfserror": 0, "chang": [1, 8], "util": [2, 3, 4, 12], "python": [2, 3, 4, 5, 6, 7, 8, 9, 10], "0": [2, 3, 4, 5, 6, 7, 8, 9, 10], "1": 2, "releas": [2, 3, 4, 5, 6, 7, 8, 9, 10, 14], "2022": [2, 3, 4, 5, 6, 7, 8], "01": 2, "18": 2, "summari": [2, 3, 4, 5, 6, 7, 8, 9], "featur": [2, 3, 4, 5, 6, 7, 10, 15], "enhanc": [2, 3, 4, 5, 6, 7], "bug": [2, 3, 4, 5, 11], "fix": [2, 3, 4, 5, 11], "document": [2, 4, 5, 6, 7, 8, 10, 12, 13, 15], "refactor": [2, 3, 4, 5, 7], "secur": [2, 3, 7, 9], "2": 3, "04": 3, "29": 3, "3": 4, "07": 4, "20": 4, "4": 5, "09": 5, "28": 5, "5": 6, "10": 6, "12": [6, 8], "6": 7, "11": 7, "7": 8, "22": 8, "8": 9, "2023": 9, "03": 9, "21": 9, "depend": [9, 10, 14], "9": 10, "2024": 10, "02": 10, "16": 10, "intern": [10, 11], "unreleas": 11, "ad": 11, "design": [12, 13], "path": 12, "": [12, 14, 17], "problem": 12, "descript": 12, "delimit": 12, "challeng": 12, "current": 12, "interact": 12, "propos": 12, "solut": 12, "desgin": 12, "goal": 12, "architectur": 12, "overview": 12, "interfac": 12, "backend": 12, "extens": 12, "chroot": 12, "readonli": 12, "creation": 12, "detail": 12, "pathlik": 12, "concret": 12, "modifi": 12, "factori": 12, "builder": 12, "exampl": 12, "develop": 14, "guid": [14, 19], "set": 14, "up": [14, 19], "workspac": 14, "checkout": 14, "project": 14, "instal": [14, 15], "setup": 14, "pre": 14, "commit": 14, "hook": 14, "creat": 14, "prerequisit": [14, 15], "trigger": 14, "what": 14, "do": 14, "fail": 14, "The": [14, 16, 17], "dure": 14, "check": 14, "One": 14, "step": 14, "partial": 14, "advanc": 16, "list": [16, 17], "file": [16, 17], "upload": [16, 17], "download": [16, 17], "from": [16, 17], "delet": [16, 17], "configur": [16, 17], "log": [16, 17], "basic": 17, "get": 17, "class": 17, "avail": 17, "convert": 17, "github": 18, "artifact": 18, "user": 19, "quickstart": 19, "follow": 19}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx.ext.intersphinx": 1, "sphinx": 57}, "alltitles": {"\ud83e\uddf0 API Reference": [[0, "api-reference"]], "exasol.bucketfs.Service": [[0, "exasol-bucketfs-service"]], "exasol.bucketfs.Bucket": [[0, "exasol-bucketfs-bucket"]], "exasol.bucketfs.as_bytes": [[0, "exasol-bucketfs-as-bytes"]], "exasol.bucketfs.as_string": [[0, "exasol-bucketfs-as-string"]], "exasol.bucketfs.as_file": [[0, "exasol-bucketfs-as-file"]], "exasol.bucketfs.as_hash": [[0, "exasol-bucketfs-as-hash"]], "exasol.bucketfs.MappedBucket": [[0, "exasol-bucketfs-mappedbucket"]], "exasol.bucketfs.BucketFsError": [[0, "exasol-bucketfs-bucketfserror"]], "\ud83d\udcdd Changes": [[1, "changes"]], "BucketFs Utils Python 0.1.0, released 2022-01-18": [[2, "bucketfs-utils-python-0-1-0-released-2022-01-18"]], "Summary": [[2, "summary"], [3, "summary"], [4, "summary"], [5, "summary"], [6, "summary"], [7, "summary"], [8, "summary"], [9, "summary"]], "Features / Enhancements": [[2, "features-enhancements"], [3, "features-enhancements"], [4, "features-enhancements"], [5, "features-enhancements"], [6, "features-enhancements"], [7, "features-enhancements"]], "Bug Fixes": [[2, "bug-fixes"], [3, "bug-fixes"], [4, "bug-fixes"], [5, "bug-fixes"]], "Documentation": [[2, "documentation"], [4, "documentation"], [5, "documentation"], [6, "documentation"], [7, "documentation"], [8, "documentation"], [10, "documentation"]], "Refactoring": [[2, "refactoring"], [3, "refactoring"], [4, "refactoring"], [5, "refactoring"], [7, "refactoring"]], "Security": [[2, "security"], [3, "security"], [7, "security"], [9, "security"]], "BucketFs Utils Python 0.2.0, released 2022-04-29": [[3, "bucketfs-utils-python-0-2-0-released-2022-04-29"]], "BucketFs Utils Python 0.3.0, released 2022-07-20": [[4, "bucketfs-utils-python-0-3-0-released-2022-07-20"]], "BucketFs Python 0.4.0, released 2022-09-28": [[5, "bucketfs-python-0-4-0-released-2022-09-28"]], "BucketFs Python 0.5.0, released 2022-10-12": [[6, "bucketfs-python-0-5-0-released-2022-10-12"]], "BucketFs Python 0.6.0, released 2022-11-11": [[7, "bucketfs-python-0-6-0-released-2022-11-11"]], "BucketFs Python 0.7.0, released 2022-12-22": [[8, "bucketfs-python-0-7-0-released-2022-12-22"]], "Changes": [[8, "changes"]], "BucketFs Python 0.8.0, released 2023-03-21": [[9, "bucketfs-python-0-8-0-released-2023-03-21"]], "Dependencies": [[9, "dependencies"], [10, "dependencies"]], "BucketFs Python 0.9.0, released 2024-02-16": [[10, "bucketfs-python-0-9-0-released-2024-02-16"]], "Feature": [[10, "feature"]], "Internal": [[10, "internal"], [11, "internal"]], "Unreleased": [[11, "unreleased"]], "Added": [[11, "added"]], "Bug Fixing": [[11, "bug-fixing"]], "Design Document Bucket Path(s)": [[12, "design-document-bucket-path-s"]], "Problem Description": [[12, "problem-description"]], "Delimitation": [[12, "delimitation"]], "Challenges with Current BucketFS Interactions": [[12, "challenges-with-current-bucketfs-interactions"]], "Proposed Solution": [[12, "proposed-solution"]], "Desgin": [[12, "desgin"]], "Design Goals": [[12, "design-goals"]], "Architecture": [[12, "architecture"]], "Overview": [[12, "overview"]], "Interface": [[12, "interface"]], "Backends": [[12, "backends"]], "Extensions": [[12, "extensions"]], "Chroot": [[12, "chroot"]], "ReadOnly": [[12, "readonly"]], "Path Creation": [[12, "path-creation"]], "Detailed Design": [[12, "detailed-design"]], "Pathlike": [[12, "pathlike"]], "Concrete Paths (Backends)": [[12, "concrete-paths-backends"]], "Modifiers (Extensions)": [[12, "modifiers-extensions"]], "Factory & Builders": [[12, "factory-builders"]], "Examples": [[12, "examples"]], "Utilities": [[12, "utilities"]], "\ud83d\udcd1 Design Documents": [[13, "design-documents"]], "\ud83d\udee0 Developer Guide": [[14, "developer-guide"]], "Setting up the workspace": [[14, "setting-up-the-workspace"]], "Checkout the Project": [[14, "checkout-the-project"]], "Install project dependencies": [[14, "install-project-dependencies"]], "Setup pre-commit hook(s)": [[14, "setup-pre-commit-hook-s"]], "Creating a Release": [[14, "creating-a-release"]], "Prerequisites": [[14, "prerequisites"]], "Triggering the Release": [[14, "triggering-the-release"]], "What to do if the release failed?": [[14, "what-to-do-if-the-release-failed"]], "The release failed during pre-release checks": [[14, "the-release-failed-during-pre-release-checks"]], "One of the release steps failed (Partial Release)": [[14, "one-of-the-release-steps-failed-partial-release"]], "Exasol Bucketfs": [[15, "exasol-bucketfs"]], "\ud83d\ude80 Features": [[15, "features"]], "\ud83d\udd0c\ufe0f Prerequisites": [[15, "prerequisites"]], "\ud83d\udcbe Installation": [[15, "installation"]], "\ud83d\udcda Documentation": [[15, "documentation"]], "Advanced": [[16, "advanced"]], "The MappedBucket": [[16, "the-mappedbucket"]], "List files in a Bucket": [[16, "list-files-in-a-bucket"], [17, "list-files-in-a-bucket"]], "Upload files to a Bucket": [[16, "upload-files-to-a-bucket"], [17, "upload-files-to-a-bucket"]], "Download files from a Bucket": [[16, "download-files-from-a-bucket"], [17, "download-files-from-a-bucket"]], "Delete files from Bucket": [[16, "delete-files-from-bucket"], [17, "delete-files-from-bucket"]], "Configure logging": [[16, "configure-logging"], [17, "configure-logging"]], "Basic\u2019s": [[17, "basic-s"]], "The Bucketfs Service": [[17, "the-bucketfs-service"]], "List buckets": [[17, "list-buckets"]], "Get a Bucket reference": [[17, "get-a-bucket-reference"]], "Bucket class": [[17, "bucket-class"]], "Available Converters": [[17, "available-converters"]], "Github Artifacts": [[18, "github-artifacts"]], "\ud83d\udc64 User Guide": [[19, "user-guide"]], "Bucketfs": [[19, "bucketfs"]], "Quickstart": [[19, "quickstart"]], "Follow Up": [[19, "follow-up"]]}, "indexentries": {"bucket (class in exasol.bucketfs)": [[0, "exasol.bucketfs.Bucket"]], "bucketfserror": [[0, "exasol.bucketfs.BucketFsError"]], "mappedbucket (class in exasol.bucketfs)": [[0, "exasol.bucketfs.MappedBucket"]], "__init__() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.__init__"]], "__init__() (exasol.bucketfs.mappedbucket method)": [[0, "exasol.bucketfs.MappedBucket.__init__"]], "as_bytes() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_bytes"]], "as_file() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_file"]], "as_hash() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_hash"]], "as_string() (in module exasol.bucketfs)": [[0, "exasol.bucketfs.as_string"]], "chunk_size (exasol.bucketfs.mappedbucket property)": [[0, "exasol.bucketfs.MappedBucket.chunk_size"]], "delete() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.delete"]], "download() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.download"]], "files (exasol.bucketfs.bucket property)": [[0, "exasol.bucketfs.Bucket.files"]], "name (exasol.bucketfs.bucket property)": [[0, "exasol.bucketfs.Bucket.name"]], "udf_path (exasol.bucketfs.bucket property)": [[0, "exasol.bucketfs.Bucket.udf_path"]], "upload() (exasol.bucketfs.bucket method)": [[0, "exasol.bucketfs.Bucket.upload"]]}}) \ No newline at end of file