




'''simple docstring'''

from __future__ import annotations

from PIL import Image

# Define glider example
a  :				Optional[int]									=  [
    [0, 1, 0, 0, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 0, 0, 0],
    [1, 1, 1, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0],
]

# Define blinker example
a  :				List[Any]									=  [[0, 1, 0], [0, 1, 0], [0, 1, 0]]


def 		__magic_name__    (	__UpperCAmelCase	)		->					list[list[int]]:

					'''simple docstring'''

					snake_case_									=				[]
					for i in range(len(__UpperCAmelCase	)	):
										snake_case_									=				[]
										for j in range(len(cells[i]	)	):
															# Get the number of live neighbours
															snake_case_									=				0
															if i > 0 and j > 0:
																				neighbour_count += cells[i - 1][j - 1]
															if i > 0:
																				neighbour_count += cells[i - 1][j]
															if i > 0 and j < len(cells[i]	) - 1:
																				neighbour_count += cells[i - 1][j + 1]
															if j > 0:
																				neighbour_count += cells[i][j - 1]
															if j < len(cells[i]	) - 1:
																				neighbour_count += cells[i][j + 1]
															if i < len(__UpperCAmelCase	) - 1 and j > 0:
																				neighbour_count += cells[i + 1][j - 1]
															if i < len(__UpperCAmelCase	) - 1:
																				neighbour_count += cells[i + 1][j]
															if i < len(__UpperCAmelCase	) - 1 and j < len(cells[i]	) - 1:
																				neighbour_count += cells[i + 1][j + 1]

															# Rules of the game of life (excerpt from Wikipedia):
															# 1. Any live cell with two or three live neighbours survives.
															# 2. Any dead cell with three live neighbours becomes a live cell.
															# 3. All other live cells die in the next generation.
															#    Similarly, all other dead cells stay dead.
															snake_case_									=				cells[i][j] == 1
															if (
															    (alive and 2 <= neighbour_count <= 3)
															    or not alive
															    and neighbour_count == 3
															):
																				next_generation_row.append(1	)
															else:
																				next_generation_row.append(0	)

										next_generation.append(__UpperCAmelCase	)
					return next_generation


def 		__magic_name__    (	__UpperCAmelCase,      __UpperCAmelCase	)		->					list[Image.Image]:

					'''simple docstring'''

					snake_case_									=				[]
					for _ in range(__UpperCAmelCase	):
										# Create output image
										snake_case_									=				Image.new('''RGB''',      (len(cells[0]	), len(__UpperCAmelCase	))	)
										snake_case_									=				img.load()

										# Save cells to image
										for x in range(len(__UpperCAmelCase	)	):
															for y in range(len(cells[0]	)	):
																				snake_case_									=				255 - cells[y][x] * 255
																				snake_case_									=				(colour, colour, colour)

        # Save image
										images.append(__UpperCAmelCase	)
										snake_case_									=				new_generation(__UpperCAmelCase	)
					return images


if __name__ == "__main__":
							a  :				Dict									=  generate_images(GLIDER, 16)
							images[0].save('out.gif', save_all=True, append_images=images[1:])


import requests





def 				UpperCAmelCase						(    lowercase							,			lowercase							):







				"""simple docstring"""



				__lowercase 			=							{'''Content-Type''': '''application/json'''}
				__lowercase 			=							requests.post(lowercase							,			json={'''text''': message_body}							,			headers=lowercase							)
				if response.status_code != 200:
								__lowercase 			=							(
								    '''Request to slack returned an error '''
								    F"{response.status_code}, the response is:\n{response.text}"
								)
								raise ValueError(lowercase							)


if __name__ == "__main__":
		# Set the slack url to the one provided by Slack when you create the webhook at
		# https://my.slack.com/services/new/incoming-webhook/
		send_slack_message("""<YOUR MESSAGE BODY>""", """<SLACK CHANNEL URL>""")