Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_klass_children(gi_name):
'''
Returns a dict of qualified symbols representing
the children of the klass-like symbol named gi_name
'''
res = {}
children = __HIERARCHY_GRAPH.successors(gi_name)
for gi_name in children:
ctype_name = ALL_GI_TYPES[gi_name]
qs = QualifiedSymbol(type_tokens=[Link(None, ctype_name, ctype_name)])
qs.add_extension_attribute ('gi-extension', 'type_desc',
SymbolTypeDesc([], gi_name, ctype_name, 0))
res[ctype_name] = qs
return res
def __create_pad_template_symbols(self, element, plugin_name):
templates = element.get('pad-templates', {})
res = []
if not templates:
return res
for tname, template in templates.items():
name = tname.replace("%%", "%")
unique_name = '%s!%s' % (element['hierarchy'][0], name)
pagename = 'element-' + element['name']
gtype = self._remember_symbol_type(template.get("type", "GstPad"), pagename)
link = Link(None, gtype, gtype, mandatory=True)
object_type = QualifiedSymbol(type_tokens=[link])
res.append(self.create_symbol(
GstPadTemplateSymbol,
name=name,
direction=template["direction"],
presence=template["presence"],
caps=template["caps"],
filename=plugin_name, parent_name=None,
object_type=object_type,
display_name=name, unique_name=unique_name,
extra={'gst-element-name': pagename}))
return res
def __create_hierarchy(self, pagename, element_dict):
hierarchy = []
for klass_name in element_dict["hierarchy"][1:]:
self._remember_symbol_type(klass_name, pagename)
link = Link(None, klass_name, klass_name, mandatory=True)
sym = QualifiedSymbol(type_tokens=[link])
hierarchy.append(sym)
hierarchy.reverse()
return hierarchy
else:
self.type_tokens.append(tok)
class ReturnItemSymbol(QualifiedSymbol):
"""
Banana banana
"""
def __init__(self, comment=None, name=None, **kwargs):
QualifiedSymbol.__init__(self, **kwargs)
self.comment = comment
self.name = name
class ParameterSymbol(QualifiedSymbol):
"""
Banana banana
"""
def __init__(self, argname='', comment=None, **kwargs):
QualifiedSymbol.__init__(self, **kwargs)
# FIXME: gir specific
self.array_nesting = 0
self.argname = argname
self.comment = comment
class FieldSymbol(Symbol):
"""
Banana banana
"""
def __get_parent_link_recurse(gi_name, res):
parents = __HIERARCHY_GRAPH.predecessors(gi_name)
if parents:
__get_parent_link_recurse(parents[0], res)
ctype_name = ALL_GI_TYPES[gi_name]
qs = QualifiedSymbol(type_tokens=[Link(None, ctype_name, ctype_name)])
qs.add_extension_attribute ('gi-extension', 'type_desc',
SymbolTypeDesc([], gi_name, ctype_name, 0))
res.append(qs)
other_types = []
for provider_name, provider in plugin.get('device-providers', {}).items():
provider['name'] = provider_name
_, comment = self.__extract_feature_comment("provider", provider)
comment.description += """\n\n# Provided device example"""
other_types.append(self.__create_classed_type(provider_name,
provider.get('device-example')))
for ename, element in plugin.get('elements', {}).items():
element['name'] = ename
pagename, _ = self.__extract_feature_comment("element", element)
interfaces = []
for interface in element.get("interfaces", []):
self._remember_symbol_type(interface, pagename)
interfaces.append(QualifiedSymbol(
type_tokens=[Link(None, interface, interface, mandatory=True)]))
aliases = [pagename, element['hierarchy'][0]]
sym = self.create_symbol(
GstElementSymbol,
parent_name=None,
display_name=element['name'],
hierarchy=self.__create_hierarchy(pagename, element),
unique_name=element['name'],
filename=plugin_name,
extra={'gst-element-name': pagename},
rank=str(element['rank']), author=element['author'],
classification=element['klass'],
plugin=plugin_name,
aliases=aliases,
package=plugin['package'],
"""
self.type_link = None
self.type_tokens = []
for child in self.get_children_symbols():
child.resolve_links(link_resolver)
for tok in self.input_tokens:
if isinstance(tok, Link):
self.type_link = link_resolver.upsert_link(tok)
self.type_tokens.append(self.type_link)
else:
self.type_tokens.append(tok)
class ReturnItemSymbol(QualifiedSymbol):
"""
Banana banana
"""
def __init__(self, comment=None, name=None, **kwargs):
QualifiedSymbol.__init__(self, **kwargs)
self.comment = comment
self.name = name
class ParameterSymbol(QualifiedSymbol):
"""
Banana banana
"""
def __init__(self, argname='', comment=None, **kwargs):
python_lang = gi_extension.get_language('python')
for name, prop in properties.items():
unique_name = '%s:%s' % (obj.get('name', parent_uniquename), name)
flags = [ReadableFlag()]
if prop['writable']:
flags += [WritableFlag()]
if prop['construct-only']:
flags += [ConstructOnlyFlag()]
elif prop['construct']:
flags += [ConstructFlag()]
prop_type_name = self._remember_symbol_type(
prop["type"], pagename)
tokens = type_tokens_from_type_name(prop_type_name, python_lang)
type_ = QualifiedSymbol(type_tokens=tokens)
default = prop.get('default')
if obj['hierarchy'][0] != parent_uniquename:
aliases = ['%s:%s' % (obj['hierarchy'][0], name)]
else:
aliases = []
sym = self.app.database.get_symbol(unique_name)
if sym is None:
sym = self.create_symbol(
PropertySymbol,
prop_type=type_,
display_name=name, unique_name=unique_name,
aliases=aliases, parent_name=parent_name,
extra={'gst-element-name': pagename},
)