diff --git a/README.md b/README.md
index af3242d5..f53cdf8f 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,14 @@
# Playground and Cheatsheet for Learning Python
+> 🇺🇦 UKRAINE [IS BEING ATTACKED](https://war.ukraine.ua/) BY RUSSIAN ARMY. CIVILIANS ARE GETTING KILLED. RESIDENTIAL AREAS ARE GETTING BOMBED.
+> - Help Ukraine via:
+> - [Serhiy Prytula Charity Foundation](https://prytulafoundation.org/en/)
+> - [Come Back Alive Charity Foundation](https://savelife.in.ua/en/donate-en/)
+> - [National Bank of Ukraine](https://bank.gov.ua/en/news/all/natsionalniy-bank-vidkriv-spetsrahunok-dlya-zboru-koshtiv-na-potrebi-armiyi)
+> - More info on [war.ukraine.ua](https://war.ukraine.ua/) and [MFA of Ukraine](https://twitter.com/MFA_Ukraine)
+
+
+
[](https://travis-ci.org/trekhleb/learn-python)
> This is a collection of Python scripts that are split by [topics](#table-of-contents) and contain
@@ -217,6 +226,6 @@ flake8 ./src --statistics --show-source --count
[More about Flake8](http://flake8.pycqa.org/en/latest/)
-## Supporting the project
+## Author
-You may support this project via ❤️️ [GitHub](https://github.com/sponsors/trekhleb) or ❤️️ [Patreon](https://www.patreon.com/trekhleb).
+- [@trekhleb](https://trekhleb.dev)
diff --git a/src/additions/test_generators.py b/src/additions/test_generators.py
index ff3bce26..6b2f2736 100644
--- a/src/additions/test_generators.py
+++ b/src/additions/test_generators.py
@@ -23,7 +23,7 @@ def lottery():
"""
# returns first 3 random numbers between 1 and 10
# pylint: disable=unused-variable
- for i in range(3):
+ for _ in range(3):
yield random.randint(1, 10)
# returns a 4th number between 10 and 20
diff --git a/src/classes/test_class_and_instance_variables.py b/src/classes/test_class_and_instance_variables.py
index c4004d79..d33ff2e6 100644
--- a/src/classes/test_class_and_instance_variables.py
+++ b/src/classes/test_class_and_instance_variables.py
@@ -72,7 +72,7 @@ def __init__(self, name):
def add_trick(self, trick):
"""Add trick to the dog
- This function illustrate mistaken use of mutable class variable tricks (see below).
+ This function illustrate a correct use of mutable class variable tricks (see below).
"""
self.tricks.append(trick)
diff --git a/src/classes/test_multiple_inheritance.py b/src/classes/test_multiple_inheritance.py
index 2ad73f8d..e3d41529 100644
--- a/src/classes/test_multiple_inheritance.py
+++ b/src/classes/test_multiple_inheritance.py
@@ -41,8 +41,8 @@ def get_date(self):
class CalendarClock(Clock, Calendar):
"""Class that uses multiple inheritance.
- For most purposes, in the simplest cases, you can think of the search for attributes i
- nherited from a parent class as depth-first, left-to-right, not searching twice in the same
+ For most purposes, in the simplest cases, you can think of the search for attributes
+ inherited from a parent class as depth-first, left-to-right, not searching twice in the same
class where there is an overlap in the hierarchy. Thus, if an attribute is not found in
CalendarClock, it is searched for in Clock, then (recursively) in the base classes of
Clock, and if it was not found there, it was searched for in Calendar, and so on.
diff --git a/src/functions/test_function_arbitrary_arguments.py b/src/functions/test_function_arbitrary_arguments.py
index b3f36627..2b00d176 100644
--- a/src/functions/test_function_arbitrary_arguments.py
+++ b/src/functions/test_function_arbitrary_arguments.py
@@ -16,7 +16,7 @@ def test_function_arbitrary_arguments():
# containing the positional arguments beyond the formal parameter list.
# (*name must occur before **name.) For example, if we define a function like this:
def test_function(first_param, *arguments):
- """This function accepts its arguments through "arguments" tuple amd keywords dictionary."""
+ """This function accepts its arguments through "arguments" tuple"""
assert first_param == 'first param'
assert arguments == ('second param', 'third param')
diff --git a/src/functions/test_function_keyword_arguments.py b/src/functions/test_function_keyword_arguments.py
index 65d066c1..7b6ff1c3 100644
--- a/src/functions/test_function_keyword_arguments.py
+++ b/src/functions/test_function_keyword_arguments.py
@@ -102,7 +102,7 @@ def function_with_one_argument(number):
# containing the positional arguments beyond the formal parameter list.
# (*name must occur before **name.) For example, if we define a function like this:
def test_function(first_param, *arguments, **keywords):
- """This function accepts its arguments through "arguments" tuple amd keywords dictionary."""
+ """This function accepts its arguments through "arguments" tuple and keywords dictionary."""
assert first_param == 'first param'
assert arguments == ('second param', 'third param')
assert keywords == {