
    c}                         d dl Z d dlZd dlZd dlmZ d dlZdej        j	        j
        deeef         fdZdej        j	        j
        defdZdefdZdedefd	ZdS )
    N)Dictprojectreturnc                 t    t          t          j         t          |           t	          d                    }|S )Nzrope.contrib.autoimport.models)version_data
prefs_dataschema_file_content)dictropeVERSION_get_prefs_data_get_file_content)r   version_hash_datas     4lib/python3.11/site-packages/rope/base/versioning.pyget_version_hash_datar   	   s>    &"7++-.NOO  
     c                     dt           dt           fd}t          j                    }t          |                                           D ]\  }} ||||           |                                S )Nnameserialized_datac                     t          j        |                    d                                                    }|                     |                    d                     d S )Nzutf-8ascii)hashlibsha256encode	hexdigestupdate)hasherr   r   hashed_datas       r   _mergez&calculate_version_hash.<locals>._merge   sQ    n_%;%;G%D%DEEOOQQk((1122222r   )strr   r   r   itemsr   )r   r   r   r   datas        r   calculate_version_hashr#      s    3S 33 3 3 3 3 ^F+G44::<< # #
dvtT""""r   c                     t          t          | j                            }|d= |d= |d= t          j        |dd          S )Nproject_opened	callbacksdependenciesT   )	sort_keysindent)r
   varsprefsjsondumps)r   r   s     r   r   r      sI    d7=))**J#$;>":jD;;;;r   module_namec                     t           j                            |           }|r|j        sJ t	          |j        t           j        j                  sJ |j                            |           }|sJ |S )N)	importlibutil	find_specloader
isinstance	machinerySourceFileLoader
get_source)r/   models_modulesrcs      r   r   r   %   sn    N,,[99M1]1111m*I,?,PQQQQQ


)
)+
6
6CJJJJr   )r   importlib.utilr1   r-   typingr   rope.base.projectr   baser   Projectr    r   r#   r   r    r   r   <module>rA      s                   49#4#< c3h    DI$5$= #    < < < < <3 3      r   