Files
controller-wisetopdataserver/python/biopro/file/__pycache__/util.cpython-37.opt-2.pyc
T

131 lines
17 KiB
Plaintext
Raw Normal View History

2021-12-20 14:52:55 +08:00
B
2021-12-22 14:29:56 +08:00
ò0Àa¾Tã@ddlmZddlmZddlmZddlmZddlmZm Z m
2021-12-20 14:52:55 +08:00
Z
m Z ddl m
Z
ddlmZmZddlmZdd lmZmZdd
lmZdd lmZdd lZd
ZdZdZeeefeedœddZeeefedœddZ eeefedœddZ!eeefe edœddZ"eeefedœddZ#eeefedœddZ$eddeeee
2021-12-22 14:29:56 +08:00
d fd!dœd"d#„ƒZ%e&ed$œd%d&„Z'Gd'd „d eƒZ(Gd(d)„d)e(ƒZ)Gd*d+„d+e(ƒZ*Gd,d-„d-e*ƒZ+Gd.d!„d!e(ƒZ,d S)/é)Údatetime)Ú lru_cache)ÚPath)Ú
2021-12-20 14:52:55 +08:00
disk_usage)ÚUnionÚOptionalÚDictÚList)Ú Partition)ÚRecordingMetaFileÚ
RecordingFile)Ú datetime_str)Ú JSON_OBJECTÚ
JsonSerialize)ÚTable)ÚtimeNFz.trashÚexternal)Ú target_pathÚ from_pathÚreturncCs:t|tƒrt|ƒ}y| |¡dStk
r4dSXdS)NTF)Ú
isinstanceÚstrrÚ relative_toÚ
ValueError)rr©rú5/home/pi/wisetopdataserver/python/biopro/file/util.pyÚpath_start_withs

r)ÚpathrcCst|tƒrt|ƒ}t|jkS)N)rrrÚTRASH_DIRECTORYÚparts)rrrrÚ
path_in_trash s
r cCs:t|tƒrt|ƒ}yt|jdkStk
r4dSXdS)NrF)rrrÚEXTERNAL_STORAGE_DIRECTORYrÚ
IndexError)rrrrÚpath_in_external's 
r#cCslt|tƒrt|ƒ}t|jkr dSt|jƒ}y| t¡}Wntk
rLYnX||dd=t|ŽSdSdS))rrrrrÚlistÚindexr)rrÚirrrÚget_trashed_root1s


r(cCsnt|tƒrt|ƒ}| ¡r|S|j}xDtt|ƒdddƒD],}t|ƒ}| |t ¡t|Ž}| ¡r:|Sq:W|S)Nr$éÿÿÿÿ)
rrrÚexistsrÚrangeÚlenr%Úinsertr)rrr'ÚtmpÚprrrÚresolve_path_if_trashedIs
 r0cCsZt|tƒrt|ƒ}t|jkr |St|jƒ}y| t¡Wntk
rLYnXt|ŽSdS)N)rrrrrr%Úremover)rrrrrÚresolve_path_un_trashed^s


r2é )ÚmaxsizeÚBaseInfoÚ
PartitionInfocCt|tƒr|St|tƒr:|j}|dkrdtdt|jƒƒn*t|tƒrJ|}nt|tƒr\|j}nt|ƒ}t|tƒr¦|}|  d¡rˆt 
|¡}n
t  |¡}|dkr¦td|ƒt|ƒS)NzPartition not mount : z/dev/) rr6ÚRootInfoÚmount_partitionÚ RuntimeErrorrÚfile_path_originr
r5Ú
startswithZget_block_deviceÚget_mount_point)rr/rrrÚ_path_partitionps&





 
 r=)Ú byte_sizercC|dkr dSd}t|ƒ}|dkrh|d}d}|dkrh|d}d}|dkrh|d}d}|dkrh|d}d}|d kr|d
