User:GeneaBot/Code/object function

From Wikidata
Jump to navigation Jump to search
# -*- coding: utf-8  -*-
import pywikibot
from object_display import *
from object_item    import *





class Function(Item):
    # Class defining a noble Function on Wikidata
    #
    # Item Fields :
    #   self.ident          : identifier in Wikidata (Qxxxx)
    #   self.item           : dictionnary of labels, descriptions, statements from Wikidata
    #   self.comment        : comment of item
    #   self.claimsWanted   :
    #   self.claims         : list of claims of item
    #
    # Fields :
    #
    # Item Methods :
    #   self.__repr__       ()
    #   self.__str__        ()
    #   self.AddClaim       (pProperty, pValue, pReferences=[], pQualifiers=[])
    #
    # Methods :
    #   self.__init__       (ident, claimsWanted)
    #
    # static attributes :
    #
    ClaimsRequired = [ ]
    #
    # static methods :
    #   Function.Get                   (Ident, claimsWanted, claimsRequired, source)
    #
    #
    #
    def Get(ident, claimsWanted, source):
        DisplayMessages.call("O", "Function." + ident + ".Get", 4, "ident=" + str(ident))
        DisplayMessages.debug("O", "Function." + ident + ".Get", 2, "ident=" + ident + ", list=" + str(Item.ListIdent))
        if ident in Item.ListIdent:
            item = Item.List[ident]
            item.AddClaimsWanted(claimsWanted, source)
        else:
            item = Function(ident, claimsWanted, source)
        return item
    Get = staticmethod(Get)
    #
    #
    #
    #
    #
    def __init__(self, ident, claimsWanted, source):
        DisplayMessages.call("O", "Function." + ident + ".__init__", 4, "ident=" + ident + ", claimsWanted=" + str(claimsWanted) + ", source=" + repr(source) )
        Item.__init__(self, ident, claimsWanted, Function.ClaimsRequired, source)
        







        
        


def testFunction(NumTest, Format, Run, Ident, listClaimsWanted, source):
    print( "" )
    print( "---------------------------" )
    text = "test " + str(NumTest) + ":\n"
    text += "testFunction(Ident=" + Ident + \
           ", listClaimsWanted=" + str(listClaimsWanted) + \
           ", source=" + repr(source) + ")"
    print( text )
    print( "" )
    dictClaimsWanted = dict()
    for claimWanted in listClaimsWanted:
        Property = claimWanted[0]
        Value = claimWanted[1]
        if not Property in dictClaimsWanted:
            dictClaimsWanted[Property]= []
        dictClaimsWanted[Property].append(Value)
    DisplayMessages.debug("T", "testFunction", 7, "dictClaimsWanted=" + str(dictClaimsWanted) )
    localFunction = Function.Get(Ident, dictClaimsWanted, source)
    print( localFunction.display(Format, Run) )
    print( "" )
        




def mainTestFunction(*args):
    param = CallParameter(*args)
    NumCase   = param.GetValue('case', 0)
    Display = param.GetValue('display', 'short')
    DisplayMessages.SetFileName("")

    ListDisplay = Display.split(':')
    Format = ListDisplay[0]
    if len(ListDisplay) >= 2:
        Run = ListDisplay[1]
    else:
        Run = 'simu'
        
    source = Source()
    if NumCase == 0 or NumCase == 1:
        testFunction(1, Format, Run, 'Q1549592', [ ['P21','Q4164871'] ], source)
        
    DisplayMessages.End()


if __name__ == "__main__":
    mainTestFunction()