Skip to content

Commit

Permalink
Create dt_list.py (#2855)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
sav-norem committed Sep 12, 2023
1 parent 0e56165 commit 4042bf8
Showing 1 changed file with 326 additions and 0 deletions.
326 changes: 326 additions & 0 deletions doctests/dt_list.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,326 @@
# EXAMPLE: list_tutorial
# HIDE_START
import redis

r = redis.Redis(decode_responses=True)
# HIDE_END
# REMOVE_START
r.delete("bikes:repairs")
r.delete("bikes:finished")
# REMOVE_END

# STEP_START queue
res1 = r.lpush("bikes:repairs", "bike:1")
print(res1) # >>> 1

res2 = r.lpush("bikes:repairs", "bike:2")
print(res2) # >>> 2

res3 = r.rpop("bikes:repairs")
print(res3) # >>> bike:1

res4 = r.rpop("bikes:repairs")
print(res4) # >>> bike:2
# STEP_END

# REMOVE_START
assert res1 == 1
assert res2 == 2
assert res3 == "bike:1"
assert res4 == "bike:2"
# REMOVE_END

# STEP_START stack
res5 = r.lpush("bikes:repairs", "bike:1")
print(res5) # >>> 1

res6 = r.lpush("bikes:repairs", "bike:2")
print(res6) # >>> 2

res7 = r.lpop("bikes:repairs")
print(res7) # >>> bike:2

res8 = r.lpop("bikes:repairs")
print(res8) # >>> bike:1
# STEP_END

# REMOVE_START
assert res5 == 1
assert res6 == 2
assert res7 == "bike:2"
assert res8 == "bike:1"
# REMOVE_END

# STEP_START llen
res9 = r.llen("bikes:repairs")
print(res9) # >>> 0
# STEP_END

# REMOVE_START
assert res9 == 0
# REMOVE_END

# STEP_START lmove_lrange
res10 = r.lpush("bikes:repairs", "bike:1")
print(res10) # >>> 1

res11 = r.lpush("bikes:repairs", "bike:2")
print(res11) # >>> 2

res12 = r.lmove("bikes:repairs", "bikes:finished", "LEFT", "LEFT")
print(res12) # >>> 'bike:2'

res13 = r.lrange("bikes:repairs", 0, -1)
print(res13) # >>> ['bike:1']

res14 = r.lrange("bikes:finished", 0, -1)
print(res14) # >>> ['bike:2']
# STEP_END

# REMOVE_START
assert res10 == 1
assert res11 == 2
assert res12 == "bike:2"
assert res13 == ["bike:1"]
assert res14 == ["bike:2"]
r.delete("bikes:repairs")
# REMOVE_END

# STEP_START lpush_rpush
res15 = r.rpush("bikes:repairs", "bike:1")
print(res15) # >>> 1

res16 = r.rpush("bikes:repairs", "bike:2")
print(res16) # >>> 2

res17 = r.lpush("bikes:repairs", "bike:important_bike")
print(res17) # >>> 3

res18 = r.lrange("bikes:repairs", 0, -1)
print(res18) # >>> ['bike:important_bike', 'bike:1', 'bike:2']
# STEP_END

# REMOVE_START
assert res15 == 1
assert res16 == 2
assert res17 == 3
assert res18 == ["bike:important_bike", "bike:1", "bike:2"]
r.delete("bikes:repairs")
# REMOVE_END

# STEP_START variadic
res19 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
print(res19) # >>> 3

res20 = r.lpush(
"bikes:repairs", "bike:important_bike", "bike:very_important_bike"
)
print(res20) # >>> 5

res21 = r.lrange("bikes:repairs", 0, -1)
print(
res21
) # >>> ['bike:very_important_bike', 'bike:important_bike', 'bike:1', 'bike:2', 'bike:3']
# STEP_END

# REMOVE_START
assert res19 == 3
assert res20 == 5
assert res21 == [
"bike:very_important_bike",
"bike:important_bike",
"bike:1",
"bike:2",
"bike:3",
]
r.delete("bikes:repairs")
# REMOVE_END

# STEP_START lpop_rpop
res22 = r.rpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
print(res22) # >>> 3

res23 = r.rpop("bikes:repairs")
print(res23) # >>> 'bike:3'

res24 = r.lpop("bikes:repairs")
print(res24) # >>> 'bike:1'

res25 = r.rpop("bikes:repairs")
print(res25) # >>> 'bike:2'

res26 = r.rpop("bikes:repairs")
print(res26) # >>> None
# STEP_END

# REMOVE_START
assert res22 == 3
assert res23 == "bike:3"
assert res24 == "bike:1"
assert res25 == "bike:2"
assert res26 == None
# REMOVE_END

# STEP_START ltrim
res27 = r.lpush(
"bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"
)
print(res27) # >>> 5

res28 = r.ltrim("bikes:repairs", 0, 2)
print(res28) # >>> True

res29 = r.lrange("bikes:repairs", 0, -1)
print(res29) # >>> ['bike:5', 'bike:4', 'bike:3']
# STEP_END

# REMOVE_START
assert res27 == 5
assert res28 == True
assert res29 == ["bike:5", "bike:4", "bike:3"]
r.delete("bikes:repairs")
# REMOVE_END

# STEP_START ltrim_end_of_list
res27 = r.rpush(
"bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"
)
print(res27) # >>> 5

res28 = r.ltrim("bikes:repairs", -3, -1)
print(res28) # >>> True

res29 = r.lrange("bikes:repairs", 0, -1)
print(res29) # >>> ['bike:3', 'bike:4', 'bike:5']
# STEP_END

# REMOVE_START
assert res27 == 5
assert res28 == True
assert res29 == ["bike:3", "bike:4", "bike:5"]
r.delete("bikes:repairs")
# REMOVE_END

# STEP_START brpop
res31 = r.rpush("bikes:repairs", "bike:1", "bike:2")
print(res31) # >>> 2

res32 = r.brpop("bikes:repairs", timeout=1)
print(res32) # >>> ('bikes:repairs', 'bike:2')

res33 = r.brpop("bikes:repairs", timeout=1)
print(res33) # >>> ('bikes:repairs', 'bike:1')

res34 = r.brpop("bikes:repairs", timeout=1)
print(res34) # >>> None
# STEP_END

# REMOVE_START
assert res31 == 2
assert res32 == ("bikes:repairs", "bike:2")
assert res33 == ("bikes:repairs", "bike:1")
assert res34 == None
r.delete("bikes:repairs")
r.delete("new_bikes")
# REMOVE_END

# STEP_START rule_1
res35 = r.delete("new_bikes")
print(res35) # >>> 0

res36 = r.lpush("new_bikes", "bike:1", "bike:2", "bike:3")
print(res36) # >>> 3
# STEP_END

# REMOVE_START
assert res35 == 0
assert res36 == 3
r.delete("new_bikes")
# REMOVE_END

# STEP_START rule_1.1
res37 = r.set("new_bikes", "bike:1")
print(res37) # >>> True

res38 = r.type("new_bikes")
print(res38) # >>> 'string'

try:
res39 = r.lpush("new_bikes", "bike:2", "bike:3")
# >>> redis.exceptions.ResponseError:
# >>> WRONGTYPE Operation against a key holding the wrong kind of value
except Exception as e:
print(e)
# STEP_END

# REMOVE_START
assert res37 == True
assert res38 == "string"
r.delete("new_bikes")
# REMOVE_END

# STEP_START rule_2
r.lpush("bikes:repairs", "bike:1", "bike:2", "bike:3")
print(res36) # >>> 3

res40 = r.exists("bikes:repairs")
print(res40) # >>> True

res41 = r.lpop("bikes:repairs")
print(res41) # >>> 'bike:3'

res42 = r.lpop("bikes:repairs")
print(res42) # >>> 'bike:2'

res43 = r.lpop("bikes:repairs")
print(res43) # >>> 'bike:1'

res44 = r.exists("bikes:repairs")
print(res44) # >>> False
# STEP_END

# REMOVE_START
assert res40 == True
assert res41 == "bike:3"
assert res42 == "bike:2"
assert res43 == "bike:1"
assert res44 == False
r.delete("bikes:repairs")
# REMOVE_END

# STEP_START rule_3
res45 = r.delete("bikes:repairs")
print(res45) # >>> 0

res46 = r.llen("bikes:repairs")
print(res46) # >>> 0

res47 = r.lpop("bikes:repairs")
print(res47) # >>> None
# STEP_END

# REMOVE_START
assert res45 == 0
assert res46 == 0
assert res47 == None
# REMOVE_END

# STEP_START ltrim.1
res48 = r.lpush(
"bikes:repairs", "bike:1", "bike:2", "bike:3", "bike:4", "bike:5"
)
print(res48) # >>> 5

res49 = r.ltrim("bikes:repairs", 0, 2)
print(res49) # >>> True

res50 = r.lrange("bikes:repairs", 0, -1)
print(res50) # >>> ['bike:5', 'bike:4', 'bike:3']
# STEP_END

# REMOVE_START
assert res48 == 5
assert res49 == True
assert res50 == ["bike:5", "bike:4", "bike:3"]
r.delete("bikes:repairs")
# REMOVE_END

0 comments on commit 4042bf8

Please sign in to comment.