code: def update_definition(self, definition, project, definition_id, secrets_source_definition_id=None, secrets_source_definition_revision=None):
          
          route_values = {}
          if project is not None:
              route_values['project'] = self._serialize.url('project', project, 'str')
          if definition_id is not None:
              route_values['definitionId'] = self._serialize.url('definition_id', definition_id, 'int')
          query_parameters = {}
          if secrets_source_definition_id is not None:
              query_parameters['secretsSourceDefinitionId'] = self._serialize.query('secrets_source_definition_id', secrets_source_definition_id, 'int')
          if secrets_source_definition_revision is not None:
              query_parameters['secretsSourceDefinitionRevision'] = self._serialize.query('secrets_source_definition_revision', secrets_source_definition_revision, 'int')
          content = self._serialize.body(definition, 'BuildDefinition')
          response = self._send(http_method='PUT',
                                location_id='dbeaf647-6167-421a-bda9-c9327b25e2e6',
                                version='5.0',
                                route_values=route_values,
                                query_parameters=query_parameters,
                                content=content)
          return self._deserialize('BuildDefinition', response)
docs: UpdateDefinition.
          Updates an existing definition.
          :param :class:`<BuildDefinition> <azure.devops.v5_0.build.models.BuildDefinition>` definition: The new version of the defintion.
          :param str project: Project ID or project name
          :param int definition_id: The ID of the definition.
          :param int secrets_source_definition_id:
          :param int secrets_source_definition_revision:
          :rtype: :class:`<BuildDefinition> <azure.devops.v5_0.build.models.BuildDefinition>`