Skip to content

Commit 869e2ab

Browse files
committed
Support to map self in resources.
Very nested resources like Repo
1 parent 06ae379 commit 869e2ab

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

pygithub3/resources/base.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ def parse_date(string_date):
4848
return date
4949

5050
def parse_map(resource, raw_resource):
51+
if resource == 'self':
52+
return self.__load(raw_resource)
5153
if hasattr(raw_resource, 'items'):
5254
return resource.__load(raw_resource)
5355

pygithub3/tests/resources/test_core.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from unittest import TestCase
55
from datetime import datetime
66

7-
from pygithub3.resources.base import Resource, Raw, json
7+
from pygithub3.resources.base import Raw
88
from pygithub3.tests.utils.resources import Nested, Simple, HasSimple
99

1010
simple_resource = dict(type='simple')
@@ -16,7 +16,9 @@
1616
simple=simple_resource,
1717
list_collection=[has_simple] * 2,
1818
items_collections=dict(arg1=has_simple, arg2=has_simple)
19-
)
19+
)
20+
github_return_nested = github_return.copy()
21+
github_return.update({'self_nested': github_return_nested})
2022

2123

2224
class TestResourceMapping(TestCase):
@@ -45,6 +47,11 @@ def test_DICT_collection_map(self):
4547
self.assertEqual(arg1_has_simple.type, 'has_simple')
4648
self.assertEqual(arg1_has_simple.simple.type, 'simple')
4749

50+
def test_SELF_nested(self):
51+
self.assertIsInstance(self.r.self_nested, Nested)
52+
self.assertIsInstance(self.r.self_nested.simple, Simple)
53+
self.assertIsInstance(self.r.list_collection[0], HasSimple)
54+
self.assertIsInstance(self.r.items_collections['arg1'], HasSimple)
4855

4956
class TestRawResource(TestCase):
5057
""" Litle obvious :P """

pygithub3/tests/utils/resources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class HasSimple(Resource):
1414

1515
class Nested(Resource):
1616
_dates = ('date', )
17-
_maps = {'simple': Simple}
17+
_maps = {'simple': Simple, 'self_nested': 'self'}
1818
_collection_maps = {
1919
'list_collection': HasSimple,
2020
'items_collections': HasSimple

0 commit comments

Comments
 (0)