def create_gist(self, public, files, description=github.GithubObject.NotSet):
assert isinstance(public, bool), public<EOL>assert all(isinstance(element, github.InputFileContent) for element in files.itervalues()), files<EOL>assert description is github.GithubObject.NotSet or isinstance(description, (str, unicode)), description<EOL>post_parameters = {<EOL>"<STR_LIT>": public,<EOL>"<STR_LIT>": {key: value._identity for key, value in files.iteritems()},<EOL>}<EOL>if description is not github.GithubObject.NotSet:<EOL><INDENT>post_parameters["<STR_LIT:description>"] = description<EOL><DEDENT>headers, data = self._requester.requestJsonAndCheck(<EOL>"<STR_LIT:POST>",<EOL>"<STR_LIT>",<EOL>input=post_parameters<EOL>)<EOL>return github.Gist.Gist(self._requester, headers, data, completed=True)<EOL>
:calls: `POST /gists <http://developer.github.com/v3/gists>`_
:param public: bool
:param files: dict of string to :class:`github.InputFileContent.InputFileContent`
:param description: string
:rtype: :class:`github.Gist.Gist`