Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

pygithub

Package Overview
Dependencies
Maintainers
3
Versions
106
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pygithub - npm Package Compare versions

Comparing version
2.8.0
to
2.8.1
+1
-1
github/GithubApp.py

@@ -214,3 +214,3 @@ ############################ Copyrights and license ############################

"type",
"Enterprise",
"User",
attributes["owner"],

@@ -217,0 +217,0 @@ (github.NamedUser.NamedUser, "User"),

@@ -373,9 +373,19 @@ ############################ Copyrights and license ############################

def _makeUnionClassAttributeFromTypeName(
self, type_name: str | None, value: Any, *class_and_names: tuple[type[T_gh], str]
self, type_name: str | None, fallback_type: str | None, value: Any, *class_and_names: tuple[type[T_gh], str]
) -> Attribute[T_gh]:
if value is None or type_name is None:
return _ValuedAttribute(None) # type: ignore
fallback_class = None
for klass, name in class_and_names:
if type_name == name:
return self._makeClassAttribute(klass, value)
if fallback_type == name:
fallback_class = klass
if fallback_type is not None:
if fallback_class is None:
# this is misconfiguration in PyGithub code, not a user's fault
raise ValueError(
f"Fallback type {fallback_type} is not among classes and names: {[name for klass, name in class_and_names]}"
)
return self._makeClassAttribute(fallback_class, value)
return _BadAttribute(value, type) # type: ignore

@@ -392,3 +402,5 @@

return _ValuedAttribute(None) # type: ignore
return self._makeUnionClassAttributeFromTypeName(value.get(type_key, default_type), value, *class_and_names)
return self._makeUnionClassAttributeFromTypeName(
value.get(type_key, default_type), default_type, value, *class_and_names
)

@@ -406,3 +418,3 @@ def _makeUnionClassAttributeFromTypeKeyAndValueKey(

return self._makeUnionClassAttributeFromTypeName(
value.get(type_key, default_type), value.get(value_key), *class_and_names
value.get(type_key, default_type), default_type, value.get(value_key), *class_and_names
)

@@ -409,0 +421,0 @@

Metadata-Version: 2.4
Name: PyGithub
Version: 2.8.0
Version: 2.8.1
Summary: Use the full Github API v3

@@ -5,0 +5,0 @@ Author-email: Vincent Jacques <vincent@vincent-jacques.net>

Metadata-Version: 2.4
Name: PyGithub
Version: 2.8.0
Version: 2.8.1
Summary: Use the full Github API v3

@@ -5,0 +5,0 @@ Author-email: Vincent Jacques <vincent@vincent-jacques.net>

@@ -27,4 +27,8 @@ ############################ Copyrights and license ############################

from __future__ import annotations
import unittest
from datetime import datetime, timedelta, timezone
from typing import Any
from unittest import mock

@@ -37,2 +41,4 @@ import github.Repository

gho = Framework.github.GithubObject
ghusr = Framework.github.NamedUser
ghorg = Framework.github.Organization

@@ -57,2 +63,91 @@

def testMakeUnionClassAttributeFromTypeName(self):
req = mock.Mock(is_not_lazy=False)
obj = TestingClass(req, {}, {})
data = {"login": "login"}
class_and_names = [(ghusr.NamedUser, "User"), (ghorg.Organization, "Organization")]
def make(type_name: str | None, fallback_type: str | None = "User"):
return obj._makeUnionClassAttributeFromTypeName(type_name, fallback_type, data, *class_and_names)
none = make(None)
usr = make("User")
org = make("Organization")
unknown = make("Unknown")
bad = make("Unknown", None)
self.assertIsInstance(none, gho._ValuedAttribute)
self.assertIsInstance(usr, gho._ValuedAttribute)
self.assertIsInstance(org, gho._ValuedAttribute)
self.assertIsInstance(unknown, gho._ValuedAttribute)
self.assertIsInstance(bad, gho._BadAttribute)
self.assertIsNone(none.value)
self.assertIsInstance(usr.value, ghusr.NamedUser)
self.assertIsInstance(org.value, ghorg.Organization)
self.assertIsInstance(unknown.value, ghusr.NamedUser)
self.assertEqual(str(usr.value), 'NamedUser(login="login")')
self.assertEqual(str(org.value), 'Organization(login="login")')
self.assertEqual(str(unknown.value), 'NamedUser(login="login")')
def testMakeUnionClassAttributeFromTypeKey(self):
req = mock.Mock(is_not_lazy=False)
obj = TestingClass(req, {}, {})
class_and_names = [(ghusr.NamedUser, "User"), (ghorg.Organization, "Organization")]
def make(data: dict[str, Any]):
return obj._makeUnionClassAttributeFromTypeKey("type", "User", data, *class_and_names)
default = make({"login": "login"})
usr = make({"login": "login", "type": "User"})
org = make({"login": "login", "type": "Organization"})
unknown = make({"login": "login", "type": "Unknown"})
self.assertIsInstance(default, gho._ValuedAttribute)
self.assertIsInstance(usr, gho._ValuedAttribute)
self.assertIsInstance(org, gho._ValuedAttribute)
self.assertIsInstance(unknown, gho._ValuedAttribute)
self.assertIsInstance(default.value, ghusr.NamedUser)
self.assertIsInstance(usr.value, ghusr.NamedUser)
self.assertIsInstance(org.value, ghorg.Organization)
self.assertIsInstance(unknown.value, ghusr.NamedUser)
self.assertEqual(str(default.value), 'NamedUser(login="login")')
self.assertEqual(str(usr.value), 'NamedUser(login="login")')
self.assertEqual(str(org.value), 'Organization(login="login")')
self.assertEqual(str(unknown.value), 'NamedUser(login="login")')
def testMakeUnionClassAttributeFromTypeKeyAndValueKey(self):
req = mock.Mock(is_not_lazy=False)
obj = TestingClass(req, {}, {})
class_and_names = [(ghusr.NamedUser, "User"), (ghorg.Organization, "Organization")]
def make(data: dict[str, Any]):
return obj._makeUnionClassAttributeFromTypeKeyAndValueKey("type", "data", "User", data, *class_and_names)
default = make({"data": {"login": "login"}})
usr = make({"data": {"login": "login"}, "type": "User"})
org = make({"data": {"login": "login"}, "type": "Organization"})
unknown = make({"data": {"login": "login"}, "type": "Unknown"})
self.assertIsInstance(default, gho._ValuedAttribute)
self.assertIsInstance(usr, gho._ValuedAttribute)
self.assertIsInstance(org, gho._ValuedAttribute)
self.assertIsInstance(unknown, gho._ValuedAttribute)
self.assertIsInstance(default.value, ghusr.NamedUser)
self.assertIsInstance(usr.value, ghusr.NamedUser)
self.assertIsInstance(org.value, ghorg.Organization)
self.assertIsInstance(unknown.value, ghusr.NamedUser)
self.assertEqual(str(default.value), 'NamedUser(login="login")')
self.assertEqual(str(usr.value), 'NamedUser(login="login")')
self.assertEqual(str(org.value), 'Organization(login="login")')
self.assertEqual(str(unknown.value), 'NamedUser(login="login")')
def testMakeDatetimeAttribute(self):

@@ -151,1 +246,9 @@ for value, expected in [

self.assertIsNone(e.exception.transformation_exception)
class TestingClass(gho.NonCompletableGithubObject):
def _initAttributes(self) -> None:
pass
def _useAttributes(self, attributes: Any) -> None:
pass

Sorry, the diff of this file is too big to display