Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes15kdownloads
utils.cpython-313.pyc292 linesDownload Raw Back to __pycache__
1�

2�jG\����%SSKJr SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	J3r4JrJrJ
r
 SSKJr SSKJr SSKJr SSKJrJrJrJr SSKJr \(aSSKrSS	KJr SS5KJr Sr\"S5r S)S*S
jjr!S)S+Sjjr"0r#S\$S'S,Sjr%S-Sjr&S.Sjr'S/S0Sjjr(S1Sjr)S2Sjr*S3Sjr+S4Sjr,S5S6Sjjr-S7Sjr.S8Sjr/S9Sjr0S9Sjr1S:Sjr2S;Sjr3S<S=S jjr4S>S!jr5S?S"jr6\RnS@S#j5r8SASBS$jjr9SCS%jr:\RnSDSES&jj5r;S'r<S(r=g)F�)�annotationsN)�Callable�Iterable�Iterator�Sequence)�partial)�md5)�version)�IO�
TYPE_CHECKING�Any�TypeVar)�urlsplit)�	TypeGuard)�AbstractFileSystemiP�Tc��[R"SU5(d[R"SU5cSUS.$[U5nUR=(d SnUR(a(SRURUR/5nOURnUS:Xa7[R"SU5nU(aUR5updUSU3nUS;aX0S.$X4S.nUR(a�URRS	S65SRSS75SUS
'US;aUS
US-US'OUS
US
'UR(aURUS'UR(aURUS'UR(aURUS'UR(aURUS'UR(aURUS'U(a[Xq5 U$)aOInfer storage options from URL path and merge it with existing storage8options.9 10Parameters11----------12urlpath: str or unicode13    Either local absolute file path or URL (hdfs://namenode:8020/file.csv)14inherit_storage_options: dict (optional)15    Its contents will get merged with the inferred information from the16    given path17 18Returns19-------20Storage options dict.21 22Examples23--------24>>> infer_storage_options('/mnt/datasets/test.csv')  # doctest: +SKIP25{"protocol": "file", "path", "/mnt/datasets/test.csv"}26>>> infer_storage_options(27...     'hdfs://username:pwd@node:123/mnt/datasets/test.csv?q=1',28...     inherit_storage_options={'extra': 'value'},29... )  # doctest: +SKIP30{"protocol": "hdfs", "username": "username", "password": "pwd",31"host": "node", "port": 123, "path": "/mnt/datasets/test.csv",32"url_query": "q=1", "extra": "value"}33z^[a-zA-Z]:[\\/]z^[a-zA-Z0-9]+://�file)�protocol�path�#z^/([a-zA-Z])[:|]([\\/].*)$�:)�http�https�@������r�host)�s3�s3a�gcs�gsr�port�username�password�	url_query�url_fragment)�re�matchr�scheme�fragment�joinr�groups�netloc�rsplitr#r$r%�query�update_storage_options)�urlpath�inherit_storage_options�parsed_pathrr�windows_path�drive�optionss        �RD:\code\apps\devtools\python\user_packages\Python313\site-packages\fsspec/utils.py�infer_storage_optionsr9s���@	���#�W�-�-�
�8�8�'��1�9�"�G�4�4��7�#�K��!�!�+�V�H�����x�x��)�)�;�+?�+?�@�A�������6���x�x� =�t�D���&�-�-�/�K�E��W�A�d�V�$�D��$�$�$�6�6�+3�B�G����&�,�,�3�3�C��;�B�?�F�F�s�A�N�q�Q�����1�1�%�f�o����?�G�F�O�%�f�o�G�F�O����)�.�.�G�F�O����"-�"6�"6�G�J�����"-�"6�"6�G�J�����*�0�0�������"-�"6�"6������w�@��N�c���U(d0n[U5[U5-nU(a;UH5nURU5URU5:wdM)[SU35e URU5 g)Nz9Collision between inferred and specified storage option:34)�set�get�KeyError�update)r7�	inherited�35collisions�	collisions    r8r1r1rso����	��W���I��.�J��#�I��{�{�9�%����y�)A�A�� � )�{�,���$��N�N�9�r:zdict[str, str]�compressionsc��[RRU5SRS5R	5nU[36;a	[37U$g)a	Infer compression, if available, from filename.38 39Infer a named compression type, if registered and available, from filename40extension. This includes builtin (gz, bz2, zip) compressions, as well as41optional compressions. See fsspec.compression.register_compression.42r�.N)�osr�splitext�strip�lowerrC)�filename�	extensions  r8�infer_compressionrL�sG����� � ��*�2�.�4�4�S�9�?�?�A�I��L� ��I�&�&�r:c�^�US-
n[[R"[R"U555mSU4SjjnU$)aUReturns a function that receives a single integer43and returns it as a string padded by enough zero characters44to align with maximum possible integer45 46>>> name_f = build_name_function(57)47 48>>> name_f(7)49'07'50>>> name_f(31)51'31'52>>> build_name_function(1000)(42)53'0042'54>>> build_name_function(999)(42)55'042'56>>> build_name_function(0)(0)57'0'58g:�0�yE>c�8>�[U5RT5$�N)�str�zfill)�i�59pad_lengths �r8�
name_function�*build_name_function.<locals>.name_function�s����1�v�|�|�J�'�'r:)rR�int�returnrP)rV�math�ceil�log10)�max_intrTrSs  @r8�build_name_functionr\�s7���&�t�O�G��T�Y�Y�t�z�z�'�2�3�4�J�(��r:c��UR5S:XagSnURU5nU(dgU(aX4-OUnX;aLURU5nURUR5[	U5U-60-61[	U5-5 g[	U5U:agU[	U5*SnM�![62[4a N#f=f)a\Seek current file to file start, file end, or byte after delimiter seq.63 64Seeks file to next chunk delimiter, where chunks are defined on file start,65a delimiting sequence, and file end. Use file.tell() to see location afterwards.66Note that file start is a valid split, so must be at offset > 0 to seek for67delimiter.68 69Parameters70----------71file: a file72delimiter: bytes73    a delimiter like ``b'\n'`` or message sentinel, matching file .read() type74blocksize: int75    Number of bytes to read from the file at once.76 77 78Returns79-------80Returns True if a delimiter was found, False if at file start or end.81 82rFNT)�tell�read�index�seek�len�OSError�83ValueError)r�	delimiter�	blocksize�last�current�fullrRs       r8�seek_delimiterrj�s���.�y�y�{�a����D�84��)�)�I�&����!%�t�~�7��		�� ��J�J�y�)���	�	�$�)�)�+��T��Q��7�#�i�.�H�I���W��	�)��*�85�S��^�O�%�&��!����$�	��	�s�AB3�B3�3C�Cc���U(a�URU5 [XS5nUcUR5$UR5nX&U-86-nURXb-5 [XS5nUR5nU(aU(aU[	U5-nU(aU(aU[	U5-nUnX�-87nURU5 UceURU5n	U	$)aRead a block of bytes from a file88 89Parameters90----------91f: File92    Open file93offset: int94    Byte offset to start read95length: int96    Number of bytes to read, read through end of file if None97delimiter: bytes (optional)98    Ensure reading starts and stops at delimiter bytestring99split_before: bool (optional)100    Start/stop read *before* delimiter bytestring.101 102 103If using the ``delimiter=`` keyword argument we ensure that the read104starts and stops at delimiter boundaries that follow the locations105``offset`` and ``offset + length``.  If ``offset`` is zero then we106start at zero, regardless of delimiter.  The bytestring returned WILL107include the terminating delimiter string.108 109Examples110--------111 112>>> from io import BytesIO  # doctest: +SKIP113>>> f = BytesIO(b'Alice, 100\nBob, 200\nCharlie, 300')  # doctest: +SKIP114>>> read_block(f, 0, 13)  # doctest: +SKIP115b'Alice, 100\nBo'116 117>>> read_block(f, 0, 13, delimiter=b'\n')  # doctest: +SKIP118b'Alice, 100\nBob, 200\n'119 120>>> read_block(f, 10, 10, delimiter=b'\n')  # doctest: +SKIP121b'Bob, 200\nCharlie, 300'122i)rarjr_r^rb)123�f�offset�lengthre�split_before�found_start_delim�start�found_end_delim�end�bs124          r8�125read_blockru�s���V�	���v��*�1��?���>��6�6�8�O�������&�.� ��	���u�~��(��u�=���f�f�h�����S��^�#�E��|��3�y�>�!�C�������F�F�6�N�����	���v��A��Hr:c��U(aX4-
n[[U5R55nUR	5$![a3 [[U5R5SS9nUR	5$f=f)z�Deterministic token126 127(modified from dask.base)128 129>>> tokenize([1, 2, '3'])130'9d71491b50023b06fc76928e6eddb952'131 132>>> tokenize('Hello') == tokenize('Hello')133True134F)�usedforsecurity)r	rP�encoderd�	hexdigest)�args�kwargs�hs   r8�tokenizer}+sq����	���;���D�	� � �"�#��
�;�;�=����;���D�	� � �"�E�:���;�;�=��;�s�"A�+A=�<A=c��[U[5(aU$[US5(aUR5$[US5(aUR$U$)a�Attempt to convert a path-like object to a string.135 136Parameters137----------138filepath: object to be converted139 140Returns141-------142filepath_str: maybe a string version of the object143 144Notes145-----146Objects supporting the fspath protocol are coerced according to its147__fspath__ method.148 149For backwards compatibility with older Python version, pathlib.Path150objects are specially coerced.151 152Any other object is passed through unchanged, which includes bytes,153strings, buffers, or anything else that's not even path-like.154�155__fspath__r)�156isinstancerP�hasattrrr)�filepaths r8�stringify_pathr�@sN��,�(�C� � ���	��<�	(�	(��"�"�$�$�	��6�	"�	"��}�}���r:c�6�U"U0UD6nUR5 U$rO)�_determine_worker)�clsrzr{�insts    r8�
make_instancer�`s$�������D������Kr:c�^^�UVs/sHoRS5PM snm[ST55nSn[U5H"m[UU4SjT55nU(aM" O TU-
mSR	TSST5$s snf)z;For a list of paths, find the shortest prefix common to all�/c3�8# �UHn[U5v� M g7frO)rb)�.0�ps  r8�	<genexpr>� common_prefix.<locals>.<genexpr>ks���%�u�!�s�1�v�v�u���rc3�>># �UHoTTST:Hv� M g7f)rN�)r�r�rR�partss  ��r8r�r�ns ����5�u�!�A�$�%��(�1�+�%�u�s�N)�split�min�range�allr,)�pathsr��lmaxrsrRr�s    @@r8�
common_prefixr�hs����#(�)�5�a�W�W�S�\�5�)�E��%�u�%�%�D�157�C�
�4�[���5�u�5�5���s�����H�A��8�8�E�!�H�R�a�L�!�!��
*s�Bc	�8�[U[5(a�URS5nU(a6UVs/sH'nSRXR	S5S45PM) nnU$[U5nU(aUR
SS5SnU(d;[SU55(a$UVs/sHnSRX/5PM nnU$UVs/sHoDRXQS5PM nnU$[U5[U5:XdeU$s snfs snfs snf)aEIn bulk file operations, construct a new file tree from a list of files158 159Parameters160----------161paths: list of str162    The input file tree163path2: str or list of str164    Root to construct the new list in. If this is already a list of str, we just165    assert it has the right number of elements.166exists: bool (optional)167    For a str destination, it is already exists (and is a dir), files should168    end up inside.169flatten: bool (optional)170    Whether to flatten the input directory tree structure so that the output files171    are in the same directory.172 173Returns174-------175list of str176r�rrrc3�L# �UHoRS5(+v� M g7f)r�N)�177startswith�r��ss  r8r��other_paths.<locals>.<genexpr>�s���C�U��,�,�s�"3�3�3�U�s�"$)178r�rP�rstripr,r�r�r/r��replacerb)r��path2�exists�flattenr��cps      r8�other_pathsr�us��6�%�������S�!���BG�H�%�Q�S�X�X�u�g�g�c�l�2�&6�7�8�%�E�H��L��u�%�B���Y�Y�s�A�&�q�)���#�C�U�C�C�C�7<�=�u�!����5�*�-�u��=�179�L�;@�@�%�Q���2�a�0�%��@���L��5�z�S��Z�'�'�'��L��I��>��@s�.D
�-D�Dc�"�[U[5$rO)r��
BaseException��objs r8�is_exceptionr��s���c�=�)�)r:c�.^�[U4SjS55$)Nc3�<># �UHn[TU5v� M g7frO)r�)r��attrrls  �r8r��isfilelike.<locals>.<genexpr>�s����F�,E�D�w�q�$���,E�s�)r_�closer^)r�)rls`r8�180isfileliker��s����F�,E�F�F�Fr:c�n�[U5n[R"SUSS9n[U5S:�aUS$g)Nz(\:\:|\://)r)�maxsplitrr)r�r(r�rb)�urlr�s  r8�get_protocolr��s5��181��182�C��H�H�^�S�1�5�E�183�5�z�A�~��Q�x��r:c�f�[U5nURSS5n[U5S:�aUS$g)NrErr�)r�r/rb)r��	ext_partss  r8�get_file_extensionr��s5��184��185�C��186�187�3��"�I�188�9�~�����}��
r:c�t�SSKJn [U"[U55SS5$![[1894a gf=f)z*Can the given URL be used with open_local?r)�get_filesystem_class�190local_fileF)�fsspecr��getattrr�rd�ImportError)rr�s  r8�can_be_localr��s;��+���+�L��,>�?��u�U�U����$����s�$�7�7c� �U[R;a0[RUn[US5(aUR$[	U5$! O=fSSKnUR
U5nUR$![[4a gf=f)z�For given package name, try to find the version without importing it191 192Import and package.__version__ is still the backup here, so an import193*might* happen.194 195Returns either the version string, or None if the package196or the version was not readily  found.197�__version__rN)	�sys�modulesr�r�r198�	importlib�
import_moduler��AttributeError)�name�modr�s   r8�"get_package_version_without_importr��s����s�{�{���k�k�$����3�
�&�&��?�?�"�
��t�}���
������%�%�d�+���������(����s�199A�A� A:�:B
�B
c�d�UcUc[S5eU=(d [R"U5n[R"5n[R"S5nURU5 U(aURR5 URU5 URU5 U$)Nz+Provide either logger object or logger namezD%(asctime)s - %(name)s - %(levelname)s - %(funcName)s -- %(message)s)200rd�logging�	getLogger�
StreamHandler�	Formatter�setFormatter�handlers�clear�201addHandler�setLevel)�logger�logger_name�levelr��handle�	formatters      r8�
setup_loggingr��s����~�+�-��F�G�G�
�
5�w�(�(��5�F�
�
"�
"�
$�F��!�!�N��I����	�"��������202���f��203�O�O�E���Mr:c�$�URU5$rO)�unstrip_protocol)r��fss  r8�_unstrip_protocolr��s��
���t�$�$r:c�.^^^�SU4SjjmSUU4SjjnU$)ziMirror attributes and methods from the given204origin_name attribute of the instance to the205decorated classc�2>�[UT5n[X 5$rO)r�)�method�self�origin�origin_names   �r8�
origin_getter�"mirror_from.<locals>.origin_getter�s�����{�+���v�&�&r:c�\>�TH$n[TU5n[X[U55 M& U$rO)r�setattr�property)r�r��wrapped_method�methodsr�s   ��r8�wrapper�mirror_from.<locals>.wrappers/����F�$�]�F�;�N��C��.�!9�:���206r:)r�rPr�r
rWr
)r��type[T]rWr�r�)r�r�r�r�s`` @r8�mirror_fromr��s���'����Nr:c#�# �Uv� g7frOr�r�s r8�nullcontextr�s207���208
�I�s�c�^^^^^�[U[5(d[e[U[5(dU/[U5-n[U[5(dU/[U5-n[U5[U5:wd[U5[U5:wa[e[U5S::aXU4$UVs/sH
of=(d SPM nnU(a%S[[
[XU5565upn/n[[XU55HMumummm[UUUU4Sj[[XU5555(dM<URT5 MO [U5VV	s/sHup�X�;dMU	PM nnn	[U5VVs/sHup�X�;dMUPM nnn[U5VV209s/sHup�X�;dMU210PM nnn211U(a�USSnUSSnUSSn
[S[U55H�mUTUTS-212:XaU
ScMUTUTS-213:wd!UTU
S-214U:�dUbMUTUS-215U:�a>URUT5 URUT5 U
RUT5 M�UTU
S'M� X�U
4$XU4$s snfs sn	nfs snnfs sn216nf)aeMerge adjacent byte-offset ranges when the inter-range217gap is <= `max_gap`, and when the merged byte range does not218exceed `max_block` (if specified). By default, this function219will re-order the input paths and byte ranges to ensure sorted220order. If the user can guarantee that the inputs are already221sorted, passing `sort=False` will skip the re-ordering.222rrc3�8# �UHn[U5v� M g7frO)�list)r��vs  r8r��&merge_offset_ranges.<locals>.<genexpr>1s!���223���
��G�G��r�c3�># �UH?unup#nUSL=(a) UT:H=(a TU:�=(a TU:*=(a TU:gv� MA g7frOr�)	r��i2r�r��ersrRrrqs	     ����r8r�r�;sK����224�!D�
��I�Q�1�
�T�M�O�a�4�i�O�E�Q�J�O�3�!�8�O��R��O�!D�s�AA225Nr)r�r��	TypeErrorrbrd�zip�sorted�	enumerate�any�appendr�)r��starts�ends�max_gap�	max_block�sortr��removerRr�r��	new_paths�226new_starts�new_endsrsrrqs        `     @@@r8�merge_offset_rangesr227s���� �e�T�"�"����f�d�#�#���C��J�&���d�D�!�!��v��E�228�"��229�6�{�c�%�j� �C��I��U��$;����6�{�a���d�"�"�$�
%�f��f�1�f�f�F�
%��230�����t�,���231���t��F�!*�3�u�d�+C�!D����D�%���232�!*�3�u�d�+C�!D�233�234�235�
�M�M�!��"E�%�U�+�?�+�4�1�q��Q�+�E�?�%�f�-�
A�-�D�A���a�-�F�
A�#�D�/�=�/�$�!�Q�_�A�/�D�=���"�1�I�	��B�Q�Z�236����8���q�#�e�*�%�A��Q�x�5��Q��<�'�H�R�L�,@���a��E�!�a�%�L�(��A�Y��"��-��8��)�t�A�w��B��/G�9�.T�� � ��q��*��!�!�&��)�,�����Q��(� $�A�w����!&�"�h�.�.��$����a&��$
@��
A��=s*�5J�-J�<J�J#�"J#�9J)�J)c��UR5nURSS5URU5 $!URU5 f=f)z+Find length of any open read-mode file-liker�)r^ra)�filelike�poss  r8�	file_sizeras9��237�-�-�/�C���}�}�Q��"��
�
�c����
�
�c��s	�5�Ac#��# �[R"[RR	U5[RRU5S-S9up#[
X!5nUv� SSS5 [R"X05 g!,(df   N%=f![aL [R"[5 [R"U5 SSS5 e!,(df   e=ff=f7f)z�238A context manager that opens a temporary file next to `path` and, on exit,239replaces `path` with the temporary file, thereby updating `path`240atomically.241�-)�dir�prefixN)
�tempfile�mkstemprFr�dirname�basename�openr�r��242contextlib�suppress�FileNotFoundError�unlink)r�mode�fd�fn�fps     r8�atomic_writer!js�����
�
��G�G�O�O�D�!�"�'�'�*:�*:�4�*@�3�*F��F�B��
�"�^�r��H��	�243�244�2���^����
�
 �
 �!2�
3��I�I�b�M�4�
�4�
3�
���sN�AC1�B�#B�(B�0C1�245B�B�$C.�<C�	C.�246C*	�&C.�.C1c��/nURnS[U5peXV:GaXnUS-nUS:XaU(aUSULaU"U5 GO�US:Xa247U"U5 GO�US:XGa�UnX�:a
XS:XaUS-nX�:a
XS:XaUS-nX�:aXS:waUS-nX�:a248XS:waMX�:�a249U"S	5 GOXUn	S250U	;aU	RSS5n	O�/n251XS:XaUS
-OUS-nURS252X�5nUS:aOU253RXU5 US-nUS-nM8XUnU(aU254RU5 O
U255S==S256-
ss'[	[U2575S-258SS5H1nX�S-259SX�S:�dMX�S-260SSX�SS-X�S-261'X�	M3 S262RSU26355n	[R"SSU	5n	US-nU	(d	U"S5 OXU	S:Xa	U"S5 OIU	SS:Xa	SU	SS-n	OU	SS;aSU	-n	U"SU	S35 OU"[R"U55 XV:aGMXV:XdeU$)Nrr�*r�?�[�!�]z\[r�\�\\r�c3�d# �UH&oRSS5RSS5v� M( g7f)r(r)rz\-N)r�r�s  r8r��_translate.<locals>.<genexpr>�s,���%�LR�q�	�	�$��.�6�6�s�E�B�B�F�s�.0z([&~|])z\\\1z(?!)rE�^)r-r%)	rrbr��findr�r,r(�sub�escape)
�pat�STAR�
QUESTION_MARK�res�addrR�n�c�j�stuff�chunks�k�chunks
             r8�264_translater=s����C�265
�*�*�C��c�#�h�q�266�%��F��
��E����8��C��G�4�/��D�	��
�#�X��
��
�#�X��A��u���3����E���u���3����E���%�C�F�c�M���E���%�C�F�c�M��v��E�267��a����e�#�!�M�M�$��6�E��F�!$��3���A��A��E�A���H�H�S�!�/���q�5�!��
�
�c�A�h�/���E����E��
� �!�H�E���
�
�e�,��r�268�c�)�269�"�3�v�;��?�A�r�:��!�a�%�=��,�v�y��|�;�,2�q�5�M�#�2�,>���1�2��,N�F�q�5�M� &�	�;� �H�H�%�LR�%��E����z�7�E�:����E�����K��c�\���H��Q�x�3�� #�e�A�B�i����q��Z�/� $�u����!�E�7�!��%���	�	�!���A�%�B
�6�M�6��Jr:c�P�[RR(a6[RR[RR-nO[RRnSR	[[RU55n[U5S:�aSUS3OUnSUS3nUS3nUU3nSUS3nS	n/n	[R"X05n270[U2715S-272n[U2735H�up�U
S274:XaU	RX�:aUOU5 M%U
S:XaU	RX�:aUOU5 MESU
;a[S5eU
(aU	R[X�S2753U55 X�:dM�U	RU5 M� SR	U	5nS
US3$)zBTranslate a pathname with shell wildcards to a regular expression.r�rr%r'z[^�+z(?:.+z)?z.*r#z**z:Invalid pattern: '**' can only be an entire path componentz(?s:z)\Z)rFr�altsep�sepr,�mapr(r0rbr�r�rrd�extendr=)r1�seps�escaped_seps�any_sep�not_sep�one_last_segment�one_segment�any_segments�any_last_segments�resultsr��
last_part_idx�idx�partr4s               r8�glob_translaterP�sy��276277�w�w�~�~��w�w�{�{�R�W�W�^�^�+���w�w�{�{���7�7�3�r�y�y�$�/�0�L�%(��Y��]��,��q�!��G��<�.��"�G�!��!�}��%�&�w�i�0�K��7�)�2�&�L����G��H�H�W�"�E���J��N�M��u�%�	���3�;��N�N�#�*=�;�CS�T���4�<��N�N�3�+>�<�DU�V��
�T�\��L��
���N�N�:�d�i�q�M�7�C�D����N�N�7�#�&�
�'�'�'�278�C��3�%�s��r:rO)r2rPr3�dict[str, Any] | NonerW�dict[str, Any])r7rRr@rQrW�None)rJrPrW�279str | None)r[�floatrWzCallable[[int], str])r�	IO[bytes]re�bytesrfrVrW�bool)NF)rlrVrmrVrn�280int | Nonerezbytes | NonerorXrWrW)rzr
r{r
rWrP)r�z%str | os.PathLike[str] | pathlib.PathrWrP)r�zCallable[..., T]rzz
Sequence[Any]r{rRrWr)r��
Iterable[str]rWrP)FF)281r��	list[str]r�zstr | list[str]r�rXr�rXrWr[)r�r
rWrX)rlr
rWzTypeGuard[IO[bytes]])r�rPrWrP)rrPrWrX)r�rPrWrT)NN�DEBUGT)282r�zlogging.Logger | Noner�rTr�rPr�rXrWzlogging.Logger)r�rPr�rrWrP)r�rPr�rZrWzCallable[[type[T]], type[T]])r�rrWzIterator[T])rNT)r�r[r�list[int] | intrr]rrVrrYrrXrWz&tuple[list[str], list[int], list[int]])r
rVrWrV)�wb)rrPrrP)>�283__future__rrr�rXrFr(r�r�collections.abcrrrr�	functoolsr�hashlibr	�importlib.metadatar284�typingrrr
r�urllib.parser�pathlibr�fsspec.specr�DEFAULT_BLOCK_SIZErr9r1rC�__annotations__rLr\rjrur}r�r�r�r�r�r�r�r�r�r�r�r�r��contextmanagerr�r285rr!r=rPr�r:r8�<module>rks���"����	�	�286��B�B���&�2�2�!��� �.����C�L��DH�R�
�R�+@�R��R�lAE�
�
�
�(=�
�	�
�" "��n�!�287��:.'�j#��G
��G
��G
�
�G
��	G
�288�G
��
G
�T�*�@�	��!.��8F����289"� ��	*��*��*�
�*��	*�290�*�Z*�G�����6%)�"���	�!�������	�291��*%����,��!��(������� ��
M��M��M��M��	M�292�M��
M�,�M�`�������(G�T#r:
codekingpro/portable-devtools · Team Ai