├── challenges ├── weekend2 │ ├── requirements.txt │ ├── dump.rdb │ ├── weekend2.py │ └── README.md ├── weekend3 │ ├── .gitignore │ ├── docker-compose.yml │ ├── query_animals.js │ ├── animal.js │ ├── package.json │ ├── LICENSE │ ├── load_animals.js │ ├── README.md │ ├── package-lock.json │ └── animal_data.csv └── weekend1 │ ├── Queues, Stacks, and Circular Lists.pdf │ ├── README.md │ └── weekend1:brainix.md ├── README.md └── LICENSE /challenges/weekend2/requirements.txt: -------------------------------------------------------------------------------- 1 | redis==3.5.3 2 | uuid==1.30 -------------------------------------------------------------------------------- /challenges/weekend3/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.swp 3 | *.bak 4 | *.tmp 5 | *.log 6 | node_modules/ 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Redis Devcember Challenges! 2 | 3 | Redis Devcember: https://developer.redis.com/devcember/ 4 | -------------------------------------------------------------------------------- /challenges/weekend2/dump.rdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redis-developer/devcember/main/challenges/weekend2/dump.rdb -------------------------------------------------------------------------------- /challenges/weekend1/Queues, Stacks, and Circular Lists.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/redis-developer/devcember/main/challenges/weekend1/Queues, Stacks, and Circular Lists.pdf -------------------------------------------------------------------------------- /challenges/weekend3/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | redis: 4 | container_name: redis_devcember_weekend_3 5 | image: "redislabs/redisearch:edge" 6 | ports: 7 | - 6379:6379 8 | deploy: 9 | replicas: 1 10 | restart_policy: 11 | condition: on-failure -------------------------------------------------------------------------------- /challenges/weekend3/query_animals.js: -------------------------------------------------------------------------------- 1 | import { Client, Repository } from 'redis-om'; 2 | import animalSchema from './animal.js'; 3 | 4 | async function queryAnimals() { 5 | const client = new Client(); 6 | await client.open(); 7 | 8 | const repository = new Repository(animalSchema, client); 9 | 10 | const matchingAnimals = await repository.search() 11 | .where('species').equals('dog') 12 | .and('sex').equals('m') 13 | .and('age').is.greaterThan(3).returnAll(); 14 | 15 | console.log(matchingAnimals); 16 | await client.close(); 17 | } 18 | 19 | queryAnimals(); 20 | -------------------------------------------------------------------------------- /challenges/weekend3/animal.js: -------------------------------------------------------------------------------- 1 | import { Client, Entity, Repository, Schema } from 'redis-om'; 2 | 3 | class Animal extends Entity { }; 4 | 5 | const animalSchema = new Schema(Animal, { 6 | name: { type: 'string' }, 7 | species: { type: 'string' }, 8 | age: { type: 'number' }, 9 | weight: { type: 'number' }, 10 | sex: { type: 'boolean' }, 11 | fee: { type: 'number' }, 12 | children: { type: 'boolean' }, 13 | otherAnimals: { type: 'boolean' }, 14 | description: { type: 'string', textSearch: true } 15 | }, { 16 | dataStructure: 'HASH' 17 | }); 18 | 19 | export default animalSchema; -------------------------------------------------------------------------------- /challenges/weekend3/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "animals", 3 | "version": "1.0.0", 4 | "description": "Redis DEVcember weekend challenge", 5 | "main": "query_animals.js", 6 | "type": "module", 7 | "scripts": { 8 | "load": "node load_animals.js", 9 | "query": "node query_animals.js" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "git+https://github.com/redis-developer/devcember.git" 14 | }, 15 | "author": "Redis Developer", 16 | "license": "MIT", 17 | "bugs": { 18 | "url": "https://github.com/redis-developer/devcember/issues" 19 | }, 20 | "homepage": "https://github.com/redis-developer/devcember#readme", 21 | "engines": { 22 | "node": ">=12" 23 | }, 24 | "dependencies": { 25 | "csv-reader": "^1.0.8", 26 | "redis-om": "^0.1.4" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Redis Developer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /challenges/weekend3/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Redis Developer 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /challenges/weekend3/load_animals.js: -------------------------------------------------------------------------------- 1 | import { Client, Repository } from 'redis-om'; 2 | import animalSchema from './animal.js'; 3 | 4 | import fs from 'fs'; 5 | import csvStreamReader from 'csv-reader'; 6 | 7 | async function loadAnimals() { 8 | const csvStream = fs.createReadStream('animal_data.csv', 'utf8'); 9 | const client = new Client(); 10 | await client.open(); 11 | 12 | const repository = new Repository(animalSchema, client); 13 | 14 | csvStream.pipe( 15 | new csvStreamReader({ 16 | parseNumbers: true, 17 | parseBooleans: true, 18 | trim: true 19 | }) 20 | ).on('data', async (row) => { 21 | const animal = repository.createEntity(); 22 | 23 | animal.name = row[0]; 24 | animal.species = row[1]; 25 | animal.age = row[2]; 26 | animal.weight = row[3]; 27 | animal.sex = row[4]; 28 | animal.fee = row[5]; 29 | animal.children = row[6]; 30 | animal.otherAnimals = row[7]; 31 | animal.description = row[8]; 32 | 33 | const id = await repository.save(animal); 34 | console.log(`Loaded ${animal.name} the ${animal.species} as ${id}.`); 35 | }).on('end', async () => { 36 | await repository.createIndex(); 37 | await client.close(); 38 | console.log('Loaded all of the animals!'); 39 | }); 40 | } 41 | 42 | loadAnimals(); 43 | -------------------------------------------------------------------------------- /challenges/weekend2/weekend2.py: -------------------------------------------------------------------------------- 1 | import os 2 | import redis 3 | import uuid 4 | 5 | # You can use your free cloud instance of Redis for these challenges, or a local instance 6 | # Make sure you have the Bloom Filter module included with the Redis instance 7 | r = redis.Redis( 8 | host=os.getenv('REDIS_HOST'), 9 | port=os.getenv('REDIS_PORT'), 10 | password=os.getenv('REDIS_PASS')) 11 | 12 | # 1. Create a collection of unique elements. 13 | uuid_list = [] 14 | for x in range(5000): 15 | uuid_list.append(str(uuid.uuid4())) 16 | 17 | # Start a pipeline for your commands 18 | pipe = r.pipeline() 19 | 20 | # 2. Create and populate a Set with your unique elements 21 | # Try entering a larger amount, perhaps in the thousands. 22 | pipe.sadd('unique_set', uuid_list[0]) 23 | 24 | # 3. Create and populate a Bloom Filter with your unique elements 25 | # Try entering a larger amount, perhaps in the thousands. 26 | pipe.execute_command('bf.add', 'unique_bloom_filter', uuid_list[0]) 27 | 28 | 29 | # 4. Create and populate a Hyperloglog with your unique elements 30 | # Try entering a larger amount, perhaps in the thousands. 31 | pipe.pfadd('unique_hyperlolog', uuid_list[0]) 32 | 33 | # Execute the pipeline of commands 34 | pipe.execute() 35 | 36 | # 5. Determine the amount of unique members within each data structure 37 | set_count = 0 # Enter code here to determine the cardinality of the set 38 | bf_count = 0 # Enter code here to determine the amount of members in the Bloom Filter 39 | hll_count = 0 # Enter code here to determine the amount of members in the Hyperloglog 40 | 41 | print(f'Set cardinality: {set_count}') 42 | print(f'Bloom-filter count: {bf_count}') 43 | print(f'Hyperloglog count: {hll_count}') 44 | 45 | 46 | # 6. Bonus time! Check the uuid_list against the three data structure to see just how probabilistic they really are! 47 | -------------------------------------------------------------------------------- /challenges/weekend3/README.md: -------------------------------------------------------------------------------- 1 | # DEVcember Weekend 3 Challenge 2 | 3 | In this challenge, you'll get to use Redis OM for Node.js. You'll want to have a Redis Cloud database setup with the RediSearch module installed before proceeding. Alternatively, if you're using Docker, we've provided a Docker Compose file that will start Redis + RediSearch in a container for you. 4 | 5 | ## Get Started 6 | 7 | First, clone this repository: 8 | 9 | ```bash 10 | $ git clone https://github.com/redis-developer/devcember.git 11 | $ cd challenges/weekend3 12 | 13 | Then, install the dependencies: 14 | 15 | ```bash 16 | $ npm install 17 | ``` 18 | 19 | If you want to run Redis with RediSearch locally, start the Docker container in the background: 20 | 21 | ```bash 22 | $ docker-compose up -d 23 | ``` 24 | 25 | If you're using Redis in the cloud, you'll need to pass a Redis URL to `client.open` in both `query_animals.js` and `load_animals.js`. See the [Redis OM Node.js documentation](https://github.com/redis-developer/devcember.git) for information. 26 | 27 | 28 | Load the data into Redis (check out the code in `load_animals.js` to see how this works): 29 | 30 | ```bash 31 | $ npm run load 32 | ``` 33 | 34 | Run the sample query (check out the code in `query_animals.js`), which finds all male dogs that are more than 3 years old: 35 | 36 | ```bash 37 | $ npm run query 38 | ``` 39 | 40 | ## Write Some Search Queries 41 | 42 | This weekend's challenge is open ended... using the animal data provided, and the Redis OM for Node.js query API ([examples here](https://github.com/redis/redis-om-node#-using-redisearch))... modify the query at line 10 in `query_animals.js` to perform other queries of your own design. 43 | 44 | Be sure to try out the [full-text search](https://github.com/redis/redis-om-node#full-text-search) capabilities on the `description` field. 45 | 46 | Show us what you make! Create a copy of `query_animals.js` and call it `query_animals:.js`. Submit a pull request to the repository and your effortd will be added and reviewed befor the end of Devcember on December 24th 2021. 47 | 48 | ## Weekend 3 Challenge Resources 49 | 50 | You may find the following resources helpful: 51 | 52 | * Day 01 - [Get Started with Redis in the Cloud](https://youtu.be/jf-lwkWUQHg) 53 | * Day 02 - [Up and Running with RedisInsight](https://www.youtube.com/watch?v=S-CXWP50ewM) 54 | * Day 12 - [Introducing Redis OM for Node.js](https://www.youtube.com/watch?v=y0Sx_5Csld8) 55 | * [Redis OM for Node.js](https://github.com/redis/redis-om-node) -------------------------------------------------------------------------------- /challenges/weekend1/README.md: -------------------------------------------------------------------------------- 1 | # DEVcember Weekend 1 Challenge 2 | 3 | Let's practice our skills with the Redis List data type! You'll want to have your RedisInsight instance up and running with your Redis Cloud database connected in order to answer the challenge questions in this document. 4 | 5 | Clone this repository, create a branch named `weekend1:` and rename this README.md to `weekend1:.md`. Submit a pull request to the repository and your efforts will be added and reviewed by December 6th, 12:00pm PST. Remember that there are many different solutions to a single problem, so don't be afraid to be as creative as you'd like. 6 | 7 | ### Weekend 1 Challenge Resources: 8 | - [Day 01 - Getting Started with Redis Cloud](https://www.youtube.com/watch?v=jf-lwkWUQHg) 9 | - [Day 02 - Up and Running with RedisInsight](https://www.youtube.com/watch?v=jf-lwkWUQHg) 10 | - [Day 03 - The Redis List goes on and on!](https://www.youtube.com/watch?v=OjoAmWOPk64) 11 | - [Redis List Commands](https://redis.io/commands#list) 12 | - [Redis List Explainer](https://www.youtube.com/watch?v=PB5SeOkkxQc) 13 | 14 | 15 | ### 1. Creating a list 16 | What command or commands are required to create the following List named `months` in Redis? 17 | 18 | ```javascript 19 | ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 20 | ``` 21 | 22 | `[Enter your command or commands here]` 23 | 24 | 25 | 26 | 27 | ### 2. Accessing elements in a list 28 | What commands would you use to access the 3rd and 5th elements in the `months` list? 29 | 30 | `[Enter your command or commands here]` 31 | 32 | 33 | 34 | 35 | ### 3. In your own words 36 | What are some possible use cases not already covered for a Stack data structure in Redis? 37 | 38 | `[Enter your answer here]` 39 | 40 | 41 | 42 | 43 | ### 4. In your own words 44 | What are some possible use cases not already covered for a Queue data structure in Redis? 45 | 46 | `[Enter your answer here]` 47 | 48 | 49 | 50 | 51 | ## Bonus: Circular List Data Structure 52 | 53 | Suze, Simon, Justin, Guy, Brian, and Steve are all designing an online boardgame and want to keep track of the current player's turn using a circular list. Whoever is at index 0 of the circular list is the current player who should play their turn. They begin by making themselves players in a test game. 54 | 55 | ### 1. Creating a Circular List 56 | How would you initialize a Circular List named `game:prototype` with the players Suze, Simon, Justin, Guy, Brian, and Steve? 57 | 58 | `[Enter your command or commands here]` 59 | 60 | 61 | 62 | 63 | ### 2. Iterating a Circular List 64 | Assume Suze took her turn and now it is Simon's turn to play. How would you reflect this state in the `game:prototype` list? 65 | 66 | `[Enter your command or commands here]` 67 | 68 | 69 | 70 | 71 | ### 3. Removing an element from a Circular List 72 | Unfortunately, Simon had to leave the game to help someone on the [Redis Discord Server](https://discord.gg/redis). How would we go about removing Simon from the `game:prototype` list and ensure that Justin plays next? 73 | 74 | `[Enter your command or commands here]` 75 | 76 | 77 | 78 | 79 | ### 4. Inserting a new element into a Circular List 80 | A new player has entered the game! How would we go about entering Kyle into the `game:prototype` list? (Assume Justin has just played his turn so Guy, Brian, and Steve still have yet to play) 81 | 82 | `[Enter your command or commands here]` 83 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /challenges/weekend2/README.md: -------------------------------------------------------------------------------- 1 | # DEVcember Weekend 2 Challenge 2 | 3 | Let's practice our skills with the Redis Sets, Bloom Filter, and Hyperlolglog data types! You'll want to have your RedisInsight instance up and running with your Redis Cloud database connected in order to answer the challenge questions in this document. 4 | 5 | With a free Redis instance you'll have the RedisBloom module available at the point of database creation in the Redis Cloud UI. Make sure to enable the RedisBloom module before proceeding with the challenge. 6 | 7 | Clone this repository, create a branch named `weekend2:` and rename the `weekend2.py` file to `weekend2:.py`. Submit a pull request to the repository and your efforts will be added and reviewed by December 13th, 12:00pm PST. Remember that there are many different solutions to a single problem, so don't be afraid to be as creative as you'd like. 8 | 9 | ### Weekend 2 Challenge Resources: 10 | - [Day 04 - Lets try out Redis OM for Python](https://youtu.be/gi6jugJsKS4) 11 | - [Day 05 - The Scoop on Big O Notation](https://youtu.be/xSuZjetOhgs) 12 | - [Day 06 - Get! Set! Go!](https://youtu.be/e1wD52EAiQw) 13 | - [Day 07 - Have I Seen You Before? Introducing Bloom Filters](https://youtu.be/qgJRoWBmEoQ) 14 | - [Day 08 - You Can (Mostly) Count on Hyperloglog!](https://youtu.be/pUpSnaqpcks) 15 | - [Redis Set Commands](https://redis.io/commands#set) 16 | - [Redis Set Explainer](https://youtu.be/PKdCppSNTGQ) 17 | - [Redis Hyperloglog Explainer](https://www.youtube.com/watch?v=MunL8nnwscQ) 18 | - [Redis Bloom Filter Explainer](https://youtu.be/Z9_wrhdbSC4) 19 | - [Redis Bloom Filter Documentation](https://oss.redis.com/redisbloom/Bloom_Commands/) 20 | 21 | ### Weekend 2 Python code challenge 22 | In this week's challenge, you'll be working within the `weekend2.py` file. Some initial code has been provided to get you started. You'll want to connect a Redis instance via environment variables. Note that your Redis instance *MUST* have the RedisBloom module in order to create and use Bloom Filters. 23 | 24 | 1. Within the Python code you'll se a section creating random UUIDs. For this code challenge we'll use these UUIDs to populate the three different data structures. Feel free to use any other methodology you'd like. 25 | 26 | 2. `weekend2.py` has a single command illustrating how to add a single member to the Set data structure. Implement code to add multiple members to the Set. You can use the provided UUID list or implement your own methods. 27 | 28 | 3. `weekend2.py` also has a single command illustrating how to add a single member to the Redis Bloom data structure. Implement code to add multiple members to the Bloom Filter. You can use the provided UUID list or implement your own methods. 29 | 30 | 4. Lastly, `weekend2.py` has a single command illustrating how to add a single member to the Hyperloglog data structure. Implement code to add multiple members to the Hyperloglog. You can use the provided UUID list or implement your own methods. 31 | 32 | 5. We'll want to see how many members were successfully entered into each data structure. Find the necessary commands for each data structure to return the unique member count. 33 | 34 | 6. Bonus time! Now's your chance to implement code to check just how probabilistic these data structures really are. Iterate through the original source list of your members and check if they exist in your data structures. Keep a running tally of hits and misses. You should expect sets to be completely full of hits and the Bloom Filter and Hyperloglog slightly less than perfect, as is designed. You can also add timing for each data structure check to see the difference in time between all three data structures. Share your findings on the [#devcember discord channel](https://discord.gg/ZKws9zy9)! -------------------------------------------------------------------------------- /challenges/weekend1/weekend1:brainix.md: -------------------------------------------------------------------------------- 1 | # DEVcember Weekend 1 Challenge 2 | 3 | Let's practice our skills with the Redis List data type! You'll want to have your RedisInsight instance up and running with your Redis Cloud database connected in order to answer the challenge questions in this document. 4 | 5 | Clone this repository, create a branch named `weekend1:` and rename this README.md to `weekend1:.md`. Submit a pull request to the repository and your efforts will be added and reviewed by December 6th, 12:00pm PST. Remember that there are many different solutions to a single problem, so don't be afraid to be as creative as you'd like. 6 | 7 | ### Weekend 1 Challenge Resources: 8 | - [Day 01 - Getting Started with Redis Cloud](https://www.youtube.com/watch?v=jf-lwkWUQHg) 9 | - [Day 02 - Up and Running with RedisInsight](https://www.youtube.com/watch?v=jf-lwkWUQHg) 10 | - [Day 03 - The Redis List goes on and on!](https://www.youtube.com/watch?v=OjoAmWOPk64) 11 | - [Redis List Commands](https://redis.io/commands#list) 12 | - [Redis List Explainer](https://www.youtube.com/watch?v=PB5SeOkkxQc) 13 | 14 | 15 | ### 1. Creating a list 16 | What command or commands are required to create the following List named `months` in Redis? 17 | 18 | ```javascript 19 | ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"] 20 | ``` 21 | 22 | I've authored a library called [Pottery](https://github.com/brainix/pottery) for accessing Redis more Pythonically. Install it by creating/activating a virtual environment and using `pip3` like so: 23 | 24 | ```zsh 25 | % ~/.pyenv/versions/3.10.1/bin/python3 -m venv venv 26 | % source venv/bin/activate 27 | (venv) % pip3 install pottery 28 | ``` 29 | 30 | Then use Pottery's [`RedisList`](https://github.com/brainix/pottery#lists) container to create the list like so: 31 | 32 | ```python 33 | >>> from pottery import RedisList 34 | >>> from redis import Redis 35 | >>> redis = Redis() 36 | >>> months = RedisList(['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], redis=redis, key='months') 37 | >>> months 38 | RedisList['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'] 39 | ``` 40 | 41 | 42 | 43 | 44 | ### 2. Accessing elements in a list 45 | What commands would you use to access the 3rd and 5th elements in the `months` list? 46 | 47 | ```python 48 | >>> months[2] 49 | 'March' 50 | >>> months[4] 51 | 'May' 52 | ``` 53 | 54 | 55 | 56 | 57 | ### 3. In your own words 58 | What are some possible use cases not already covered for a Stack data structure in Redis? 59 | 60 | One use case for a Redis-backed stack is to maintain an undo history. Whenever a user performs an undoable action, append the action to the left of the stack. Then whenever the user clicks undo, pop the action from the left of the stack and undo it. 61 | 62 | 63 | 64 | 65 | ### 4. In your own words 66 | What are some possible use cases not already covered for a Queue data structure in Redis? 67 | 68 | One use case for a Redis-backed queue is to maintain a printer spooler. Whenever a new document comes in to be printed, add it to the rear of the queue. Whenever the printer finishes printing a document, pop the next document off of the front of the queue. 69 | 70 | 71 | 72 | 73 | ## Bonus: Circular List Data Structure 74 | 75 | Suze, Simon, Justin, Guy, Brian, and Steve are all designing an online boardgame and want to keep track of the current player's turn using a circular list. Whoever is at index 0 of the circular list is the current player who should play their turn. They begin by making themselves players in a test game. 76 | 77 | ### 1. Creating a Circular List 78 | How would you initialize a Circular List named `game:prototype` with the players Suze, Simon, Justin, Guy, Brian, and Steve? 79 | 80 | ```python 81 | >>> from pottery import RedisDeque 82 | >>> from redis import Redis 83 | >>> redis = Redis() 84 | >>> players = RedisDeque(['Suze', 'Simon', 'Justin', 'Guy', 'Brian', 'Steve'], redis=redis, key='game:prototype') 85 | >>> players 86 | RedisDeque(['Suze', 'Simon', 'Justin', 'Guy', 'Brian', 'Steve']) 87 | ``` 88 | 89 | 90 | 91 | 92 | ### 2. Iterating a Circular List 93 | Assume Suze took her turn and now it is Simon's turn to play. How would you reflect this state in the `game:prototype` list? 94 | 95 | ```python 96 | >>> players.rotate(-1) 97 | >>> players 98 | RedisDeque(['Simon', 'Justin', 'Guy', 'Brian', 'Steve', 'Suze']) 99 | ``` 100 | 101 | 102 | 103 | 104 | ### 3. Removing an element from a Circular List 105 | Unfortunately, Simon had to leave the game to help someone on the [Redis Discord Server](https://discord.gg/redis). How would we go about removing Simon from the `game:prototype` list and ensure that Justin plays next? 106 | 107 | ```python 108 | >>> players.popleft() 109 | 'Simon' 110 | >>> players 111 | RedisDeque(['Justin', 'Guy', 'Brian', 'Steve', 'Suze']) 112 | ``` 113 | 114 | 115 | 116 | 117 | ### 4. Inserting a new element into a Circular List 118 | A new player has entered the game! How would we go about entering Kyle into the `game:prototype` list? (Assume Justin has just played his turn so Guy, Brian, and Steve still have yet to play) 119 | 120 | ```python 121 | >>> players.rotate(-1) 122 | >>> players.append('Kyle') 123 | >>> players 124 | RedisDeque(['Guy', 'Brian', 'Steve', 'Suze', 'Justin', 'Kyle']) 125 | ``` 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /challenges/weekend3/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "animals", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "animals", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "csv-reader": "^1.0.8", 13 | "redis-om": "^0.1.4" 14 | }, 15 | "engines": { 16 | "node": ">=12" 17 | } 18 | }, 19 | "node_modules/@node-redis/client": { 20 | "version": "1.0.1", 21 | "resolved": "https://registry.npmjs.org/@node-redis/client/-/client-1.0.1.tgz", 22 | "integrity": "sha512-o0I4LdzJXP6QYxRnBPrQ7cIG5tF3SNM/PBnjC3mV6QkzIiGRElzWqSr9a9JCJdcyB1SIA80bhgGhpdTpCQ1Sdw==", 23 | "dependencies": { 24 | "cluster-key-slot": "1.1.0", 25 | "generic-pool": "3.8.2", 26 | "redis-parser": "3.0.0", 27 | "yallist": "4.0.0" 28 | }, 29 | "engines": { 30 | "node": ">=12" 31 | } 32 | }, 33 | "node_modules/cluster-key-slot": { 34 | "version": "1.1.0", 35 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", 36 | "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==", 37 | "engines": { 38 | "node": ">=0.10.0" 39 | } 40 | }, 41 | "node_modules/csv-reader": { 42 | "version": "1.0.8", 43 | "resolved": "https://registry.npmjs.org/csv-reader/-/csv-reader-1.0.8.tgz", 44 | "integrity": "sha512-EK03OmXoet2dljwfJoY7/M6C+DmsthQgObpXfO6yCQ2HKNVSBd9uQ3TDzlfbfDhSn8mgmnPR2oEUftip3VihTw==", 45 | "engines": { 46 | "node": ">=8.0.0" 47 | } 48 | }, 49 | "node_modules/generic-pool": { 50 | "version": "3.8.2", 51 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", 52 | "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==", 53 | "engines": { 54 | "node": ">= 4" 55 | } 56 | }, 57 | "node_modules/redis-errors": { 58 | "version": "1.2.0", 59 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", 60 | "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=", 61 | "engines": { 62 | "node": ">=4" 63 | } 64 | }, 65 | "node_modules/redis-om": { 66 | "version": "0.1.4", 67 | "resolved": "https://registry.npmjs.org/redis-om/-/redis-om-0.1.4.tgz", 68 | "integrity": "sha512-yLGA9PuFBdnOVXp0GVvaNt5GrdTJ7tiWSYiNCEPGiqbXKaFgWkMvDV9dFJ+pCcS426P0K+zEP9fYYxnTVgTq+g==", 69 | "dependencies": { 70 | "@node-redis/client": "^1.0.0", 71 | "ulid": "^2.3.0" 72 | }, 73 | "engines": { 74 | "node": ">=12" 75 | } 76 | }, 77 | "node_modules/redis-parser": { 78 | "version": "3.0.0", 79 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", 80 | "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", 81 | "dependencies": { 82 | "redis-errors": "^1.0.0" 83 | }, 84 | "engines": { 85 | "node": ">=4" 86 | } 87 | }, 88 | "node_modules/ulid": { 89 | "version": "2.3.0", 90 | "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", 91 | "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", 92 | "bin": { 93 | "ulid": "bin/cli.js" 94 | } 95 | }, 96 | "node_modules/yallist": { 97 | "version": "4.0.0", 98 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 99 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 100 | } 101 | }, 102 | "dependencies": { 103 | "@node-redis/client": { 104 | "version": "1.0.1", 105 | "resolved": "https://registry.npmjs.org/@node-redis/client/-/client-1.0.1.tgz", 106 | "integrity": "sha512-o0I4LdzJXP6QYxRnBPrQ7cIG5tF3SNM/PBnjC3mV6QkzIiGRElzWqSr9a9JCJdcyB1SIA80bhgGhpdTpCQ1Sdw==", 107 | "requires": { 108 | "cluster-key-slot": "1.1.0", 109 | "generic-pool": "3.8.2", 110 | "redis-parser": "3.0.0", 111 | "yallist": "4.0.0" 112 | } 113 | }, 114 | "cluster-key-slot": { 115 | "version": "1.1.0", 116 | "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz", 117 | "integrity": "sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==" 118 | }, 119 | "csv-reader": { 120 | "version": "1.0.8", 121 | "resolved": "https://registry.npmjs.org/csv-reader/-/csv-reader-1.0.8.tgz", 122 | "integrity": "sha512-EK03OmXoet2dljwfJoY7/M6C+DmsthQgObpXfO6yCQ2HKNVSBd9uQ3TDzlfbfDhSn8mgmnPR2oEUftip3VihTw==" 123 | }, 124 | "generic-pool": { 125 | "version": "3.8.2", 126 | "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.8.2.tgz", 127 | "integrity": "sha512-nGToKy6p3PAbYQ7p1UlWl6vSPwfwU6TMSWK7TTu+WUY4ZjyZQGniGGt2oNVvyNSpyZYSB43zMXVLcBm08MTMkg==" 128 | }, 129 | "redis-errors": { 130 | "version": "1.2.0", 131 | "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", 132 | "integrity": "sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=" 133 | }, 134 | "redis-om": { 135 | "version": "0.1.4", 136 | "resolved": "https://registry.npmjs.org/redis-om/-/redis-om-0.1.4.tgz", 137 | "integrity": "sha512-yLGA9PuFBdnOVXp0GVvaNt5GrdTJ7tiWSYiNCEPGiqbXKaFgWkMvDV9dFJ+pCcS426P0K+zEP9fYYxnTVgTq+g==", 138 | "requires": { 139 | "@node-redis/client": "^1.0.0", 140 | "ulid": "^2.3.0" 141 | } 142 | }, 143 | "redis-parser": { 144 | "version": "3.0.0", 145 | "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", 146 | "integrity": "sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=", 147 | "requires": { 148 | "redis-errors": "^1.0.0" 149 | } 150 | }, 151 | "ulid": { 152 | "version": "2.3.0", 153 | "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.3.0.tgz", 154 | "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==" 155 | }, 156 | "yallist": { 157 | "version": "4.0.0", 158 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 159 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 160 | } 161 | } 162 | } 163 | -------------------------------------------------------------------------------- /challenges/weekend3/animal_data.csv: -------------------------------------------------------------------------------- 1 | name,species,age,weight,sex,fee,children,other_animals,description 2 | Alfie,dog,3,11,m,20,true,true,"This fun-loving little chap is Alfie, he is looking for an active home who can keep up with his energy levels! He’s not one for sitting still for long, he enjoys being up and on the go whenever he can, so a family who enjoys keeping on the move will suit him perfectly. He is a playful boy and can still be mouthy when excited so we feel he could live with confident dogs,who are used to a boisterous player. George gets on really well with other dogs and we feel it would really benefit him to live with another dog in his new home. He may be small, but his personality really makes up for this and so does his voice, he likes to make himself known wherever he is and can be quite vocal so new owners will need to be prepared to have a chatty dog. We are looking for a home where he won’t be left for long periods of time, he will need work on his basic training and will need help with his house training." 3 | Poppy,cat,13,11,f,25,false,true,"This old girl is looking for that retirement home where she can rest her paws in the warmth of someone who will love her once more. She would like a nice quiet home now at her time of life but don't write the old girl off too soon she loves a fuss and likes to play with a little piece of ribbon." 4 | Charlie,dog,12,44,m,75,true,true,"Charlie is a sweet boy who unfortunately arrived as a stray. Upon arrival it was quickly noticed that he is completely blind, despite this he showed himself to be a very friendly and happy chap. He was quickly moved into a foster home where he has done really well with consistency. He is now ready to find his forever family, we are ideally looking for a home with,over the,of 10 who can understand that although Charlie is very affectionate he can be startled when suddenly approached." 5 | Teddy,dog,4,23,m,80,false,true,"Teddy is a very sweet boy but is very unsure in new surroundings. When he first arrived with us, he would shy away and not want to come toward us, but after a few days with a gentle touch he learnt to trust us and will now come for some interaction. He is still anxious when he comes out for walks, so we feel he would suit a calmer environment away from busy areas to allow him to adjust to new walking routes." 6 | Bella,dog,4,36,f,20,true,true,"Bella is a sweet lady who is now ready to find her forever home. She was unfortunately found as a stray and was underweight and not in great shape but luckily for her she was quickly moved into a foster home where she has come on leaps and bounds. Marcy has now gained,is continuing to do so, she has settled really well into home life and enjoys her home comforts. We are ideally looking for a home where she wont be left for long periods as she does enjoy company and can be a little unsettled when first left." 7 | Molly,dog,7,50,f,20,true,true,"Molly is a sweet but timid 7 year old yorkie. She quickly went into a foster home after arriving with us and settled really well so is now ready to find her forever home. She has shown herself to be an affectionate little girl who loves company and will happily sit with you all day, for this reason we are looking for owners who are around for the majority of the day, although she can be left up to 2-3 hours a day when needed. We are looking for her to be homed as the only pet as she can be worried around dogs and prefers her own space so would suit someone who enjoys quieter walks away from busy parks." 8 | King,dog,8,43,m,45,false,false,"This big lad is King, he's a firm favourite here with the staff and is now ready to find his forever home. He is looking for an active home with,over the,of 14, ideally with new owners around during the day initially to build up the time he is left alone." 9 | Tom,cat,9,8,m,75,false,false,"Tom is a lovable boy who makes friends easily. Despite being a little older he loves to play and would really benefit from a home that can give him the love and attention he deserves." 10 | Phoebe,cat,4,11,f,60,true,true,"Phoebe likes to have time and space to settle and lots of fun things to do to keep her sharp mind occupied. We will give new owners lots of ideas on this and also advise how best to help Phoebe find her paws in her home." 11 | Lola,dog,14,18,f,55,true,false,"Lola is a mature lady of 14 but this really hasn't slowed her down. This bright girl still loves her walks and is always eager to go. She loves having company so we are looking for a new home where owners won't be leaving her for long periods but she can be left for a couple of hours. Lola likes her own company when it comes to other animals so would need to be the only pet in her new home and ideally have quieter walks away from busy dog parks." 12 | Molly,dog,4,41,f,50,false,false,"Molly is a little diamond but in order for her to thrive in her new home she needs a specific environment. Molly is very reactive to other dogs and also traffic so she needs a quiet home possibly more rural where her owners can continue the training we have put in place. Molly needs owners around all the time initially and can be homed with,14 and over as she has a friendly nature. She will need to be the only pet as she needs further work around dogs." 13 | Rex,dog,5,26,m,30,true,true,"Rex is a sensitive chap looking for a patient and understanding home. He is generally worried meeting new people but with a few treats he soon makes friends. He has settled well into his foster home and has shown himself to be very affectionate once he knows you. He has already started learning his basic training and will do well with this being continued in his new home. Rex is looking to be rehomed with a resident well rounded dog who can help with his confidence levels." 14 | Lady,dog,6,38,f,20,true,false,"Lady is a gorgeous, vibrant boxer that is coming up to six years old. Lady is dog social, but she is very worried about unfamiliar people and she needs to follow an introduction plan in order to get to know the new people in her life. Lady has been rehomed and returned due to her behaviour around people she doesn't know, so because of this, we're looking for experienced dog owners who are looking for a bit of a project!" 15 | Rufus,cat,8,7,m,35,true,false,"Handsome Rufus is an affectionate and friendly cat who loves human company and to be made a fuss of. He is happy to meet new people and is quick to make friends. When he is not curled up on a comfy lap having a fuss, he likes to spend a lot of time exploring the outside world and having exciting adventures." 16 | Luna,cat,3,6,m,20,true,false,"Luna is sweet by name and sweet by nature and very charming too. He loves attention and snuggling up in his bed, relaxing. Once settled he will need a garden to explore." 17 | Daisy,cat,2,12,f,80,true,true,"Our gorgeous girl Daisy is a sensitive little soul, and is looking for a very special forever home that can cater to her quirky ways. When meeting new people, Daisy will shy away and it takes her time to get used to new faces. You must earn her trust to be able to unlock her truly affectionate and playful side." 18 | Rosie,cat,6,15,f,70,false,true,"Rosie is a sweet and friendly cat who loves the company of people and will happily approach for strokes when in the mood and when this is on her own terms. If she is not snoozing in a warm spot or asking for attention, Rosie enjoys playing sessions and will happily bat around toy balls and chase after wand toys." 19 | Freddie,cat,3,8,m,40,false,true,"Freddie is a sweet and affectionate cat with a timid nature. He is looking for a quiet home with a family who can give him the space and time he needs to settle. As Freddie settles, he will reward his new family for their patience with endless amounts of love and affection, making a loving addition to his new family." 20 | Socks,cat,8,7,f,35,true,true,"Socks is a sweet natured lady who is a little shy at first. Once she gets to know you, she adores strokes and affection. She would make the perfect addition to any family, as she loves older,and adults alike. Sometimes loud noises can spook her but not for long - she will soon pop back out of her hiding place for a reassuring head scratch." 21 | Willow,cat,11,12,f,60,false,false,"Older Lady Willow is an affectionate and independent girl who is on the look out for a quiet home where she can spend her retirement years. She is a chatty girl and likes to tell you all about her day when you first go in to see her. She is an affectionate girl who loves a head and chin rub but also likes to spend time by herself." 22 | Oscar,cat,10,11,m,60,true,false,"Terrific Oscar is a confident and easy going cat who settled instantly with us here in the cattery. He loves to receive a fuss from both staff and volunteers, happily purring away. When left to his own devices Oscar can often be found snoozing in a warm and cosy spot, cuddled up next to you on the sofa or exploring the outdoors, investigating his territory." 23 | Gizmo,dog,7,39,m,65,false,false,"Gizmo is a sensitive boy who is now ready to find his forever home. Unfortunately, He came into our care after suffering an injury to his hind leg whilst out on a walk. After being seen by our vet they decided the best option for him was amputation of the leg. He is coping really well on 3 legs despite only recently having surgery. We are ideally looking for an experienced adult only home for him where new owners can work on his training needs." 24 | Tyson,dog,8,24,m,25,false,true,"This stunning boy is Tyson, he originally came in after being found straying, he was quite worried when he first arrived but bonded well to his carers. He can still be unsure around new people so he is looking for an adult only home and any potential adopters will need to meet him multiple times before taking him home. Tyson is very affectionate once he knows you and loves a fuss and will even sit on your lap given the chance! He loves playing tug with you with his toys although they don't always last very long. He can become quite anxious when around dogs out and about so he will need to be the only dog in his new home and ideally be walked in quiet areas." 25 | Rose,cat,1,6,f,35,false,false,"Rose is a sweet girlie that takes time to get to know new people. Once you have a relationship with Rose her bouncy playful side shows. She is looking for an adult only home where there will be no visiting children." 26 | Toby,dog,3,30,m,50,true,true,"This tall dark and handsome chap is Toby. He is a 4 year old greyhound with a sweet demeanour, he came to us after being retired from racing. He has shown himself to be a gentleman around everyone he meets and loves nothing more than leaning up you whilst having a little fuss. Toby is very foody and will do anything for a tasty treat which will come in handy with his basic training." 27 | Audrey,cat,4,14,f,55,true,true,"Audrey has had a rough start in life in life but now she's hoping to find her forever home. She can be sensitive at first, so her new owners will need to be patient with her to give her the chance to let her true personality shine through!" 28 | Lily,dog,6,21,f,60,false,false,"Gorgeous Lily likes the slower pace of life but this may be because she is a little wobbly on one of her back legs. She loves being around people and playing with her toys and should be ok with,14 and over. Lily is not too interested in other dogs and is not one for playing. She will happily have walking friends as long as they are calmer quieter dogs but would prefer to be the only dog in the home." 29 | Piper,dog,9,12,f,70,true,false,"Piper is a very handsome chap looking for his forever home. Since being with us he has shown himself to be a playful and happy boy, he loves racing around our off lead areas but can be boisterous in his play style at times, so for this this reason he is looking for a home with,14 years and over. He would suit owners who are around for most of the day in the beginning to help him settle into a routine." 30 | Alfonso,cat,2,6,m,30,false,false,"Alfonso came to us from a vets where he was handed in after being found in a box. He is a friendly boy but we do not know what he is like with other animals or children." 31 | Stella,cat,3,7,f,60,true,false,"Stella is a friendly girl who is used to,but has not been around any other animals. Stella is with us due to her owner moving away." 32 | Bentley,dog,5,15,m,40,true,true,"Bentley is a sweet older gentleman looking for a quiet retirement home. He is currently in a foster home where he enjoys his home comforts and loves a comfy bed to sleep in. He is a sensitive chap who will need patient and understanding owners who can give him time to settle in and help build up his confidence. He gets excited when he knows its time for a walk but is happy with a slow short potter around rather than longer walks at the moment." 33 | Dexter,dog,7,37,m,30,false,false,"This very handsome boy is Dexter, he's a firm favorite here and is now ready to find his forever home. He has had an unsettled start in life so is looking for a patient and understanding owner who can help him learn the ropes of home life. We are looking for new owners who are around during the day as he doesn't cope being left alone. He has had some basic training, but this will need to be continued in the home, particularly with his lead walking as he is very strong." 34 | Ruby,cat,12,8,f,25,false,true,"Ruby came to us as a pregnant stray, she is now ready to find her retirement home." 35 | Penny,dog,9,23,f,25,false,true,"Penny is a big fluffy bundle of love! She loves being around people and is immediately friendly with everyone she meets. She'll always hang around until you give a little bum scratch! Unfortunately, she isn't so keen on other dogs so will need to be walked in quieter areas where they won't come up close to her." 36 | Trisha,dog,7,18,f,65,false,true,"Trisha is a scrumptious medium-sized, fawn and white staffie. Don't be fooled by her eight years, because this girl still thinks she is two years old and has an infectious love for life! Trisha loves playing with her toys and taking a dip in the paddling pool on hot days, she is food motivated (which is great for training!) and she is really friendly with her handlers." 37 | Cooper,dog,2,38,m,60,false,false,"Cooper is a 2 year old American Bulldog. He is completely deaf so an owner with experience of this would be ideal. He is a very loving and affectionate boy, he is very playful and can be quite boisterous at times. He gets along well with other dogs but can be very over the top in his playstyle. Cooper will need to be the only pet in the household. Cooper is looking for an adult only home." 38 | Winston,cat,3,11,m,75,true,false,"Winston is a friendly boy who is good with other animals but not children. He is with us due to his owner moving and not being able to take him." 39 | Ziggy,cat,4,10,m,45,true,true,"This lovely gentleman is our Ziggy. Ziggy came to us after concerns arose for his welfare. He was in desperate need of denatl work, a dematt and bulking up. Once we got his vet stuff sorted we popped him out on foster so he could flourish." 40 | Izzy,cat,6,14,f,40,true,true,"Izzy needs someone who is willing to take on a cat with an ongoing medical condition as she suffers from diabetes and has to have an insulin injection every day and regular blood tests to make sure she stays in the best of health." 41 | Midnight,cat,5,9,f,35,false,true,"Midnight is a sweet little lady who has had a tough time before coming to our centre. Unfortunately for Midnight she got herself stuck inside a car engine and needed some assistance getting out. Once out it was apparent that she was covered in oil and was taken to the vets for a check over and some much needed treatment. Poor Midnight did have to have her fur shaved as the oil had soaked down to the skin. After some TLC from our team she is now ready for her forever home." 42 | Molly,cat,16,15,f,20,true,false,"We think Molly is around 15 years old. She was brought into our care by an inspector as an unclaimed stray. If you are looking for a lap cat, Molly is the kittie for you! She is wonderfully affectionate and loves company. She has an endearing habit of giving her carers a peck on the cheek." 43 | Lucy,dog,14,62,f,20,true,false,"This big, beautiful girl is Lucy. Lucy is a sweet and sensitive soul who can be a little shy at first but given time to get to know you she then becomes a gentle smooch monster. Lucy is a St. Bernard crossbreed so is a very big girl and will need her new family to have personal experience of owning giant breeds in the past. Lucy enjoys tasty meaty treats but doesn't really know how to play with toys yet so would like a patient home willing to show her how to enjoy the little luxuries in life." 44 | Tucker,dog,7,29,m,40,true,false,"Tucker arrived in our care as an unclaimed stray. He is a sweet boy that has settled well into life with his foster family. He would prefer owners who can slowly build up the time he is left as he can become anxious when left alone. He could live with,11+. Tucker needs further work around other dogs to help him learn how to appropriately interact with other dogs as he is very vocal and intense when around other dogs." 45 | Bailey,dog,13,18,f,30,false,false,"Bailey is a sweet girl that is desperately seeking her forever home. She is a dog that is going to require very committed owners who are looking for a lifelong investment! Daisy is a darling in the house, she loves to cuddle up with you and is very clean and can be left for part of the day. She can be noise sensitive so will need help adjusting to being in a new home as she will bark at noisy household appliances etc." 46 | Gunner,dog,8,27,m,50,true,false,"Meet Gunner the eight year old Jack Russell. It's been an unsettled time recently, he is a mature chap that needs time, patience in a quiet and loving home. His forever home needs easy access and no stairs for his little leggies. Gunner must have access to his own secure garden as he only enjoys short walks at the moment, this will give him the opportunity to find more fun smells." 47 | Chloe,cat,3,6,f,50,true,true,"Chloe came into our care suffering from injuries to one of her front legs sustained during a dog attack. After surgery and many weeks of recovery in foster care, she is now looking for a new home. She is a friendly and playful little character who loves human companionship. With careful introductions, she could live with another cat or child, of school age." 48 | Rocky,cat,4,10,m,35,false,false,"Rocky can be a bit of a grumpy old man sometimes, he does hiss at you at first until he gets to know you. He isn't used to being around people so he may take a while to come around. We think he hasn't been around people much in the past so can get quite defensive when you first approach him. He is getting better but this will take time." 49 | Angel,cat,3,9,f,60,true,false,"Angel is a very shy cat and will need lots of love and time for her to settle. She will need one room only at first, as she is wary of open space and the one room would help her settle. She has had major dental work and has not many teeth left now, but she possibly will need another dental in the future." 50 | Leo,dog,3,31,m,70,false,false,"Leo arrived in our care as a stray during the lockdown period. He has since been in a foster home where he has settled in well. He is looking for a quieter home where if there are,present they are aged 14+. He can initially be reserved with new people but once he knows you he is your shadow and loves nothing more than curling up on the sofa as close to you as possible." 51 | Albert,dog,1,19,m,80,false,false,"Albert is a 15 month old Lurcher, full of bouncy puppy energy. He came to us as a stray at 9 months old, without much experience of normal life. As a result, he has severe separation anxiety, and will require an owner who is home all of the time and can therefore build up the time he is left very gradually. Albert travels well and is house trained, although may need reminding of this in a new environment." 52 | Beatrix,dog,4,24,f,90,true,false,"Beatrix is a very loving and affectionate girl. She can be unsure of new people so new adopters will need to come down to the centre to meet her multiple times to build a relationship with her. Beatrix is looking for an adult only home where someone will be home for the majority of the day with her. She loves playtime with her toys and exploring in quiet areas. She is a real foodie which helps for training but can be worried of people approaching her at meal times. Beatrix can be slowly introduced to other dogs out and about but would benefit from being the only pet in the home." 53 | Daphne,cat,15,7,f,15,false,false,"Daphne is a lovely girl who is looking for a home with an experienced cat owner. She would be better in a home where there are no young children." 54 | Eleanor,cat,17,8,f,30,false,false,"Eleanor is a lovely girl who is friendly but can play roughly so would be best in a home with no children. She will make a lovely pet but would benefit from being with an experienced cat owner." 55 | Duke,dog,2,16,m,35,false,false,"There’s no doubt about it with Duke you have to love him! He is a cheeky and affectionate boy once he knows you, he loves his toys especially a squeaky one! He can become easily overwhelmed when there is too much going on in the environment so will need to be walked in quiet areas and have access to a private outdoor space." 56 | Amadeus,cat,6,9,m,40,true,true,"Amadeus is a wonderful, affectionate boy who has been through the wars. He was involved in an accident which resulted in him having a broken jaw, which was wired and losing an eye. He is now ready to find his furever home. He will need to be kept indoors as the sight in his remaining eye is not that good. He is a lovely boy who will make a wonderful companion." 57 | Ursula,cat,5,12,f,40,true,true,"Pretty girl Ursula is looking for a new furever home due to her owner sadly passing away. She is a friendly girl who would make a lovely pet." 58 | Fiona,dog,2,41,f,25,true,true,"Two-year-old Fiona originally come to us as a stray and it's safe to say this sweetie pie hasn't had the best of luck since. Her canine carers say she is an affectionate and cuddly girl once she knows you but, it's important to remember that she is not comfortable around strangers. She will need experienced owners who will take things slowly with her on multiple meets and be able to handle her strength on lead." 59 | Fifi,dog,11,50,f,60,false,false,"Fifi is a sweet but shy girl who's had a bit of a turbulent start to life and can find the world a bit scary. She would like to live the quiet life, in a house without too many comings and goings." 60 | Boomer,dog,7,46,m,80,false,false,"Boomer is a real staff favourite at the centre and once you have built a relationship with him his true goofy personality shines through! He is a sensitive boy who missed out on his early stages of socialisation and training, although he has made big improvements and when he finds his confidence, he is a big, lovable clown he is untrusting of strangers and is fearful of traffic or busier areas so will need an owner who can walk him in quieter areas and has a private garden." 61 | Emerson,dog,13,27,m,35,true,true,"Handsome Emerson is a playful young chap! He loves being around people and is very friendly with everyone he meets. His favourite things are toys and cuddles and he would like a home that can offer endless amounts of both." 62 | Horace,dog,11,17,m,45,true,true,"Horace is an incredibly sweet dog to be around and he has so much love to give. He can be strong on the lead and when he is excited he forgets all about his loose lead walking, but given time to settle into a home this would be something we would easily be able to help you manage with him." 63 | Sherlock,dog,14,16,m,30,false,false,"Sweet but sensitive Sherlock has shown us he can he worried but with the right setup, patients and extra care he is sure to make a lovely member of the family. You must have previous experience with rescue dogs that need an extra helping hand and be home most of the day. Sherlock's ideal home will be a single female owner with minimal visitors to the home. Sherlock must have an adult only home and be the only pet." 64 | Opal,dog,5,31,f,70,true,false,"Opal can be quite the escape artist so will need her own secure garden with fences higher than 6ft. She is a great example of her breed so is looking for someone who has experience of Huskys. The home set up will need to be non open plan and as Opal needs her space around food, she will need no direct access to the kitchen and be able to get to the garden without going through the kitchen." 65 | Cuddles,cat,5,11,f,50,false,false,"Cuddles is a lovely girl but is a little shy at first meeting. We are now able to stroke her and pick her up. She would be best living in a quiet household with maybe a single person or couple. Due to her shyness she will be best in a house with no children." 66 | Puddles,cat,1,8,f,20,true,true,"Puddles is an adorable kitten who loves attention and to play. She will need to be rehomed with another young cat as she needs a playmate. She can live with children, and other animals." 67 | Lottie,cat,3,5,f,40,true,true,"Lottie came to us in quite a state with barely and fur along her back. She has been treated and her coat is coming back through so she looks a lot better and now has the sparkle back in her eyes. She is a young cat who is super friendly and looking for a new family to care for her. She has lots of love and affection to give and will be a great addition to a family." 68 | Gemma,cat,2,7,f,50,false,true,"Gemma is a nervous girl who will need her own space, she isn't aggressive but nervous around humans. She will need time and patience and may never be a lap cat but would make a great companion." 69 | Zoltan,cat,12,6,m,50,true,true,"Zoltan is a lovely, friendly gent who despite his eleven and a half years, is healthy and reasonably agile for his age. He would love to have some company although he's quite happy toddling around on my own when you are out." 70 | Star,cat,3,10,f,30,true,true,"Star is looking for a quiet patient adult only home who will give her the time she needs to settle into her new environment. She also needs to be the only pet in the household. Star is 10 years old and has shown herself to be a friendly girl who loves a fuss. She is still nervous but has grown in confidence since being at the centre." 71 | Oscar,cat,1,13,m,80,true,false,"Oscar is a very handsome black & white male who is 1 year old. He has just been neutered, microchipped and had his 1st vaccination and is ready for his forever home. Oscar can be a little shy at first but once he is settled you will see his friendly, affectionate and playful side. He is a very talkative boy who loves company and can't wait to venture out into a garden of his own." 72 | Hunter,cat,9,10,m,45,false,false,"Hunter was found straying with an abscess and needed medical attention. He has had a difficult life so far and sadly has been left with long term injuries. Hunter is a really friendly boy and is affectionate, but a new owner will need to take things slowly with him as he can get overwhelmed by all this new attention. He is very food-orientated at the moment and loves his food and treats!" 73 | Abi,dog,14,27,f,25,false,false,"Abi is looking for a quiet adult only home with only 1 or 2 people at home who have owned sensitive dogs before. Someone who can allow Abi time and patience to settle into a new home at a pace she can cope with. Abi does not like other dogs and does need to be the only pet in the home. She needs her own direct access to her own secure garden where she can run around and enjoy off lead play." 74 | Hemingway,dog,7,51,m,20,true,false,"Hemingway is a very affectionate boy with people he knows but is wary of strangers and other dogs. He would love to live in a quiet adult only home in a rural area where he is less likely to come across them. Hemingway is an active boy who enjoys roaming the hills or exploring the woodlands. Hemingway is looking for someone who has owned Collies before and is used to nervous dogs." 75 | Tails,cat,8,8,m,50,false,false,"Tails is a lovely independant cat. He is very clean in the house & likes to potter in the garden. He is very friendly with people but we dont know if he likes other animals." 76 | Rita,cat,6,8,f,80,true,true,"Gorgeous girl Rita is a gentle soul that has had an awful time of it in a past life. Rescued from a life of squalor and neglect, we are not sure whether Rita has had much positive interaction with humans until arriving with us." 77 | Jewel,cat,7,10,f,45,true,true,"Jewel is very friendly and loves fuss and attention, she'll rub around your legs and give you gentle head butts so that the affection never stops! At 7 years old she's not as interested in toys and games like the young kittens, she's much happier lounging and enjoying the slower pace of life." 78 | Patch,dog,5,37,f,45,false,false,"Patch is looking for a quiet, adult only home in a rural environment with new owners who have owned similar dogs before. She would enjoy her own garden where she can run around playing with her toys off her lead. Patch doesnt like being left on her own for too long so would like company during the day. Patch needs owners who are willing to put lots of time into training and settling her into home life." 79 | Timmy,dog,10,30,m,40,false,false,"Timmy is 10 years old and has lived in a home previously but is used to outdoor life so will need time to adjust to a home environment. He is housetrained and ok being left alone for a few hours (although this was in an outdoor kennel)." 80 | Wendy,cat,3,7,f,40,false,false,"Wendy came into the centre after being found as a stray who was suffering from a flea infestation. She is an independent lady who much prefers relaxing in her bed and she definitely knows her own mind! Although Wendy has gained confidence and is slowly improving, she is still very much a timid and nervous girl who prefers the hands off approach." 81 | Scooby,cat,10,8,m,20,false,true,"Scooby is a gentle and loving cat who is looking for a home where he will be loved. Since being in our care he has enjoyed his creature comforts and has grown in confidence. In his first few weeks with us, he was quite shy but since settling, his loving temperament is shining through." 82 | Jasper,dog,13,28,m,35,false,true,"Jasper is typical of the Collie breed, handsome, sensitive and extremely intelligent! He is looking for patient owners who are going to help him slowly adjust to the sights and sounds that come with living in a home environment. It will take a few meets here at the centre for Jasper to get to know you, but the love and excitement he provides you once he does, will make it all worthwhile." 83 | Sadie,dog,14,40,f,30,false,false,"Sadie lives life in the fast lane and would like a family she can share her enthusiasm with. She is the Einstein of the doggy world and no task is too hard for her. Although she can be initially worried around meeting new people - it doesn't take too long to build up a relationship with her. She is a firm favourite with the staff that get the privilege of working with her and we could talk all day about just how amazing she is." 84 | Sasha,cat,11,11,f,30,true,false,"Sasha is a very sweet older lady hoping to find the purr-fect place to call home, having found herself homeless after a relationship breakdown. Sasha is a very affectionate, loving little cat. She adores people and lots of attention, she likes to be with you so much that she often ops to sleep at the end of your bed every night." 85 | Scout,cat,5,7,m,50,true,false,"We love this little guy, he is a popular and friendly little dude. He was brought into our care due to his owner passing away and has settled in well. He clearly misses his creature comforts and is looking for his forever home and a family to call his own." 86 | Pepper,cat,4,7,m,55,true,true,"Pepper came to us after he was found as a stray. He is around 4 years old and is looking for an adult only home. As he was a stray for quite a long time, he is used to coming and going as he pleases and may spend quite a bit of time outdoors. He is a friendly cat and can be handled. Pepper can feel anxious when confined but will come out for food and will come to you for some gentle strokes." 87 | Shadow,dog,3,38,f,60,false,false,"Shadow is looking for a quiet adult only home with an experienced owner who has had similar dogs before. She can be very mistrustful of people and is easily overwhelmed in busy or noisy situations. She can be fearful of the outside world and does need a garden where she can come and go as she pleases. She is house-trained, can be left alone for short periods of time and does like to travel in the car." 88 | Smudge,dog,12,17,m,45,true,false,"Smudge is an energtic boy who's had a bit of a turbulent life. He is looking for understanding, patient owners who have lots of time for their new companion. He would love a home where he has a secure garden to spend some time and to work on his housetraining." 89 | Cotton,dog,13,23,m,40,false,false,"Cotton is a handsome prince! He is fun, affectionate, and loves to spend time in the company of people he knows. It can take him a while to build his confidence around you but once he has, he will be a friend for life. He is clever, active and sensitive. He would really love a home where he can get lots of exercise and mental stimulation and gain confidence with his new family in his own time." 90 | Bolt,cat,10,10,m,30,false,true,"Bolt is a confident young man who needs an experienced home who can read his signals when he becomes uncomfortable. He is happy to be stroked but can become frustrated at times, so can live with teenagers who will respect his space when he needs it." 91 | Tulip,dog,11,38,f,35,false,true,"Tulip is seeking an active lifestyle where she can have lots of exciting adventures offered to her. She will also require someone strong enough to hold her on the lead as she is a very strong and rather determined little diva! Tulip's family would benefit a lot from breed experience, particularly in terms of the more aloof nature in the early days." 92 | Belinda,dog,4,41,f,60,false,true,"Belinda is looking for an adult only home, with a large, very secure garden. She would like to live with a small to medium sized male dog ideally 2 - 5 years old who is confident, well socialised and playful who can act as Belinda's guardian. She could build up to being left approx 4 hours a day once settled." 93 | Snowball,dog,3,32,m,85,true,true,"Snowball is a sweet and loving little gent once you get to know him, and he wants nothing more than to curl up on your lap! He has some worries around grooming so his forever home will need to invest lots of time working through these worries with him. He also doesn't think much of the TV! So would much prefer a home that enjoy other activities such as reading books. He does however LOVE soft toys, often seen carrying them around in his mouth." 94 | Bruno,dog,2,21,m,75,true,true,"A rural home is top of Bruno's wishlist, where he can enjoy life without the worry of loud noises or lots of disturbances. A family with collie experience and a good understanding of dog body language will be essential to Bruno's success, and it must be fully understood that hands-on fuss is not Bruno's favourite thing until he really knows and trusts you." 95 | Ainsley,cat,10,6,m,20,false,false,"Ainsley came into care as his owner sadly died. He is 12 years old and has recently undergone dental surgery to extract multiple rotten teeth. Ainsley is not coping with rescue life very well and we would very much like to find him a new home as soon as possible. We think that Ainsley would be suited to an adult-only home or one where any,are of secondary school age." 96 | Betty,cat,3,11,f,60,true,true,"Betty was quite timid when she first came into us so we are looking for a quieter home where she can take her time to settle. Once she has gained confidence in you she is a lovely friendly cat." 97 | Cheddar,cat,12,5,m,30,true,true,"Meet Cheddar, he was rescued by one of our officers after a member of the public had reported him as a stray. Cheddar had been hanging around the local area for a few days, when he arrived he was suffering from a heavy flea burden which had caused a mild skin condition. With a simple flea treatment Cheddar soon recovered and now he is ready to find a new home." 98 | Sprinkles,cat,11,9,f,35,false,true,"This gorgeous lad is called Sprinkles. He is a friendly, confident lad who is not overly needy but does enjoy having some fuss, but when he has had enough he will take himself off. Sprinkles will occasionally have a little play with some toys, but he doesn't have huge enthusiasm for that particular pastime." 99 | Logan,cat,9,13,m,35,true,false,"Logan is an affectionate boy who is full of fun and loves to play. He would be best as the only pet in the house." 100 | Mavis,dog,11,34,f,40,true,true,"Mavis absolutely loves her food and toys, but is not the biggest fan of sharing; our team have dedicated a lot of time to 'swapsies' work which will need to be continued in her home. Mavis will need a high level of physical exercise as she is happiest when on-the-go (particularly if a source of water may be near!). She does have cataracts which doesn't seem to affect her too much, but this may worsen with time as she gets older." 101 | Patch,dog,12,41,m,40,true,true,"A medium level of physical exercise will be needed to keep Patch happy and healthy, and he will need a family who are willing to invest time into his training in a few areas; Handling, reacting to dogs and seperation anxiety are his main areas to work on. Patch is not housetrained but has lived in a home before. He really does not like being left on his own so this will need to be built-up gradually." --------------------------------------------------------------------------------