yL i" dZgdZddlmZddlmZmZddlmZm Z m Z m Z m Z m Z mZmZe r ddlmZddlmZe eeefZeedfZd e ed ed geedffd dfd Zded e efdZde edededed ef dZeddded dfdZededed efdZdeded efdZddde eedfded e e edffdZdddeded e efd Zy)!z6Functions that are supposed to be as fast as possible.)tree_to_streamtree_entries_from_datatraverse_trees_recursivetraverse_tree_recursive)S_ISDIR) safe_decodedefenc)CallableListMutableSequenceSequenceTuple TYPE_CHECKINGUnionoverload)ReadableBuffer)GitCmdObjectDBNentrieswriterreturnc 0td}d}|D]\}}}d}tdD]}t||dzz |z|zg|z}|d|k(r|dd}t|tr|j t } n|} |dj|d | d |fy) zWrite the given list of entries into a stream using its ``write`` method. :param entries: **Sorted** list of tuples with (binsha, mode, name). :param write: A ``write`` method which takes a data string. 0rN )ordrangebytes isinstancestrencoder join) rrord_zerobit_maskbinshamodenamemode_stri name_bytess U/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/git/objects/fun.pyrr)s3xHH%Edq UAQ8;xGHIHTH U A;( "|H dC V,JJ chh$ E6BCD)ErdatacXtd}td}t|}d}g}||krd}|||k7r|dz|||z z}|dz }|||k7r|dz }|}||dk7r|dz }||dk7r|||}t|} |dz }|||dz} |dz}|j| || f||kr|S)zRead the binary representation of a tree and returns tuples of :class:`~git.objects.tree.Tree` items. :param data: Data block with tree data (as bytes). :return: list(tuple(binsha, mode, tree_relative_path), ...) r rrr)r lenrappend) r0r' space_ordlen_datar-outr*nsr.r+shas r/rrMs3xHCI4yH A C h, 1g"AI$q'H"45D FA 1g" Q1gl FA1gl "QZ :& Q1q2v F Ct$%A h,D Jr tree_datar+is_dirstart_atc ||}|r |d|k(rt|d|k(rd||<|St|D]+\}}|s |d|k(st|d|k(s$d||<|cSy#t$rYEwxYw)zReturn data entry matching the given name and tree mode or ``None``. Before the item is returned, the respective data item is set None in the `tree_data` list to mark it done. rN)r IndexError enumerate)r;r+r<r=itemindexs r/ _find_by_namerDs " DGtOQ(8F(B"&Ih K!+ t DGtOQ(8F(B#Ie K     s&A## A/.A/rB path_prefixcyNrBrEs r/ _to_full_pathrJs9z+traverse_trees_recursive..s P1q+!> Ps) r4listrstreamreadr5rAr!rrDextendrtuple)rMrNrE trees_datanttree_shar0r8tir;iirB_r_shar*r+r<tioeis ` r/rrs8.0J YB   )+D.szz(/C/H/H/JKLD$ -/C #:.% I!), !HB&+2Y/t/G/GBK# D$T]F R!VR"W- PBh,Z_dFBO  P  ,D <T4 4= NN23[4=ORU=UV W NNC{T'9: ; < Nr) __doc____all__statr git.compatrr typingr r r r rrrr _typeshedrgitrr"intr$EntryTupEntryTupOrNonerrboolrDrJrrrHrr/ros= *   (" S !x~& EHX. ExAQ@RTYZ]_cZcTd@d7e Ejn EH114>1h_^<CQUadiw0 <<3<4< < DDsDxD D55S5^5U U&.uUD[/A&BUQTU %# $%Up!1UQTY]^fYgr