
    BThF*                         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dlmZ dd	lmZmZ dd
lmZmZ  G d d      Zy)    N)abc)Path   )filtersmatchers)Cassette)FilesystemPersister)
RecordMode)jsonserializeryamlserializer)auto_decoratecomposec                       e Zd Zed        Zed        Zdddddej                  ddddddddddddfd	Zd
 Z	d Z
ddZddZd Zd Zd Zed        Zed        Zd Zd Zd ZddZy)VCRc                 \    | j                  d      xr t        |t        j                        S )Ntest)
startswith
isinstancetypesFunctionType)method_namefunctions     \/var/www/catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/vcr/config.pyis_test_methodzVCR.is_test_method   s%    %%f-Z*XuGYGY2ZZ    c                       fd}|S )Nc                 4    | j                        s| z   S | S N)endswith)pathsuffixs    r   ensurez!VCR.ensure_suffix.<locals>.ensure   s    ==(f}$Kr    )r!   r"   s   ` r   ensure_suffixzVCR.ensure_suffix   s    	
 r   Nr#   F)methodschemehostportr    queryyamlTc                    || _         || _        || _        t        t        d| _        t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                   d| _        t"        | _        || _        || _        || _        |
| _        |xs || _        |	| _        || _        || _        || _        || _        || _        || _        || _        tA        |      | _!        y )N)r*   json)r%   uriurlr&   r'   r(   r    r)   headersraw_bodybody)"
serializermatch_oncassette_library_dirr   r   serializersr   r%   r-   r&   r'   r(   r    r)   r/   r0   r1   r	   	persisterrecord_modefilter_headersfilter_query_parametersfilter_post_data_parametersbefore_record_requestbefore_record_responseignore_hostsignore_localhostinject_cassettepath_transformerfunc_path_generatordecode_compressed_responserecord_on_exceptiontuple_custom_patches)selfr@   r;   custom_patchesr9   r=   r7   r>   r8   r<   r:   r3   before_recordr?   r2   r4   rA   rB   rC   s                      r   __init__zVCR.__init__   s   * % $8!$2NKoo<<<<ooMMMMMM^^'' ))MM
 -&,'>$+F(%:%Km"&<#( 0. 0#6 *D'#6 $^4r   c                 `    	 | j                   |   }|S # t        $ r t        d| d      d w xY w)NzSerializer " doesn't exist or isn't registered)r5   KeyError)rF   serializer_namer2   s      r   _get_serializerzVCR._get_serializerU   sL    	h))/:J   	h[(99[\]cgg	hs    -c                     g }	 |D ]!  } |j                   | j                  |          # 	 |S # t        $ r t        d d      d w xY w)NzMatcher rK   )appendr   rL   )rF   matcher_namesr   ms       r   _get_matcherszVCR._get_matchers\   se    	W" 2a 012   	WXaS(JKLRVV	Ws	   &- Ac                     |0t        |t        t        f      s|}  | j                  di ||      S  | j                  dd|i|S )Nr    r#   )r   strr   _use_cassette)rF   r    kwargsr   s       r   use_cassettezVCR.use_cassettee   sS    Jtc4[$AH/%4%%//99!t!!6t6v66r   c                     |r' | j                   di |}t        j                  di |S t        j                  | j                   fi |}t        j
                  |      S )Nr#   )get_merged_configr   use	functoolspartialuse_arg_getter)rF   with_current_defaultsrW   configargs_getters        r   rV   zVCR._use_cassettel   sZ     +T++5f5F<<)&))
  ''(>(>I&I&&{33r   c                    |j                  d| j                        }|j                  d| j                        }|j                  d| j                        }|j                  d| j                        }|j                  d| j
                        |j                  dd      }|j                  d| j                        }rfd	}t        ||      }n|s| j                  }| j                  |      | j                  | j                  t        |      t        |      z         |j                  d
| j                        | j                  |      | j                  |      | j                   |j                  dd      z   |j                  d| j"                        |||j                  dd      |d}	|j                  d      }
|
r|
|	d<   |	S )Nr2   r3   r@   rA   r4   additional_matchersr#   rC   c                 j    | j                        s t        j                  j                  |       S | S r   )r   osr    join)r    r4   s    r   add_cassette_library_dirz7VCR.get_merged_config.<locals>.add_cassette_library_dir   s+    ';<77<<(<dCCr   r7   rG   r?   allow_playback_repeatsF)r2   r6   r3   r7   r;   r<   rG   injectr@   rA   rh   rC   r    )getr2   r3   r@   rA   r4   rC   r   "_build_path_from_func_using_modulerN   r6   rS   rD   r7   _build_before_record_request_build_before_record_responserE   r?   )rF   rW   rM   rQ   r@   rA   rc   rC   rg   merged_configr    r4   s              @r   rZ   zVCR.get_merged_configw   s    **\4??C

