Skip to content

Commit 37a9c5d

Browse files
committed
Support to resources-self-nested into collections
1 parent eeb5b97 commit 37a9c5d

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

pygithub3/resources/base.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ def loads(self, json_content):
3939

4040
@classmethod
4141
def __load(self, raw_resource):
42+
def self_resource(func):
43+
def wrapper(resource, raw_resource):
44+
if resource == 'self':
45+
resource = self
46+
return func(resource, raw_resource)
47+
return wrapper
48+
4249
def parse_date(string_date):
4350
from datetime import datetime
4451
try:
@@ -47,12 +54,12 @@ def parse_date(string_date):
4754
date = None
4855
return date
4956

57+
@self_resource
5058
def parse_map(resource, raw_resource):
51-
if resource == 'self':
52-
return self.__load(raw_resource)
5359
if hasattr(raw_resource, 'items'):
5460
return resource.__load(raw_resource)
5561

62+
@self_resource
5663
def parse_collection_map(resource, raw_resources):
5764
# Dict of resources (Ex: Gist file)
5865
if hasattr(raw_resources, 'items'):

pygithub3/tests/resources/test_core.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
)
2020
github_return_nested = github_return.copy()
2121
github_return.update({'self_nested': github_return_nested})
22+
github_return.update({'self_nested_list': [github_return_nested] * 2})
23+
github_return.update({'self_nested_dict': dict(arg1=github_return_nested)})
2224

2325

2426
class TestResourceMapping(TestCase):
@@ -53,6 +55,11 @@ def test_SELF_nested(self):
5355
self.assertIsInstance(self.r.list_collection[0], HasSimple)
5456
self.assertIsInstance(self.r.items_collections['arg1'], HasSimple)
5557

58+
def test_SELF_nested_in_collections(self):
59+
self.assertIsInstance(self.r.self_nested_list[0], Nested)
60+
self.assertIsInstance(self.r.self_nested_dict['arg1'], Nested)
61+
62+
5663
class TestRawResource(TestCase):
5764
""" Litle obvious :P """
5865

pygithub3/tests/utils/resources.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ class Nested(Resource):
1717
_maps = {'simple': Simple, 'self_nested': 'self'}
1818
_collection_maps = {
1919
'list_collection': HasSimple,
20-
'items_collections': HasSimple
20+
'items_collections': HasSimple,
21+
'self_nested_list': 'self',
22+
'self_nested_dict': 'self',
2123
}

0 commit comments

Comments
 (0)