
    BTh                         d Z ddlZddlZddlZddlZddlZddlZddlmZ ddl	m	Z	 ddl
mZmZ ddlmZ 	 ddlmZ d
 Zg dZd Zd Zd Zd Zd Zd Zd Zd Zd Zedk(  r e        yy# e$ r	 dd	lmZ Y =w xY w)aH  
Migration script for old 'yaml' and 'json' cassettes

.. warning:: Backup your cassettes files before migration.

It merges and deletes the request obsolete keys (protocol, host, port, path)
into new 'uri' key.
Usage::

    python3 -m vcr.migration PATH

The PATH can be path to the directory with cassettes or cassette itself
    N   )request)	serialize)jsonserializeryamlserializer)get_httpmessage)CLoaderLoaderc                 @    g d}|D ]  }| j                  |d      }  | S )N)z#!!python/object:vcr.request.Requestz+!!python/object/apply:__builtin__.frozensetz(!!python/object/apply:builtins.frozenset )replace)cassetteSTRINGS_TO_NUKEss      _/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/vcr/migration.pypreprocess_yamlr   #   s1    O
  +##Ar*+O    )protocolhostportpathc                  h    | d   }| d   }ddd|   }||k7  rd| nd| d<    dj                   d	i | S )
Nr   r   i  P   )httpshttp:r   z{protocol}://{host}{port}{path} )format)partsr   schemedefault_ports       r   	build_urir#   6   sS    =D:F "-f5L"&,"6avJBE&M3,33<e<<r   c                 P   g }| D ]  }|d   }|d   }t         D ci c]  }||j                  |       }}t        d	i ||d<   |d   }|D ]  }||   g||<    i }t        dj	                  d |d   D                    j                         D ]+  \  }}	|j                  |g        ||   j                  |	       - ||d<   |j                  ||d        |D 
cg c]$  }
t        j                  j                  |
d         & c}
|D 
cg c]  }
|
d   	 c}
dS c c}w c c}
w c c}
w )
Nr   responseuriheadersr   c              3   >   K   | ]  }|j                  d         yw)zutf-8N)encode).0hs     r   	<genexpr>z_migrate.<locals>.<genexpr>J   s     ,W1QXXg->,Ws   )r   r%   )requests	responsesr   )PARTSpopr#   r   joinitems
setdefaultappendr   Request
_from_dict)datainteractionsitemreqreskr&   r'   response_headersvis              r   _migrater@   >   sJ   L ?9o:&+,q#''!*},,%%E
i. 	&A!!*GAJ	&#CHH,WI,W$WX^^` 	*DAq''2.Q&&q)	* *I=>?  HTT!W__//)=T-9:a
m:  - U:s   D)DD#c                     t        j                  |       }t        |      ryt        |      }|j	                  t        |t                     y)NFT)jsonload_already_migratedr@   writer   r   )in_fpout_fpr7   r8   s       r   migrate_jsonrH   U   s:    99UDD>L
LL<89r   c                     t        | d         S )Nr   )dict)fss    r   _list_of_tuples_to_dictrL   ^   s    1;r   c                 N    	 | j                  d      dk(  ryy # t        $ r Y yw xY w)Nversionr   TF)getAttributeError)r7   s    r   rD   rD   b   s2    88I!# $ s    	$$c                 @   t        j                  t        | j                               t              }t        |      ryt        t        |            D ]  }t        ||   d   d         ||   d   d<   ! t        |      }|j                  t        |t                     y)Nr
   Fr   r'   T)yamlrC   r   readr   rD   rangelenrL   r@   rE   r   r   )rF   rG   r7   r?   r8   s        r   migrate_ymlrV   j   s    99_UZZ\26BD3t9 _(?Q	@RS\@](^Q	9%_D>L
LL<89r   c                 d   t        j                  d      5 }t        |       5 } |||      s	 d d d        d d d        y	 d d d        t        | d      5 }|j                  d       t	        j
                  ||       d d d        	 d d d        y# 1 sw Y   OxY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nzw+)modeFwr   T)tempfileTemporaryFileopenseekshutilcopyfileobj)	file_pathmigration_fnrG   rF   s       r   migraterb   u   s     
		T	* f)_ 	v.	 .	 )S! 	.UKKNvu-	.  	 		. 	.	 s?   B&BB& B&(B<	B&B	B&B#	B&&B/c                     | j                  d      rt        | t              S | j                  d      rt        | t              S y)Nz.json)z.yamlz.ymlF)endswithrb   rH   rV   )r   s    r   try_migratere      s8    }}Wt\**	(	)t[))r   c                  *   t        t        j                        dk7  rt        d      t        j                  d   } t        j
                  j                  |       st        j
                  j                  |       } | g}t        j
                  j                  |       rd t	        j                  |       D        }|D ]9  }t        |      }|rdnd}t        j                  j                  d| d| d	       ; t        j                  j                  d
       y )N   zXPlease provide path to cassettes directory or file. Usage: python3 -m vcr.migration PATHr   c              3   r   K   | ]/  \  }}}|D ]$  }t         j                  j                  ||       & 1 y w)N)osr   r1   )r*   rootdirsfilesnames        r   r,   zmain.<locals>.<genexpr>   s5     e.AtT5_deW[dD)e)es   57OKFAIL[z] 
zDone.
)rU   sysargv
SystemExitri   r   isabsabspathisdirwalkre   stderrrE   )r   rl   r`   migratedstatuss        r   mainr|      s    
388}f
 	
 88A;D77==wwt$FE	ww}}TeRWWT]e 6	y)!v

1VHByk456 JJYr   __main__)__doc__rB   ri   r^   rr   rZ   rR   r   r   r   serializersr   r   stubs.compatr   r	   r   ImportErrorr   r/   r#   r@   rH   rL   rD   rV   rb   re   r|   __name__r   r   r   <module>r      s     	  
      7 )&
  	-=.
 & zF }  s   A, ,A:9A: