We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
Add support for editing project cards
One more step towards full project support (https://github.com/PyGithub/PyGithub/issues/606)

https://developer.github.com/v3/projects/cards/#update-a-project-card

--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `github/ProjectCard.py`
Content:
```
1 # -*- coding: utf-8 -*-
2 
3 ############################ Copyrights and license ############################
4 #                                                                              #
5 # Copyright 2018 bbi-yggy <yossarian@blackbirdinteractive.com>                 #
6 #                                                                              #
7 # This file is part of PyGithub.                                               #
8 # http://pygithub.readthedocs.io/                                              #
9 #                                                                              #
10 # PyGithub is free software: you can redistribute it and/or modify it under    #
11 # the terms of the GNU Lesser General Public License as published by the Free  #
12 # Software Foundation, either version 3 of the License, or (at your option)    #
13 # any later version.                                                           #
14 #                                                                              #
15 # PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #
16 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #
17 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #
18 # details.                                                                     #
19 #                                                                              #
20 # You should have received a copy of the GNU Lesser General Public License     #
21 # along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #
22 #                                                                              #
23 ################################################################################
24 
25 import github.GithubObject
26 
27 from . import Consts
28 
29 # NOTE: There is currently no way to get cards "in triage" for a project.
30 # https://platform.github.community/t/moving-github-project-cards-that-are-in-triage/3784
31 #
32 # See also https://developer.github.com/v4/object/projectcard for the next generation GitHub API,
33 # which may point the way to where the API is likely headed and what might come back to v3. E.g. ProjectCard.content member.
34 
35 
36 class ProjectCard(github.GithubObject.CompletableGithubObject):
37     """
38     This class represents Project Cards. The reference can be found here https://developer.github.com/v3/projects/cards
39     """
40 
41     def __repr__(self):
42         return self.get__repr__({"id": self._id.value})
43 
44     @property
45     def archived(self):
46         """
47         :type: bool
48         """
49         return self._archived.value
50 
51     @property
52     def column_url(self):
53         """
54         :type: string
55         """
56         return self._column_url.value
57 
58     @property
59     def content_url(self):
60         """
61         :type: string
62         """
63         return self._content_url.value
64 
65     @property
66     def created_at(self):
67         """
68         :type: datetime.datetime
69         """
70         return self._created_at.value
71 
72     @property
73     def creator(self):
74         """
75         :type: :class:`github.NamedUser.NamedUser`
76         """
77         return self._creator.value
78 
79     @property
80     def id(self):
81         """
82         :type: integer
83         """
84         return self._id.value
85 
86     @property
87     def node_id(self):
88         """
89         :type: string
90         """
91         return self._node_id.value
92 
93     @property
94     def note(self):
95         """
96         :type: string
97         """
98         return self._note.value
99 
100     @property
101     def updated_at(self):
102         """
103         :type: datetime.datetime
104         """
105         return self._updated_at.value
106 
107     @property
108     def url(self):
109         """
110         :type: string
111         """
112         return self._url.value
113 
114     # Note that the content_url for any card will be an "issue" URL, from
115     # which you can retrieve either an Issue or a PullRequest. Unforunately
116     # the API doesn't make it clear which you are dealing with.
117     def get_content(self, content_type=github.GithubObject.NotSet):
118         """
119         :calls: `GET /repos/:owner/:repo/pulls/:number <https://developer.github.com/v3/pulls/#get-a-single-pull-request>`_
120         :param content_type: string, optional
121         :rtype: :class:`github.PullRequest.PullRequest` or :class:`github.Issue.Issue`
122         """
123         assert content_type is github.GithubObject.NotSet or isinstance(
124             content_type, str
125         ), content_type
126         if self.content_url is None:
127             return None
128 
129         if content_type == "PullRequest":
130             url = self.content_url.replace("issues", "pulls")
131             retclass = github.PullRequest.PullRequest
132         elif content_type is github.GithubObject.NotSet or content_type == "Issue":
133             url = self.content_url
134             retclass = github.Issue.Issue
135         else:
136             raise ValueError("Unknown content type: %s" % content_type)
137         headers, data = self._requester.requestJsonAndCheck("GET", url)
138         return retclass(self._requester, headers, data, completed=True)
139 
140     def move(self, position, column):
141         """
142         :calls: `POST /projects/columns/cards/:card_id/moves <https://developer.github.com/v3/projects/cards>`_
143         :param position: string
144         :param column: :class:`github.ProjectColumn.ProjectColumn` or int
145         :rtype: bool
146         """
147         assert isinstance(position, str), position
148         assert isinstance(column, github.ProjectColumn.ProjectColumn) or isinstance(
149             column, int
150         ), column
151         post_parameters = {
152             "position": position,
153             "column": column.id
154             if isinstance(column, github.ProjectColumn.ProjectColumn)
155             else column,
156         }
157         status, _, _ = self._requester.requestJson(
158             "POST",
159             self.url + "/moves",
160             input=post_parameters,
161             headers={"Accept": Consts.mediaTypeProjectsPreview},
162         )
163         return status == 201
164 
165     def _initAttributes(self):
166         self._archived = github.GithubObject.NotSet
167         self._column_url = github.GithubObject.NotSet
168         self._content_url = github.GithubObject.NotSet
169         self._created_at = github.GithubObject.NotSet
170         self._creator = github.GithubObject.NotSet
171         self._id = github.GithubObject.NotSet
172         self._node_id = github.GithubObject.NotSet
173         self._note = github.GithubObject.NotSet
174         self._updated_at = github.GithubObject.NotSet
175         self._url = github.GithubObject.NotSet
176 
177     def _useAttributes(self, attributes):
178         if "archived" in attributes:  # pragma no branch
179             self._archived = self._makeBoolAttribute(attributes["archived"])
180         if "column_url" in attributes:  # pragma no branch
181             self._column_url = self._makeStringAttribute(attributes["column_url"])
182         if "content_url" in attributes:  # pragma no branch
183             self._content_url = self._makeStringAttribute(attributes["content_url"])
184         if "created_at" in attributes:  # pragma no branch
185             self._created_at = self._makeDatetimeAttribute(attributes["created_at"])
186         if "creator" in attributes:  # pragma no branch
187             self._creator = self._makeClassAttribute(
188                 github.NamedUser.NamedUser, attributes["creator"]
189             )
190         if "id" in attributes:  # pragma no branch
191             self._id = self._makeIntAttribute(attributes["id"])
192         if "node_id" in attributes:  # pragma no branch
193             self._node_id = self._makeStringAttribute(attributes["node_id"])
194         if "note" in attributes:  # pragma no branch
195             self._note = self._makeStringAttribute(attributes["note"])
196         if "updated_at" in attributes:  # pragma no branch
197             self._updated_at = self._makeDatetimeAttribute(attributes["updated_at"])
198         if "url" in attributes:  # pragma no branch
199             self._url = self._makeStringAttribute(attributes["url"])
200
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/github/ProjectCard.py b/github/ProjectCard.py
--- a/github/ProjectCard.py
+++ b/github/ProjectCard.py
@@ -162,6 +162,16 @@
         )
         return status == 201
 
+    def delete(self):
+        """
+        :calls: `DELETE /projects/columns/cards/:card_id <https://developer.github.com/v3/projects/cards>`_
+        :rtype: bool
+        """
+        status, _, _ = self._requester.requestJson(
+            "DELETE", self.url, headers={"Accept": Consts.mediaTypeProjectsPreview},
+        )
+        return status == 204
+
     def _initAttributes(self):
         self._archived = github.GithubObject.NotSet
         self._column_url = github.GithubObject.NotSet

{"golden_diff": "diff --git a/github/ProjectCard.py b/github/ProjectCard.py\n--- a/github/ProjectCard.py\n+++ b/github/ProjectCard.py\n@@ -162,6 +162,16 @@\n         )\n         return status == 201\n \n+    def delete(self):\n+        \"\"\"\n+        :calls: `DELETE /projects/columns/cards/:card_id <https://developer.github.com/v3/projects/cards>`_\n+        :rtype: bool\n+        \"\"\"\n+        status, _, _ = self._requester.requestJson(\n+            \"DELETE\", self.url, headers={\"Accept\": Consts.mediaTypeProjectsPreview},\n+        )\n+        return status == 204\n+\n     def _initAttributes(self):\n         self._archived = github.GithubObject.NotSet\n         self._column_url = github.GithubObject.NotSet\n", "issue": "Add support for editing project cards\nOne more step towards full project support (https://github.com/PyGithub/PyGithub/issues/606)\r\n\r\nhttps://developer.github.com/v3/projects/cards/#update-a-project-card\n", "before_files": [{"content": "# -*- coding: utf-8 -*-\n\n############################ Copyrights and license ############################\n#                                                                              #\n# Copyright 2018 bbi-yggy <yossarian@blackbirdinteractive.com>                 #\n#                                                                              #\n# This file is part of PyGithub.                                               #\n# http://pygithub.readthedocs.io/                                              #\n#                                                                              #\n# PyGithub is free software: you can redistribute it and/or modify it under    #\n# the terms of the GNU Lesser General Public License as published by the Free  #\n# Software Foundation, either version 3 of the License, or (at your option)    #\n# any later version.                                                           #\n#                                                                              #\n# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #\n# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n# details.                                                                     #\n#                                                                              #\n# You should have received a copy of the GNU Lesser General Public License     #\n# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #\n#                                                                              #\n################################################################################\n\nimport github.GithubObject\n\nfrom . import Consts\n\n# NOTE: There is currently no way to get cards \"in triage\" for a project.\n# https://platform.github.community/t/moving-github-project-cards-that-are-in-triage/3784\n#\n# See also https://developer.github.com/v4/object/projectcard for the next generation GitHub API,\n# which may point the way to where the API is likely headed and what might come back to v3. E.g. ProjectCard.content member.\n\n\nclass ProjectCard(github.GithubObject.CompletableGithubObject):\n    \"\"\"\n    This class represents Project Cards. The reference can be found here https://developer.github.com/v3/projects/cards\n    \"\"\"\n\n    def __repr__(self):\n        return self.get__repr__({\"id\": self._id.value})\n\n    @property\n    def archived(self):\n        \"\"\"\n        :type: bool\n        \"\"\"\n        return self._archived.value\n\n    @property\n    def column_url(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._column_url.value\n\n    @property\n    def content_url(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._content_url.value\n\n    @property\n    def created_at(self):\n        \"\"\"\n        :type: datetime.datetime\n        \"\"\"\n        return self._created_at.value\n\n    @property\n    def creator(self):\n        \"\"\"\n        :type: :class:`github.NamedUser.NamedUser`\n        \"\"\"\n        return self._creator.value\n\n    @property\n    def id(self):\n        \"\"\"\n        :type: integer\n        \"\"\"\n        return self._id.value\n\n    @property\n    def node_id(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._node_id.value\n\n    @property\n    def note(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._note.value\n\n    @property\n    def updated_at(self):\n        \"\"\"\n        :type: datetime.datetime\n        \"\"\"\n        return self._updated_at.value\n\n    @property\n    def url(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._url.value\n\n    # Note that the content_url for any card will be an \"issue\" URL, from\n    # which you can retrieve either an Issue or a PullRequest. Unforunately\n    # the API doesn't make it clear which you are dealing with.\n    def get_content(self, content_type=github.GithubObject.NotSet):\n        \"\"\"\n        :calls: `GET /repos/:owner/:repo/pulls/:number <https://developer.github.com/v3/pulls/#get-a-single-pull-request>`_\n        :param content_type: string, optional\n        :rtype: :class:`github.PullRequest.PullRequest` or :class:`github.Issue.Issue`\n        \"\"\"\n        assert content_type is github.GithubObject.NotSet or isinstance(\n            content_type, str\n        ), content_type\n        if self.content_url is None:\n            return None\n\n        if content_type == \"PullRequest\":\n            url = self.content_url.replace(\"issues\", \"pulls\")\n            retclass = github.PullRequest.PullRequest\n        elif content_type is github.GithubObject.NotSet or content_type == \"Issue\":\n            url = self.content_url\n            retclass = github.Issue.Issue\n        else:\n            raise ValueError(\"Unknown content type: %s\" % content_type)\n        headers, data = self._requester.requestJsonAndCheck(\"GET\", url)\n        return retclass(self._requester, headers, data, completed=True)\n\n    def move(self, position, column):\n        \"\"\"\n        :calls: `POST /projects/columns/cards/:card_id/moves <https://developer.github.com/v3/projects/cards>`_\n        :param position: string\n        :param column: :class:`github.ProjectColumn.ProjectColumn` or int\n        :rtype: bool\n        \"\"\"\n        assert isinstance(position, str), position\n        assert isinstance(column, github.ProjectColumn.ProjectColumn) or isinstance(\n            column, int\n        ), column\n        post_parameters = {\n            \"position\": position,\n            \"column\": column.id\n            if isinstance(column, github.ProjectColumn.ProjectColumn)\n            else column,\n        }\n        status, _, _ = self._requester.requestJson(\n            \"POST\",\n            self.url + \"/moves\",\n            input=post_parameters,\n            headers={\"Accept\": Consts.mediaTypeProjectsPreview},\n        )\n        return status == 201\n\n    def _initAttributes(self):\n        self._archived = github.GithubObject.NotSet\n        self._column_url = github.GithubObject.NotSet\n        self._content_url = github.GithubObject.NotSet\n        self._created_at = github.GithubObject.NotSet\n        self._creator = github.GithubObject.NotSet\n        self._id = github.GithubObject.NotSet\n        self._node_id = github.GithubObject.NotSet\n        self._note = github.GithubObject.NotSet\n        self._updated_at = github.GithubObject.NotSet\n        self._url = github.GithubObject.NotSet\n\n    def _useAttributes(self, attributes):\n        if \"archived\" in attributes:  # pragma no branch\n            self._archived = self._makeBoolAttribute(attributes[\"archived\"])\n        if \"column_url\" in attributes:  # pragma no branch\n            self._column_url = self._makeStringAttribute(attributes[\"column_url\"])\n        if \"content_url\" in attributes:  # pragma no branch\n            self._content_url = self._makeStringAttribute(attributes[\"content_url\"])\n        if \"created_at\" in attributes:  # pragma no branch\n            self._created_at = self._makeDatetimeAttribute(attributes[\"created_at\"])\n        if \"creator\" in attributes:  # pragma no branch\n            self._creator = self._makeClassAttribute(\n                github.NamedUser.NamedUser, attributes[\"creator\"]\n            )\n        if \"id\" in attributes:  # pragma no branch\n            self._id = self._makeIntAttribute(attributes[\"id\"])\n        if \"node_id\" in attributes:  # pragma no branch\n            self._node_id = self._makeStringAttribute(attributes[\"node_id\"])\n        if \"note\" in attributes:  # pragma no branch\n            self._note = self._makeStringAttribute(attributes[\"note\"])\n        if \"updated_at\" in attributes:  # pragma no branch\n            self._updated_at = self._makeDatetimeAttribute(attributes[\"updated_at\"])\n        if \"url\" in attributes:  # pragma no branch\n            self._url = self._makeStringAttribute(attributes[\"url\"])\n", "path": "github/ProjectCard.py"}], "after_files": [{"content": "# -*- coding: utf-8 -*-\n\n############################ Copyrights and license ############################\n#                                                                              #\n# Copyright 2018 bbi-yggy <yossarian@blackbirdinteractive.com>                 #\n#                                                                              #\n# This file is part of PyGithub.                                               #\n# http://pygithub.readthedocs.io/                                              #\n#                                                                              #\n# PyGithub is free software: you can redistribute it and/or modify it under    #\n# the terms of the GNU Lesser General Public License as published by the Free  #\n# Software Foundation, either version 3 of the License, or (at your option)    #\n# any later version.                                                           #\n#                                                                              #\n# PyGithub is distributed in the hope that it will be useful, but WITHOUT ANY  #\n# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS    #\n# FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more #\n# details.                                                                     #\n#                                                                              #\n# You should have received a copy of the GNU Lesser General Public License     #\n# along with PyGithub. If not, see <http://www.gnu.org/licenses/>.             #\n#                                                                              #\n################################################################################\n\nimport github.GithubObject\n\nfrom . import Consts\n\n# NOTE: There is currently no way to get cards \"in triage\" for a project.\n# https://platform.github.community/t/moving-github-project-cards-that-are-in-triage/3784\n#\n# See also https://developer.github.com/v4/object/projectcard for the next generation GitHub API,\n# which may point the way to where the API is likely headed and what might come back to v3. E.g. ProjectCard.content member.\n\n\nclass ProjectCard(github.GithubObject.CompletableGithubObject):\n    \"\"\"\n    This class represents Project Cards. The reference can be found here https://developer.github.com/v3/projects/cards\n    \"\"\"\n\n    def __repr__(self):\n        return self.get__repr__({\"id\": self._id.value})\n\n    @property\n    def archived(self):\n        \"\"\"\n        :type: bool\n        \"\"\"\n        return self._archived.value\n\n    @property\n    def column_url(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._column_url.value\n\n    @property\n    def content_url(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._content_url.value\n\n    @property\n    def created_at(self):\n        \"\"\"\n        :type: datetime.datetime\n        \"\"\"\n        return self._created_at.value\n\n    @property\n    def creator(self):\n        \"\"\"\n        :type: :class:`github.NamedUser.NamedUser`\n        \"\"\"\n        return self._creator.value\n\n    @property\n    def id(self):\n        \"\"\"\n        :type: integer\n        \"\"\"\n        return self._id.value\n\n    @property\n    def node_id(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._node_id.value\n\n    @property\n    def note(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._note.value\n\n    @property\n    def updated_at(self):\n        \"\"\"\n        :type: datetime.datetime\n        \"\"\"\n        return self._updated_at.value\n\n    @property\n    def url(self):\n        \"\"\"\n        :type: string\n        \"\"\"\n        return self._url.value\n\n    # Note that the content_url for any card will be an \"issue\" URL, from\n    # which you can retrieve either an Issue or a PullRequest. Unforunately\n    # the API doesn't make it clear which you are dealing with.\n    def get_content(self, content_type=github.GithubObject.NotSet):\n        \"\"\"\n        :calls: `GET /repos/:owner/:repo/pulls/:number <https://developer.github.com/v3/pulls/#get-a-single-pull-request>`_\n        :param content_type: string, optional\n        :rtype: :class:`github.PullRequest.PullRequest` or :class:`github.Issue.Issue`\n        \"\"\"\n        assert content_type is github.GithubObject.NotSet or isinstance(\n            content_type, str\n        ), content_type\n        if self.content_url is None:\n            return None\n\n        if content_type == \"PullRequest\":\n            url = self.content_url.replace(\"issues\", \"pulls\")\n            retclass = github.PullRequest.PullRequest\n        elif content_type is github.GithubObject.NotSet or content_type == \"Issue\":\n            url = self.content_url\n            retclass = github.Issue.Issue\n        else:\n            raise ValueError(\"Unknown content type: %s\" % content_type)\n        headers, data = self._requester.requestJsonAndCheck(\"GET\", url)\n        return retclass(self._requester, headers, data, completed=True)\n\n    def move(self, position, column):\n        \"\"\"\n        :calls: `POST /projects/columns/cards/:card_id/moves <https://developer.github.com/v3/projects/cards>`_\n        :param position: string\n        :param column: :class:`github.ProjectColumn.ProjectColumn` or int\n        :rtype: bool\n        \"\"\"\n        assert isinstance(position, str), position\n        assert isinstance(column, github.ProjectColumn.ProjectColumn) or isinstance(\n            column, int\n        ), column\n        post_parameters = {\n            \"position\": position,\n            \"column\": column.id\n            if isinstance(column, github.ProjectColumn.ProjectColumn)\n            else column,\n        }\n        status, _, _ = self._requester.requestJson(\n            \"POST\",\n            self.url + \"/moves\",\n            input=post_parameters,\n            headers={\"Accept\": Consts.mediaTypeProjectsPreview},\n        )\n        return status == 201\n\n    def delete(self):\n        \"\"\"\n        :calls: `DELETE /projects/columns/cards/:card_id <https://developer.github.com/v3/projects/cards>`_\n        :rtype: bool\n        \"\"\"\n        status, _, _ = self._requester.requestJson(\n            \"DELETE\", self.url, headers={\"Accept\": Consts.mediaTypeProjectsPreview},\n        )\n        return status == 204\n\n    def _initAttributes(self):\n        self._archived = github.GithubObject.NotSet\n        self._column_url = github.GithubObject.NotSet\n        self._content_url = github.GithubObject.NotSet\n        self._created_at = github.GithubObject.NotSet\n        self._creator = github.GithubObject.NotSet\n        self._id = github.GithubObject.NotSet\n        self._node_id = github.GithubObject.NotSet\n        self._note = github.GithubObject.NotSet\n        self._updated_at = github.GithubObject.NotSet\n        self._url = github.GithubObject.NotSet\n\n    def _useAttributes(self, attributes):\n        if \"archived\" in attributes:  # pragma no branch\n            self._archived = self._makeBoolAttribute(attributes[\"archived\"])\n        if \"column_url\" in attributes:  # pragma no branch\n            self._column_url = self._makeStringAttribute(attributes[\"column_url\"])\n        if \"content_url\" in attributes:  # pragma no branch\n            self._content_url = self._makeStringAttribute(attributes[\"content_url\"])\n        if \"created_at\" in attributes:  # pragma no branch\n            self._created_at = self._makeDatetimeAttribute(attributes[\"created_at\"])\n        if \"creator\" in attributes:  # pragma no branch\n            self._creator = self._makeClassAttribute(\n                github.NamedUser.NamedUser, attributes[\"creator\"]\n            )\n        if \"id\" in attributes:  # pragma no branch\n            self._id = self._makeIntAttribute(attributes[\"id\"])\n        if \"node_id\" in attributes:  # pragma no branch\n            self._node_id = self._makeStringAttribute(attributes[\"node_id\"])\n        if \"note\" in attributes:  # pragma no branch\n            self._note = self._makeStringAttribute(attributes[\"note\"])\n        if \"updated_at\" in attributes:  # pragma no branch\n            self._updated_at = self._makeDatetimeAttribute(attributes[\"updated_at\"])\n        if \"url\" in attributes:  # pragma no branch\n            self._url = self._makeStringAttribute(attributes[\"url\"])\n", "path": "github/ProjectCard.py"}]}