Sindbad~EG File Manager
�
$Μgt��`�dZddlZddlZddlZddlZgd�ZiZd�Zd
d�Zd
d�Z d
d�Z
d
d�Zd �Zy)z�Cache lines from Python source files.
This is intended to read lines from modules imported -- hence if a filename
is not found, it will look down the module search path for a file by
that name.
�N)�getline�
clearcache�
checkcache� lazycachec�,�tj�y)zClear the cache entirely.N)�cache�clear���&/usr/local/lib/python3.12/linecache.pyrrs�� �K�K�Mrc�Z�t||�}d|cxkrt|�krny||dz
Sy)z~Get a line for a Python source file from the cache.
Update the cache if it doesn't contain an entry for this file already.��)�getlines�len)�filename�lineno�module_globals�liness rrrs8��
�X�~�.�E��F� �c�%�j� �
��V�a�Z� � �
rc��|tvr#t|}t|�dk7rt|dS t||�S#t$rt �gcYSwxYw)z�Get the lines for a Python source file from the cache.
Update the cache if it doesn't contain an entry for this file already.r�)rr�updatecache�MemoryErrorr)rr�entrys rrr$sZ���5���h����u�:��?���?�1�%�%���8�^�4�4������� ��s�9�A�Ac��|�ttj��}n
|tvr|g}ny|D]o}t|}t|�dk(r�|\}}}}|��% t j
|�}||jk7s||jk7s�Ztj|d��qy#ttf$rtj|d�Y��wxYw)zUDiscard cache entries that are out of date.
(This is not checked upon each call!)Nr)�listr�keysr�os�stat�OSError�
ValueError�pop�st_size�st_mtime)r� filenamesr�size�mtimer�fullnamers rrr4s����������&� � �U� ��J� �����h����u�:��?��',�$��e�U�H��=�� ��7�7�8�$�D��4�<�<��5�D�M�M�#9��I�I�h��%�����$� ��I�I�h��%�� �s�B#�#%C�
Cc��|tvr+tt|�dk7rtj|d�|r"|jd�r|j d�rgS|} tj|�} t%j&|�5}|j)�} ddd� r!| dj d�s
| dxxdz
cc<|j.|j0}}
|
|| |ft|<| S#t$�r&|}t||�ru t|d�}|�gcYSt|�d|j�D�cgc]}|dz�� ncc}wc}|ft|<t|dcYS#ttf$rYnwxYwt
jj|�rgcYStjD]e} t
jj||�}n#tt f$rY�6wxYw tj|�}n#tt"f$rY�cwxYwgcYSY���t"$rgcYSwxYw#1swY���xYw#tt*t,f$rgcYSwxYw) z�Update a cache entry and return its list of lines.
If something's wrong, print a message, discard the cache entry,
and return an empty list.rN�<�>r�
r���)rrr"�
startswith�endswithrrr r�
splitlines�ImportError�path�isabs�sys�join� TypeError�AttributeErrorr!�tokenize�open� readlines�UnicodeDecodeError�SyntaxErrorr#r$)rrr(r�basename�data�line�dirname�fprr&r's rrrPs>��
�5���u�X���1�$��I�I�h��%���+�+�C�0�X�5F�5F�s�5K�� ��H�,��w�w�x� ��X�
�]�]�8�
$���L�L�N�E�%�
�U�2�Y�'�'��-�
�b� �T�� ��,�,��
�
�%�D��E�5�(�2�E�(�O��L��i�(����X�~�.�
*��X��q�)�+���<��I���I��-1�_�_�->�?�->�T�T�D�[�->��?�� #��h���X��q�)�)�� ��)�
��
��"�7�7�=�=��"��I��x�x�G�
��7�7�<�<���:����~�.�
��
��
��w�w�x�(�����Z�(�
��
�� ��I� �
��� ���%�
$���'��5��� ��s��C+�3H7�H*�H7�+H'�E#�H'�H'�7E
�H'�#E5�2H'�4E5�5$H'�H'�/ G�H'�G"�H'�!G"�"H'�&G=�;H'�=H�H'�H�H'�
H'�&H'�*H4�/H7�7I�Ic��|tvrtt|�dk(ryy|r"|jd�r|jd�ry|r{d|vrw|j d�}t|dd �xs|d}t|d
d �}|�|j d�}t|dd �}|r#|r!t
j||�}|ft|<yy)
a�Seed the cache for filename with module_globals.
The module loader will be asked for the source only when getlines is
called, not immediately.
If there is an entry in the cache already, it is not altered.
:return: True if a lazy load is registered in the cache,
otherwise False. To register such a load a module loader with a
get_source method must be found, the filename must be a cacheable
filename, and the filename must not be already cached.
rTFr*r+�__name__�__spec__�nameN�loader�
__loader__�
get_source)rrr.r/�get�getattr� functools�partial)rr�specrErFrH� get_liness rrr�s����5���u�X���1�$�����+�+�C�0�X�5F�5F�s�5K���*��6��!�!�*�-���t�V�T�*�H�n�Z�.H����x��.���>�#�'�'��5�F��V�\�4�8�
��J�!�)�)�*�d�;�I�(�l�E�(�O��r)N)
�__doc__rKr4rr8�__all__rrrrrrrr
rr�<module>rQsD����
� ��
>��
���
�
� &�8B�J!r
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists