§
    ½Ë”j¿  ã                   óâ   — 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¦   «          dS dS )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)Ú_CassetteLoader)Úget_httpmessagec                 óD   — g d¢}|D ]}|                       |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      ú;C:\Projects\DSCons\.venv\Lib\site-packages\vcr/migration.pyÚpreprocess_yamlr      s@   € ðð ð €Oð
 ð +ð +ˆØ×#Ò# A rÑ*Ô*ˆˆØ€Oó    )ÚprotocolÚhostÚportÚpathc                  ór   — | d         }| d         }dddœ|         }||k    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"   1   s^   € Ø�Œ=€DØ�:Ô€FØ ¨"Ð-Ð-¨fÔ5€LØ"&¨,Ò"6Ð"6�J˜�J�J�J¸B€Eˆ&�MØ3Ð,Ô3Ð<Ð<°eÐ<Ð<Ð<r   c                 ó  ‡	— g }| D ]ç}|d         Š	|d         }ˆ	fd„t           D ¦   «         }t          di |¤Ž‰	d<   ‰	d         }|D ]}||         g||<   Œi }t          d                     d„ |d         D ¦   «         ¦  «        ¦  «                             ¦   «         D ]6\  }}|                     |g ¦  «         ||                              |¦  «         Œ7||d<   |                     ‰	|dœ¦  «         Œèd	„ |D ¦   «         d
„ |D ¦   «         dœS )Nr   Úresponsec                 ó<   •— i | ]}|‰                      |¦  «        “ŒS r   )Úpop)Ú.0ÚkÚreqs     €r   ú
<dictcomp>z_migrate.<locals>.<dictcomp>>   s%   ø€ Ð,Ð,Ð, ˆq�#—'’'˜!‘*”*Ð,Ð,Ð,r   ÚuriÚheadersr   c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS )zutf-8N)Úencode)r'   Úhs     r   ú	<genexpr>z_migrate.<locals>.<genexpr>E   s.   è è € Ð,WÐ,WÀ1¨Q¯XªX°gÑ->Ô->Ð,WÐ,WÐ,WÐ,WÐ,WÐ,Wr   )r   r$   c                 óX   — g | ]'}t           j                             |d          ¦  «        ‘Œ(S r   )r   ÚRequestÚ
_from_dict©r'   Úis     r   ú
<listcomp>z_migrate.<locals>.<listcomp>K   s,   € ÐTÐTÐTÀ!•W”_×/Ò/°°)´Ñ=Ô=ÐTÐTÐTr   c                 ó   — g | ]
}|d          ‘ŒS )r$   r   r4   s     r   r6   z_migrate.<locals>.<listcomp>L   s   € Ð:Ð:Ð:¨�a˜
”mÐ:Ð:Ð:r   )ÚrequestsÚ	responsesr   )ÚPARTSr"   r
   ÚjoinÚitemsÚ
setdefaultÚappend)
ÚdataÚinteractionsÚitemÚresr+   r,   r(   Úresponse_headersÚvr)   s
            @r   Ú_migraterE   9   sZ  ø€ Ø€LØð ?ð ?ˆØ�9ŒoˆØ�:ÔˆØ,Ð,Ð,Ð,¥eÐ,Ñ,Ô,ˆÝÐ%Ð% Ð%Ð%ˆˆE‰