:t}}=!::&8$:O:OP$jj)>@X@XY%zz*@$B[B[\$jj)>C$jj)>@X@XY
  ''?AQR$ #'"I"I ..?**5+?%H[B\+\]!::mT5E5EF%)%F%Fv%N&*&H&H&P"22VZZ@PRT5UUjj!2D4H4HI 0#6&,jj1I5&Q#6
 zz&!$(M&!r   c                 (   |j                  d| j                        }|j                  d| j                        }g |rj                  t        j
                         |r.t        |t        j                        s|f}j                  |       fd}|S )Nr<   rB   c                 0    D ]  }|  | S  ||       }  | S r   r#   )responser   filter_functionss     r   r<   zAVCR._build_before_record_response.<locals>.before_record_response   s3    , .#O $H-. Or   )
rj   r<   rB   rP   r   decode_responser   collections_abcIterableextend)rF   optionsr<   rB   rr   s       @r   rm   z!VCR._build_before_record_response   s    !(-EtGbGb!c%,[[(++&
" %##G$;$;<!4o6N6NO*@)B&##$:;	 &%r   c                    g |j                  d| j                        }|j                  d| j                        }|j                  d| j                        }|j                  d|j                  d| j                              }|j                  d| j
                        }|j                  d| j                        }|rW|D cg c]  }t        |t              r|n|d f }	}j                  t        j                  t        j                  |	             |rW|D 
cg c]  }
t        |
t              r|
n|
d f }	}
j                  t        j                  t        j                  |	             |rW|D 
cg c]  }
t        |
t              r|
n|
d f }	}
j                  t        j                  t        j                  |	             t!        |      }|r|j#                  d	       |r j                  | j%                  |             |r.t        |t&        j(                        s|f}j+                  |       fd
}|S c c}w c c}
w c c}
w )Nr8   r9   r:   r;   rH   r=   r>   )replacements)	localhostz0.0.0.0z	127.0.0.1c                 Z    t        j                  |       } D ]  }|  | S  ||       }  | S r   )copydeepcopy)requestr   rr   s     r   r;   z?VCR._build_before_record_request.<locals>.before_record_request   s@    mmG,G, ,?N #7+, Nr   )rj   r8   r9   r:   r;   r=   r>   r   rD   rP   r\   r]   r   replace_headersreplace_query_parametersreplace_post_data_parameterssetupdate_build_ignore_hostsrt   ru   rv   )rF   rw   r8   r9   r:   r;   r=   r>   hry   phosts_to_ignorerr   s               @r   rl   z VCR._build_before_record_request   s    %5t7J7JK")++.GIeIe"f&-kk),,'
# !(#KK)C)CD!
 {{>43D3DE";;'94;P;PQN\]Au!5AAt9D]L]##I$5$5g6M6M\h$ij"NefAu!5AAt9DfLf##!!'"B"BQ]^ 'NijAu!5AAt9DjLj##!!'"F"FUab l+""#HI##D$<$<_$MN 3_5M5MN)>(@%##$9:	 %$A ^ g
 ks   H>I4Ic                       fd}|S )Nc                 >    t        | d      r| j                  v ry | S )Nr'   )hasattrr'   )r~   r   s    r   filter_ignored_hostsz5VCR._build_ignore_hosts.<locals>.filter_ignored_hosts   s     w'GLLO,KNr   r#   )r   r   s   ` r   r   zVCR._build_ignore_hosts   s    	
 $#r   c                     t         j                  j                  t         j                  j                  t	        j
                  |             | j                        S r   )re   r    rf   dirnameinspectgetfile__name__)r   s    r   rk   z&VCR._build_path_from_func_using_module   s3    ww||BGGOOGOOH,EFHYHYZZr   c                 "    || j                   |<   y r   )r5   )rF   namer2   s      r   register_serializerzVCR.register_serializer   s    !+r   c                 "    || j                   |<   y r   )r   )rF   r   matchers      r   register_matcherzVCR.register_matcher   s    %dr   c                     || _         y r   )r6   )rF   r6   s     r   register_persisterzVCR.register_persister   s	    "r   c                 b    |xs | j                   }t        | j                  |      } |ddi       S )Ntemporary_classr#   )r   r   rX   )rF   	predicate	metaclasss      r   	test_casezVCR.test_case   s4    4!4!4	!$"3"3Y?	*B33r   r   )F)r   
__module____qualname__staticmethodr   r$   r
   ONCErI   rN   rS   rX   rV   rZ   rm   rl   r   rk   r   r   r   r   r#   r   r   r   r      s    [ [   " "OO#$&F! #( '45l7	4'R&./%b $ $ [ [,&#4r   r   )r|   r\   r   re   r   collectionsr   rt   pathlibr    r   r   cassetter   persisters.filesystemr	   r7   r
   r5   r   r   utilr   r   r   r#   r   r   <module>r      s8       	  .    6 # 7 (q4 q4r   