Skip to content

Commit d324f91

Browse files
Fix mypy errors for data_structures->linked_list directory files (#4927)
1 parent d654806 commit d324f91

File tree

5 files changed

+26
-19
lines changed

5 files changed

+26
-19
lines changed

data_structures/linked_list/__init__.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
- Last node: points to null
77
"""
88

9-
from typing import Any
9+
from typing import Any, Optional
1010

1111

1212
class Node:
@@ -17,15 +17,18 @@ def __init__(self, item: Any, next: Any) -> None:
1717

1818
class LinkedList:
1919
def __init__(self) -> None:
20-
self.head = None
20+
self.head: Optional[Node] = None
2121
self.size = 0
2222

2323
def add(self, item: Any) -> None:
2424
self.head = Node(item, self.head)
2525
self.size += 1
2626

2727
def remove(self) -> Any:
28-
if self.is_empty():
28+
# Switched 'self.is_empty()' to 'self.head is None'
29+
# because mypy was considering the possibility that 'self.head'
30+
# can be None in below else part and giving error
31+
if self.head is None:
2932
return None
3033
else:
3134
item = self.head.item
@@ -50,7 +53,7 @@ def __str__(self) -> str:
5053
else:
5154
iterate = self.head
5255
item_str = ""
53-
item_list = []
56+
item_list: list[str] = []
5457
while iterate:
5558
item_list.append(str(iterate.item))
5659
iterate = iterate.next

data_structures/linked_list/circular_linked_list.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
from typing import Any
1+
from typing import Any, Iterator, Optional
22

33

44
class Node:
55
def __init__(self, data: Any):
6-
self.data = data
7-
self.next = None
6+
self.data: Any = data
7+
self.next: Optional[Node] = None
88

99

1010
class CircularLinkedList:
1111
def __init__(self):
1212
self.head = None
1313
self.tail = None
1414

15-
def __iter__(self):
15+
def __iter__(self) -> Iterator[Any]:
1616
node = self.head
1717
while self.head:
1818
yield node.data
@@ -54,10 +54,10 @@ def insert_nth(self, index: int, data: Any) -> None:
5454
def delete_front(self):
5555
return self.delete_nth(0)
5656

57-
def delete_tail(self) -> None:
57+
def delete_tail(self) -> Any:
5858
return self.delete_nth(len(self) - 1)
5959

60-
def delete_nth(self, index: int = 0):
60+
def delete_nth(self, index: int = 0) -> Any:
6161
if not 0 <= index < len(self):
6262
raise IndexError("list index out of range.")
6363
delete_node = self.head
@@ -76,7 +76,7 @@ def delete_nth(self, index: int = 0):
7676
self.tail = temp
7777
return delete_node.data
7878

79-
def is_empty(self):
79+
def is_empty(self) -> bool:
8080
return len(self) == 0
8181

8282

data_structures/linked_list/has_loop.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import Any
1+
from typing import Any, Optional
22

33

44
class ContainsLoopError(Exception):
@@ -7,8 +7,8 @@ class ContainsLoopError(Exception):
77

88
class Node:
99
def __init__(self, data: Any) -> None:
10-
self.data = data
11-
self.next_node = None
10+
self.data: Any = data
11+
self.next_node: Optional[Node] = None
1212

1313
def __iter__(self):
1414
node = self

data_structures/linked_list/middle_element_of_linked_list.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
from typing import Optional
2+
3+
14
class Node:
2-
def __init__(self, data: int) -> int:
5+
def __init__(self, data: int) -> None:
36
self.data = data
47
self.next = None
58

@@ -14,7 +17,7 @@ def push(self, new_data: int) -> int:
1417
self.head = new_node
1518
return self.head.data
1619

17-
def middle_element(self) -> int:
20+
def middle_element(self) -> Optional[int]:
1821
"""
1922
>>> link = LinkedList()
2023
>>> link.middle_element()
@@ -54,6 +57,7 @@ def middle_element(self) -> int:
5457
return slow_pointer.data
5558
else:
5659
print("No element found.")
60+
return None
5761

5862

5963
if __name__ == "__main__":

data_structures/linked_list/skip_list.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
from __future__ import annotations
66

77
from random import random
8-
from typing import Generic, TypeVar
8+
from typing import Generic, Optional, TypeVar, Union
99

1010
KT = TypeVar("KT")
1111
VT = TypeVar("VT")
1212

1313

1414
class Node(Generic[KT, VT]):
15-
def __init__(self, key: KT, value: VT):
15+
def __init__(self, key: Union[KT, str] = "root", value: Optional[VT] = None):
1616
self.key = key
1717
self.value = value
1818
self.forward: list[Node[KT, VT]] = []
@@ -49,7 +49,7 @@ def level(self) -> int:
4949

5050
class SkipList(Generic[KT, VT]):
5151
def __init__(self, p: float = 0.5, max_level: int = 16):
52-
self.head = Node("root", None)
52+
self.head: Node[KT, VT] = Node[KT, VT]()
5353
self.level = 0
5454
self.p = p
5555
self.max_level = max_level

0 commit comments

Comments
 (0)