à�i”.ˆØð 	&ð 	&ˆAØ! !œ*˜ˆG�A‰JˆJØÐÝ# C§H¢HÐ,WÐ,WÈÈIÌÐ,WÑ,WÔ,WÑ$WÔ$WÑXÔX×^Ò^Ñ`Ô`ð 	*ð 	*‰DˆAˆqØ×'Ò'¨¨2Ñ.Ô.Ð.Ø˜QÔ×&Ò& qÑ)Ô)Ð)Ð)Ø)ˆˆI‰Ø×Ò¨¸Ð=Ð=Ñ>Ô>Ð>Ð>àTÐTÀ|ÐTÑTÔTØ:Ð:¨\Ð:Ñ:Ô:ðð ð r   c                 ó¾   — t          j        | ¦  «        }t          |¦  «        rdS t          |¦  «        }|                     t          |t          ¦  «        ¦  «         dS )NFT)ÚjsonÚloadÚ_already_migratedrE   Úwriter   r   )Úin_fpÚout_fpr?   r@   s       r   Úmigrate_jsonrM   P   sR   € ÝŒ9�UÑÔ€DÝ˜ÑÔð ØˆuÝ˜D‘>”>€LØ
‡L‚L•˜<­Ñ8Ô8Ñ9Ô9Ð9Øˆ4r   c                 ó,   — t          | d         ¦  «        S )Nr   )Údict)Úfss    r   Ú_list_of_tuples_to_dictrQ   Y   s   € Ý��1”‰;Œ;Ðr   c                 ó`   — 	 |                       d¦  «        dk    rdS d S # t          $ r Y dS w xY w)NÚversionr   TF)ÚgetÚAttributeError)r?   s    r   rI   rI   ]   sM   € ðØ�8Š8�IÑÔ !Ò#Ð#Ø�4ð $Ð#øåð ð ð Øˆuˆuðøøøs   ‚ Ÿ
-¬-c                 ó¨  — t          j        t          |                      ¦   «         ¦  «        t          ¬¦  «        }t          |¦  «        rdS t          t          |¦  «        ¦  «        D ]2}t          ||         d         d         ¦  «        ||         d         d<   Œ3t          |¦  «        }| 
                    t          |t          ¦  «        ¦  «         dS )N)ÚLoaderFr   r,   T)ÚyamlrH   r   ÚreadrW   rI   ÚrangeÚlenrQ   rE   rJ   r   r   )rK   rL   r?   r5   r@   s        r   Úmigrate_ymlr\   e   s³   € ÝŒ9•_ U§Z¢Z¡\¤\Ñ2Ô2½6ÐBÑBÔB€DÝ˜ÑÔð ØˆuÝ•3�t‘9”9ÑÔð _ð _ˆÝ(?ÀÀQÄÈ	Ô@RÐS\Ô@]Ñ(^Ô(^ˆˆQŒ�	Ô˜9Ñ%Ð%Ý˜D‘>”>€LØ
‡L‚L•˜<­Ñ8Ô8Ñ9Ô9Ð9Øˆ4r   c                 ó¢  — t          j        d¬¦  «        5 }t          | ¦  «        5 } |||¦  «        s	 d d d ¦  «         d d d ¦  «         dS 	 d d d ¦  «         n# 1 swxY w Y   t          | d¦  «        5 }|                     d¦  «         t	          j        ||¦  «         d d d ¦  «         n# 1 swxY w Y   	 d d d ¦  «         dS # 1 swxY w Y   d S )Nzw+)ÚmodeFÚwr   T)ÚtempfileÚTemporaryFileÚopenÚseekÚshutilÚcopyfileobj)Ú	file_pathÚmigration_fnrL   rK   s       r   Úmigraterh   p   sÄ  € õ 
Ô	 TÐ	*Ñ	*Ô	*ð ¨fÝ�)‰_Œ_ð 	 Ø�<  vÑ.Ô.ð Øð	ð 	ð 	ñ 	ô 	ð 	ðð ð ñ ô ð ð ð ðð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �)˜SÑ!Ô!ð 	. UØ�KŠK˜‰NŒNˆNÝÔ˜v uÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s]   –C¦A´CÁCÁA	ÁCÁ A	Á!CÁ4+B+ÂCÂ+B/	Â/CÂ2B/	Â3CÃCÃCc                 ó®   — |                       d¦  «        rt          | t          ¦  «        S |                       d¦  «        rt          | t          ¦  «        S dS )Nz.json)z.yamlz.ymlF)Úendswithrh   rM   r\   )r   s    r   Útry_migraterk   }   sP   € Ø‡}‚}�WÑÔð *Ý�t�\Ñ*Ô*Ð*Ø	�ŠÐ(Ñ	)Ô	)ð *Ý�t�[Ñ)Ô)Ð)Øˆ5r   c                  ó<  — t          t          j        ¦  «        dk    rt          d¦  «        ‚t          j        d         } t          j                             | ¦  «        st          j                             | ¦  «        } | g}t          j                             | ¦  «        rd„ t	          j	        | ¦  «        D ¦   «         }|D ]=}t          |¦  «        }|rdnd}t          j                             d|› d|› d	�¦  «         Œ>t          j                             d
¦  «         d S )Né   zXPlease provide path to cassettes directory or file. Usage: python3 -m vcr.migration PATHr   c              3   óh   K  — | ]-\  }}}|D ]$}t           j                             ||¦  «        V — Œ%Œ.d S )N)Úosr   r;   )r'   ÚrootÚdirsÚfilesÚnames        r   r0   zmain.<locals>.<genexpr>�   sH   è è € ÐeÐeÑ.A¨t°T¸5Ð_dÐeÐeÐW[•”—’˜d DÑ)Ô)ÐeÐeÐeÐeÐeÐeÐer   ÚOKÚFAILú[z] ú
zDone.
)r[   ÚsysÚargvÚ
SystemExitro   r   ÚisabsÚabspathÚisdirÚwalkrk   ÚstderrrJ   )r   rr   rf   ÚmigratedÚstatuss        r   Úmainr‚   …   s  € Ý
�3Œ8�}„}˜ÒÐÝØfñ
ô 
ð 	
õ Œ8�AŒ;€DÝŒ7�=Š=˜ÑÔð %ÝŒw�Š˜tÑ$Ô$ˆØˆF€EÝ	„w‡}‚}�TÑÔð fØeÐeÅRÄWÈTÁ]Ä]ÐeÑeÔeˆØð 6ð 6ˆ	Ý˜yÑ)Ô)ˆØ!Ð-�� vˆÝŒ
×ÒÐ4˜VÐ4Ð4 yÐ4Ð4Ð4Ñ5Ô5Ð5Ð5Ý„J×Ò�YÑÔÐÐÐr   Ú__main__)Ú__doc__rG   ro   rd   rx   r`   rX   r   r   r   Úserializersr   r   Úserializers.yamlserializerr	   rW   Ústubs.compatr
   r   r:   r"   rE   rM   rQ   rI   r\   rh   rk   r‚   Ú__name__r   r   r   ú<module>r‰      sn  ððð ð €€€Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø €€€à €€€à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø AÐ AÐ AÐ AÐ AÐ AØ )Ð )Ð )Ð )Ð )Ð )ðð ð ð  	-Ð,Ð,€ð=ð =ð =ðð ð ð.ð ð ðð ð ðð ð ðð ð ð
ð 
ð 
ðð ð ð ð  ð  ð& ˆzÒÐØ€D�F„F€F€F€Fð Ðr   