def evalurl(url, **opts): ''' Construct either a local object or a telepath proxy. Args: url (str): URL to evaluate **opts: Additional options. Notes: This API enables the ctor:// protocol which uses ``eval()``. It should **only** be used with trusted inputs! Examples: Get a remote object over a TCP connection: item0 = evalurl('tcp://1.2.3.4:90/foo') Get a local object via ctor: item1 = evalurl('ctor://foo.bar.baz("woot",y=20)') Returns: object: A python object ''' if url.find('://') == -1: raise s_common.BadUrl(url) scheme, therest = url.split('://', 1) if scheme == 'ctor': locs = opts.get('locs') return s_dyndeps.runDynEval(therest, locs=locs) return openurl(url, **opts)
def evalurl(url,**opts): ''' Construct either a local object or a telepath proxy. WARNING: this API enables ctor:// proto which uses eval! ( trusted inputs only ) Example: item0 = evalurl('tcp://1.2.3.4:90/foo') item1 = evalurl('ctor://foo.bar.baz("woot",y=20)') ''' if url.find('://') == -1: raise BadUrl(url) scheme,therest = url.split('://',1) if scheme == 'ctor': locs = opts.get('locs') return s_dyndeps.runDynEval(therest, locs=locs) return openurl(url,**opts)
def evalurl(url,**opts): ''' Construct either a local object or a telepath proxy. WARNING: this API enables ctor:// proto which uses eval! ( trusted inputs only ) Example: item0 = evalurl('tcp://1.2.3.4:90/foo') item1 = evalurl('ctor://foo.bar.baz("woot",y=20)') ''' if url.find('://') == -1: raise BadUrl(url) scheme,therest = url.split('://',1) if scheme == 'ctor': locs = opts.get('locs') return s_dyndeps.runDynEval(therest, locs=locs) return openurl(url,**opts)
def test_dyndeps_eval(self): valu = s_dyndeps.runDynEval('synapse.tests.test_dyndeps.woot(40,y=10)') self.assertEqual( valu, 50 )
def test_dyndeps_eval(self): valu = s_dyndeps.runDynEval('synapse.tests.test_dyndeps.woot(40,y=10)') self.assertEqual(valu, 50)