||fSd ||fSdS) NrZ0BÚBiZKBZMBZGBZTBédz%.1f%sz%.2f%s)Úfloat)r>ÚvrrrÚ filesize_strs& rDc@sheZdZdZdZdZdZdZdZdZ e
e
dœd d
Z e e
d œd d
ƒZ
e ed œddƒZe ed œddƒZe e
d œddƒZe ed œddƒZe ed œddƒZe ed œddƒZe ed œddƒZe ed œddƒZe ed œddƒZe ed œd d!„ƒZe ed œd"d#„ƒZed œd$d%„Zed œd&d'„Zd6d*d+„Ze ed,œd-d.„ƒZ!d7e"d/œd0d1„Z#d2d3„Z$d4d5„Z%d)S)8r5ÚunknownÚ directoryz meta filez data filez archive fileÚ partition)Ú_rootÚ_path)ÚrootrcCs||_||_dS)N)rHrI)ÚselfrJrrrrÚ__init__ØszBaseInfo.__init__)rcCs|jS)N)rH)rKrrrÚ root_pathászBaseInfo.root_pathcCsJ|j|jkrdS|jr4t|j |j¡ƒ tdd¡St|j |j¡ƒSdS)ú/)rIrHÚ
is_trashedrrÚreplacer)rKrrrÚ file_pathås
 zBaseInfo.file_pathcCsN|j|jkrdS|jr6t|jj |j¡ƒ tdd¡St|jj |j¡ƒSdS)NrNrO)rIrHrPrÚparentrrQr)rKrrrÚ parent_pathîs
  zBaseInfo.parent_pathcCs|jS)N)rI)rKrrrr:÷szBaseInfo.file_path_origincCs€|j|jkrdS|jj}|j}||jkr6| tjd¡S||jkrN| t jd¡S||j
kr`|dS||j krx| tj d¡S|SdS)NrOrN)
rIrHÚnameÚ file_typeÚTYPE_META_FILErQr ÚFILE_EXTÚTYPE_DATA_FILEr ÚTYPE_DIRECTORYÚ
TYPE_TAR_FILEÚ TAR_FILE_EXT)rKÚretÚftyperrrÚ file_nameûs 



zBaseInfo.file_namecCs|jS)N)Ú TYPE_UNKNOWN)rKrrrrVszBaseInfo.file_typecCs |j|jkr|j ¡jSdSdS)Nr)rVrZrIÚstatÚst_size)rKrrrÚ file_sizes  zBaseInfo.file_sizecCs |j ¡jS)N)rIraÚst_ctime)rKrrrÚ create_timeszBaseInfo.create_timecCs |j ¡jS)N)rIraÚst_mtime)rKrrrÚ last_modify"szBaseInfo.last_modifycCs
t|jƒS)N)r rI)rKrrrrP&szBaseInfo.is_trashedcCst|j |j¡ƒS)N)r#rIrrH)rKrrrÚ is_external*szBaseInfo.is_externalcCs|jj tj¡S)N)rIrUÚendswithr r\)rKrrrÚ is_archived.szBaseInfo.is_archivedc CsD|j ¡}|j|j|j|j|j|jtt  
|j ¡ƒtt  
|j ¡ƒdœS)N)rrUÚtypeÚsizeÚtrashedrrerg)
rIrarRr_rVrcrPrhr
rÚ
fromtimestamprdrf)rKÚstrrrÚas_json2s
zBaseInfo.as_jsonc CsD|j ¡}|j|j|j|j|j|jtt  
|j ¡ƒtt  
|j ¡ƒdœS)N)rrUrkrlrmrrerg)
rIrarRr_rVrcrPrhr
rrnrdrf)rKrorrrÚas_json2?s
zBaseInfo.as_json2FNcCs(| |¡}|j||d|j|ddS)N)Ú detail_mode)Úfile)Ú_new_print_tableÚ _print_tableÚprint)rKrrrsÚtrrrrvLs
zBaseInfo.print)rrcCsxt|r
dndd}|rT|jddddd|jdd d
|jdd d
|jd dd
n |jddddd|jddd
|S) é)ÚcolumnrFrN)Ú align_rightÚpaddingÚsplitr$T)r{é)rÚ
set_format)ÚclsrrrwrrrrtSszBaseInfo._new_print_table)ÚtablecC|j|jkrdnd}|j|jkr&d}n(|j|jkr8d}n|j|jkrJd}nd}|jrZd}n|jrfd}nd}|rž| |||t|j ƒt
t   |j
¡ƒ|jj¡n| ||||jj¡dS)e)rVrZrWrYr[rPrhÚappendrDrcrrrnrgrIrU)rKrrrrr…r‡rrrrucs&    zBaseInfo._print_tablecCs
t|jƒS)N)ÚhashrI)rKrrrÚ__hash__szBaseInfo.__hash__cCsB||kr dS|dkrdSt|tƒr:|j|jko8|j|jkSdSdS)NTF)rr5rIrV)rKÚotherrrrÚ__eq__s
zBaseInfo.__eq__)FN)F)&Ú__name__Ú
__module__Ú __qualname__r`rZrWrYr[ÚTYPE_PARTITIONÚ __slots__rrLÚpropertyrMrrRrTr:r_rVÚintrcrergÚboolrPrhrjrrprqrvÚ classmethodrtrrurrrrrrr5°sP 

csPeZdZiZdZeedœfdd ZeedœddƒZ ee
dœdd „ƒZ ee
dœd
d ƒZ ee
edœd d
ƒZejedœdd
ƒZeeee
efdœddƒZee
edœddZedœddZeedœddƒZedœfdd Zedœfdd Zeeeddœdd „ƒZeeeeddœd!d"„ƒZeed#œd$d%„ƒZed&d'„ƒZZ S)(ÚFileInfo)Ú _additionÚ
_file_typeÚ_metaÚ_export)rJrctƒ ||¡i|_| ¡s0tt| |¡ƒƒnf| ¡rB|j|_ nTt
  |¡rb|j |_ d|_
