@@ -298,88 +298,56 @@ <h1 id="modules-oras-decorator--page-root">
298
298
< span class ="n "> __license__</ span > < span class ="o "> =</ span > < span class ="s2 "> "Apache-2.0"</ span >
299
299
300
300
< span class ="kn "> import</ span > < span class ="nn "> time</ span >
301
- < span class ="kn "> from</ span > < span class ="nn "> functools</ span > < span class ="kn "> import</ span > < span class ="n "> partial </ span > < span class =" p " > , </ span > < span class =" n " > update_wrapper </ span >
301
+ < span class ="kn "> from</ span > < span class ="nn "> functools</ span > < span class ="kn "> import</ span > < span class ="n "> wraps </ span >
302
302
303
303
< span class ="kn "> import</ span > < span class ="nn "> oras.auth</ span >
304
304
< span class ="kn "> from</ span > < span class ="nn "> oras.logger</ span > < span class ="kn "> import</ span > < span class ="n "> logger</ span >
305
305
306
306
307
- < div class ="viewcode-block " id ="Decorator ">
308
- < a class ="viewcode-back " href ="../../source/oras.html#oras.decorator.Decorator "> [docs]</ a >
309
- < span class ="k "> class</ span > < span class ="nc "> Decorator</ span > < span class ="p "> :</ span >
310
- < span class ="w "> </ span > < span class ="sd "> """</ span >
311
- < span class ="sd "> Shared parent decorator class</ span >
312
- < span class ="sd "> """</ span >
313
-
314
- < span class ="k "> def</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> func</ span > < span class ="p "> ):</ span >
315
- < span class ="n "> update_wrapper</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> func</ span > < span class ="p "> )</ span >
316
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> func</ span > < span class ="o "> =</ span > < span class ="n "> func</ span >
317
-
318
- < span class ="k "> def</ span > < span class ="fm "> __get__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> obj</ span > < span class ="p "> ,</ span > < span class ="n "> objtype</ span > < span class ="p "> ):</ span >
319
- < span class ="k "> return</ span > < span class ="n "> partial</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="fm "> __call__</ span > < span class ="p "> ,</ span > < span class ="n "> obj</ span > < span class ="p "> )</ span > </ div >
320
-
321
-
322
-
323
307
< div class ="viewcode-block " id ="ensure_container ">
324
308
< a class ="viewcode-back " href ="../../source/oras.html#oras.decorator.ensure_container "> [docs]</ a >
325
- < span class ="k "> class </ span > < span class ="nc "> ensure_container</ span > < span class ="p "> (</ span > < span class ="n "> Decorator </ span > < span class ="p "> ):</ span >
309
+ < span class ="k "> def </ span > < span class ="nf "> ensure_container</ span > < span class ="p "> (</ span > < span class ="n "> func </ span > < span class ="p "> ):</ span >
326
310
< span class ="w "> </ span > < span class ="sd "> """</ span >
327
311
< span class ="sd "> Ensure the first argument is a container, and not a string.</ span >
328
312
< span class ="sd "> """</ span >
329
313
330
- < span class ="k "> def</ span > < span class ="fm "> __call__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> ):</ span >
314
+ < span class ="nd "> @wraps</ span > < span class ="p "> (</ span > < span class ="n "> func</ span > < span class ="p "> )</ span >
315
+ < span class ="k "> def</ span > < span class ="nf "> wrapper</ span > < span class ="p "> (</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> ):</ span >
331
316
< span class ="k "> if</ span > < span class ="s2 "> "container"</ span > < span class ="ow "> in</ span > < span class ="n "> kwargs</ span > < span class ="p "> :</ span >
332
317
< span class ="n "> kwargs</ span > < span class ="p "> [</ span > < span class ="s2 "> "container"</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="bp "> cls</ span > < span class ="o "> .</ span > < span class ="n "> get_container</ span > < span class ="p "> (</ span > < span class ="n "> kwargs</ span > < span class ="p "> [</ span > < span class ="s2 "> "container"</ span > < span class ="p "> ])</ span >
333
318
< span class ="k "> elif</ span > < span class ="n "> args</ span > < span class ="p "> :</ span >
334
319
< span class ="n "> container</ span > < span class ="o "> =</ span > < span class ="bp "> cls</ span > < span class ="o "> .</ span > < span class ="n "> get_container</ span > < span class ="p "> (</ span > < span class ="n "> args</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ])</ span >
335
320
< span class ="n "> args</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="n "> container</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> [</ span > < span class ="mi "> 1</ span > < span class ="p "> :])</ span >
336
- < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span > </ div >
337
-
338
-
339
-
340
- < div class ="viewcode-block " id ="classretry ">
341
- < a class ="viewcode-back " href ="../../source/oras.html#oras.decorator.classretry "> [docs]</ a >
342
- < span class ="k "> class</ span > < span class ="nc "> classretry</ span > < span class ="p "> (</ span > < span class ="n "> Decorator</ span > < span class ="p "> ):</ span >
343
- < span class ="w "> </ span > < span class ="sd "> """</ span >
344
- < span class ="sd "> Retry a function that is part of a class</ span >
345
- < span class ="sd "> """</ span >
346
-
347
- < span class ="k "> def</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> func</ span > < span class ="p "> ,</ span > < span class ="n "> attempts</ span > < span class ="o "> =</ span > < span class ="mi "> 5</ span > < span class ="p "> ,</ span > < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="mi "> 2</ span > < span class ="p "> ):</ span >
348
- < span class ="nb "> super</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="n "> func</ span > < span class ="p "> )</ span >
349
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> attempts</ span > < span class ="o "> =</ span > < span class ="n "> attempts</ span >
350
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="n "> timeout</ span >
321
+ < span class ="k "> return</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span >
351
322
352
- < span class ="k "> def</ span > < span class ="fm "> __call__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> ):</ span >
353
- < span class ="n "> attempt</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span >
354
- < span class ="n "> attempts</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> attempts</ span >
355
- < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> timeout</ span >
356
- < span class ="k "> while</ span > < span class ="n "> attempt</ span > < span class ="o "> <</ span > < span class ="n "> attempts</ span > < span class ="p "> :</ span >
357
- < span class ="k "> try</ span > < span class ="p "> :</ span >
358
- < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span >
359
- < span class ="k "> except</ span > < span class ="n "> oras</ span > < span class ="o "> .</ span > < span class ="n "> auth</ span > < span class ="o "> .</ span > < span class ="n "> AuthenticationException</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
360
- < span class ="k "> raise</ span > < span class ="n "> e</ span >
361
- < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
362
- < span class ="n "> sleep</ span > < span class ="o "> =</ span > < span class ="n "> timeout</ span > < span class ="o "> +</ span > < span class ="mi "> 3</ span > < span class ="o "> **</ span > < span class ="n "> attempt</ span >
363
- < span class ="n "> logger</ span > < span class ="o "> .</ span > < span class ="n "> info</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "Retrying in </ span > < span class ="si "> {</ span > < span class ="n "> sleep</ span > < span class ="si "> }</ span > < span class ="s2 "> seconds - error: </ span > < span class ="si "> {</ span > < span class ="n "> e</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span >
364
- < span class ="n "> time</ span > < span class ="o "> .</ span > < span class ="n "> sleep</ span > < span class ="p "> (</ span > < span class ="n "> sleep</ span > < span class ="p "> )</ span >
365
- < span class ="n "> attempt</ span > < span class ="o "> +=</ span > < span class ="mi "> 1</ span >
366
- < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="bp "> cls</ span > < span class ="p "> ,</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span > </ div >
323
+ < span class ="k "> return</ span > < span class ="n "> wrapper</ span > </ div >
367
324
368
325
369
326
370
327
< div class ="viewcode-block " id ="retry ">
371
328
< a class ="viewcode-back " href ="../../source/oras.html#oras.decorator.retry "> [docs]</ a >
372
- < span class ="k "> def</ span > < span class ="nf "> retry</ span > < span class ="p "> (</ span > < span class ="n "> attempts</ span > < span class ="p "> ,</ span > < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="mi "> 2</ span > < span class ="p "> ):</ span >
329
+ < span class ="k "> def</ span > < span class ="nf "> retry</ span > < span class ="p "> (</ span > < span class ="n "> attempts</ span > < span class ="o " > = </ span > < span class =" mi " > 5 </ span > < span class =" p "> ,</ span > < span class ="n "> timeout</ span > < span class ="o "> =</ span > < span class ="mi "> 2</ span > < span class ="p "> ):</ span >
373
330
< span class ="w "> </ span > < span class ="sd "> """</ span >
374
331
< span class ="sd "> A simple retry decorator</ span >
375
332
< span class ="sd "> """</ span >
376
333
377
334
< span class ="k "> def</ span > < span class ="nf "> decorator</ span > < span class ="p "> (</ span > < span class ="n "> func</ span > < span class ="p "> ):</ span >
335
+ < span class ="nd "> @wraps</ span > < span class ="p "> (</ span > < span class ="n "> func</ span > < span class ="p "> )</ span >
378
336
< span class ="k "> def</ span > < span class ="nf "> inner</ span > < span class ="p "> (</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> ):</ span >
379
337
< span class ="n "> attempt</ span > < span class ="o "> =</ span > < span class ="mi "> 0</ span >
380
338
< span class ="k "> while</ span > < span class ="n "> attempt</ span > < span class ="o "> <</ span > < span class ="n "> attempts</ span > < span class ="p "> :</ span >
381
339
< span class ="k "> try</ span > < span class ="p "> :</ span >
382
- < span class ="k "> return</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span >
340
+ < span class ="n "> res</ span > < span class ="o "> =</ span > < span class ="n "> func</ span > < span class ="p "> (</ span > < span class ="o "> *</ span > < span class ="n "> args</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span >
341
+ < span class ="k "> if</ span > < span class ="n "> res</ span > < span class ="o "> .</ span > < span class ="n "> status_code</ span > < span class ="o "> ==</ span > < span class ="mi "> 500</ span > < span class ="p "> :</ span >
342
+ < span class ="k "> try</ span > < span class ="p "> :</ span >
343
+ < span class ="n "> msg</ span > < span class ="o "> =</ span > < span class ="n "> res</ span > < span class ="o "> .</ span > < span class ="n "> json</ span > < span class ="p "> ()</ span >
344
+ < span class ="k "> for</ span > < span class ="n "> error</ span > < span class ="ow "> in</ span > < span class ="n "> msg</ span > < span class ="o "> .</ span > < span class ="n "> get</ span > < span class ="p "> (</ span > < span class ="s2 "> "errors"</ span > < span class ="p "> ,</ span > < span class ="p "> []):</ span >
345
+ < span class ="k "> if</ span > < span class ="nb "> isinstance</ span > < span class ="p "> (</ span > < span class ="n "> error</ span > < span class ="p "> ,</ span > < span class ="nb "> dict</ span > < span class ="p "> )</ span > < span class ="ow "> and</ span > < span class ="s2 "> "message"</ span > < span class ="ow "> in</ span > < span class ="n "> error</ span > < span class ="p "> :</ span >
346
+ < span class ="n "> logger</ span > < span class ="o "> .</ span > < span class ="n "> error</ span > < span class ="p "> (</ span > < span class ="n "> error</ span > < span class ="p "> [</ span > < span class ="s2 "> "message"</ span > < span class ="p "> ])</ span >
347
+ < span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="p "> :</ span >
348
+ < span class ="k "> pass</ span >
349
+ < span class ="k "> raise</ span > < span class ="ne "> ValueError</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "Issue with </ span > < span class ="si "> {</ span > < span class ="n "> res</ span > < span class ="o "> .</ span > < span class ="n "> request</ span > < span class ="o "> .</ span > < span class ="n "> url</ span > < span class ="si "> }</ span > < span class ="s2 "> : </ span > < span class ="si "> {</ span > < span class ="n "> res</ span > < span class ="o "> .</ span > < span class ="n "> reason</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span >
350
+ < span class ="k "> return</ span > < span class ="n "> res</ span >
383
351
< span class ="k "> except</ span > < span class ="n "> oras</ span > < span class ="o "> .</ span > < span class ="n "> auth</ span > < span class ="o "> .</ span > < span class ="n "> AuthenticationException</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
384
352
< span class ="k "> raise</ span > < span class ="n "> e</ span >
385
353
< span class ="k "> except</ span > < span class ="ne "> Exception</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
@@ -412,7 +380,7 @@ <h1 id="modules-oras-decorator--page-root">
412
380
© Copyright 2023, Oras Python Developers.
413
381
</ div >
414
382
Last updated on
415
- Oct 21 , 2024.
383
+ Nov 13 , 2024.
416
384
< br />
417
385
Created using
418
386
< a href ="http://www.sphinx-doc.org/ ">
0 commit comments