Merge ContentFile type stub back to source (#2635)

Co-authored-by: Enrico Minack <github@enrico.minack.dev>
This commit is contained in:
Trim21
2023-08-09 13:36:01 +02:00
committed by GitHub
co-authored by Enrico Minack
parent d02ef2231f
commit 1af926443d
2 changed files with 42 additions and 120 deletions
+42 -80
View File
@@ -28,163 +28,125 @@
# along with PyGithub. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
from __future__ import annotations
import base64
from typing import Any, Dict
from typing import TYPE_CHECKING, Any
import github.GithubObject
import github.Repository
from github.GithubObject import Attribute, CompletableGithubObject, NotSet, _ValuedAttribute
if TYPE_CHECKING:
from github.License import License
from github.Repository import Repository
class ContentFile(github.GithubObject.CompletableGithubObject):
class ContentFile(CompletableGithubObject):
"""
This class represents ContentFiles. The reference can be found here https://docs.github.com/en/rest/reference/repos#contents
"""
def _initAttributes(self) -> None:
self._content: Attribute[str] = NotSet
self._download_url: Attribute[str] = NotSet
self._encoding: Attribute[str] = NotSet
self._git_url: Attribute[str] = NotSet
self._html_url: Attribute[str] = NotSet
self._license: Attribute[License] = NotSet
self._name: Attribute[str] = NotSet
self._path: Attribute[str] = NotSet
self._repository: Attribute[Repository] = NotSet
self._sha: Attribute[str] = NotSet
self._size: Attribute[int] = NotSet
self._type: Attribute[str] = NotSet
self._url: Attribute[str] = NotSet
self._text_matches: Attribute[str] = NotSet
def __repr__(self) -> str:
return self.get__repr__({"path": self._path.value})
@property
def content(self):
"""
:type: string
"""
def content(self) -> str:
self._completeIfNotSet(self._content)
return self._content.value
@property
def decoded_content(self):
"""
:type: bytes
"""
def decoded_content(self) -> bytes:
assert self.encoding == "base64", f"unsupported encoding: {self.encoding}"
return base64.b64decode(bytearray(self.content, "utf-8"))
@property
def download_url(self):
"""
:type: string
"""
def download_url(self) -> str:
self._completeIfNotSet(self._download_url)
return self._download_url.value
@property
def encoding(self):
"""
:type: string
"""
def encoding(self) -> str:
self._completeIfNotSet(self._encoding)
return self._encoding.value
@property
def git_url(self):
"""
:type: string
"""
def git_url(self) -> str:
self._completeIfNotSet(self._git_url)
return self._git_url.value
@property
def html_url(self):
"""
:type: string
"""
def html_url(self) -> str:
self._completeIfNotSet(self._html_url)
return self._html_url.value
@property
def license(self):
"""
:type: :class:`github.License.License`
"""
def license(self) -> License:
self._completeIfNotSet(self._license)
return self._license.value
@property
def name(self):
"""
:type: string
"""
def name(self) -> str:
self._completeIfNotSet(self._name)
return self._name.value
@property
def path(self):
"""
:type: string
"""
def path(self) -> str:
self._completeIfNotSet(self._path)
return self._path.value
@property
def repository(self):
"""
:type: :class:`github.Repository.Repository`
"""
if self._repository is github.GithubObject.NotSet:
def repository(self) -> Repository:
if self._repository is NotSet:
# The repository was not set automatically, so it must be looked up by url.
repo_url = "/".join(self.url.split("/")[:6]) # pragma no cover (Should be covered)
self._repository = github.GithubObject._ValuedAttribute(
self._repository = _ValuedAttribute(
github.Repository.Repository(self._requester, self._headers, {"url": repo_url}, completed=False)
) # pragma no cover (Should be covered)
return self._repository.value
@property
def sha(self):
"""
:type: string
"""
def sha(self) -> str:
self._completeIfNotSet(self._sha)
return self._sha.value
@property
def size(self):
"""
:type: integer
"""
def size(self) -> int:
self._completeIfNotSet(self._size)
return self._size.value
@property
def type(self):
"""
:type: string
"""
def type(self) -> str:
self._completeIfNotSet(self._type)
return self._type.value
@property
def url(self):
"""
:type: string
"""
def url(self) -> str:
self._completeIfNotSet(self._url)
return self._url.value
@property
def text_matches(self):
"""
:type: string
"""
def text_matches(self) -> str:
self._completeIfNotSet(self._text_matches)
return self._text_matches.value
def _initAttributes(self) -> None:
self._content = github.GithubObject.NotSet
self._text_matches = github.GithubObject.NotSet
self._encoding = github.GithubObject.NotSet
self._download_url = github.GithubObject.NotSet
self._git_url = github.GithubObject.NotSet
self._html_url = github.GithubObject.NotSet
self._license = github.GithubObject.NotSet
self._name = github.GithubObject.NotSet
self._path = github.GithubObject.NotSet
self._repository = github.GithubObject.NotSet
self._sha = github.GithubObject.NotSet
self._size = github.GithubObject.NotSet
self._type = github.GithubObject.NotSet
def _useAttributes(self, attributes: Dict[str, Any]) -> None:
def _useAttributes(self, attributes: dict[str, Any]) -> None:
if "content" in attributes: # pragma no branch
self._content = self._makeStringAttribute(attributes["content"])
if "download_url" in attributes: # pragma no branch