Skip to content

Commit bea8112

Browse files
Typing (#88)
* typing
1 parent f9c607d commit bea8112

File tree

7 files changed

+152
-107
lines changed

7 files changed

+152
-107
lines changed

lessons/day_01/python/resolvers.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
from typing import Any
12
from ariadne import QueryType, ObjectType
23
from random import choice
4+
5+
from graphql import GraphQLResolveInfo
36
from models import Skill
47
from data import session
58
from datetime import datetime
@@ -13,17 +16,17 @@
1316

1417
# Top level resolver
1518
@query.field("randomSkill")
16-
def resolve_random_skill(_, info):
19+
def resolve_random_skill(_, info: GraphQLResolveInfo) -> Skill | None:
1720
records = [skill.id for skill in session.query(Skill.id)]
1821
return session.query(Skill).get(choice(records))
1922

2023

2124
# Field level resolvers
2225
@skill.field("now")
23-
def resolve_now(_, info):
26+
def resolve_now(_, info: GraphQLResolveInfo) -> datetime:
2427
return datetime.now()
2528

2629

2730
@skill.field("parent")
28-
def resolve_parent(obj, info):
31+
def resolve_parent(obj: Any, info: GraphQLResolveInfo) -> Skill:
2932
return obj.parent_skill

lessons/day_02/python/resolvers.py

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
from typing import Any, List
12
from ariadne import QueryType, ObjectType
23
from random import choice
4+
5+
from graphql import GraphQLResolveInfo
36
from models import Skill, Person
47
from data import session
58
from datetime import datetime
@@ -14,48 +17,52 @@
1417

1518
# Top level resolvers
1619
@query.field("randomSkill")
17-
def resolve_random_skill(_, info):
20+
def resolve_random_skill(_, info: GraphQLResolveInfo) -> Skill | None:
1821
records = [skill.id for skill in session.query(Skill.id)]
1922
return session.query(Skill).get(choice(records))
2023

2124

2225
@query.field("randomPerson")
23-
def resolve_random_person(_, info):
26+
def resolve_random_person(_, info: GraphQLResolveInfo) -> Person | None:
2427
records = [person.id for person in session.query(Person.id)]
2528
return session.query(Person).get(choice(records))
2629

2730

2831
@query.field("persons")
29-
def resolve_persons(_, info, id=None):
30-
return session.query(Person).filter_by(id=id) if id else session.query(Person).all()
32+
def resolve_persons(_, info: GraphQLResolveInfo, id: int | None = None) -> List[Person]:
33+
return (
34+
session.query(Person).filter_by(id=id).all()
35+
if id
36+
else session.query(Person).all()
37+
)
3138

3239

3340
# Field level resolvers
3441
@skill.field("now")
35-
def resolve_now(_, info):
42+
def resolve_now(_, info: GraphQLResolveInfo) -> datetime:
3643
return datetime.now()
3744

3845

3946
@skill.field("parent")
40-
def resolve_parent(obj, info):
47+
def resolve_parent(obj: Any, info: GraphQLResolveInfo) -> Skill:
4148
return obj.parent_skill
4249

4350

4451
@person.field("fullName")
45-
def resolve_full_name(obj, info):
46-
return f'{obj.name} {obj.surname}'
52+
def resolve_full_name(obj: Any, info: GraphQLResolveInfo) -> str:
53+
return f"{obj.name} {obj.surname}"
4754

4855

4956
@person.field("friends")
50-
def resolve_friends(obj, info):
57+
def resolve_friends(obj: Any, info: GraphQLResolveInfo) -> Person:
5158
return obj.friends
5259

5360

5461
@person.field("skills")
55-
def resolve_skills(obj, info):
62+
def resolve_skills(obj: Any, info: GraphQLResolveInfo):
5663
return obj.skills
5764

5865

5966
@person.field("favSkill")
60-
def resolve_fav_skill(obj, info):
67+
def resolve_fav_skill(obj: Any, info: GraphQLResolveInfo):
6168
return obj.person_favSkill

lessons/day_03/python/resolvers.py

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
from typing import List, TypeVar
12
from ariadne import QueryType, ObjectType
23
from random import choice
4+
5+
from graphql import GraphQLResolveInfo
36
from models import Skill, Person
47
from data import session
58
from datetime import datetime
@@ -11,66 +14,70 @@
1114
skill = ObjectType("Skill")
1215
person = ObjectType("Person")
1316

17+
ID = TypeVar("ID", int, str)
18+
1419

1520
# Top level resolvers
1621
@query.field("randomSkill")
17-
def resolve_random_skill(_, info):
22+
def resolve_random_skill(_, info: GraphQLResolveInfo) -> Skill | None:
1823
records = [skill.id for skill in session.query(Skill.id)]
1924
return session.query(Skill).get(choice(records))
2025

2126

2227
@query.field("randomPerson")
23-
def resolve_random_person(_, info):
28+
def resolve_random_person(_, info: GraphQLResolveInfo) -> Skill | None:
2429
records = [person.id for person in session.query(Person.id)]
2530
return session.query(Person).get(choice(records))
2631

2732

2833
@query.field("persons")
29-
def resolve_persons(_, info, id=None):
34+
def resolve_persons(_, info: GraphQLResolveInfo, id: ID | None = None):
3035
return session.query(Person).filter_by(id=id) if id else session.query(Person).all()
3136

3237

3338
@query.field("person")
34-
def resolve_person(_, info, id=None):
39+
def resolve_person(_, info: GraphQLResolveInfo, id: ID | None = None):
3540
return session.query(Person).get(id)
3641

3742

3843
@query.field("skills")
39-
def resolve_skills(_, info, id=None):
44+
def resolve_skills(_, info: GraphQLResolveInfo, id: ID | None = None):
4045
return session.query(Skill).filter_by(id=id) if id else session.query(Skill).all()
4146

4247

4348
@query.field("skill")
44-
def resolve_skill(_, info, id=None):
49+
def resolve_skill(_, info: GraphQLResolveInfo, id: ID | None = None):
4550
return session.query(Skill).get(id)
4651

4752

4853
# Field level resolvers
4954
@skill.field("now")
50-
def resolve_now(_, info):
55+
def resolve_now(_, info: GraphQLResolveInfo) -> datetime:
5156
return datetime.now()
5257

5358

5459
@skill.field("parent")
55-
def resolve_parent(obj, info):
60+
def resolve_parent(obj, info: GraphQLResolveInfo) -> Skill:
5661
return obj.parent_skill
5762

5863

5964
@person.field("fullName")
60-
def resolve_full_name(obj, info):
61-
return f'{obj.name} {obj.surname}'
65+
def resolve_full_name(obj, info: GraphQLResolveInfo) -> str:
66+
return f"{obj.name} {obj.surname}"
6267

6368

6469
@person.field("friends")
65-
def resolve_friends(obj, info, id=None):
70+
def resolve_friends(obj, info: GraphQLResolveInfo, id: ID | None = None) -> Person:
6671
return obj.friends.filter_by(id=id) if id else obj.friends
6772

6873

6974
@person.field("skills")
70-
def resolve_person_skills(obj, info, id=None):
75+
def resolve_person_skills(
76+
obj, info: GraphQLResolveInfo, id: ID | None = None
77+
) -> List[Skill]:
7178
return obj.skills.filter_by(id=id) if id else obj.skills
7279

7380

7481
@person.field("favSkill")
75-
def resolve_fav_skill(obj, info):
82+
def resolve_fav_skill(obj, info: GraphQLResolveInfo) -> Skill:
7683
return obj.person_favSkill

lessons/day_04/python/resolvers.py

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
from typing import Any, Dict, List
12
from ariadne import QueryType, ObjectType, EnumType
23
from random import choice
4+
5+
from graphql import GraphQLResolveInfo
36
from models import Skill, Person
47
from data import session
58
from datetime import datetime
@@ -13,73 +16,81 @@
1316
eye_color = EnumType(
1417
"EyeColor",
1518
{
16-
'BLUE': 'blue',
17-
'GREEN': 'green',
18-
'BROWN': 'brown',
19-
'BLACK': 'black',
19+
"BLUE": "blue",
20+
"GREEN": "green",
21+
"BROWN": "brown",
22+
"BLACK": "black",
2023
},
2124
)
2225

2326

2427
# Top level resolvers
2528
@query.field("randomSkill")
26-
def resolve_random_skill(_, info):
29+
def resolve_random_skill(_, info: GraphQLResolveInfo) -> Skill | None:
2730
records = [skill.id for skill in session.query(Skill.id)]
2831
return session.query(Skill).get(choice(records))
2932

3033

3134
@query.field("randomPerson")
32-
def resolve_random_person(_, info):
35+
def resolve_random_person(_, info: GraphQLResolveInfo) -> Person | None:
3336
records = [person.id for person in session.query(Person.id)]
3437
return session.query(Person).get(choice(records))
3538

3639

3740
@query.field("person")
38-
def resolve_person(_, info, input=None):
41+
def resolve_person(
42+
_, info: GraphQLResolveInfo, input: Dict | None = None
43+
) -> Person | None:
3944
return session.query(Person).filter_by(**input).first() if input else None
4045

4146

4247
@query.field("persons")
43-
def resolve_persons(_, info, input={}):
48+
def resolve_persons(_, info: GraphQLResolveInfo, input: Dict = {}) -> List[Person]:
4449
return session.query(Person).filter_by(**input).all()
4550

4651

4752
@query.field("skill")
48-
def resolve_skill(_, info, input=None):
53+
def resolve_skill(
54+
_, info: GraphQLResolveInfo, input: Dict | None = None
55+
) -> Skill | None:
4956
return session.query(Skill).filter_by(**input).first() if input else None
5057

5158

5259
@query.field("skills")
53-
def resolve_skills(_, info, input={}):
60+
def resolve_skills(_, info: GraphQLResolveInfo, input: Dict = {}) -> List[Skill]:
5461
return session.query(Skill).filter_by(**input).all()
5562

5663

5764
# Field level resolvers
5865
@skill.field("now")
59-
def resolve_now(_, info):
66+
def resolve_now(_, info: GraphQLResolveInfo) -> datetime:
6067
return datetime.now()
6168

6269

6370
@skill.field("parent")
64-
def resolve_parent(obj, info):
71+
def resolve_parent(obj: Any, info: GraphQLResolveInfo) -> Skill:
6572
return obj.parent_skill
6673

6774

6875
@person.field("fullName")
69-
def resolve_full_name(obj, info):
70-
return f'{obj.name} {obj.surname}'
76+
def resolve_full_name(obj: Any, info: GraphQLResolveInfo) -> str:
77+
return f"{obj.name} {obj.surname}"
7178

7279

7380
@person.field("friends")
74-
def resolve_friends(obj, info, input={}):
81+
def resolve_friends(
82+
obj: Any, info: GraphQLResolveInfo, input: Dict = {}
83+
) -> List[Person]:
7584
return obj.friends.filter_by(**input).all()
7685

7786

7887
@person.field("skills")
79-
def resolve_person_skills(obj, info, input={}):
88+
def resolve_person_skills(
89+
obj: Any, info: GraphQLResolveInfo, input: Dict = {}
90+
) -> List[Skill]:
8091
return obj.skills.filter_by(**input).all()
8192

8293

8394
@person.field("favSkill")
84-
def resolve_fav_skill(obj, info):
95+
def resolve_fav_skill(obj: Any, info: GraphQLResolveInfo) -> Skill:
8596
return obj.person_favSkill

0 commit comments

Comments
 (0)