code: def update(self, name=None, summary=None, description=None, protected=None,
                 restricted=None, download_restricted=None, version=None, **kwargs):
          
          update_hash = {}
          if name is not None:
              update_hash["name"] = name
          if summary is not None:
              update_hash["summary"] = summary
          if description is not None:
              update_hash["description"] = description
          if protected is not None:
              update_hash["protected"] = protected
          if restricted is not None:
              update_hash["restricted"] = restricted
          if download_restricted is not None:
              update_hash["downloadRestricted"] = download_restricted
          if version is not None:
              update_hash["version"] = version
          dxpy.api.project_update(self._dxid, update_hash, **kwargs)
docs: :param name: If provided, the new project name
          :type name: string
          :param summary: If provided, the new project summary
          :type summary: string
          :param description: If provided, the new project description
          :type name: string
          :param protected: If provided, whether the project should be protected
          :type protected: boolean
          :param restricted: If provided, whether the project should be restricted
          :type restricted: boolean
          :param download_restricted: If provided, whether external downloads should be restricted
          :type download_restricted: boolean
          :param version: If provided, the update will only occur if the value matches the current project's version number
          :type version: int
  
          Updates the project with the new fields. All fields are
          optional. Fields that are not provided are not changed.
          See the API documentation for the `/project-xxxx/update
          <https://wiki.dnanexus.com/API-Specification-v1.0.0/Projects#API-method%3A-%2Fproject-xxxx%2Fupdate>`_
          method for more info.