i|_n4t |¡rv|j|_ n |j t
j¡rŽ|j|_ n|j|_ dS)N)ÚsuperrLr˜r*ÚFileNotFoundErrorrrÚis_dirrZr™r Úis_recording_meta_filerWrr Úis_recording_filerYrUrir\r[r`)rKrJr)Ú __class__rrrL¡s




zFileInfo.__init__)rcCs|jS)N)r™)rKrrrrVÀszFileInfo.file_typecCs |j|jkS)N)r™rW)rKrrrÚ is_meta_fileÄszFileInfo.is_meta_filecCs |j|jkS)N)r™rZ)rKrrrÚ is_directoryÈszFileInfo.is_directorycCsHt|dƒr@|j}|jdkr.t |j¡|_}n|jr<| ¡|SdSdS)Nrš)Úhasattrršr ÚloadrIÚ is_modifiedÚreload)rKÚmetarrrÚ meta_fileÌs

zFileInfo.meta_file)ÚvaluecCst|dƒr||_dS)Nrš))rKrrrÛs
cCst|dƒr|jSiSdS)Nr)r)rKrrrÚexportàs
zFileInfo.export)Ú export_typeÚ export_pathcCst|dƒr||j|<dS)Nr)r)rKr­rrrÚadd_export_pathçs
zFileInfo.add_export_path)cCst|dƒr|j|=dS)Nr)r)rKrrrÚdel_export_pathðs
zFileInfo.del_export_pathcCsRd}|j|jkrdS|j|jkrNy|j ¡j}|jj}Wntk
rLdSX|S)Nr) r™rZrWrIrarbÚ_sizeÚIOError)rKÚsrrrrcôs    zFileInfo.file_sizectdtƒ|jƒtƒ ¡}tdtƒƒ|j|d<| |j¡t|dƒr²|j }|dk r¢tdtƒƒ| ¡|d<tdtƒƒt
t   t
t|ddƒdd …ƒ¡ƒ|d<t |j¡|d
<|S) Nz *****start3z *****end3Úarchivedršz *****start4r¨z *****end4reéýÿÿÿr«)rvrrVrprjÚupdater˜r
rrnr”rrÚto_jsonr«)rKr])rrrp s
 

   *zFileInfo.as_jsoncs$tƒ ¡}|j|d<| |j¡|S)Nr³)rqrjr˜)rKr])rrrq,s

 zFileInfo.as_json2)rJrrcCs.||jkr t||ƒ}||j|<n
|j|}|S)N)ÚCACHEr—)r€rJrr]rrrÚget_info8s


 
zFileInfo.get_infocCsg}x|| ¡D]p}|j}|tkr6| | ||¡¡qn | d¡rBq| ||¡}tr^| |¡q|j t
j t
j t
j
fkr| |¡qWt|ddd}|S).cSs|jS)N)re)r…rrrÚ<lambda>kóz$FileInfo.list_info.<locals>.<lambda>)Úkey)ÚiterdirrUrÚextendÚ list_infor;r¸Ú