MCPcopy Create free account
hub / github.com/NVIDIAGameWorks/Falcor / parse

Method parse

build_scripts/pybind11_stubgen.py:759–823  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

757 return self.involved_modules_names
758
759 def parse(self):
760 if self.klass in _visited_objects:
761 return
762 _visited_objects.append(self.klass)
763
764 bases = inspect.getmro(self.klass)[1:]
765
766 def is_base_member(name, member):
767 for base in bases:
768 if hasattr(base, name) and getattr(base, name) is member:
769 return True
770 return False
771
772 is_pybind11 = any(base.__name__ == "pybind11_object" for base in bases)
773
774 for name, member in inspect.getmembers(self.klass):
775 # check if attribute is in __dict__ (fast path) before slower search in base classes
776 if name not in self.klass.__dict__ and is_base_member(name, member):
777 continue
778 if name.startswith("__pybind11_module"):
779 continue
780 if (inspect.isroutine(member) or inspect.isclass(member)) and name != member.__name__:
781 self.alias.append(AliasStubsGenerator(name, member))
782 elif inspect.isroutine(member):
783 self.methods.append(
784 ClassMemberStubsGenerator(name, member, self.klass.__module__)
785 )
786 elif name != "__class__" and inspect.isclass(member):
787 if (
788 member.__name__ not in self.class_name_blacklist
789 and member.__name__.isidentifier()
790 ):
791 self.classes.append(ClassStubsGenerator(member))
792 elif isinstance(member, property):
793 self.properties.append(
794 PropertyStubsGenerator(name, member, self.klass.__module__)
795 )
796 elif name == "__doc__":
797 self.doc_string = member
798 elif not (
799 name in self.attributes_blacklist
800 or (is_pybind11 and name in self.pybind11_attributes_blacklist)
801 ):
802 self.fields.append(AttributeStubsGenerator(name, member))
803 # logger.warning("Unknown member %s type : `%s` " % (name, str(type(member))))
804
805 for x in itertools.chain(
806 self.classes, self.methods, self.properties, self.fields
807 ,
808 self.alias):
809 x.parse()
810
811 for B in bases:
812 if (
813 B.__name__ != self.klass.__name__
814 and B.__name__ not in self.base_class_blacklist
815 ):
816 self.base_classes.append(B)

Callers

nothing calls this directly

Calls 10

AliasStubsGeneratorClass · 0.85
ClassStubsGeneratorClass · 0.85
anyFunction · 0.50
appendMethod · 0.45
parseMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected