123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
-
- # print(dir())
-
- # print("i0")
- print("i0:",dir())
-
- def sinfo(o):
- for k in o["g"].keys():
- print(k)
- print("...")
- for k in o["l"].keys():
- print(k)
- # self.
- # print(eflag)
- # sinfo({"g":globals(),"l":locals()})
- # self.scope_opt = "globals"
- # self.scope_opt = "locals"
- print(end="",flush=True)
-
-
-
-
-
-
-
-
-
- def mro_wo(klass):
- ret = [*klass.__mro__]
- if object in ret:
- ret.remove(object)
- return ret
-
- def class_reset_v0(klass):
- # print("\n")
- # print(klass,_klass)
- n = klass.__name__
- n2 = getattr(klass,"_rcls_name","NO ATTR")
- # print("class reset:", klass,n,n2)
- for en in dir(klass):
- if en[:2]=="__":continue
- # p("???")
- attr = getattr(klass,en,"NO ATTR")
- # p("???..",en,klass,attr)
- # p*
-
- # print("\t",en,attr)
- # setattr(klass,en,attr)
- if en == "_rcls_name":pass
- # continue
- setattr(klass,en,None)
- delattr(klass,en)
- r'''
- try:
- # z+1
- setattr(klass,en,None)
- p("DEL",en,attr,hasattr(klass,en))
- delattr(klass,en)
- pass
- except Exception as e:
- p("~~",e)
- # inspect.
- # p(dir(inspect))
- # p(dir(e))
- tx= traceback.print_tb(e.__traceback__)
- # traceback.print_tb(e)
- # p()
- p(tx)
- # p(.print_tb())
- raise e
- # '''
-
-
- def get_class_by_name(klass,_klass,dec_c1):
- rcls = None
- # _rcls_name
- __rcls_name = _klass.__name__
- mro = mro_wo(klass)
- if klass in mro and not dec_c1:
- mro.remove(klass)
-
- for cls in mro:
- # _rcls_name = getattr(cls,"rcls_name_a",None)
- _rcls_name = getattr(cls,"_rcls_name",None)
- if not rcls and not _rcls_name:
- rcls=cls
- if _rcls_name == __rcls_name:
- rcls=cls
- if not rcls:
- p("OUT OF EMPTY CLASSES")
- raise "class_rld_ERR"
- return rcls
-
-
- def class_reset_mro(klass):
- for cls in mro_wo(klass):
- class_reset_v0(cls)
-
-
- # TODO:JFI I forgot what dec_c1 does
- def class_edit_v2(__klass,_klass,reset=0,dec_c1=0):
- # print("\n")
- # rglob.cls_e.append((__klass.__name__,_klass.__name__))
- klass = get_class_by_name(__klass,_klass,dec_c1)
- cls_name = _klass.__name__
-
- # klass._rcls_name=cls_name
- # setattr(klass,"rcls_name_a",cls_name)
- print(klass,_klass)
-
- if reset:
- class_reset_v0(klass)
- if reset == "rmv":
- return
-
- setattr(klass,"_rcls_name",cls_name)
-
- for en in dir(_klass):
- if en[:2]=="__":continue
- attr = getattr(_klass,en,"NO ATTR")
- # print("\t",en)
- setattr(klass,en,attr)
- class_edit = class_edit_v2
- class_reset = class_reset_mro
-
|