Skip to content

Commit 4042bf8

Browse files
authored
Create dt_list.py (#2855)
* Create dt_list.py add the data type list python code for tabbed examples * update dt_list r.delete returns zero for an empty list and one for a non-empty - added a delete prior to ensure the delete is always empty and assertion passes * add ltrim.1 a single example doesn't render correctly if used twice on a webpage so adding a separate ltrim example * add remove keyword remove delete cleanups from ever being seen by user * add newline for linter
1 parent 0e56165 commit 4042bf8

File tree

1 file changed

+326
-0
lines changed

1 file changed

+326
-0
lines changed

doctests/dt_list.py

Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
1+
# EXAMPLE: list_tutorial
2+
# HIDE_START
3+
import redis
4+
5+
r = redis.Redis(decode_responses=True)
6+
# HIDE_END
7+
# REMOVE_START
8+
r.delete("bikes:repairs")
9+
r.delete("bikes:finished")
10+
# REMOVE_END
11+
12+
# STEP_START queue
13+
res1 = r.lpush("bikes:repairs", "bike:1")
14+
print(res1) # >>> 1
15+
16+
res2 = r.lpush("bikes:repairs", "bike:2")
17+
print(res2) # >>> 2
18+
19+
res3 = r.rpop("bikes:repairs")
20+
print(res3) # >>> bike:1
21+
22+
res4 = r.rpop("bikes:repairs")
23+
print(res4) # >>> bike:2
24+
# STEP_END
25+
26+
# REMOVE_START
27+
assert res1 == 1
28+
assert res2 == 2
29+
assert res3 == "bike:1"
30+
assert res4 == "bike:2"
31+
# REMOVE_END
32+
33+
# STEP_START stack
34+
res5 = r.lpush("bikes:repairs", "bike:1")
35+
print(res5) # >>> 1
36+
37+
res6 = r.lpush("bikes:repairs", "bike:2")
38+
print(res6) # >>> 2
39+
40+
res7 = r.lpop("bikes:repairs")
41+
print(res7) # >>> bike:2
42+
43+
res8 = r.lpop("bikes:repairs")
44+
print(res8) # >>> bike:1
45+
# STEP_END
46+
47+
# REMOVE_START
48+
assert res5 == 1
49+
assert res6 == 2
50+
assert res7 == "bike:2"
51+
assert res8 == "bike:1"
52+
# REMOVE_END
53+
54+
# STEP_START llen
55+
res9 = r.llen("bikes:repairs")
56+
print(res9) # >>> 0
57+
# STEP_END
58+
59+
# REMOVE_START
60+
assert res9 == 0
61+
# REMOVE_END
62+
63+
# STEP_START lmove_lrange
64+
res10 = r.lpush("bikes:repairs", "bike:1")
65+
print(res10) # >>> 1
66+
67+
res11 = r.lpush("bikes:repairs", "bike:2")
68+
print(res11) # >>> 2
69+
70+
res12 = r.lmove("bikes:repairs", "bikes:finished", "LEFT", "LEFT")
71+
print(res12) # >>> 'bike:2'
72+
73+
res13 = r.lrange("bikes:repairs", 0, -1)
74+
print(res13) # >>> ['bike:1']
75+
76+
res14 = r.lrange("bikes:finished", 0, -1)
77+
print(res14) # >>> ['bike:2']
78+
# STEP_END
79+
80+
# REMOVE_START
81+
assert res10 == 1
82+
assert res11 == 2
83+
assert res12 == "bike:2"
84+
assert res13 == ["bike:1"]
85+
assert res14 == ["bike:2"]
86+
r.delete("bikes:repairs")
87+
# REMOVE_END
88+
89+
# STEP_START lpush_rpush
90+
res15 = r.rpush("bikes:repairs", "bike:1")
91+
print(res15) # >>> 1
92+
93+
res16 = r.rpush("bikes:repairs", "bike:2")
94+
print(res16) # >>> 2
95+
96+
res17 = r.lpush("bikes:repairs", "bike:important_bike")
97+
print(res17) # >>> 3
98+
99+
res18 = r.lrange("bikes:repairs", 0, -1)
100+
print(res18) # >>> ['bike:important_bike', 'bike:1', 'bike:2']
101+
# STEP_END
102+
103+
# REMOVE_START
104+
assert res15 == 1
105+
assert res16 == 2
106+
assert res17 == 3
107+
assert res18 == ["bike:important_bike", "bike:1", "bike:2"]
108+
r.delete("bikes:repairs")
109+
# REMOVE_END
110+
111+
# STEP_START variadic
112+
res19 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
113+
print(res19) # >>> 3
114+
115+
res20 = r.lpush(
116+
"bikes:repairs", "bike:important_bike", "bike:very_important_bike"
117+
)
118+
print(res20) # >>> 5
119+
120+
res21 = r.lrange("bikes:repairs", 0, -1)
121+
print(
122+
res21
123+
) # >>> ['bike:very_important_bike', 'bike:important_bike', 'bike:1', 'bike:2', 'bike:3']
124+
# STEP_END
125+
126+
# REMOVE_START
127+
assert res19 == 3
128+
assert res20 == 5
129+
assert res21 == [
130+
"bike:very_important_bike",
131+
"bike:important_bike",
132+
"bike:1",
133+
"bike:2",
134+
"bike:3",
135+
]
136+
r.delete("bikes:repairs")
137+
# REMOVE_END
138+
139+
# STEP_START lpop_rpop
140+
res22 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
141+
print(res22) # >>> 3
142+
143+
res23 = r.rpop("bikes:repairs")
144+
print(res23) # >>> 'bike:3'
145+
146+
res24 = r.lpop("bikes:repairs")
147+
print(res24) # >>> 'bike:1'
148+
149+
res25 = r.rpop("bikes:repairs")
150+
print(res25) # >>> 'bike:2'
151+
152+
res26 = r.rpop("bikes:repairs")
153+
print(res26) # >>> None
154+
# STEP_END
155+
156+
# REMOVE_START
157+
assert res22 == 3
158+
assert res23 == "bike:3"
159+
assert res24 == "bike:1"
160+
assert res25 == "bike:2"
161+
assert res26 == None
162+
# REMOVE_END
163+
164+
# STEP_START ltrim
165+
res27 = r.lpush(
166+
"bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"
167+
)
168+
print(res27) # >>> 5
169+
170+
res28 = r.ltrim("bikes:repairs", 0, 2)
171+
print(res28) # >>> True
172+
173+
res29 = r.lrange("bikes:repairs", 0, -1)
174+
print(res29) # >>> ['bike:5', 'bike:4', 'bike:3']
175+
# STEP_END
176+
177+
# REMOVE_START
178+
assert res27 == 5
179+
assert res28 == True
180+
assert res29 == ["bike:5", "bike:4", "bike:3"]
181+
r.delete("bikes:repairs")
182+
# REMOVE_END
183+
184+
# STEP_START ltrim_end_of_list
185+
res27 = r.rpush(
186+
"bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"
187+
)
188+
print(res27) # >>> 5
189+
190+
res28 = r.ltrim("bikes:repairs", -3, -1)
191+
print(res28) # >>> True
192+
193+
res29 = r.lrange("bikes:repairs", 0, -1)
194+
print(res29) # >>> ['bike:3', 'bike:4', 'bike:5']
195+
# STEP_END
196+
197+
# REMOVE_START
198+
assert res27 == 5
199+
assert res28 == True
200+
assert res29 == ["bike:3", "bike:4", "bike:5"]
201+
r.delete("bikes:repairs")
202+
# REMOVE_END
203+
204+
# STEP_START brpop
205+
res31 = r.rpush("bikes:repairs", "bike:1", "bike:2")
206+
print(res31) # >>> 2
207+
208+
res32 = r.brpop("bikes:repairs", timeout=1)
209+
print(res32) # >>> ('bikes:repairs', 'bike:2')
210+
211+
res33 = r.brpop("bikes:repairs", timeout=1)
212+
print(res33) # >>> ('bikes:repairs', 'bike:1')
213+
214+
res34 = r.brpop("bikes:repairs", timeout=1)
215+
print(res34) # >>> None
216+
# STEP_END
217+
218+
# REMOVE_START
219+
assert res31 == 2
220+
assert res32 == ("bikes:repairs", "bike:2")
221+
assert res33 == ("bikes:repairs", "bike:1")
222+
assert res34 == None
223+
r.delete("bikes:repairs")
224+
r.delete("new_bikes")
225+
# REMOVE_END
226+
227+
# STEP_START rule_1
228+
res35 = r.delete("new_bikes")
229+
print(res35) # >>> 0
230+
231+
res36 = r.lpush("new_bikes", "bike:1", "bike:2", "bike:3")
232+
print(res36) # >>> 3
233+
# STEP_END
234+
235+
# REMOVE_START
236+
assert res35 == 0
237+
assert res36 == 3
238+
r.delete("new_bikes")
239+
# REMOVE_END
240+
241+
# STEP_START rule_1.1
242+
res37 = r.set("new_bikes", "bike:1")
243+
print(res37) # >>> True
244+
245+
res38 = r.type("new_bikes")
246+
print(res38) # >>> 'string'
247+
248+
try:
249+
res39 = r.lpush("new_bikes", "bike:2", "bike:3")
250+
# >>> redis.exceptions.ResponseError:
251+
# >>> WRONGTYPE Operation against a key holding the wrong kind of value
252+
except Exception as e:
253+
print(e)
254+
# STEP_END
255+
256+
# REMOVE_START
257+
assert res37 == True
258+
assert res38 == "string"
259+
r.delete("new_bikes")
260+
# REMOVE_END
261+
262+
# STEP_START rule_2
263+
r.lpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
264+
print(res36) # >>> 3
265+
266+
res40 = r.exists("bikes:repairs")
267+
print(res40) # >>> True
268+
269+
res41 = r.lpop("bikes:repairs")
270+
print(res41) # >>> 'bike:3'
271+
272+
res42 = r.lpop("bikes:repairs")
273+
print(res42) # >>> 'bike:2'
274+
275+
res43 = r.lpop("bikes:repairs")
276+
print(res43) # >>> 'bike:1'
277+
278+
res44 = r.exists("bikes:repairs")
279+
print(res44) # >>> False
280+
# STEP_END
281+
282+
# REMOVE_START
283+
assert res40 == True
284+
assert res41 == "bike:3"
285+
assert res42 == "bike:2"
286+
assert res43 == "bike:1"
287+
assert res44 == False
288+
r.delete("bikes:repairs")
289+
# REMOVE_END
290+
291+
# STEP_START rule_3
292+
res45 = r.delete("bikes:repairs")
293+
print(res45) # >>> 0
294+
295+
res46 = r.llen("bikes:repairs")
296+
print(res46) # >>> 0
297+
298+
res47 = r.lpop("bikes:repairs")
299+
print(res47) # >>> None
300+
# STEP_END
301+
302+
# REMOVE_START
303+
assert res45 == 0
304+
assert res46 == 0
305+
assert res47 == None
306+
# REMOVE_END
307+
308+
# STEP_START ltrim.1
309+
res48 = r.lpush(
310+
"bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"
311+
)
312+
print(res48) # >>> 5
313+
314+
res49 = r.ltrim("bikes:repairs", 0, 2)
315+
print(res49) # >>> True
316+
317+
res50 = r.lrange("bikes:repairs", 0, -1)
318+
print(res50) # >>> ['bike:5', 'bike:4', 'bike:3']
319+
# STEP_END
320+
321+
# REMOVE_START
322+
assert res48 == 5
323+
assert res49 == True
324+
assert res50 == ["bike:5", "bike:4", "bike:3"]
325+
r.delete("bikes:repairs")
326+
# REMOVE_END

0 commit comments

Comments
 (0)