parameters: (self, build_request, requirements)
return_statement: return self.request_cache[key].add_raw(free_unconditional)
docstring: Given build request and requirements, return properties
              common to dependency build request and target build
              properties.
docstring_summary: Given build request and requirements, return properties
              common to dependency build request and target build
              properties.
docstring_tokens: Given build request and requirements return properties common to dependency build request and target build properties .
function: def common_properties (self, build_request, requirements):
          """ Given build request and requirements, return properties
              common to dependency build request and target build
              properties.
          """
          # For optimization, we add free unconditional requirements directly,
          # without using complex algorithsm.
          # This gives the complex algorithm better chance of caching results.        
          # The exact effect of this "optimization" is no longer clear
          free_unconditional = []
          other = []
          for p in requirements.all():
              if p.feature().free() and not p.condition() and p.feature().name() != 'conditional':
                  free_unconditional.append(p)
              else:
                  other.append(p)
          other = property_set.create(other)
                  
          key = (build_request, other)
          if not self.request_cache.has_key(key):
              self.request_cache[key] = self.__common_properties2 (build_request, other)
  
          return self.request_cache[key].add_raw(free_unconditional)
function_tokens: def common_properties ( self , build_request , requirements ) : # For optimization, we add free unconditional requirements directly, # without using complex algorithsm. # This gives the complex algorithm better chance of caching results.         # The exact effect of this "optimization" is no longer clear free_unconditional = [ ] other = [ ] for p in requirements . all ( ) : if p . feature ( ) . free ( ) and not p . condition ( ) and p . feature ( ) . name ( ) != 'conditional' : free_unconditional . append ( p ) else : other . append ( p ) other = property_set . create ( other ) key = ( build_request , other ) if not self . request_cache . has_key ( key ) : self . request_cache [ key ] = self . __common_properties2 ( build_request , other ) return self . request_cache [ key ] . add_raw ( free_unconditional )