class_docstr: Wrapper around Asana Python client library.
class_docstr_tok: ["Wrapper","around","Asana","Python","client","library","."]
docstr: Update an existing project.
  
  :param project_id: Asana GID of the project to update
  :param params: New attributes that the project should have. See
      https://developers.asana.com/docs/update-a-project#update-a-project-parameters
      for a list of possible parameters
  :return: A dict containing the updated project's attributes
docstr_tok: ["Update","an","existing","project",".",":","param","project_id",":","Asana","GID","of","the","project","to","update",":","param","params",":","New","attributes","that","the","project","should","have",".","See","https",":","\/\/developers.asana.com\/docs\/update-a-project","#","update-a-project-parameters","for","a","list","of","possible","parameters",":","return",":","A","dict","containing","the","updated","project","'s","attributes"]
code: def update_project(self, project_id: str, params: dict) -> dict:
      """
      Update an existing project.
  
      :param project_id: Asana GID of the project to update
      :param params: New attributes that the project should have. See
          https://developers.asana.com/docs/update-a-project#update-a-project-parameters
          for a list of possible parameters
      :return: A dict containing the updated project's attributes
      """
      response = self.client.projects.update(project_id, params)
      return response
  
imports: from __future__ import annotations
  from functools import cached_property
  from typing import Any
  from asana import Client
  from asana.error import NotFoundError
  from airflow.hooks.base import BaseHook
label_desc: Use image node_id 19 for calling the AsanaHook obj's underlying member method code with example usage: obj.update_project(project_id, params) and returns: response