MCPcopy Create free account
hub / github.com/aboutcode-org/scancode-toolkit / _parse

Method _parse

src/packagedcode/conan.py:126–166  ·  view source on GitHub ↗
(cls, conan_recipe, package_only=False)

Source from the content-addressed store, hash-verified

124
125 @classmethod
126 def _parse(cls, conan_recipe, package_only=False):
127 try:
128 tree = ast.parse(conan_recipe)
129 recipe_class_def = next(
130 (
131 node
132 for node in tree.body
133 if isinstance(node, ast.ClassDef)
134 and node.bases
135 and isinstance(node.bases[0], ast.Name)
136 and node.bases[0].id == "ConanFile"
137 ),
138 None,
139 )
140
141 parser = ConanFileParser()
142 parser.visit(recipe_class_def)
143 except SyntaxError as e:
144 if TRACE:
145 logger_debug(f"Syntax error in conan recipe: {e}")
146 return
147
148 if TRACE:
149 logger_debug(f"ConanFileHandler: parse: package: {parser.to_dict()}")
150
151 dependencies = get_dependencies(parser.requires)
152
153 package_data = dict(
154 datasource_id=cls.datasource_id,
155 type=cls.default_package_type,
156 primary_language=cls.default_primary_language,
157 namespace=None,
158 name=parser.name,
159 version=parser.version,
160 description=parser.description,
161 homepage_url=parser.homepage_url,
162 keywords=parser.keywords,
163 extracted_license_statement=parser.license,
164 dependencies=dependencies,
165 )
166 return models.PackageData.from_data(package_data, package_only)
167
168 @classmethod
169 def parse(cls, location, package_only=False):

Callers 2

parseMethod · 0.45
jstree.min.jsFile · 0.45

Calls 8

to_dictMethod · 0.95
ConanFileParserClass · 0.85
from_dataMethod · 0.80
logger_debugFunction · 0.70
get_dependenciesFunction · 0.70
nextFunction · 0.50
parseMethod · 0.45
visitMethod · 0.45

Tested by

no test coverage detected