async def test_helpers(self): form = 'test:str' valu = 'cool' props = { 'tick': 12345, 'hehe': 'hehe', } tval = (None, None) async with self.getTestCore() as core: async with await core.snap() as snap: node = await snap.addNode(form, valu, props=props) await node.addTag('test.foo.bar.duck', tval) await node.addTag('test.foo.baz', tval) await node.addTag('test.foo.time', ('2016', '2019')) await node.addTag('test.foo', ('2015', '2017')) pode = node.pack(dorepr=True) node2 = await snap.addNode('test:int', '1234') pode2 = node2.pack(dorepr=True) self.eq(s_node.ndef(pode), ('test:str', 'cool')) self.eq(s_node.reprNdef(pode), ('test:str', 'cool')) self.eq(s_node.ndef(pode2), ('test:int', 1234)) self.eq(s_node.reprNdef(pode2), ('test:int', '1234')) e = 'bf1198c5f28dae61d595434b0788dd6f7206b1e62d06b0798e012685f1abc85d' self.eq(s_node.iden(pode), e) self.true(s_node.tagged(pode, 'test')) self.true(s_node.tagged(pode, '#test.foo.bar')) self.true(s_node.tagged(pode, 'test.foo.bar.duck')) self.false(s_node.tagged(pode, 'test.foo.bar.newp')) self.len(3, s_node.tags(pode, leaf=True)) self.len(4, s_node.tagsnice(pode)) self.len(6, s_node.tags(pode)) self.eq(s_node.reprTag(pode, '#test.foo.bar'), '') self.eq(s_node.reprTag(pode, '#test.foo.time'), '(2016/01/01 00:00:00.000, 2019/01/01 00:00:00.000)') self.none(s_node.reprTag(pode, 'test.foo.newp')) self.eq(s_node.prop(pode, 'hehe'), 'hehe') self.eq(s_node.prop(pode, 'tick'), 12345) self.eq(s_node.prop(pode, ':tick'), 12345) self.eq(s_node.prop(pode, 'test:str:tick'), 12345) self.none(s_node.prop(pode, 'newp')) self.eq(s_node.reprProp(pode, 'hehe'), 'hehe') self.eq(s_node.reprProp(pode, 'tick'), '1970/01/01 00:00:12.345') self.eq(s_node.reprProp(pode, ':tick'), '1970/01/01 00:00:12.345') self.eq(s_node.reprProp(pode, 'test:str:tick'), '1970/01/01 00:00:12.345') self.none(s_node.reprProp(pode, 'newp')) props = s_node.props(pode) self.isin('.created', props) self.isin('tick', props) self.notin('newp', props)
async def test_helpers(self): form = 'test:str' valu = 'cool' props = {'tick': 12345, 'hehe': 'hehe', } tval = (None, None) async with self.getTestCore() as core: async with await core.snap() as snap: node = await snap.addNode(form, valu, props=props) await node.addTag('test.foo.bar.duck', tval) await node.addTag('test.foo.baz', tval) await node.addTag('test.foo.time', ('2016', '2019')) pode = node.pack(dorepr=True) node2 = await snap.addNode('test:int', '1234') pode2 = node2.pack(dorepr=True) self.eq(s_node.ndef(pode), ('test:str', 'cool')) self.eq(s_node.reprNdef(pode), ('test:str', 'cool')) self.eq(s_node.ndef(pode2), ('test:int', 1234)) self.eq(s_node.reprNdef(pode2), ('test:int', '1234')) e = 'bf1198c5f28dae61d595434b0788dd6f7206b1e62d06b0798e012685f1abc85d' self.eq(s_node.iden(pode), e) self.true(s_node.tagged(pode, 'test')) self.true(s_node.tagged(pode, '#test.foo.bar')) self.true(s_node.tagged(pode, 'test.foo.bar.duck')) self.false(s_node.tagged(pode, 'test.foo.bar.newp')) self.len(3, s_node.tags(pode, leaf=True)) self.len(6, s_node.tags(pode)) self.eq(s_node.reprTag(pode, '#test.foo.bar'), '') self.eq(s_node.reprTag(pode, '#test.foo.time'), '(2016/01/01 00:00:00.000, 2019/01/01 00:00:00.000)') self.none(s_node.reprTag(pode, 'test.foo.newp')) self.eq(s_node.prop(pode, 'hehe'), 'hehe') self.eq(s_node.prop(pode, 'tick'), 12345) self.eq(s_node.prop(pode, ':tick'), 12345) self.eq(s_node.prop(pode, 'test:str:tick'), 12345) self.none(s_node.prop(pode, 'newp')) self.eq(s_node.reprProp(pode, 'hehe'), 'hehe') self.eq(s_node.reprProp(pode, 'tick'), '1970/01/01 00:00:12.345') self.eq(s_node.reprProp(pode, ':tick'), '1970/01/01 00:00:12.345') self.eq(s_node.reprProp(pode, 'test:str:tick'), '1970/01/01 00:00:12.345') self.none(s_node.reprProp(pode, 'newp')) props = s_node.props(pode) self.isin('.created', props) self.isin('tick', props) self.notin('newp', props)
def _onNode(self, mesg): node = mesg[1] opts = node[1].pop('_opts', {}) if opts.get('raw'): self.printf(repr(node)) return formname, formvalu = s_node.reprNdef(node) self.printf(f'{formname}={formvalu}') if not opts.get('hide-props'): for name in sorted(s_node.props(node).keys()): valu = s_node.reprProp(node, name) if name[0] != '.': name = ':' + name self.printf(f' {name} = {valu}') if not opts.get('hide-tags'): for tag in sorted(s_node.tagsnice(node)): valu = s_node.reprTag(node, tag) if valu: self.printf(f' #{tag} = {valu}') else: self.printf(f' #{tag}')
def _onNode(self, mesg): node = mesg[1] opts = node[1].pop('_opts', {}) if opts.get('raw'): self.printf(repr(node)) return formname, formvalu = s_node.reprNdef(node) self.printf(f'{formname}={formvalu}') if not opts.get('hide-props'): for name in sorted(s_node.props(node).keys()): valu = s_node.reprProp(node, name) if name[0] != '.': name = ':' + name self.printf(f' {name} = {valu}') if not opts.get('hide-tags'): for tag in sorted(s_node.tags(node, leaf=True)): valu = s_node.reprTag(node, tag) if valu: self.printf(f' #{tag} = {valu}') else: self.printf(f' #{tag}')
def _onNode(self, mesg, opts): node = mesg[1] if opts.get('raw'): self.printf(repr(node)) return formname, formvalu = s_node.reprNdef(node) self.printf(f'{formname}={formvalu}') if not opts.get('hide-props'): for name in sorted(s_node.props(node).keys()): valu = s_node.reprProp(node, name) if name[0] != '.': name = ':' + name self.printf(f' {name} = {valu}') if not opts.get('hide-tags'): for tag in sorted(s_node.tagsnice(node)): valu = s_node.reprTag(node, tag) tprops = s_node.reprTagProps(node, tag) printed = False if valu: self.printf(f' #{tag} = {valu}') printed = True if tprops: for prop, pval in tprops: self.printf(f' #{tag}:{prop} = {pval}') printed = True if not printed: self.printf(f' #{tag}')
async def storm(self, text, opts=None): realopts = copy.deepcopy(self.stormopts) if opts is not None: realopts.update(opts) async for mesg in self.item.storm(text, opts=realopts): mtyp = mesg[0] if mtyp in self._print_skips: continue if mtyp == 'node': node = mesg[1] formname, formvalu = s_node.reprNdef(node) self.printf(f'{formname}={formvalu}') if not self.hideprops: props = [] extns = [] univs = [] for name in s_node.props(node).keys(): if name.startswith('.'): univs.append(name) continue if name.startswith('_'): extns.append(name) continue props.append(name) props.sort() extns.sort() univs.sort() for name in props: valu = s_node.reprProp(node, name) name = ':' + name self._printNodeProp(name, valu) for name in extns: valu = s_node.reprProp(node, name) name = ':' + name self._printNodeProp(name, valu) for name in univs: valu = s_node.reprProp(node, name) self._printNodeProp(name, valu) if not self.hidetags: for tag in sorted(s_node.tagsnice(node)): valu = s_node.reprTag(node, tag) tprops = s_node.reprTagProps(node, tag) printed = False if valu: self.printf(f' #{tag} = {valu}') printed = True if tprops: for prop, pval in tprops: self.printf(f' #{tag}:{prop} = {pval}') printed = True if not printed: self.printf(f' #{tag}') elif mtyp == 'node:edits': edit = mesg[1] count = sum(len(e[2]) for e in edit.get('edits', ())) s_cli.Cli.printf(self, '.' * count, addnl=False, color=NODEEDIT_COLOR) self.indented = True elif mtyp == 'fini': took = mesg[1].get('took') took = max(took, 1) count = mesg[1].get('count') pers = float(count) / float(took / 1000) self.printf('complete. %d nodes in %d ms (%d/sec).' % (count, took, pers)) elif mtyp == 'print': self.printf(mesg[1].get('mesg')) elif mtyp == 'warn': info = mesg[1] warn = info.pop('mesg', '') xtra = ', '.join([f'{k}={v}' for k, v in info.items()]) if xtra: warn = ' '.join([warn, xtra]) self.printf(f'WARNING: {warn}', color=WARNING_COLOR) elif mtyp == 'err': await self.handleErr(mesg)