From 74f5242e1e035e0a9263e1c6b6b7377686926b3e Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Wed, 25 Sep 2024 08:59:11 +0300 Subject: [PATCH 01/19] added rectangle.py --- rectangle.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 rectangle.py diff --git a/rectangle.py b/rectangle.py new file mode 100644 index 0000000000..a62651ebe9 --- /dev/null +++ b/rectangle.py @@ -0,0 +1,6 @@ +def area(a, b): + return a * b + +def perimeter(a, b): + return a + b + From 06fc55e6c89cb0d407407a68c6d43b530452d3a0 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Wed, 25 Sep 2024 09:01:02 +0300 Subject: [PATCH 02/19] added triangle.py --- triangle.py | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 triangle.py diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..e6fe0f3d0f --- /dev/null +++ b/triangle.py @@ -0,0 +1,6 @@ +def area(a, h): + return a * h / 2 + +def perimeter(a, b, c): + return a + b + c + From 1d53844e0eba6a7f21ec032c65474d53a2c6b4b0 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Wed, 25 Sep 2024 09:02:59 +0300 Subject: [PATCH 03/19] modified rectangle.py --- rectangle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rectangle.py b/rectangle.py index a62651ebe9..d12f50fdc5 100644 --- a/rectangle.py +++ b/rectangle.py @@ -2,5 +2,5 @@ def area(a, b): return a * b def perimeter(a, b): - return a + b + return 2 * (a * b) From 916e5e9441fcc1492fadf9cfc1a48e3c76730789 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Sat, 28 Sep 2024 09:03:01 +0300 Subject: [PATCH 04/19] General solution description --- docs/README.md | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/docs/README.md b/docs/README.md index 63f8727939..899dc1f5dd 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,23 @@ -# Math formulas -## Area -- Circle: S = πR² -- Rectangle: S = ab -- Square: S = a² - -## Perimeter -- Circle: P = 2πR -- Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +# Общее описание решения +Этот проект содержит 4 файла с функциями для вычисления площади и периметра различных геометрических +фигур: +- circle.py для круга, +- rectangle.py для прямоугольника, +- square.py для квадрата, +- и triangle.py для треугольника. + +Для вычисления периметра и площади фигур используются следующие математический формулы: + +## Площадь +- Круг: S = πR² +- Прямоугольник: S = ab +- Квадрат: S = a² + +## Периметр +- Круг: P = 2πR +- Прямоугольник: P = 2a + 2b +- Квадрат: P = 4a + +# Описание функций с примерами вызова + +# История изменения проекта From b8c6acd2d2f18fef9b70974475484170cad11e95 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Sat, 28 Sep 2024 09:12:27 +0300 Subject: [PATCH 05/19] square docs --- docs/README.md | 37 +++++++++++++++++++++++++++++++++++++ square.py | 17 +++++++++++++++-- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 899dc1f5dd..3d6e987fea 100644 --- a/docs/README.md +++ b/docs/README.md @@ -19,5 +19,42 @@ - Квадрат: P = 4a # Описание функций с примерами вызова +`square.py`: +- `def area(a)`: + ```python + def area(a: float) -> float: + """Возвращает площадь квадрата со стороной a + :param a: длина стороны квадрата + :type a: float + :returns: площадь квадрата + :rtype: float + """ + return a * a + ``` + Функция вычисляет площадь квадрата. Она принимает один аргумент: длину стороны квадрата типа float (или int) + и возвращает площадь квадрата типа float (или int). + ### Пример вызова: + ```python + s = area(5) # В s запишется 25 + ``` + +- `perimeter(a)`: + ```python + def perimeter(a: float) -> float: + """Возвращает периметр квадрата со стороной a + + :param a: длина стороны квадрата + :type a: float + :returns: периметр квадрата + :rtype: float + """ + return 4 * a + ``` + Функция вычисляет периметр квадрата. Она принимает один аргумент: длину стороны квадрата типа float (или int) + и возвращает периметр квадрата типа float (или int). + ### Пример вызова: + ```python + p = perimeter(5) # В p запишется 20 + ``` # История изменения проекта diff --git a/square.py b/square.py index 0f98724205..137541866b 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,20 @@ +def area(a: float) -> float: + """Возвращает площадь квадрата со стороной a -def area(a): + :param a: длина стороны квадрата + :type a: float + :returns: площадь квадрата + :rtype: float + """ return a * a -def perimeter(a): +def perimeter(a: float) -> float: + """Возвращает периметр квадрата со стороной a + + :param a: длина стороны квадрата + :type a: float + :returns: периметр квадрата + :rtype: float + """ return 4 * a From d5d20b397a4dcf06c4a1db08c68c59179bea2207 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Sat, 28 Sep 2024 09:21:19 +0300 Subject: [PATCH 06/19] rectangle docs --- docs/README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++-- rectangle.py | 24 +++++++++++++++++++++--- 2 files changed, 66 insertions(+), 5 deletions(-) diff --git a/docs/README.md b/docs/README.md index 3d6e987fea..641211690b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,7 @@ - circle.py для круга, - rectangle.py для прямоугольника, - square.py для квадрата, -- и triangle.py для треугольника. +- triangle.py для треугольника. Для вычисления периметра и площади фигур используются следующие математический формулы: @@ -15,7 +15,7 @@ ## Периметр - Круг: P = 2πR -- Прямоугольник: P = 2a + 2b +- Прямоугольник: P = 2 * (a + b) - Квадрат: P = 4a # Описание функций с примерами вызова @@ -57,4 +57,47 @@ ```python p = perimeter(5) # В p запишется 20 ``` + +`rectangle.py`: +- `def area(a, b)`: + ```python + def area(a: float, b: float) -> float: + """Возвращает площадь прямоугольника со сторонами a, b + + :param a: длина прямоугольника + :type a: float + :param b: ширина прямоугольника + :type b: float + :returns: периметр прямоугольника + :rtype: float + """ + return a * b + ``` + Функция вычисляет площадь прямоугольника. Она принимает два аргумента: длину и ширину прямоугольника типа float (или int) + и возвращает площадь прямоугольника типа float (или int). + ### Пример вызова: + ```python + s = area(5, 2) # В s запишется 10 + ``` + +- `perimeter(a)`: + ```python + def perimeter(a: float, b: float) -> float: + """Возвращает периметр прямоугольника со сторонами a, b + + :param a: длина прямоугольника + :type a: float + :param b: ширина прямоугольника + :type b: float + :returns: периметр прямоугольника + :rtype: float + """ + return 2 * (a + b) + ``` + Функция вычисляет периметр прямоугольника. Она принимает 2 аргумента: длину и ширину прямоугольника типа float (или int) + и возвращает периметр прямоугольника типа float (или int). + ### Пример вызова: + ```python + p = perimeter(5, 2) # В p запишется 14 + ``` # История изменения проекта diff --git a/rectangle.py b/rectangle.py index d12f50fdc5..627265a10c 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,6 +1,24 @@ -def area(a, b): +def area(a: float, b: float) -> float: + """Возвращает площадь прямоугольника со сторонами a, b + + :param a: длина прямоугольника + :type a: float + :param b: ширина прямоугольника + :type b: float + :returns: периметр прямоугольника + :rtype: float + """ return a * b -def perimeter(a, b): - return 2 * (a * b) +def perimeter(a: float, b: float) -> float: + """Возвращает периметр прямоугольника со сторонами a, b + + :param a: длина прямоугольника + :type a: float + :param b: ширина прямоугольника + :type b: float + :returns: периметр прямоугольника + :rtype: float + """ + return 2 * (a + b) From 27c6ec589b1ecf641de9e38c4bd59f781becc0a0 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Sat, 28 Sep 2024 09:31:44 +0300 Subject: [PATCH 07/19] triangle docs --- docs/README.md | 47 ++++++++++++++++++++++++++++++++++++++++++++++- triangle.py | 24 ++++++++++++++++++++++-- 2 files changed, 68 insertions(+), 3 deletions(-) diff --git a/docs/README.md b/docs/README.md index 641211690b..3555e95972 100644 --- a/docs/README.md +++ b/docs/README.md @@ -80,7 +80,7 @@ s = area(5, 2) # В s запишется 10 ``` -- `perimeter(a)`: +- `perimeter(a, b)`: ```python def perimeter(a: float, b: float) -> float: """Возвращает периметр прямоугольника со сторонами a, b @@ -100,4 +100,49 @@ ```python p = perimeter(5, 2) # В p запишется 14 ``` + +`triangle.py`: +- `def area(a, h)`: + ```python + def area(a: float, h: float) -> float: + """Возвращает площадь треугольника с основанием a и высотой h + + :param a: основание треугольника + :type a: float + :param h: высота треугольника + :type h: float + :returns: площадь треугольника + :rtype: float + """ + return a * h / 2 + ``` + Функция вычисляет площадь треугольника. Она принимает два аргумента: основание и высоту треугольника типа float (или int) + и возвращает площадь треугольника типа float (или int). + ### Пример вызова: + ```python + s = area(5, 2) # В s запишется 5 + ``` + +- `perimeter(a, b, c)`: + ```python + def perimeter(a: float, b: float, c: float) -> float: + """Возвращает периметр треугольника со сторонами a, b, c + + :param a: одна сторона треугольника + :type a: float + :param b: вторая сторона треугольника + :type b: float + :param c: третья сторона треугольника + :type c: float + :returns: периметр треугольника + :rtype: float + """ + return a + b + c + ``` + Функция вычисляет периметр треугольника. Она принимает 3 аргумента: все стороны треугольника типа float (или int) + и возвращает периметр треугольника типа float (или int). + ### Пример вызова: + ```python + p = perimeter(5, 2, 3) # В p запишется 10 + # История изменения проекта diff --git a/triangle.py b/triangle.py index e6fe0f3d0f..4a4da9c59d 100644 --- a/triangle.py +++ b/triangle.py @@ -1,6 +1,26 @@ -def area(a, h): +def area(a: float, h: float) -> float: + """Возвращает площадь треугольника с основанием a и высотой h + + :param a: основание треугольника + :type a: float + :param h: высота треугольника + :type h: float + :returns: площадь треугольника + :rtype: float + """ return a * h / 2 -def perimeter(a, b, c): +def perimeter(a: float, b: float, c: float) -> float: + """Возвращает периметр треугольника со сторонами a, b, c + + :param a: одна сторона треугольника + :type a: float + :param b: вторая сторона треугольника + :type b: float + :param c: третья сторона треугольника + :type c: float + :returns: периметр треугольника + :rtype: float + """ return a + b + c From c067f4fcadc268edf2e97c8c4bfc96fdf246017a Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Sat, 28 Sep 2024 09:38:34 +0300 Subject: [PATCH 08/19] circle docs --- circle.py | 16 +++++++++++++++- docs/README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/circle.py b/circle.py index c3eb8647c9..30ffb620a8 100644 --- a/circle.py +++ b/circle.py @@ -1,10 +1,24 @@ import math -def area(r): +def area(r: float) -> float: + """Возвращает площадь круга с радиусом r + + :param r: радиус круга + :type r: float + :returns: площадь круга + :rtype: float + """ return math.pi * r * r def perimeter(r): + """Возвращает длину окружности с радиусом r + + :param r: радиус круга + :type r: float + :returns: длина окружности + :rtype: float + """ return 2 * math.pi * r diff --git a/docs/README.md b/docs/README.md index 3555e95972..77df8109a5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -144,5 +144,45 @@ ### Пример вызова: ```python p = perimeter(5, 2, 3) # В p запишется 10 + ``` + +`circle.py`: +- `def area(r)`: + ```python + def area(r: float) -> float: + """Возвращает площадь круга с радиусом r + + :param r: радиус круга + :type r: float + :returns: площадь круга + :rtype: float + """ + return math.pi * r * r + ``` + Функция вычисляет площадь круга. Она принимает один аргумент: радиус круга типа float (или int) + и возвращает площадь круга типа float (или int). + ### Пример вызова: + ```python + s = area(2) # В s запишется 12.56 + ``` + +- `perimeter(r)`: + ```python + def perimeter(r): + """Возвращает длину окружности с радиусом r + + :param r: радиус круга + :type r: float + :returns: длина окружности + :rtype: float + """ + return 2 * math.pi * r + ``` + Функция вычисляет длину окружности. Она принимает 1 аргумент: радиус окружности типа float (или int) + и возвращает длину окружности типа float (или int). + ### Пример вызова: + ```python + p = perimeter(1) # В p запишется 6.28 + ``` # История изменения проекта From 2e803c3aec84e69bee0a85c664aa9c1db5579a26 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 8 Oct 2024 14:41:13 +0300 Subject: [PATCH 09/19] project history --- docs/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/README.md b/docs/README.md index 77df8109a5..b97678aa22 100644 --- a/docs/README.md +++ b/docs/README.md @@ -186,3 +186,17 @@ ``` # История изменения проекта +## Коммиты + +| Название | Хеш | Автор | Дата | Описание | +|-------------------------------|----------|---------------------------------|------------------|-------------------------------------------| +| circle docs | c067f4fc | Nikita Aksenov | 28/09/2024 09:38 | Добавлена документация для круга | +| triangle docs | 27c6ec58 | Nikita Aksenov | 28/09/2024 09:31 | Добавлена документация для треугольника | +| rectangle docs | d5d20b39 | Nikita Aksenov | 28/09/2024 09:21 | Добавлена документация для прямоугольника | +| square docs | b8c6acd2 | Nikita Aksenov | 28/09/2024 09:12 | Добавлена документация для квадрата | +| General solution description | 916e5e94 | Nikita Aksenov | 28/09/2024 09:03 | Изменен rectangle.md | +| modified rectangle.py | 1d53844e | Nikita Aksenov | 25/09/2024 09:02 | Изменен rectangle.md | +| added triangle.py | 06fc55e6 | Nikita Aksenov | 25/09/2024 09:01 | Добавлен triangle.md | +| added rectangle.py | 74f5242e | Nikita Aksenov | 25/09/2024 08:59 | Добавлен rectangle.md | +| L-03: Docs added | d078c8d9 | smartiqa | 04/03/2021 14:55 | Добавлен README.md | +| L-03: Circle and square added | 8ba9aeb3 | smartiqa | 04/03/2021 14:54 | Добавлены circle.py и square.py | From c6784675fba1dabb1329315164b6c9f867dc3c0c Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Wed, 23 Oct 2024 09:51:24 +0300 Subject: [PATCH 10/19] reformatted docs --- circle.py | 12 ++++++-- docs/README.md | 75 ++++++++++++++++++++++++++++++++++++-------------- rectangle.py | 13 +++++++-- square.py | 12 ++++++-- triangle.py | 13 +++++++-- 5 files changed, 96 insertions(+), 29 deletions(-) diff --git a/circle.py b/circle.py index 30ffb620a8..aa2f42bcf7 100644 --- a/circle.py +++ b/circle.py @@ -2,23 +2,31 @@ def area(r: float) -> float: - """Возвращает площадь круга с радиусом r + """ + Возвращает площадь круга с радиусом r :param r: радиус круга :type r: float :returns: площадь круга :rtype: float + + Пример вызова: + s = area(2) # В s запишется 12.56 """ return math.pi * r * r def perimeter(r): - """Возвращает длину окружности с радиусом r + """ + Возвращает длину окружности с радиусом r :param r: радиус круга :type r: float :returns: длина окружности :rtype: float + + Пример вызова: + p = perimeter(1) # В p запишется 6.28 """ return 2 * math.pi * r diff --git a/docs/README.md b/docs/README.md index b97678aa22..328e247bec 100644 --- a/docs/README.md +++ b/docs/README.md @@ -23,12 +23,16 @@ - `def area(a)`: ```python def area(a: float) -> float: - """Возвращает площадь квадрата со стороной a + """ + Возвращает площадь квадрата со стороной a :param a: длина стороны квадрата :type a: float :returns: площадь квадрата :rtype: float + + Пример вызова: + s = area(5) # В s запишется 25 """ return a * a ``` @@ -42,14 +46,18 @@ - `perimeter(a)`: ```python def perimeter(a: float) -> float: - """Возвращает периметр квадрата со стороной a + """ + Возвращает периметр квадрата со стороной a :param a: длина стороны квадрата :type a: float :returns: периметр квадрата :rtype: float + + Пример вызова: + p = perimeter(5) # В p запишется 20 """ - return 4 * a + return 4 * a ``` Функция вычисляет периметр квадрата. Она принимает один аргумент: длину стороны квадрата типа float (или int) и возвращает периметр квадрата типа float (или int). @@ -62,7 +70,8 @@ - `def area(a, b)`: ```python def area(a: float, b: float) -> float: - """Возвращает площадь прямоугольника со сторонами a, b + """ + Возвращает площадь прямоугольника со сторонами a, b :param a: длина прямоугольника :type a: float @@ -70,6 +79,9 @@ :type b: float :returns: периметр прямоугольника :rtype: float + + Пример вызова: + s = area(5, 2) # В s запишется 10 """ return a * b ``` @@ -83,7 +95,8 @@ - `perimeter(a, b)`: ```python def perimeter(a: float, b: float) -> float: - """Возвращает периметр прямоугольника со сторонами a, b + """ + Возвращает периметр прямоугольника со сторонами a, b :param a: длина прямоугольника :type a: float @@ -91,6 +104,9 @@ :type b: float :returns: периметр прямоугольника :rtype: float + + Пример вызова: + p = perimeter(5, 2) # В p запишется 14 """ return 2 * (a + b) ``` @@ -105,7 +121,8 @@ - `def area(a, h)`: ```python def area(a: float, h: float) -> float: - """Возвращает площадь треугольника с основанием a и высотой h + """ + Возвращает площадь треугольника с основанием a и высотой h :param a: основание треугольника :type a: float @@ -113,6 +130,9 @@ :type h: float :returns: площадь треугольника :rtype: float + + Пример вызова: + s = area(5, 2) # В s запишется 5 """ return a * h / 2 ``` @@ -126,7 +146,8 @@ - `perimeter(a, b, c)`: ```python def perimeter(a: float, b: float, c: float) -> float: - """Возвращает периметр треугольника со сторонами a, b, c + """ + Возвращает периметр треугольника со сторонами a, b, c :param a: одна сторона треугольника :type a: float @@ -136,6 +157,9 @@ :type c: float :returns: периметр треугольника :rtype: float + + Пример вызова: + p = perimeter(5, 2, 3) # В p запишется 10 """ return a + b + c ``` @@ -150,12 +174,16 @@ - `def area(r)`: ```python def area(r: float) -> float: - """Возвращает площадь круга с радиусом r + """ + Возвращает площадь круга с радиусом r :param r: радиус круга :type r: float :returns: площадь круга :rtype: float + + Пример вызова: + s = area(2) # В s запишется 12.56 """ return math.pi * r * r ``` @@ -169,12 +197,16 @@ - `perimeter(r)`: ```python def perimeter(r): - """Возвращает длину окружности с радиусом r + """ + Возвращает длину окружности с радиусом r :param r: радиус круга :type r: float :returns: длина окружности :rtype: float + + Пример вызова: + p = perimeter(1) # В p запишется 6.28 """ return 2 * math.pi * r ``` @@ -188,15 +220,16 @@ # История изменения проекта ## Коммиты -| Название | Хеш | Автор | Дата | Описание | -|-------------------------------|----------|---------------------------------|------------------|-------------------------------------------| -| circle docs | c067f4fc | Nikita Aksenov | 28/09/2024 09:38 | Добавлена документация для круга | -| triangle docs | 27c6ec58 | Nikita Aksenov | 28/09/2024 09:31 | Добавлена документация для треугольника | -| rectangle docs | d5d20b39 | Nikita Aksenov | 28/09/2024 09:21 | Добавлена документация для прямоугольника | -| square docs | b8c6acd2 | Nikita Aksenov | 28/09/2024 09:12 | Добавлена документация для квадрата | -| General solution description | 916e5e94 | Nikita Aksenov | 28/09/2024 09:03 | Изменен rectangle.md | -| modified rectangle.py | 1d53844e | Nikita Aksenov | 25/09/2024 09:02 | Изменен rectangle.md | -| added triangle.py | 06fc55e6 | Nikita Aksenov | 25/09/2024 09:01 | Добавлен triangle.md | -| added rectangle.py | 74f5242e | Nikita Aksenov | 25/09/2024 08:59 | Добавлен rectangle.md | -| L-03: Docs added | d078c8d9 | smartiqa | 04/03/2021 14:55 | Добавлен README.md | -| L-03: Circle and square added | 8ba9aeb3 | smartiqa | 04/03/2021 14:54 | Добавлены circle.py и square.py | +| Название | Хеш | Автор | Дата | Описание | +|---------------------------------------------------------------------------------------------------------------------------|----------|---------------------------------|------------------|-------------------------------------------| +| [project history](https://github.com/nawinds/geometric_lib/commit/2e803c3aec84e69bee0a85c664aa9c1db5579a26) | 2e803c3a | Nikita Aksenov | 23/10/2024 09:46 | Добавлена история проекта | +| [circle docs](https://github.com/nawinds/geometric_lib/commit/c067f4fcadc268edf2e97c8c4bfc96fdf246017a) | c067f4fc | Nikita Aksenov | 28/09/2024 09:38 | Добавлена документация для круга | +| [triangle docs](https://github.com/nawinds/geometric_lib/commit/27c6ec589b1ecf641de9e38c4bd59f781becc0a0) | 27c6ec58 | Nikita Aksenov | 28/09/2024 09:31 | Добавлена документация для треугольника | +| [rectangle docs](https://github.com/nawinds/geometric_lib/commit/27c6ec589b1ecf641de9e38c4bd59f781becc0a0) | d5d20b39 | Nikita Aksenov | 28/09/2024 09:21 | Добавлена документация для прямоугольника | +| [square docs](https://github.com/nawinds/geometric_lib/commit/b8c6acd2d2f18fef9b70974475484170cad11e95) | b8c6acd2 | Nikita Aksenov | 28/09/2024 09:12 | Добавлена документация для квадрата | +| [General solution description](https://github.com/nawinds/geometric_lib/commit/916e5e9441fcc1492fadf9cfc1a48e3c76730789) | 916e5e94 | Nikita Aksenov | 28/09/2024 09:03 | Изменен rectangle.md | +| [modified rectangle.py](https://github.com/nawinds/geometric_lib/commit/1d53844e0eba6a7f21ec032c65474d53a2c6b4b0) | 1d53844e | Nikita Aksenov | 25/09/2024 09:02 | Изменен rectangle.md | +| [added triangle.py](https://github.com/nawinds/geometric_lib/commit/06fc55e6c89cb0d407407a68c6d43b530452d3a0) | 06fc55e6 | Nikita Aksenov | 25/09/2024 09:01 | Добавлен triangle.md | +| [added rectangle.py](https://github.com/nawinds/geometric_lib/commit/74f5242e1e035e0a9263e1c6b6b7377686926b3e) | 74f5242e | Nikita Aksenov | 25/09/2024 08:59 | Добавлен rectangle.md | +| [L-03: Docs added](https://github.com/nawinds/geometric_lib/commit/d078c8d9ee6155f3cb0e577d28d337b791de28e2) | d078c8d9 | smartiqa | 04/03/2021 14:55 | Добавлен README.md | +| [L-03: Circle and square added](https://github.com/nawinds/geometric_lib/commit/8ba9aeb3cea847b63a91ac378a2a6db758682460) | 8ba9aeb3 | smartiqa | 04/03/2021 14:54 | Добавлены circle.py и square.py | diff --git a/rectangle.py b/rectangle.py index 627265a10c..ff8ed8dc2c 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,5 +1,6 @@ def area(a: float, b: float) -> float: - """Возвращает площадь прямоугольника со сторонами a, b + """ + Возвращает площадь прямоугольника со сторонами a, b :param a: длина прямоугольника :type a: float @@ -7,11 +8,16 @@ def area(a: float, b: float) -> float: :type b: float :returns: периметр прямоугольника :rtype: float + + Пример вызова: + s = area(5, 2) # В s запишется 10 """ return a * b + def perimeter(a: float, b: float) -> float: - """Возвращает периметр прямоугольника со сторонами a, b + """ + Возвращает периметр прямоугольника со сторонами a, b :param a: длина прямоугольника :type a: float @@ -19,6 +25,9 @@ def perimeter(a: float, b: float) -> float: :type b: float :returns: периметр прямоугольника :rtype: float + + Пример вызова: + p = perimeter(5, 2) # В p запишется 14 """ return 2 * (a + b) diff --git a/square.py b/square.py index 137541866b..38172d6f31 100644 --- a/square.py +++ b/square.py @@ -1,20 +1,28 @@ def area(a: float) -> float: - """Возвращает площадь квадрата со стороной a + """ + Возвращает площадь квадрата со стороной a :param a: длина стороны квадрата :type a: float :returns: площадь квадрата :rtype: float + + Пример вызова: + s = area(5) # В s запишется 25 """ return a * a def perimeter(a: float) -> float: - """Возвращает периметр квадрата со стороной a + """ + Возвращает периметр квадрата со стороной a :param a: длина стороны квадрата :type a: float :returns: периметр квадрата :rtype: float + + Пример вызова: + p = perimeter(5) # В p запишется 20 """ return 4 * a diff --git a/triangle.py b/triangle.py index 4a4da9c59d..76c8dad27d 100644 --- a/triangle.py +++ b/triangle.py @@ -1,5 +1,6 @@ def area(a: float, h: float) -> float: - """Возвращает площадь треугольника с основанием a и высотой h + """ + Возвращает площадь треугольника с основанием a и высотой h :param a: основание треугольника :type a: float @@ -7,11 +8,16 @@ def area(a: float, h: float) -> float: :type h: float :returns: площадь треугольника :rtype: float + + Пример вызова: + s = area(5, 2) # В s запишется 5 """ return a * h / 2 + def perimeter(a: float, b: float, c: float) -> float: - """Возвращает периметр треугольника со сторонами a, b, c + """ + Возвращает периметр треугольника со сторонами a, b, c :param a: одна сторона треугольника :type a: float @@ -21,6 +27,9 @@ def perimeter(a: float, b: float, c: float) -> float: :type c: float :returns: периметр треугольника :rtype: float + + Пример вызова: + p = perimeter(5, 2, 3) # В p запишется 10 """ return a + b + c From 95d2bc138b8b3419dec4b8dabdae9cb4e2b6045b Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Thu, 31 Oct 2024 17:35:51 +0300 Subject: [PATCH 11/19] added unit tests --- circle.py | 5 ++- rectangle.py | 5 ++- square.py | 4 ++ tests/config.py | 1 + tests/test_circle.py | 91 ++++++++++++++++++++++++++++++++++++++ tests/test_rectangle.py | 97 +++++++++++++++++++++++++++++++++++++++++ tests/test_square.py | 95 ++++++++++++++++++++++++++++++++++++++++ tests/test_triangle.py | 97 +++++++++++++++++++++++++++++++++++++++++ triangle.py | 5 ++- 9 files changed, 397 insertions(+), 3 deletions(-) create mode 100644 tests/config.py create mode 100644 tests/test_circle.py create mode 100644 tests/test_rectangle.py create mode 100644 tests/test_square.py create mode 100644 tests/test_triangle.py diff --git a/circle.py b/circle.py index aa2f42bcf7..d22c44e59b 100644 --- a/circle.py +++ b/circle.py @@ -13,6 +13,8 @@ def area(r: float) -> float: Пример вызова: s = area(2) # В s запишется 12.56 """ + if r < 0: + raise ValueError("Radius cannot be negative") return math.pi * r * r @@ -28,5 +30,6 @@ def perimeter(r): Пример вызова: p = perimeter(1) # В p запишется 6.28 """ + if r < 0: + raise ValueError("Radius cannot be negative") return 2 * math.pi * r - diff --git a/rectangle.py b/rectangle.py index ff8ed8dc2c..e850fbdf1c 100644 --- a/rectangle.py +++ b/rectangle.py @@ -12,6 +12,8 @@ def area(a: float, b: float) -> float: Пример вызова: s = area(5, 2) # В s запишется 10 """ + if a < 0 or b < 0: + raise ValueError("Sides cannot be negative") return a * b @@ -29,5 +31,6 @@ def perimeter(a: float, b: float) -> float: Пример вызова: p = perimeter(5, 2) # В p запишется 14 """ + if a < 0 or b < 0: + raise ValueError("Sides cannot be negative") return 2 * (a + b) - diff --git a/square.py b/square.py index 38172d6f31..bf6089dd65 100644 --- a/square.py +++ b/square.py @@ -10,6 +10,8 @@ def area(a: float) -> float: Пример вызова: s = area(5) # В s запишется 25 """ + if a < 0: + raise ValueError("Side cannot be negative") return a * a @@ -25,4 +27,6 @@ def perimeter(a: float) -> float: Пример вызова: p = perimeter(5) # В p запишется 20 """ + if a < 0: + raise ValueError("Side cannot be negative") return 4 * a diff --git a/tests/config.py b/tests/config.py new file mode 100644 index 0000000000..23272a9bae --- /dev/null +++ b/tests/config.py @@ -0,0 +1 @@ +MAX_EXECUTION_TIME = 1 # in seconds diff --git a/tests/test_circle.py b/tests/test_circle.py new file mode 100644 index 0000000000..0eeb320e90 --- /dev/null +++ b/tests/test_circle.py @@ -0,0 +1,91 @@ +import unittest +from time import time + +import circle +from config import MAX_EXECUTION_TIME + + +class CircleAreaTest(unittest.TestCase): + test_cases = [ + (1, 3.141592653589793, False), + (2, 12.566370614359172, False), + (9, 254.46900494077323, False), + (0, 0, False), + (8.63, 233.9760819021417, False), + (64926593, 1.3243265954214378e+16, False), + (-1, 0, True), + (-6583.54, 0, True), + ] + + def test_area(self): + for input_radius, expected_output, want_error in self.test_cases: + with self.subTest(input_radius=input_radius, expected_output=expected_output, want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + circle.area(input_radius) + else: + result = circle.area(input_radius) + self.assertEqual(expected_output, result, + f"Circle area test failed: expected {expected_output}, got {result}") + + def test_area_performance(self): + for input_radius, expected_output, want_error in self.test_cases: + with self.subTest(input_radius=input_radius, expected_output=expected_output, want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + circle.area(input_radius) + else: + circle.area(input_radius) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Circle area performance test failed: {execution_time} seconds for " + f"radius={input_radius}") + + +class CirclePerimeterTest(unittest.TestCase): + test_cases = [ + (1, 6.283185307179586, False), + (2, 12.566370614359172, False), + (9, 56.548667764616276, False), + (0, 0, False), + (8.63, 54.22388920095983, False), + (64926593, 407945815.18282896, False), + (-1, 0, True), + (-6583.54, 0, True), + ] + + def test_perimeter(self): + for input_radius, expected_output, want_error in self.test_cases: + with self.subTest(input_radius=input_radius, expected_output=expected_output, want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + circle.perimeter(input_radius) + else: + result = circle.perimeter(input_radius) + self.assertEqual(expected_output, result, + f"Circle perimeter test failed: expected {expected_output}, got {result}") + + def test_perimeter_performance(self): + for input_radius, expected_output, want_error in self.test_cases: + with self.subTest(input_radius=input_radius, expected_output=expected_output, want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + circle.perimeter(input_radius) + else: + circle.perimeter(input_radius) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Circle perimeter performance test failed: {execution_time} seconds for " + f"radius={input_radius}") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_rectangle.py b/tests/test_rectangle.py new file mode 100644 index 0000000000..1ae33fb288 --- /dev/null +++ b/tests/test_rectangle.py @@ -0,0 +1,97 @@ +import unittest +from time import time + +import rectangle +from config import MAX_EXECUTION_TIME + + +class RectangleAreaTest(unittest.TestCase): + test_cases = [ + ((1, 1), 1, False), + ((1, 2), 2, False), + ((9, 12), 108, False), + ((0, 0), 0, False), + ((0, 1), 0, False), + ((8.63, 2.004), 17.294520000000002, False), + ((6492593, 6352642), 41245118980706, False), + ((-3, 5), 0, True), + ((-6583.54, -3), 0, True), + ] + + def test_area(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_b=input_data[1], expected_output=expected_output, + want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + rectangle.area(*input_data) + else: + result = rectangle.area(*input_data) + self.assertEqual(expected_output, result, + f"Rectangle area test failed: expected {expected_output}, got {result}") + + def test_area_performance(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_b=input_data[1], expected_output=expected_output, + want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + rectangle.area(*input_data) + else: + rectangle.area(*input_data) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Rectangle area performance test failed: {execution_time} seconds for " + f"rectangle {input_data}") + + +class RectanglePerimeterTest(unittest.TestCase): + test_cases = [ + ((1, 1), 4, False), + ((1, 2), 6, False), + ((9, 12), 42, False), + ((0, 0), 0, False), + ((0, 1), 2, False), + ((8.63, 2.004), 21.268, False), + ((6492593, 6352642), 25690470, False), + ((-3, 5), 0, True), + ((-6583.54, -3), 0, True), + ] + + def test_perimeter(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_b=input_data[1], expected_output=expected_output, + want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + rectangle.perimeter(*input_data) + else: + result = rectangle.perimeter(*input_data) + self.assertEqual(expected_output, result, + f"Rectangle perimeter test failed: expected {expected_output}, got {result}") + + def test_perimeter_performance(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_b=input_data[1], expected_output=expected_output, + want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + rectangle.perimeter(*input_data) + else: + rectangle.perimeter(*input_data) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Rectangle perimeter performance test failed: {execution_time} seconds for " + f"rectangle {input_data}") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_square.py b/tests/test_square.py new file mode 100644 index 0000000000..01d6dcfec7 --- /dev/null +++ b/tests/test_square.py @@ -0,0 +1,95 @@ +import unittest +from time import time + +import square +from config import MAX_EXECUTION_TIME + + +class SquareAreaTest(unittest.TestCase): + test_cases = [ + (1, 1, False), + (2, 4, False), + (9, 81, False), + (0, 0, False), + (8.63, 74.47690000000001, False), + (6492593, 42153763863649, False), + (-3, 0, True), + (-6583.54, 0, True), + ] + + def test_area(self): + for input_a, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_a, expected_output=expected_output, + want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + square.area(input_a) + else: + result = square.area(input_a) + self.assertEqual(expected_output, result, + f"Square area test failed: expected {expected_output}, got {result}") + + def test_area_performance(self): + for input_a, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_a, expected_output=expected_output, + want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + square.area(input_a) + else: + square.area(input_a) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Square area performance test failed: {execution_time} seconds for " + f"square {input_a}") + + +class SquarePerimeterTest(unittest.TestCase): + test_cases = [ + (1, 4, False), + (2, 8, False), + (9, 36, False), + (0, 0, False), + (8.63, 34.52, False), + (6492593, 25970372, False), + (-3, 0, True), + (-6583.54, 0, True), + ] + + def test_perimeter(self): + for input_a, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_a, expected_output=expected_output, + want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + square.perimeter(input_a) + else: + result = square.perimeter(input_a) + self.assertEqual(expected_output, result, + f"Square perimeter test failed: expected {expected_output}, got {result}") + + def test_perimeter_performance(self): + for input_a, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_a, expected_output=expected_output, + want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + square.perimeter(input_a) + else: + square.perimeter(input_a) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Square perimeter performance test failed: {execution_time} seconds for " + f"square {input_a}") + + +if __name__ == "__main__": + unittest.main() diff --git a/tests/test_triangle.py b/tests/test_triangle.py new file mode 100644 index 0000000000..feb04bad78 --- /dev/null +++ b/tests/test_triangle.py @@ -0,0 +1,97 @@ +import unittest +from time import time + +import triangle +from config import MAX_EXECUTION_TIME + + +class TriangleAreaTest(unittest.TestCase): + test_cases = [ + ((1, 1), 0.5, False), + ((1, 3), 1.5, False), + ((9, 12), 54, False), + ((0, 0), 0, False), + ((0, 1), 0, False), + ((8.63, 2.004), 8.647260000000001, False), + ((6492593, 6352642), 20622559490353.0, False), + ((-3, 5), 0, True), + ((-6583.54, -3), 0, True), + ] + + def test_area(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_h=input_data[1], expected_output=expected_output, + want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + triangle.area(*input_data) + else: + result = triangle.area(*input_data) + self.assertEqual(expected_output, result, + f"Triangle area test failed: expected {expected_output}, got {result}") + + def test_area_performance(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_h=input_data[1], expected_output=expected_output, + want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + triangle.area(*input_data) + else: + triangle.area(*input_data) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Triangle area performance test failed: {execution_time} seconds for " + f"triangle {input_data}") + + +class TrianglePerimeterTest(unittest.TestCase): + test_cases = [ + ((1, 1, 1), 3, False), + ((1, 3, 2), 6, False), + ((9, 12, 2), 23, False), + ((0, 0, 0), 0, False), + ((0, 1, 0), 1, False), + ((8.63, 2.004, 3.01), 13.644, False), + ((6492593, 6352642, 56643), 12901878, False), + ((-3, 5, 3), 0, True), + ((-6583.54, -3, -2), 0, True), + ] + + def test_perimeter(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_b=input_data[1], input_c=input_data[2], + expected_output=expected_output, want_error=want_error): + if want_error: + with self.assertRaises(ValueError): + triangle.perimeter(*input_data) + else: + result = triangle.perimeter(*input_data) + self.assertEqual(expected_output, result, + f"Triangle perimeter test failed: expected {expected_output}, got {result}") + + def test_perimeter_performance(self): + for input_data, expected_output, want_error in self.test_cases: + with self.subTest(input_a=input_data[0], input_b=input_data[1], input_c=input_data[2], + expected_output=expected_output, want_error=want_error): + start_time = time() + + if want_error: + with self.assertRaises(ValueError): + triangle.perimeter(*input_data) + else: + triangle.perimeter(*input_data) + + execution_time = time() - start_time + + self.assertLessEqual(execution_time, MAX_EXECUTION_TIME, + f"Triangle perimeter performance test failed: {execution_time} seconds for " + f"triangle {input_data}") + + +if __name__ == "__main__": + unittest.main() diff --git a/triangle.py b/triangle.py index 76c8dad27d..94c5480d92 100644 --- a/triangle.py +++ b/triangle.py @@ -12,6 +12,8 @@ def area(a: float, h: float) -> float: Пример вызова: s = area(5, 2) # В s запишется 5 """ + if a < 0 or h < 0: + raise ValueError("Side and height cannot be negative") return a * h / 2 @@ -31,5 +33,6 @@ def perimeter(a: float, b: float, c: float) -> float: Пример вызова: p = perimeter(5, 2, 3) # В p запишется 10 """ + if a < 0 or b < 0 or c < 0: + raise ValueError("Sides cannot be negative") return a + b + c - From 7c4dcd28417ed7b7f8a96d9d214a7de4c73fec1a Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Thu, 31 Oct 2024 18:22:04 +0300 Subject: [PATCH 12/19] added project history --- docs/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/README.md b/docs/README.md index 328e247bec..b6b46ed5b2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -222,6 +222,8 @@ | Название | Хеш | Автор | Дата | Описание | |---------------------------------------------------------------------------------------------------------------------------|----------|---------------------------------|------------------|-------------------------------------------| +| [added unit tests](https://github.com/nawinds/geometric_lib/commit/95d2bc138b8b3419dec4b8dabdae9cb4e2b6045b) | 95d2bc13 | Nikita Aksenov | 31/10/2024 17:35 | Добавлены unit тесты | +| [reformatted docs](https://github.com/nawinds/geometric_lib/commit/c6784675fba1dabb1329315164b6c9f867dc3c0c) | c6784675 | Nikita Aksenov | 23/10/2024 09:51 | Изменен формат документации функций | | [project history](https://github.com/nawinds/geometric_lib/commit/2e803c3aec84e69bee0a85c664aa9c1db5579a26) | 2e803c3a | Nikita Aksenov | 23/10/2024 09:46 | Добавлена история проекта | | [circle docs](https://github.com/nawinds/geometric_lib/commit/c067f4fcadc268edf2e97c8c4bfc96fdf246017a) | c067f4fc | Nikita Aksenov | 28/09/2024 09:38 | Добавлена документация для круга | | [triangle docs](https://github.com/nawinds/geometric_lib/commit/27c6ec589b1ecf641de9e38c4bd59f781becc0a0) | 27c6ec58 | Nikita Aksenov | 28/09/2024 09:31 | Добавлена документация для треугольника | From 8754ba84fdf02cf5527143d73dc10949b97775ea Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 19 Nov 2024 13:28:18 +0300 Subject: [PATCH 13/19] main.yml --- .github/workflows/main.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/main.yml diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000000..e006acbff2 --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,37 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - master + - ci_408111 + +jobs: + ubuntu: + name: Ubuntu tests + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Python 3.7 + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Test with unittest + run: | + python -m unittest discover -s tests + windows: + name: Windows tests + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Set up Python 3.7 + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Test with unittest + run: | + python -m unittest discover -s tests \ No newline at end of file From 9a5896bb3b2266ed01a7c73fb61703c2c7234e95 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 19 Nov 2024 13:30:17 +0300 Subject: [PATCH 14/19] branches update --- .github/workflows/main.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e006acbff2..4aa2213107 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,9 +3,7 @@ name: Deploy to GitHub Pages on: push: branches: - - master - - ci_408111 - + - [ci_408111, master] jobs: ubuntu: name: Ubuntu tests From 7451ed637184f1165c0f0b6c558abb9e021e5914 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 19 Nov 2024 13:32:58 +0300 Subject: [PATCH 15/19] workflow refactoring --- .github/workflows/main.yml | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 4aa2213107..dfa90509c7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -3,7 +3,8 @@ name: Deploy to GitHub Pages on: push: branches: - - [ci_408111, master] + - ci_408111 + - master jobs: ubuntu: name: Ubuntu tests @@ -13,12 +14,12 @@ jobs: with: fetch-depth: 0 - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - name: Test with unittest - run: | - python -m unittest discover -s tests + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Test with unittest + run: | + python -m unittest discover -s tests windows: name: Windows tests runs-on: windows-latest @@ -27,9 +28,9 @@ jobs: with: fetch-depth: 0 - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - name: Test with unittest - run: | - python -m unittest discover -s tests \ No newline at end of file + uses: actions/setup-python@v1 + with: + python-version: 3.7 + - name: Test with unittest + run: | + python -m unittest discover -s tests \ No newline at end of file From e884032ba44c6a760ff70bd8f5e8c61132171031 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 19 Nov 2024 13:34:23 +0300 Subject: [PATCH 16/19] workflow renamed --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dfa90509c7..04c199910e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,4 +1,4 @@ -name: Deploy to GitHub Pages +name: Run unittest on: push: From 92b88a73597981137a0d12badf5af84193278318 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 19 Nov 2024 13:34:51 +0300 Subject: [PATCH 17/19] circle tests fail --- circle.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/circle.py b/circle.py index d22c44e59b..61c7d643dc 100644 --- a/circle.py +++ b/circle.py @@ -13,8 +13,9 @@ def area(r: float) -> float: Пример вызова: s = area(2) # В s запишется 12.56 """ - if r < 0: - raise ValueError("Radius cannot be negative") + + # if r < 0: + # raise ValueError("Radius cannot be negative") return math.pi * r * r @@ -30,6 +31,7 @@ def perimeter(r): Пример вызова: p = perimeter(1) # В p запишется 6.28 """ - if r < 0: - raise ValueError("Radius cannot be negative") + + # if r < 0: + # raise ValueError("Radius cannot be negative") return 2 * math.pi * r From 8f13416e458f47952d3858c2834a5863bcd056e9 Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Tue, 19 Nov 2024 13:35:22 +0300 Subject: [PATCH 18/19] circle fix --- circle.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/circle.py b/circle.py index 61c7d643dc..f6d20ee0fa 100644 --- a/circle.py +++ b/circle.py @@ -14,8 +14,8 @@ def area(r: float) -> float: s = area(2) # В s запишется 12.56 """ - # if r < 0: - # raise ValueError("Radius cannot be negative") + if r < 0: + raise ValueError("Radius cannot be negative") return math.pi * r * r @@ -32,6 +32,6 @@ def perimeter(r): p = perimeter(1) # В p запишется 6.28 """ - # if r < 0: - # raise ValueError("Radius cannot be negative") + if r < 0: + raise ValueError("Radius cannot be negative") return 2 * math.pi * r From 2d42d8f35ed9f340ef3ae13197f7156824b3bb5b Mon Sep 17 00:00:00 2001 From: Nikita Aksenov Date: Wed, 20 Nov 2024 11:44:58 +0300 Subject: [PATCH 19/19] avoided reused code --- .github/workflows/main.yml | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 04c199910e..abaa9cd542 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,32 +5,26 @@ on: branches: - ci_408111 - master + jobs: - ubuntu: - name: Ubuntu tests - runs-on: ubuntu-latest + test: + name: Run tests on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + + strategy: + matrix: + os: [ubuntu-latest, windows-latest] + steps: - uses: actions/checkout@v4 with: fetch-depth: 0 + - name: Set up Python 3.7 uses: actions/setup-python@v1 with: python-version: 3.7 + - name: Test with unittest run: | python -m unittest discover -s tests - windows: - name: Windows tests - runs-on: windows-latest - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Set up Python 3.7 - uses: actions/setup-python@v1 - with: - python-version: 3.7 - - name: Test with unittest - run: | - python -m unittest discover -s tests \ No newline at end of file