10000 Copy list when initialize List · nirum-lang/nirum-python@8a61166 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8a61166

Browse files
committed
Copy list when initialize List
1 parent 85d91f5 commit 8a61166

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

CHANGES.rst

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ Version 0.5.4
66

77
To be released.
88

9+
- Made `nirum.datastructures.List` to copy the given value so that
10+
it doesn't refer given value's state and is immutable.
11+
912

1013
Version 0.5.3
1114
-------------

nirum/datastructures.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def __repr__(self):
5454
class List(collections.Sequence):
5555

5656
def __init__(self, items):
57-
self.items = items
57+
self.items = list(items)
5858

5959
def __getitem__(self, index):
6060
return self.items[index]

tests/datastructures_test.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,12 @@ def test_list():
8888
assert immutable_list.count(1) == 1
8989
assert immutable_list.count(2) == 1
9090
assert immutable_list.count(3) == 0
91+
92+
93+
def test_list_immutable():
94+
mutable_list = [1, 2]
95+
immutable_list = List(mutable_list)
96+
mutable_list.append(3)
97+
assert immutable_list.items != mutable_list
98+
assert immutable_list.items == [1, 2]
99+
assert mutable_list == [1, 2, 3]

0 commit comments

Comments
 (0)
0