#NEWLINE# def update( self , down_reqs , output , own_ref , down_ref ) : #NEWLINE# #INDENT# ' Compute actual requirement values when downstream values are defined\n        param down_reqs: the current requirements as coming from downstream to override\n                         current requirements\n        param own_ref: ConanFileReference of the current conanfile\n        param down_ref: ConanFileReference of the downstream that is overriding values or None\n        return: new Requirements() value to be passed upstream\n        ' #NEWLINE# assert isinstance ( down_reqs , Requirements ) #NEWLINE# assert ( isinstance ( own_ref , ConanFileReference ) if own_ref else True ) #NEWLINE# assert ( isinstance ( down_ref , ConanFileReference ) if down_ref else True ) #NEWLINE# new_reqs = down_reqs . copy ( ) #NEWLINE# if own_ref : #NEWLINE# #INDENT# new_reqs . pop ( own_ref . name , None ) #NEWLINE# #UNINDENT# for ( name , req ) in self . items ( ) : #NEWLINE# #INDENT# if ( name in down_reqs ) : #NEWLINE# #INDENT# other_req = down_reqs [ name ] #NEWLINE# other_ref = name . conan_reference #NEWLINE# if ( other_ref and ( other_ref != req . conan_reference ) ) : #NEWLINE# #INDENT# output . info ( ( '%s requirement %s overriden by %s to %s ' % ( own_ref , req . conan_reference , ( down_ref or 'your conanfile' ) , other_ref ) ) ) #NEWLINE# req . conan_reference = other_ref #NEWLINE# #UNINDENT# #UNINDENT# new_reqs [ name ] = req #NEWLINE# #UNINDENT# return new_reqs