# https://query.wikidata.org/#SELECT%20%3Fitem%20%3Fprop%20%3Fredirect%20%3Funit%20WHERE%20%7B%0A%20%20%3Fitem%20%3Fprop%20%5B%20%3Fpsv%20%5B%20wikibase%3AquantityUnit%20%3Fredirect%20%5D%20%5D%20.%0A%20%20%3Fredirect%20owl%3AsameAs%20%3Funit%20.%0A%7D

import pywikibot
import time

wikidata_site = pywikibot.Site('wikidata', 'wikidata')
repo = wikidata_site.data_repository()

quantityprop = 'P1436'
inputdata = [ 'Q63862990', 'Q63862991' ]
fromUnit = 'Q59221354'
toUnit = 'Q3511132'

summaryString = 'resolve redirect from [[{}]] to [[{}]] in unit'

for item in inputdata:
    print('{}'.format(item))
    Qitem = pywikibot.ItemPage(repo, item)
    if not Qitem.exists():
        continue
    if Qitem.isRedirectPage():
        continue
    Qitem.get()
    if not Qitem.claims:
        continue
    if quantityprop not in Qitem.claims:
        continue
    for claim in Qitem.claims[quantityprop]:
        currentValue = claim.getTarget()
        #print(currentValue)
        if currentValue.unit == 'http://www.wikidata.org/entity/{}'.format(fromUnit):
            if currentValue.lowerBound == None and currentValue.upperBound == None:
                claim.changeTarget(
                    value=pywikibot.WbQuantity(
                        site=repo,
                        amount=currentValue.amount,
                        unit='http://www.wikidata.org/entity/{}'.format(toUnit)
                    ), 
                    summary=summaryString.format(fromUnit, toUnit)
                )
            else:
                claim.changeTarget(
                    value=pywikibot.WbQuantity(
                        site=repo,
                        amount=currentValue.amount,
                        unit='http://www.wikidata.org/entity/{}'.format(toUnit),
                        lowerBound=currentValue.lowerBound,
                        upperBound=currentValue.upperBound
                    ), 
                    summary=summaryString.format(fromUnit, toUnit)
                )
            time.sleep(1)
Q63862990
Q63862991
Q63863028
Q63872787
Q63862934
Q63862935
Q63862932
Q63862933
Q63862936
Q63862951
Q63862954
Q63862955
Q63862952
Q63862953
Q63862958
Q63862959
Q63862956
Q63862957
Q63862962
Q63862963
Q63862960
Q63862961
Q63862966
Q63862967
Q63862970
Q63862971
Q63862968
Q63862969
Q63862974
Q63862975
Q63862972
Q63862973
Q63862978
Q63862979
Q63862976
Q63862977
Q63862982
Q63862983
Q63862981
Q63862986
Q63862987
Q63862984
Q63862985
Q63862988
Q63862989
Q63862994
Q63862995
Q63862992
Q63862993
Q63862999
Q63862996
Q63862997
Q63863002
Q63863003
Q63863000
Q63863001
Q63863006
Q63863007
Q63863004
Q63863005
Q63863010
Q63863011
Q63863008
Q63863009
Q63863014
Q63863015
Q63863012
Q63863013
Q63863018
Q63863019
Q63863016
Q63863022
Q63863023
Q63863020
Q63863021
Q63863026
Q63863027
Q63863025
Q63863030
Q63863031
Q63863029
Q63863032
Q63863057
Q63863070
Q63872585
Q63872766
Q63872767
Q63872771
Q63872768
Q63872769
Q63872774
Q63872775
Q63872772
Q63872773
Q63872778
Q63872779
Q63872777
Q63872782
Q63872783
Q63872780
Q63872781
Q63872786
Q63872784
Q63872785