[SCM] calf/master: + Big Bull: remove half-baked RDFS entailment code (as it wasn't necessary in first place), return named scale points as list of tuples, print named scale points, split client.py into inspect utility and pseudo-client code

js at users.alioth.debian.org js at users.alioth.debian.org
Tue May 7 15:37:19 UTC 2013


The following commit has been merged in the master branch:
commit 2ca31743cfc44a7eadb8025e47f02e99c6502757
Author: kfoltman <kfoltman at 78b06b96-2940-0410-b7fc-879d825d01d8>
Date:   Wed Jun 18 19:14:22 2008 +0000

    + Big Bull: remove half-baked RDFS entailment code (as it wasn't necessary in first place), return named scale points as list of tuples, print named scale points, split client.py into inspect utility and pseudo-client code
    
    
    git-svn-id: https://calf.svn.sourceforge.net/svnroot/calf/trunk@203 78b06b96-2940-0410-b7fc-879d825d01d8

diff --git a/bigbull/client.py b/bigbull/client.py
index 367cbf3..5024e2f 100644
--- a/bigbull/client.py
+++ b/bigbull/client.py
@@ -47,39 +47,3 @@ class LV2Plugin:
     def decode(self, data):
         self.name = data['doap:name']
 
-fakeserv.start()
-
-plugins = {}
-
-class URIListReceiver:
-    def receiveData(self, data):
-        #print "URI list received: " + repr(data.result)
-        for uri in data.result:
-            cmd = CommandExec('get_info', uri)
-            cmd.run()
-            res = cmd.result
-            plugins[res["name"]] = res
-
-cmd = CommandExec('get_uris', 'http://lv2plug.in/ns/lv2core#')
-cmd.onOK(URIListReceiver())
-cmd.run()
-
-for p in plugins.keys():
-    pl = plugins[p]
-    print "Plugin: %s" % pl["name"]
-    print "License: %s" % pl["license"]
-    print "Classes: %s" % pl["classes"]
-    print "Ports:"
-    types = ["Audio", "Control", "Event", "Input", "Output"]
-    for port in pl["ports"]:
-        extra = []
-        for type in types:
-            if port["is" + type]:
-                extra.append(type)
-        print port
-        for sp in ["default", "minimum", "maximum", "scalePoints"]:
-            if port[sp] != None:
-                extra.append("%s=%s" % (sp, port[sp]))
-        print "%4s %-20s %-40s %s" % (port["index"], port["symbol"], port["name"], ", ".join(extra))
-        #print port
-    print 
\ No newline at end of file
diff --git a/bigbull/fakeserv.py b/bigbull/fakeserv.py
index 9ac18f2..f022faa 100644
--- a/bigbull/fakeserv.py
+++ b/bigbull/fakeserv.py
@@ -15,7 +15,7 @@ class DumpRDFModel:
 class SimpleRDFModel:
     def __init__(self):
         self.bySubject = {}
-        self.byPredicate = {rdfs+"subClassOf":{}, rdfs+"subPropertyOf":{}}
+        self.byPredicate = {}
     def getByType(self, classname):
         classes = self.bySubject["$classes"]
         if classname in classes:
@@ -25,26 +25,11 @@ class SimpleRDFModel:
         if propname in self.byPredicate:
             return self.byPredicate[propname]
         return []
-    def getByTypeWithSubclasses(self, classname):
-        classes = set(self.getByType(classname))
-        if classname in self.subclassesTrans:
-            for sc in self.subclassesTrans[classname]:
-                classes |= set(self.getByType(sc))
-        return classes
-    def getPropertyTrans(self, subject, props, optional = False, single = False):
+    def getProperty(self, subject, props, optional = False, single = False):
         if type(props) is list:
             prop = props[0]
         else:
             prop = props
-        # special case for rdf:value and literals
-        if prop == rdf + "value":
-            if type(subject) is not dict:
-                if single:
-                    return subject
-                else:
-                    return [subject]
-            else:
-                raise Exception, "multiple rdf:value triplets, which is correct but not supported yet"
         if type(subject) is str:
             subject = self.bySubject[subject]
         elif type(subject) is dict:
@@ -58,20 +43,16 @@ class SimpleRDFModel:
         if prop in subject:
             for o in subject[prop]:
                 anyprops.add(o)
-        for subprop in self.getSubpropsTrans(prop):
-            if subprop in subject:
-                for o in subject[subprop]:
-                    anyprops.add(o)
         if type(props) is list:
             if len(props) > 1:
                 result = set()
                 for v in anyprops:
                     if single:
-                        value = self.getPropertyTrans(v, props[1:], optional = optional, single = True)
+                        value = self.getProperty(v, props[1:], optional = optional, single = True)
                         if value != None:
                             return value
                     else:
-                        result |= set(self.getPropertyTrans(v, props[1:], optional = optional, single = False))
+                        result |= set(self.getProperty(v, props[1:], optional = optional, single = False))
                 if single:
                     return None
                 else:
@@ -107,66 +88,6 @@ class SimpleRDFModel:
             for p in po:
                 for o in po[p]:
                     self.addTriple(s, p, o)
-        self.reindex()
-    def reindex(self):
-        added = True
-        self.subclasses = {}
-        self.subclassesTrans = {}
-        self.subprops = {}
-        self.subpropsTrans = {}
-        subjects = self.byPredicate[rdfs + "subClassOf"]
-        for s in subjects.keys():
-            for o in subjects[s]:
-                if o not in self.subclasses:
-                    self.subclasses[o] = set()
-                self.subclasses[o].add(s)
-        # does not understand triples like S rdfs:subPropertyOf rdfs:subPropertyOf . (new ways to express subpropertiness) - so what?
-        subjects = self.byPredicate[rdfs + "subPropertyOf"]
-        for s in subjects.keys():
-            for o in subjects[s]:
-                if o not in self.subprops:
-                    self.subprops[o] = set()
-                self.subprops[o].add(s)
-        for classname in self.getByType(rdfs + "Class"):
-            self.getSubclassesTrans(classname)
-        for propname in self.getByType(rdfs + "Property"):
-            self.getPropertiesTrans(propname)
-    def printClasses(self):
-        for classname in self.subclassesTrans.keys():
-            if len(self.subclassesTrans[classname]) > 0:
-                print "%s -> %s" % (classname, self.subclassesTrans[classname])
-                
-    def getAllSubclasses(self, classname):
-        return set([classname]) | self.getSubclassesTrans(classname)
-        
-    def getSubclassesTrans(self, classname):
-        if classname in self.subclassesTrans:
-            if self.subclassesTrans[classname] == None:
-                print "Warning: circular reference at " + classname
-            return self.subclassesTrans[classname]
-        self.subclassesTrans[classname] = None
-        sct = set()
-        if classname in self.subclasses:
-            for cn in self.subclasses[classname]:
-                sct.add(cn)
-                sct |= self.getSubclassesTrans(cn)
-        self.subclassesTrans[classname] = sct
-        return sct
-        
-    def getSubpropsTrans(self, propname):
-        if propname in self.subpropsTrans:
-            if self.subpropsTrans[propname] == None:
-                print "Warning: circular reference at " + propname
-            return self.subpropsTrans[propname]
-        self.subpropsTrans[propname] = None
-        spt = set()
-        if propname in self.subprops:
-            for cn in self.subprops[propname]:
-                spt.add(cn)
-                spt |= self.getSubpropsTrans(cn)
-        self.subpropsTrans[propname] = spt
-        return spt
-        
     def dump(self):
         for s in self.bySubject.keys():
             for p in self.bySubject[s].keys():
@@ -272,9 +193,8 @@ class FakeServer(object):
                 if os.path.exists(fn):
                     parseTTL(fn, file(fn).read(), self.manifests)
         # Read all specifications from all manifests
-        self.manifests.reindex()
         if (self.lv2 + "Specification" in self.manifests.bySubject["$classes"]):
-            specs = self.manifests.getByTypeWithSubclasses(self.lv2 + "Specification")
+            specs = self.manifests.getByType(self.lv2 + "Specification")
             filenames = set()
             for spec in specs:
                 subj = self.manifests.bySubject[spec]
@@ -283,10 +203,9 @@ class FakeServer(object):
                         filenames.add(fn)
             for fn in filenames:
                 parseTTL(fn, file(fn).read(), self.manifests)
-                self.manifests.reindex()
         #fn = "/usr/lib/lv2/lv2core.lv2/lv2.ttl"
         #parseTTL(fn, file(fn).read(), self.manifests)
-        self.plugins = self.manifests.getByTypeWithSubclasses(self.lv2 + "Plugin")
+        self.plugins = self.manifests.getByType(self.lv2 + "Plugin")
         
     def get_uris(self, base_uri):
         if base_uri == 'http://lv2plug.in/ns/lv2core#':
@@ -301,7 +220,6 @@ class FakeServer(object):
             for doc in seeAlso:
                 # print "Loading " + doc
                 parseTTL(doc, file(doc).read(), world)
-            world.reindex()
             self.plugin_info[uri] = world                
         info = self.plugin_info[uri]
         dest = {}
@@ -310,27 +228,38 @@ class FakeServer(object):
         dest['classes'] = set(info.bySubject[uri]["a"])
         ports = []
         porttypes = {
-            "isAudio" : info.getAllSubclasses(self.lv2 + "AudioPort"),
-            "isControl" : info.getAllSubclasses(self.lv2 + "ControlPort"),
-            "isEvent" : info.getAllSubclasses(self.lv2evt + "EventPort"),
-            "isInput" : info.getAllSubclasses(self.lv2 + "InputPort"),
-            "isOutput" : info.getAllSubclasses(self.lv2 + "OutputPort"),            
+            "isAudio" : self.lv2 + "AudioPort",
+            "isControl" : self.lv2 + "ControlPort",
+            "isEvent" : self.lv2evt + "EventPort",
+            "isInput" : self.lv2 + "InputPort",
+            "isOutput" : self.lv2 + "OutputPort",
         }
         
         for port in info.bySubject[uri][self.lv2 + "port"]:
             psubj = info.bySubject[port]
             pdata = {}
-            pdata['index'] = info.getPropertyTrans(psubj, self.lv2 + "index")[0]
-            pdata['symbol'] = info.getPropertyTrans(psubj, self.lv2 + "symbol")[0]
-            pdata['name'] = info.getPropertyTrans(psubj, self.lv2 + "name")[0]
-            classes = set(info.getPropertyTrans(psubj, "a"))
+            pdata['index'] = info.getProperty(psubj, self.lv2 + "index")[0]
+            pdata['symbol'] = info.getProperty(psubj, self.lv2 + "symbol")[0]
+            pdata['name'] = info.getProperty(psubj, self.lv2 + "name")[0]
+            classes = set(info.getProperty(psubj, "a"))
             pdata['classes'] = classes
             for pt in porttypes.keys():
-                pdata[pt] = len(classes & porttypes[pt])
-            pdata['scalePoints'] = info.getPropertyTrans(psubj, self.lv2 + "scalePoint")
-            pdata['default'] = info.getPropertyTrans(psubj, [self.lv2 + "default", rdf + "value"], optional = True, single = True)
-            pdata['minimum'] = info.getPropertyTrans(psubj, [self.lv2 + "minimum", rdf + "value"], optional = True, single = True)
-            pdata['maximum'] = info.getPropertyTrans(psubj, [self.lv2 + "maximum", rdf + "value"], optional = True, single = True)
+                pdata[pt] = porttypes[pt] in classes
+            sp = info.getProperty(psubj, self.lv2 + "scalePoint")
+            if sp and len(sp):
+                splist = []
+                for pt in sp:
+                    name = info.getProperty(pt, rdfs + "label", optional = True, single = True)
+                    if name != None:
+                        value = info.getProperty(pt, rdf + "value", optional = True, single = True)
+                        if value != None:
+                            splist.append((name, value))
+                pdata['scalePoints'] = splist
+            else:
+                pdata['scalePoints'] = []
+            pdata['default'] = info.getProperty(psubj, [self.lv2 + "default"], optional = True, single = True)
+            pdata['minimum'] = info.getProperty(psubj, [self.lv2 + "minimum"], optional = True, single = True)
+            pdata['maximum'] = info.getProperty(psubj, [self.lv2 + "maximum"], optional = True, single = True)
             ports.append(pdata)
         dest['ports'] = ports
         return dest

-- 
calf audio plugins packaging



More information about the pkg-multimedia-commits mailing list