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

Method parse

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

Source from the content-addressed store, hash-verified

925 self.class_name_blacklist = class_name_blacklist
926
927 def parse(self):
928 if self.module in _visited_objects:
929 return
930 _visited_objects.append(self.module)
931 logger.debug("Parsing '%s' module" % self.module.__name__)
932 for name, member in inspect.getmembers(self.module):
933 if (inspect.isfunction(member) or inspect.isclass(member)) and name != member.__name__:
934 self.alias.append(AliasStubsGenerator(name, member))
935 elif inspect.ismodule(member):
936 m = ModuleStubsGenerator(member)
937 if m.module.__name__.split(".")[:-1] == self.module.__name__.split("."):
938 self.submodules.append(m)
939 else:
940 self.imported_modules += [m.module.__name__]
941 logger.debug(
942 "Skip '%s' module while parsing '%s' "
943 % (m.module.__name__, self.module.__name__)
944 )
945 elif inspect.isbuiltin(member) or inspect.isfunction(member):
946 self.free_functions.append(
947 FreeFunctionStubsGenerator(name, member, self.module.__name__)
948 )
949 elif inspect.isclass(member):
950 if member.__module__ == self.module.__name__:
951 if (
952 member.__name__ not in self.class_name_blacklist
953 and member.__name__.isidentifier()
954 ):
955 self.classes.append(ClassStubsGenerator(member))
956 else:
957 self.imported_classes[name] = member
958 elif name == "__doc__":
959 self.doc_string = member
960 elif name not in self.attributes_blacklist:
961 self.attributes.append(AttributeStubsGenerator(name, member))
962
963 for x in itertools.chain(
964 self.submodules, self.classes, self.free_functions, self.attributes
965 ):
966 x.parse()
967
968 def class_ordering(
969 a, b
970 ): # type: (ClassStubsGenerator, ClassStubsGenerator) -> int
971 if a.klass is b.klass:
972 return 0
973 if issubclass(a.klass, b.klass):
974 return -1
975 if issubclass(b.klass, a.klass):
976 return 1
977 return 0
978
979 # reorder classes so base classes would be printed before derived
980 # print([ k.klass.__name__ for k in self.classes ])
981 for i in range(len(self.classes)):
982 for j in range(i + 1, len(self.classes)):
983 if class_ordering(self.classes[i], self.classes[j]) < 0:
984 t = self.classes[i]

Callers 1

mainFunction · 0.95

Calls 7

AliasStubsGeneratorClass · 0.85
ClassStubsGeneratorClass · 0.85
appendMethod · 0.45
parseMethod · 0.45

Tested by

no test coverage detected