
    Æe}                         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y)
    N)Dictprojectreturnc                 d    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     6/usr/lib/python3/dist-packages/rope/base/versioning.pyget_version_hash_datar   	   s/    ~"7+-.NO
     c                     dt         dt         fd}t        j                         }t        |       j	                         D ]  \  }} ||||        |j                         S )Nnameserialized_datac                     t        j                  |j                  d            j                         }| j	                  |j                  d             y )Nzutf-8ascii)hashlibsha256encode	hexdigestupdate)hasherr   r   hashed_datas       r   _mergez&calculate_version_hash.<locals>._merge   s;    nn_%;%;G%DEOOQk((12r   )strr   r   r   itemsr   )r   r   r   r   datas        r   calculate_version_hashr#      s_    3S 33 3 ^^F+G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      sA    d7==)*J#$;>"::jD;;r   module_namec                    t         j                  j                  |       }|r|j                  sJ t	        |j                  t         j
                  j                        sJ |j                  j                  |       }|sJ |S )N)	importlibutil	find_specloader
isinstance	machinerySourceFileLoader
get_source)r/   models_modulesrcs      r   r   r   %   sk    NN,,[9M]1111m**I,?,?,P,PQQQ



)
)+
6CJ3Jr   )r   importlib.utilr1   r-   typingr   rope.base.projectr   baser   Projectr    r   r#   r   r    r   r   <module>rA      s        499#4#4#<#< c3h DII$5$5$=$= # < <3 3 r   