L i RdZddlmZGddZGddejZy)z3Functionality for Python <-> C++ frontend inter-op.)nncPeZdZdZdZedZdZdZdZ dZ dZ d Z d Z y ) OrderedDictWrapperaA wrapper around a C++ OrderedDict. It dynamically evaluates the OrderedDict getter on a bound C++ module, such that new changes on the C++ side are picked up. Otherwise accessing e.g. ``cpp_module._parameters`` just once would get a frozen copy of the parameters at the time of access. ``torch.nn.Module`` accesses ``_parameters`` et al. via ``self.__dict__`` so using properties does not work. c ||_||_yN) cpp_moduleattr)selfrr s R/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/torch/nn/cpp.py__init__zOrderedDictWrapper.__init__s$ cBt|j|jSr)getattrrr r s r cpp_dictzOrderedDictWrapper.cpp_dictst 22r c6|jjSr)ritemsrs r rzOrderedDictWrapper.itemss}}""$$r c6|jjSr)rkeysrs r rzOrderedDictWrapper.keyss}}!!##r c6|jjSr)rvaluesrs r rzOrderedDictWrapper.values"s}}##%%r c6|jjSr)r__iter__rs r rzOrderedDictWrapper.__iter__%s}}%%''r c6|jjSr)r__len__rs r rzOrderedDictWrapper.__len__(s}}$$&&r c8|jj|Sr)r __contains__r keys r rzOrderedDictWrapper.__contains__+s}}))#..r c8|jj|Sr)r __getitem__rs r r!zOrderedDictWrapper.__getitem__.s}}((--r N)__name__ __module__ __qualname____doc__r propertyrrrrrrrr!r r rrsC33 %$&('/.r rcdeZdZdZfdZddZedZejdZdZ xZ S) ModuleWrapperz\A subclass of ``torch.nn.Module`` that wraps a C++ frontend module and delegates all access.c ||_t| t|d|_t|d|_t|d|_t|D]5}|jdrt||t|j|7y)N _parameters_buffers_modules_) rsuperr rr+r,r-dir startswithsetattrr)r rr __class__s r r zModuleWrapper.__init__5sz% -j-H,>z:,V ,>z:,V  O DD??3'dGDOOT$BC Dr c&|jD]Q}||j|_|j'||jj|j_S|jD]}||j|_|Sr) parametersdata_gradbuffers)r fnrecurseparambufs r _applyzModuleWrapper._applyBs{__& 8EEJJEJ{{&#%ekk&6&6#7   8<<> $C#((|CH $ r c.|jjSr)rtrainingrs r r?zModuleWrapper.trainingPs'''r c:|jj|yr)rtrain)r modes r r?zModuleWrapper.trainingTs d#r c6|jjSr)r__repr__rs r rDzModuleWrapper.__repr__Xs''))r )T) r"r#r$r%r r=r&r?setterrD __classcell__)r3s@r r)r)2sBf D ((__$$*r r)N)r%torchrrModuler)r'r r rIs&9(.(.V'*BII'*r