bgddlmZmZmZddlmZmZddlmZm Z m Z m Z ddl m Z mZddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZm Z m!Z!m"Z"ddl#m$Z$ddl%Z%ddl&Z&ddl'Z'd Z(Gd d eeeZ)dS) ) FileDBBase ObjectDBR ObjectDBW) BadObjectAmbiguousObjectName)DecompressMemMapReaderFDCompressedSha1WriterFDStream Sha1Writer)OStreamOInfo)file_contents_ro_filepathENOENT hex_to_bin bin_to_hexexistschmodisdirisfileremovemkdirrenamedirnamebasenamejoin) chunk_sizeloose_object_header_info write_object stream_copy) force_bytesN) LooseObjectDBceZdZdZeZeddZej dkr eddZfdZ dZ dZ d Z d Zfd Zd Zd ZdZdZdZdZxZS)r!z/A database which operates on loose object files444nt644ct|t|_t t dd|_dS)N O_NOATIMEr)super__init__dict_hexsha_to_filegetattros_fd_open_flags)self root_path __class__s _/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/gitdb/db/loose.pyr*zLooseObjectDB.__init__MsC ####vv&b+q99cBt|dd|ddS)z{ :return: path at which the object with the given hexsha would be stored, relative to the database rootN)r)r0hexshas r3 object_pathzLooseObjectDB.object_pathVs$F2A2Jqrr +++r4c |j|S#t$rYnwxYw|||}t |r ||j|<|St |)z :return: readable object path to the object identified by hexsha :raise BadObject: If the object file does not exist)r,KeyErrordb_pathr8rr)r0r7paths r3readable_db_object_pathz%LooseObjectDB.readable_db_object_path\s '/ /    D  ||D,,V4455 $<< +/D  (Ks  cd}|D]D}t|t|r|t ||}E|t ||S)z:return: 20 byte binary sha1 string which matches the given name uniquely :param name: hexadecimal partial name (bytes or ascii string) :raise AmbiguousObjectName: :raise BadObject: N)sha_iterr startswithr rr)r0partial_hexsha candidatebinshas r3partial_to_complete_sha_hexz)LooseObjectDB.partial_to_complete_sha_hexnsz  mmoo # #F&!!,,[-H-HII #(-n==="  N++ +r4cl||t|} t||jS#t $r\}|jtkr7 t|cYd}~S#t $r}t||d}~wwxYwt||d}~wwxYw)z~ :return: memory map of that file to allow random read access :raise BadObject: if object could not be located)flagsN) r;r8rrr/OSErrorerrnorr)r0shar;enew_es r3_map_loose_objectzLooseObjectDB._map_loose_objects,,t// 3@@AA ,,WD#+5doNNNLB~%/33!"  #>-  flCKI_````!w|W\6<,0,BDDDD#LLNNN#LLNNNN#  $ (###  > -^FFZZtZ,,F  3||D$4$4V$<$<==Hh''G>> gh +x    x*** (D1 2 2 2$F++sA C?C3C//C33D c#Ktj|D]V\}}}t|}t |dkr)|D]*}t |dkrt ||zV+WdS)Nr6&)r.walkr1rlenr)r0rootdirsfiles root_basefs r3r?zLooseObjectDB.sha_iters!#)9)9!:!: 0 0 D$ I9~~"" 0 0q66R<< Q////// 0  0 0r4c^tt|S)N)rytupler?)r0s r3rXzLooseObjectDB.sizes 5))***r4)rP __module__ __qualname____doc__rrmintrnr.namer*r8r=rDrLrQrYrRr_rur?rX __classcell__)r2s@r3r!r!?s#99#s5!}} w$3ua==:::::,,,    $&,,,*+++++ 000 >>>@ 0 0 0+++++++r4r!)* gitdb.db.baserrr gitdb.excrr gitdb.streamrr r r gitdb.baser r gitdb.utilrrrrrrrrrrrrrr gitdb.funrrrrgitdb.utils.encodingr rfr.rk__all__r!r4r3rs   "-,,,,,  C+C+C+C+C+J 9C+C+C+C+C+r4