Files
param-hub-python/modules/routes/__pycache__/api_gpus.cpython-310.pyc
T

54 lines
6.3 KiB
Plaintext
Raw Normal View History

2026-07-10 23:59:53 +08:00
o
n1Qj4ã@s,dZddlZddlZddlmZddlmZmZmZmZddl m
2026-07-10 23:59:53 +08:00
Z
ddl m Z m
Z
2026-07-10 23:59:53 +08:00
mZedeƒZdd „Zd
d Ze d ¡d
dƒZe d¡ddƒZejd dgdddƒZejddgdddƒZejddgdddƒZejddgdddƒZejddgdd d!„ƒZejd"ddgdd#d$„ƒZdS)%z
GPU CRUD API
éN)Údatetime)Ú BlueprintÚrequestÚjsonifyÚResponse)Ú GPUS_FILE)Ú load_dataÚ save_dataÚparse_date_to_timestampÚapi_gpuscCs$z ddl}t|ddƒWSYdS)NrÚREQUIRE_REVIEWF)ÚappÚgetattr)Ú
app_module©rú1works/param-hub-python/modules/routes/api_gpus.pyÚis_review_requireds
2026-07-10 23:59:53 +08:00
rcCs&| |¡}|dur|dvrdSdS|S)N)Ú memory_gbÚ
cuda_coresÚ tensor_coresÚviewsrÚ©Úget)ÚkeyÚvalrrrÚ_safe_sort_keys
rz /api/gpuscttƒ}tj dd¡dk}|rdd|Dƒ}tj dd¡ ¡ ¡ˆr,‡fdd|Dƒ}tj dd ¡tj d
d ¡d k}ˆd krLt|d d
d}t|ƒSˆdvr[t|fdd
2026-07-10 23:59:53 +08:00
|d}t|ƒS)allÚ0cSsg|]
}| dd¡r|qS)ÚvisibleTr©Ú.0ÚgrrrÚ
<listcomp>"ózapi_gpus.<locals>.<listcomp>Úqrcs8g|]}ˆ| dd¡ ¡vsˆ| dd¡ ¡vr|qS)ÚnamerÚ manufacturer)rÚlowerr!)Úkeywordrrr$%sÿÚsortÚdefaultÚorderÚdesccSs4| dd¡ t| dd¡ƒpt| dd¡ƒpd fS)NÚ is_pinnedFÚ publish_daterÚ
created_atr)rr
©rrrrÚ<lambda>*s ÿÿþzapi_gpus.<locals>.<lambda>)r)r'rÚ price_usdr1r0rÚ
updated_atÚ release_yearcs
t|ˆƒS)N)rr2)Úsort_byrrr31s
)rÚreverse) rrrÚargsrÚstripr)Úsortedr)ÚgpusÚ hide_hiddenr8r)r*r7rr sýz/api/gpus/<gpu_id>cs<ttƒ}tfdd|Dƒdƒ}|stddiƒdfSt|ƒS)Nc3ó |] }|dˆkr|VqdS©ÚidNrr!©Úgpu_idrrÚ <genexpr>8óz!api_gpu_detail.<locals>.<genexpr>Úerrorú
GPU not foundé”)rrÚnextr©rBr<ÚgpurrArÚapi_gpu_detail5s
2026-07-10 23:59:53 +08:00
rKÚPOST)ÚmethodscCst ¡}tƒr<ddlm}ddlm}|d|dd}| dd¡}|d d
|d d d
|dddœdtdd|ddœƒSt t
2026-07-10 23:59:53 +08:00
ƒ}t   ¡j
dd|d<t ¡ d¡|d<| dd¡|d<| dd¡|d<| dd¡|d<| dd¡|d<| |¡tt
|ƒt|ƒS)Nr)Úsubmit_for_review)Úcreate_notificationr<Úweb)Úsourcer'u未知u新产å“待审核u有新的GPU "u
"待审核ÚwarningÚreviewr@)Ú review_idÚcategory)ÚtitleÚmessageÚlevelrUÚdataTu*å·²æäº¤å®¡æ ¸ï¼Œè¯·ç­‰å¾…管ç†å‘˜ç¡®è®¤)ÚsuccessrWrTé ú%Y-%m-%d %H:%M:%Sr1r r0rrr/F)rÚget_jsonrÚmodules.routes.api_reviewsrNÚ modules.routes.api_notificationsrOrrrrÚuuidÚuuid4ÚhexrÚnowÚstrftimeÚappendr )rYrNrOrSÚ product_namer<rrrÚapi_create_gpu>s0   
 û
