0L<.^ d dl Z d dlmZ d dlmZ d dlmZmZ d dlm Z m Z d dlmZ d dl mZmZmZmZmZ d dlmZmZmZmZmZ d d lmZmZ d dlZeeegef Zd Z ed Z G d d Z! ddedede"dedededeegef fdZ#ededefd Z$ed dededefd Z%ed dededefd Z& G d de' Z(dZ) ee)e!j* e!j# e#e(g dS )! N)contextmanager)partial) get_referrers get_referents)setitemgetitem) ModuleType)AnyTypeVarCallableDictTuple)resolve not_thereResolvedclassmethod_type class_type)wrapextend_docstringc D t | | ot || S N) isinstance)xy descriptors f/builddir/build/BUILD/cloudlinux-venv-1.0.10/venv/lib/python3.11/site-packages/testfixtures/replace.pynot_same_descriptorr s$ a$$FZ:-F-F)FF Rc e Zd ZdZd ZdefdZ ddeded e d ede ded efdZ ddeded e d ede ded dfdZ deded dfdZdede fdZddededed dfdZddededed dfdZddZd Zd Zd ZdS )Replacerz These are used to manage the mocking out of objects so that units of code can be tested without having to rely on their normal dependencies. c i | _ d S r ) originalsselfs r __init__zReplacer.__init__ s :<r resolvedc 0 |t u rk|j t u r, t |j |j n# t $ r Y nw xY w|j t u r! |j |j = d S # t $ r Y d S w xY wd S | |j |j | d S r ) r settersetattrdelattr containernameAttributeErrorr KeyError)r% r' values r _replacezReplacer._replace# s I'))H. >>>>% D')) *8=999 DD *) OOH. uEEEEEs! 4 A A A" " A0/A0TNtargetreplacementstrictr, accessorr- returnc ||t d t |t r"|t d t || }nt }||}|pt |dd }|t d |I t } ||| }nY# t $ r Y nMt $ r t } |||t }Y n)w xY w ||| }n# t t f$ r Y nw xY w|r4|t u s+||u s' ||| } || urt |d| d| t ||t u rt nt || }|j t d |j t u r|rt d |j z |} t |j t$ r|j |j j v r|j j |j |_ t) |j |t* rt+ | } n*t) |j |t, rt- | } | || t1 | }|| j vr||f| j |<