From 2bed636cf0644cc3e326bdcd2774ad8f210fa461 Mon Sep 17 00:00:00 2001 From: Savannah Date: Tue, 4 Jul 2023 06:48:53 -0400 Subject: [PATCH] Adds doctest examples for the hash tutorial (#2821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create dt_hash.py creating the python hash data type examples that will be used in conjunction with the hashes.md file in docs to show tabbed examples * Fixes some steps not showing * Fixes instructions for doctests * Making linter happy * Format result as per Igor’s suggestion * Change all the other outputs to Igor’s suggestion * make linter happy --------- Co-authored-by: Elena Kolevska --- doctests/README.md | 4 +- doctests/dt_hash.py | 103 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 doctests/dt_hash.py diff --git a/doctests/README.md b/doctests/README.md index f2bfc1046e..d4b00e059f 100644 --- a/doctests/README.md +++ b/doctests/README.md @@ -16,8 +16,8 @@ Examples are standalone python scripts, committed to the *doctests* directory. T ```requirements.txt``` and ```dev_requirements.txt``` from this repository have been installed, as per below. ```bash -pip install requirements.txt -pip install dev_requirements.txt +pip install -r requirements.txt +pip install -r dev_requirements.txt ``` Note - the CI process, runs the basic ```black``` and ```isort``` linters against the examples. Assuming diff --git a/doctests/dt_hash.py b/doctests/dt_hash.py new file mode 100644 index 0000000000..e2293706cc --- /dev/null +++ b/doctests/dt_hash.py @@ -0,0 +1,103 @@ +# EXAMPLE: hash_tutorial +# HIDE_START +import redis + +r = redis.Redis(decode_responses=True) +# HIDE_END +# STEP_START set_get_all +res1 = r.hset( + "bike:1", + mapping={ + "model": "Deimos", + "brand": "Ergonom", + "type": "Enduro bikes", + "price": 4972, + }, +) +print(res1) +# >>> 4 + +res2 = r.hget("bike:1", "model") +print(res2) +# >>> 'Deimos' + +res3 = r.hget("bike:1", "price") +print(res3) +# >>> '4972' + +res4 = r.hgetall("bike:1") +print(res4) +# >>> {'model': 'Deimos', 'brand': 'Ergonom', 'type': 'Enduro bikes', 'price': '4972'} + +# STEP_END + +# REMOVE_START +assert res1 == 4 +assert res2 == "Deimos" +assert res3 == "4972" +assert res4 == { + "model": "Deimos", + "brand": "Ergonom", + "type": "Enduro bikes", + "price": "4972", +} +# REMOVE_END + +# STEP_START hmget +res5 = r.hmget("bike:1", ["model", "price"]) +print(res5) +# >>> ['Deimos', '4972'] +# STEP_END + +# REMOVE_START +assert res5 == ["Deimos", "4972"] +# REMOVE_END + +# STEP_START hincrby +res6 = r.hincrby("bike:1", "price", 100) +print(res6) +# >>> 5072 +res7 = r.hincrby("bike:1", "price", -100) +print(res7) +# >>> 4972 +# STEP_END + +# REMOVE_START +assert res6 == 5072 +assert res7 == 4972 +# REMOVE_END + + +# STEP_START incrby_get_mget +res11 = r.hincrby("bike:1:stats", "rides", 1) +print(res11) +# >>> 1 +res12 = r.hincrby("bike:1:stats", "rides", 1) +print(res12) +# >>> 2 +res13 = r.hincrby("bike:1:stats", "rides", 1) +print(res13) +# >>> 3 +res14 = r.hincrby("bike:1:stats", "crashes", 1) +print(res14) +# >>> 1 +res15 = r.hincrby("bike:1:stats", "owners", 1) +print(res15) +# >>> 1 +res16 = r.hget("bike:1:stats", "rides") +print(res16) +# >>> 3 +res17 = r.hmget("bike:1:stats", ["crashes", "owners"]) +print(res17) +# >>> ['1', '1'] +# STEP_END + +# REMOVE_START +assert res11 == 1 +assert res12 == 2 +assert res13 == 3 +assert res14 == 1 +assert res15 == 1 +assert res16 == "3" +assert res17 == ["1", "1"] +# REMOVE_END