2026-07-11 00:34:47 +08:00

rgÚPUTcsjt ¡}ttƒ}tfdd|Dƒdƒ}|stddiƒdfS| |¡t ¡  d¡|d<t
t|ƒt|ƒS)Nc3r>r?rr!rArrrCbrDz!api_update_gpu.<locals>.<genexpr>rErFrGr\r5) rr]rrrHrÚupdaterrcrdr )rBrYr<rJrrArÚapi_update_gpu^s
2026-07-11 00:34:47 +08:00

rjÚDELETEcs0ttƒ}fdd|Dƒ}tt|ƒtddiƒS)Ncsg|]
}|dˆkr|qS)r@rr!rArrr$nr%z"api_delete_gpu.<locals>.<listcomp>rZT)rrr r)rBr<rrArÚapi_delete_gpuks
 rlz/api/gpus/<gpu_id>/visiblecsbttƒ}tfdd|Dƒdƒ}|stddiƒdfS| dd¡ |d<tt|ƒtd|ddœƒS) Nc3r>r?rr!rArrrCvrDz)api_toggle_gpu_visible.<locals>.<genexpr>rErFrGr T)rZr )rrrHrrr rIrrArÚapi_toggle_gpu_visibless
2026-07-11 00:34:47 +08:00
rmz/api/gpus/exportÚGETc
Cz0ttƒ}d|t|ƒt ¡ d¡ddœ}tj|ddd}t|dd d
t ¡ d ¡d id
}|WSt yL}zt
dt |ƒiƒdfWYd}~Sd}~ww)u导出所有GPUæ•°æ®r<r\z1.0)ÚtypeÚitemsÚcountÚ export_timeÚversionFé)Ú ensure_asciiÚindentzapplication/jsonzContent-Dispositionz!attachment; filename=gpus-export-z %Y%m%d%H%M%Sz.json)ÚmimetypeÚheadersrEéôN) rrÚlenrrcrdÚjsonÚdumpsrÚ ExceptionrÚstr)r<Ú export_dataÚjson_strÚresponseÚerrrÚapi_export_gpus€s& ûý ÿrƒú/api/gpus/importc
s8ztjdkrtddddidœƒWSt ¡}|rd|vr$tdd iƒd
fWStj dd ¡}ttƒ}|d}d d
2026-07-10 23:59:53 +08:00
d
gdœ}|D]9‰tfdd|Dƒdƒ}|rh|dkr^|  ˆ¡|dd7<q<|d 
ˆd¡q<| 
2026-07-10 23:59:53 +08:00
ˆ¡|dd7<q<t t|ƒt|ƒWSt y}ztdt
2026-07-11 00:34:47 +08:00
|ƒiƒdfWYd}~Sd}~ww)u导入GPUæ•°æ®rnr„rLÚmodeumerge 或 replace)ÚendpointÚmethodÚparamsrprEu缺少 items 字段iÚmergeTr)rZÚimportedÚupdatedÚskippedc3s$|]
}|dˆdkr|VqdSr?rr!©ÚitemrrrC©s€"z"api_import_gpus.<locals>.<genexpr>NÚreplacerér@ry)rr‡rr]r9rrrrHrirer r}r~)Ú import_datar…r<Úimported_itemsÚresultÚexistingrrrrÚapi_import_gpus—s2