From 07f1d9298cb6c4bcc16b7166c2f70c429a91dd82 Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk Date: Sun, 20 Oct 2024 23:35:45 +0300 Subject: [PATCH 01/11] docs added --- circle.py | 15 ++++++- docs/README.md | 103 ++++++++++++++++++++++++++++++++++++++++++++++++- rectangle.py | 19 +++++++++ square.py | 15 ++++++- triangle.py | 21 ++++++++++ 5 files changed, 170 insertions(+), 3 deletions(-) create mode 100644 rectangle.py create mode 100644 triangle.py diff --git a/circle.py b/circle.py index c3eb8647c9..720afba87e 100644 --- a/circle.py +++ b/circle.py @@ -2,9 +2,22 @@ def area(r): + ''' + Принимает число r, возвращает площадь круга радиуса r + Code: + print(area(5)) + Output: + 78.53981633974483 + ''' return math.pi * r * r def perimeter(r): + ''' + Принимает число r, возвращает периметр круга радиуса r + Code: + print(perimeter(5)) + Output: + 31.41592653589793 + ''' return 2 * math.pi * r - diff --git a/docs/README.md b/docs/README.md index 63f8727939..0df2e03e37 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,4 +7,105 @@ ## Perimeter - Circle: P = 2πR - Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +- Square: P = 4a + +# Документация + +## Общее описание решения: + +Проект позволяет находить периметр и площадь с помощью вызова функций, +реализовано нахождение данных значений для 4 фигур: круг, треугольник, +квадрат, прямоугольник + +## Файл + +### circle.py + +#### area(r) + +Принимает число r, возвращает площадь круга радиуса r +``` +Code: +print(area(5)) +Output: +78.53981633974483 +``` + +#### perimeter(r) + +Принимает число r, возвращает периметр круга радиуса r +``` +Code: +print(perimeter(5)) +Output: +31.41592653589793 +``` + +### rectangle.py + +#### area(a, b) + +Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b +``` +Code: +print(area(4, 6)) +Output: +24 +``` + +#### perimeter(a, b) + +Принимает число r, возвращает периметр круга радиуса r +``` +Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b +Code: +print(perimeter(4, 6)) +Output: +20 +``` + +### square.py + +#### area(a) + +Принимает число a, возвращает площадь квадрата со стороной a +``` +Code: +print(area(5)) +Output: +25 +``` + +#### perimeter(a) + +Принимает число a, возвращает периметр квадрата со стороной a +``` +Code: +print(perimeter(5)) +Output: +20 +``` + +### triangle.py + +#### area(a, h) + +Принимает числа a и h, возвращает площадь треугольника с +основанием a и высотой h +``` +Code: +print(area(4, 7)) +Output: +14.0 +``` + +#### perimeter(a, b, c) + +Принимает числа a, b и c, возвращает периметр треугольника со + сторонами a, b и c +``` +Code: +print(perimeter(2, 3, 4)) +Output: +9 +``` diff --git a/rectangle.py b/rectangle.py new file mode 100644 index 0000000000..3cc9f22bdf --- /dev/null +++ b/rectangle.py @@ -0,0 +1,19 @@ +def area(a, b): + ''' + Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b + Code: + print(area(4, 6)) + Output: + 24 + ''' + return a * b + +def perimeter(a, b): + ''' + Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b + Code: + print(perimeter(4, 6)) + Output: + 20 + ''' + return a * 2 + b * 2 diff --git a/square.py b/square.py index 0f98724205..c5fa93ad10 100644 --- a/square.py +++ b/square.py @@ -1,7 +1,20 @@ - def area(a): + ''' + Принимает число a, возвращает площадь квадрата со стороной a + Code: + print(area(5)) + Output: + 25 + ''' return a * a def perimeter(a): + ''' + Принимает число a, возвращает периметр квадрата со стороной a + Code: + print(perimeter(5)) + Output: + 20 + ''' return 4 * a diff --git a/triangle.py b/triangle.py new file mode 100644 index 0000000000..232de2d2b8 --- /dev/null +++ b/triangle.py @@ -0,0 +1,21 @@ +def area(a, h): + ''' + Принимает числа a и h, возвращает площадь треугольника с + основанием a и высотой h + Code: + print(area(4, 7)) + Output: + 14.0 + ''' + return a * h / 2 + +def perimeter(a, b, c): + ''' + Принимает числа a, b и c, возвращает периметр треугольника со + сторонами a, b и c + Code: + print(perimeter(2, 3, 4)) + Output: + 9 + ''' + return a + b + c From 3b54ea241ce04badd11f6b181f0ebcc742c8fdbc Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk Date: Sun, 20 Oct 2024 23:41:01 +0300 Subject: [PATCH 02/11] docs test changes --- docs/README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index 0df2e03e37..854810e6f8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -35,9 +35,9 @@ Output: Принимает число r, возвращает периметр круга радиуса r ``` -Code: print(perimeter(5)) -Output: +``` +``` 31.41592653589793 ``` @@ -55,9 +55,8 @@ Output: #### perimeter(a, b) -Принимает число r, возвращает периметр круга радиуса r -``` Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b +``` Code: print(perimeter(4, 6)) Output: From 4725de9d0d23c29b39be5c8dbc6671b91b8cd47e Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk Date: Sun, 20 Oct 2024 23:44:08 +0300 Subject: [PATCH 03/11] docs changes --- docs/README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/README.md b/docs/README.md index 854810e6f8..316969d354 100644 --- a/docs/README.md +++ b/docs/README.md @@ -25,9 +25,9 @@ Принимает число r, возвращает площадь круга радиуса r ``` -Code: print(area(5)) -Output: +``` +``` 78.53981633974483 ``` @@ -47,9 +47,9 @@ print(perimeter(5)) Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b ``` -Code: print(area(4, 6)) -Output: +``` +``` 24 ``` @@ -57,9 +57,9 @@ Output: Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b ``` -Code: print(perimeter(4, 6)) -Output: +``` +``` 20 ``` @@ -69,9 +69,9 @@ Output: Принимает число a, возвращает площадь квадрата со стороной a ``` -Code: print(area(5)) -Output: +``` +``` 25 ``` @@ -79,9 +79,9 @@ Output: Принимает число a, возвращает периметр квадрата со стороной a ``` -Code: print(perimeter(5)) -Output: +``` +``` 20 ``` @@ -92,9 +92,9 @@ Output: Принимает числа a и h, возвращает площадь треугольника с основанием a и высотой h ``` -Code: print(area(4, 7)) -Output: +``` +``` 14.0 ``` @@ -103,8 +103,8 @@ Output: Принимает числа a, b и c, возвращает периметр треугольника со сторонами a, b и c ``` -Code: print(perimeter(2, 3, 4)) -Output: +``` +``` 9 ``` From 0b810f788c69c937512f7d1bff93f9e40b35fe85 Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk Date: Sat, 2 Nov 2024 22:31:57 +0300 Subject: [PATCH 04/11] unittests update --- circle.py | 41 +++++++++++++++++++++++++++++++++++++++++ docs/README.md | 5 +++++ rectangle.py | 42 ++++++++++++++++++++++++++++++++++++++++++ square.py | 41 +++++++++++++++++++++++++++++++++++++++++ triangle.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 172 insertions(+) diff --git a/circle.py b/circle.py index 720afba87e..4709ee0897 100644 --- a/circle.py +++ b/circle.py @@ -1,4 +1,5 @@ import math +import unittest def area(r): @@ -9,6 +10,10 @@ def area(r): Output: 78.53981633974483 ''' + try: + r = int(r) + except ValueError: + return ValueError return math.pi * r * r @@ -20,4 +25,40 @@ def perimeter(r): Output: 31.41592653589793 ''' + try: + r = int(r) + except ValueError: + return ValueError return 2 * math.pi * r + +class CircleTestCase(unittest.TestCase): + def test_area1(self): + d = area(5) - 3.14 * 5 * 5 + self.assertEqual(d <= 0.1, True) + self.success_message("area(5)", str(area(5))) + + def test_area2(self): + self.assertEqual(area("r"), ValueError) + self.success_message("area(\"r\")", str(area("r"))) + + def test_area3(self): + d = area("4") - 3.14 * 5 * 5 + self.assertEqual(d <= 0.1, True) + self.success_message("area(\"4\")", str(area("4"))) + + def test_perimeter1(self): + d = perimeter(5) - 3.14 * 5 * 2 + self.assertEqual(d <= 0.1, True) + self.success_message("perimeter(5)", str(perimeter(5))) + + def test_perimeter2(self): + self.assertEqual(perimeter("r"), ValueError) + self.success_message("perimeter(\"r\")", str(perimeter("r"))) + + def test_perimeter3(self): + d = perimeter("4") - 3.14 * 5 * 2 + self.assertEqual(d <= 0.1, True) + self.success_message("perimeter(\"4\")", str(perimeter("4"))) + + def success_message(self, func, output): + print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) diff --git a/docs/README.md b/docs/README.md index 316969d354..fff34483e0 100644 --- a/docs/README.md +++ b/docs/README.md @@ -108,3 +108,8 @@ print(perimeter(2, 3, 4)) ``` 9 ``` + + +# Тесты + +Для каждой функции написаны unit-тесты, они проверяют коректность работы функций с числами и строками \ No newline at end of file diff --git a/rectangle.py b/rectangle.py index 3cc9f22bdf..e1a76ca3cd 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,3 +1,6 @@ +import unittest + + def area(a, b): ''' Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b @@ -6,6 +9,11 @@ def area(a, b): Output: 24 ''' + try: + a = int(a) + b = int(b) + except ValueError: + return ValueError return a * b def perimeter(a, b): @@ -16,4 +24,38 @@ def perimeter(a, b): Output: 20 ''' + try: + a = int(a) + b = int(b) + except ValueError: + return ValueError return a * 2 + b * 2 + + +class RectangleTestCase(unittest.TestCase): + def test_area1(self): + self.assertEqual(area(5, 4), 20) + self.success_message("area(5, 4)", 20) + + def test_area2(self): + self.assertEqual(area("r", 3), ValueError) + self.success_message("area(\"r\", 3)", ValueError) + + def test_area3(self): + self.assertEqual(area("5", "2"), 10) + self.success_message("area(\"5\", \"2\")", 10) + + def test_perimeter1(self): + self.assertEqual(perimeter(3, 4), 14) + self.success_message("perimeter(3, 4)", 14) + + def test_perimeter2(self): + self.assertEqual(perimeter(3, "abacaba"), ValueError) + self.success_message("perimeter(3, \"abacaba\")", ValueError) + + def test_perimeter3(self): + self.assertEqual(perimeter("5", 6), 22) + self.success_message("perimeter(\"5\", 6)", 22) + + def success_message(self, func, output): + print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) \ No newline at end of file diff --git a/square.py b/square.py index c5fa93ad10..6c14ca3d60 100644 --- a/square.py +++ b/square.py @@ -1,3 +1,6 @@ +import unittest + + def area(a): ''' Принимает число a, возвращает площадь квадрата со стороной a @@ -6,6 +9,10 @@ def area(a): Output: 25 ''' + try: + a = int(a) + except ValueError: + return ValueError return a * a @@ -17,4 +24,38 @@ def perimeter(a): Output: 20 ''' + try: + a = int(a) + except ValueError: + return ValueError return 4 * a + + + +class SquareTestCase(unittest.TestCase): + def test_area1(self): + self.assertEqual(area(4), 16) + self.success_message("area(4)", 16) + + def test_area2(self): + self.assertEqual(area("aba"), ValueError) + self.success_message("area(\"aba\")", ValueError) + + def test_area3(self): + self.assertEqual(area("5"), 25) + self.success_message("area(\"5\")", 25) + + def test_perimeter1(self): + self.assertEqual(perimeter(3), 12) + self.success_message("perimeter(3)", 12) + + def test_perimeter2(self): + self.assertEqual(perimeter("rrr"), ValueError) + self.success_message("perimeter(\"rrr\")", ValueError) + + def test_perimeter3(self): + self.assertEqual(perimeter("8"), 32) + self.success_message("perimeter(\"8\")", 32) + + def success_message(self, func, output): + print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) \ No newline at end of file diff --git a/triangle.py b/triangle.py index 232de2d2b8..e849133a0b 100644 --- a/triangle.py +++ b/triangle.py @@ -1,3 +1,6 @@ +import unittest + + def area(a, h): ''' Принимает числа a и h, возвращает площадь треугольника с @@ -7,6 +10,11 @@ def area(a, h): Output: 14.0 ''' + try: + a = int(a) + h = int(h) + except ValueError: + return ValueError return a * h / 2 def perimeter(a, b, c): @@ -18,4 +26,39 @@ def perimeter(a, b, c): Output: 9 ''' + try: + a = int(a) + b = int(b) + c = int(c) + except ValueError: + return ValueError return a + b + c + + +class RectangleTestCase(unittest.TestCase): + def test_area1(self): + self.assertEqual(area(5, 4), 10) + self.success_message("area(5, 4)", 10) + + def test_area2(self): + self.assertEqual(area("b", "a"), ValueError) + self.success_message("area(\"b\", \"a\")", ValueError) + + def test_area3(self): + self.assertEqual(area("5", 2), 5) + self.success_message("area(\"5\", 2)", 5) + + def test_perimeter1(self): + self.assertEqual(perimeter(3, 4, 5), 12) + self.success_message("perimeter(3, 4, 5)", 12) + + def test_perimeter2(self): + self.assertEqual(perimeter("a", 5, "c"), ValueError) + self.success_message("perimeter(\"a\", 5, \"c\")", ValueError) + + def test_perimeter3(self): + self.assertEqual(perimeter("6", "7", 8), 21) + self.success_message("perimeter(\"6\", \"7\", 8)", 21) + + def success_message(self, func, output): + print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) \ No newline at end of file From 170c5d27c6708087ff224975c48c725c249b7d94 Mon Sep 17 00:00:00 2001 From: ITIP Student Date: Wed, 6 Nov 2024 09:26:30 +0300 Subject: [PATCH 05/11] docs changes --- docs/README.md | 122 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 63f8727939..66fbe8dc33 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,4 +7,124 @@ ## Perimeter - Circle: P = 2πR - Rectangle: P = 2a + 2b -- Square: P = 4a \ No newline at end of file +- Square: P = 4a + +# Документация + +## Общее описание решения: + +Проект позволяет находить периметр и площадь с помощью вызова функций, +реализовано нахождение данных значений для 4 фигур: круг, треугольник, +квадрат, прямоугольник + +## Файлы + +### circle.py + +#### area(r) + +Принимает число r, возвращает площадь круга радиуса r +``` +print(area(5)) +``` +``` +78.53981633974483 +``` + +#### perimeter(r) + +Принимает число r, возвращает периметр круга радиуса r +``` +print(perimeter(5)) +``` +``` +31.41592653589793 +``` + +### rectangle.py + +#### area(a, b) + +Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b +``` +print(area(4, 6)) +``` +``` +24 +``` + +#### perimeter(a, b) + +Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b +``` +print(perimeter(4, 6)) +``` +``` +20 +``` + +### square.py + +#### area(a) + +Принимает число a, возвращает площадь квадрата со стороной a +``` +print(area(5)) +``` +``` +25 +``` + +#### perimeter(a) + +Принимает число a, возвращает периметр квадрата со стороной a +``` +print(perimeter(5)) +``` +``` +20 +``` + +### triangle.py + +#### area(a, h) + +Принимает числа a и h, возвращает площадь треугольника с +основанием a и высотой h +``` +print(area(4, 7)) +``` +``` +14.0 +``` + +#### perimeter(a, b, c) + +Принимает числа a, b и c, возвращает периметр треугольника со + сторонами a, b и c +``` +print(perimeter(2, 3, 4)) +``` +``` +9 +``` + +# История коммитов + +## added rectangle.py 10b192c8fd3375d5185b71e56eff11adccb18364 + +Добавление файла rectangle.py + +## added triangle.py and fixed rectangle.py 568286ec992d78fb8a6bf267ad9c1a1ad91efdf6 + +Добавление triangle.py и исправление ошибки в rectangle.py + +# Тесты + +Для каждой функции написаны unit-тесты, они проверяют коректность работы функций с числами и строками + +## Требования: + +- Поддержка работы со строками, которые можно перевести в числа, возвращать ошибку в противном случаи +- Работа с любыми типами числами (int, float) +- Корректность вычислений площадей, периметров с точностью до одного знака после запятой From 241ceec68b36031d0080887f706753506451a78c Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk <64899710+Matvey-Serdyuk@users.noreply.github.com> Date: Wed, 6 Nov 2024 09:35:25 +0300 Subject: [PATCH 06/11] Add files via upload --- docs/README.md | 253 +++++++++++++++++++++++++++---------------------- 1 file changed, 138 insertions(+), 115 deletions(-) diff --git a/docs/README.md b/docs/README.md index fff34483e0..8ea5cf48af 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,115 +1,138 @@ -# Math formulas -## Area -- Circle: S = πR² -- Rectangle: S = ab -- Square: S = a² - -## Perimeter -- Circle: P = 2πR -- Rectangle: P = 2a + 2b -- Square: P = 4a - -# Документация - -## Общее описание решения: - -Проект позволяет находить периметр и площадь с помощью вызова функций, -реализовано нахождение данных значений для 4 фигур: круг, треугольник, -квадрат, прямоугольник - -## Файл - -### circle.py - -#### area(r) - -Принимает число r, возвращает площадь круга радиуса r -``` -print(area(5)) -``` -``` -78.53981633974483 -``` - -#### perimeter(r) - -Принимает число r, возвращает периметр круга радиуса r -``` -print(perimeter(5)) -``` -``` -31.41592653589793 -``` - -### rectangle.py - -#### area(a, b) - -Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b -``` -print(area(4, 6)) -``` -``` -24 -``` - -#### perimeter(a, b) - -Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b -``` -print(perimeter(4, 6)) -``` -``` -20 -``` - -### square.py - -#### area(a) - -Принимает число a, возвращает площадь квадрата со стороной a -``` -print(area(5)) -``` -``` -25 -``` - -#### perimeter(a) - -Принимает число a, возвращает периметр квадрата со стороной a -``` -print(perimeter(5)) -``` -``` -20 -``` - -### triangle.py - -#### area(a, h) - -Принимает числа a и h, возвращает площадь треугольника с -основанием a и высотой h -``` -print(area(4, 7)) -``` -``` -14.0 -``` - -#### perimeter(a, b, c) - -Принимает числа a, b и c, возвращает периметр треугольника со - сторонами a, b и c -``` -print(perimeter(2, 3, 4)) -``` -``` -9 -``` - - -# Тесты - -Для каждой функции написаны unit-тесты, они проверяют коректность работы функций с числами и строками \ No newline at end of file +# Math formulas +## Area +- Circle: S = πR² +- Rectangle: S = ab +- Square: S = a² + +## Perimeter +- Circle: P = 2πR +- Rectangle: P = 2a + 2b +- Square: P = 4a + +# Документация + +## Общее описание решения: + +Проект позволяет находить периметр и площадь с помощью вызова функций, +реализовано нахождение данных значений для 4 фигур: круг, треугольник, +квадрат, прямоугольник + +## Файлы + +### circle.py + +#### area(r) + +Принимает число r, возвращает площадь круга радиуса r +``` +print(area(5)) +``` +``` +78.53981633974483 +``` + +#### perimeter(r) + +Принимает число r, возвращает периметр круга радиуса r +``` +print(perimeter(5)) +``` +``` +31.41592653589793 +``` + +### rectangle.py + +#### area(a, b) + +Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b +``` +print(area(4, 6)) +``` +``` +24 +``` + +#### perimeter(a, b) + +Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b +``` +print(perimeter(4, 6)) +``` +``` +20 +``` + +### square.py + +#### area(a) + +Принимает число a, возвращает площадь квадрата со стороной a +``` +print(area(5)) +``` +``` +25 +``` + +#### perimeter(a) + +Принимает число a, возвращает периметр квадрата со стороной a +``` +print(perimeter(5)) +``` +``` +20 +``` + +### triangle.py + +#### area(a, h) + +Принимает числа a и h, возвращает площадь треугольника с +основанием a и высотой h +``` +print(area(4, 7)) +``` +``` +14.0 +``` + +#### perimeter(a, b, c) + +Принимает числа a, b и c, возвращает периметр треугольника со + сторонами a, b и c +``` +print(perimeter(2, 3, 4)) +``` +``` +9 +``` + +# История коммитов + +## added rectangle.py + +``` +10b192c8fd3375d5185b71e56eff11adccb18364 +``` + +Добавление файла rectangle.py + +## added triangle.py and fixed rectangle.py + +``` +568286ec992d78fb8a6bf267ad9c1a1ad91efdf6 +``` + +Добавление triangle.py и исправление ошибки в rectangle.py + +# Тесты + +Для каждой функции написаны unit-тесты, они проверяют коректность работы функций с числами и строками + +## Требования: + +- Поддержка работы со строками, которые можно перевести в числа, возвращать ошибку в противном случаи +- Работа с любыми типами числами (int, float) +- Корректность вычислений площадей, периметров с точностью до одного знака после запятой From c51b202ec90ed6ba81ae33a4a73d84e84898ca21 Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk <64899710+Matvey-Serdyuk@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:02:25 +0500 Subject: [PATCH 07/11] python tests.yml --- .github/workflows/python-package.yml | 43 ++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 .github/workflows/python-package.yml diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml new file mode 100644 index 0000000000..f81151de7d --- /dev/null +++ b/.github/workflows/python-package.yml @@ -0,0 +1,43 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python + +name: python test + +on: + push: + branches: [ "main", "labwork2_docs" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + python -m unittest rectangle.py + python -m unittest circle.py + python -m unittest square.py + python -m unittest triangle.py From 50d29b3e74780b83c44999166506f54ada3480c1 Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk <64899710+Matvey-Serdyuk@users.noreply.github.com> Date: Wed, 20 Nov 2024 11:34:44 +0500 Subject: [PATCH 08/11] Update README.md --- docs/README.md | 131 ------------------------------------------------- 1 file changed, 131 deletions(-) diff --git a/docs/README.md b/docs/README.md index 93bfe0387b..8ea5cf48af 100644 --- a/docs/README.md +++ b/docs/README.md @@ -136,134 +136,3 @@ print(perimeter(2, 3, 4)) - Поддержка работы со строками, которые можно перевести в числа, возвращать ошибку в противном случаи - Работа с любыми типами числами (int, float) - Корректность вычислений площадей, периметров с точностью до одного знака после запятой -======= -# Math formulas -## Area -- Circle: S = πR² -- Rectangle: S = ab -- Square: S = a² - -## Perimeter -- Circle: P = 2πR -- Rectangle: P = 2a + 2b -- Square: P = 4a - -# Документация - -## Общее описание решения: - -Проект позволяет находить периметр и площадь с помощью вызова функций, -реализовано нахождение данных значений для 4 фигур: круг, треугольник, -квадрат, прямоугольник - -## Файлы - -### circle.py - -#### area(r) - -Принимает число r, возвращает площадь круга радиуса r -``` -print(area(5)) -``` -``` -78.53981633974483 -``` - -#### perimeter(r) - -Принимает число r, возвращает периметр круга радиуса r -``` -print(perimeter(5)) -``` -``` -31.41592653589793 -``` - -### rectangle.py - -#### area(a, b) - -Принимает числа a и b, возвращает площадь прямоугольника со сторонами a и b -``` -print(area(4, 6)) -``` -``` -24 -``` - -#### perimeter(a, b) - -Принимает числа a и b, возвращает периметр прямоугольника со сторонами a и b -``` -print(perimeter(4, 6)) -``` -``` -20 -``` - -### square.py - -#### area(a) - -Принимает число a, возвращает площадь квадрата со стороной a -``` -print(area(5)) -``` -``` -25 -``` - -#### perimeter(a) - -Принимает число a, возвращает периметр квадрата со стороной a -``` -print(perimeter(5)) -``` -``` -20 -``` - -### triangle.py - -#### area(a, h) - -Принимает числа a и h, возвращает площадь треугольника с -основанием a и высотой h -``` -print(area(4, 7)) -``` -``` -14.0 -``` - -#### perimeter(a, b, c) - -Принимает числа a, b и c, возвращает периметр треугольника со - сторонами a, b и c -``` -print(perimeter(2, 3, 4)) -``` -``` -9 -``` - -# История коммитов - -## added rectangle.py 10b192c8fd3375d5185b71e56eff11adccb18364 - -Добавление файла rectangle.py - -## added triangle.py and fixed rectangle.py 568286ec992d78fb8a6bf267ad9c1a1ad91efdf6 - -Добавление triangle.py и исправление ошибки в rectangle.py - -# Тесты - -Для каждой функции написаны unit-тесты, они проверяют коректность работы функций с числами и строками - -## Требования: - -- Поддержка работы со строками, которые можно перевести в числа, возвращать ошибку в противном случаи -- Работа с любыми типами числами (int, float) -- Корректность вычислений площадей, периметров с точностью до одного знака после запятой From e4abeed18e160cd6ec064113d4facd180f1f5f5b Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk <64899710+Matvey-Serdyuk@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:36:04 +0500 Subject: [PATCH 09/11] Update and rename python-package.yml to python_tests.yml --- .../{python-package.yml => python_tests.yml} | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) rename .github/workflows/{python-package.yml => python_tests.yml} (55%) diff --git a/.github/workflows/python-package.yml b/.github/workflows/python_tests.yml similarity index 55% rename from .github/workflows/python-package.yml rename to .github/workflows/python_tests.yml index f81151de7d..f98eab8444 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python_tests.yml @@ -10,8 +10,7 @@ on: branches: [ "main" ] jobs: - build: - + test_with_ubuntu: runs-on: ubuntu-latest strategy: fail-fast: false @@ -41,3 +40,34 @@ jobs: python -m unittest circle.py python -m unittest square.py python -m unittest triangle.py + + test_with_windows-latest: + runs-on: windows-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11"] + + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install flake8 pytest + if [ -f requirements.txt ]; then pip install -r requirements.txt; fi + - name: Lint with flake8 + run: | + # stop the build if there are Python syntax errors or undefined names + flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics + # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide + flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + - name: Test with pytest + run: | + python -m unittest rectangle.py + python -m unittest circle.py + python -m unittest square.py + python -m unittest triangle.py From 663380e737c86aca1e03f337bf1aca1f89c029a4 Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk <64899710+Matvey-Serdyuk@users.noreply.github.com> Date: Tue, 3 Dec 2024 13:38:10 +0500 Subject: [PATCH 10/11] Update python_tests.yml --- .github/workflows/python_tests.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/python_tests.yml b/.github/workflows/python_tests.yml index f98eab8444..c20102373f 100644 --- a/.github/workflows/python_tests.yml +++ b/.github/workflows/python_tests.yml @@ -58,7 +58,6 @@ jobs: run: | python -m pip install --upgrade pip python -m pip install flake8 pytest - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - name: Lint with flake8 run: | # stop the build if there are Python syntax errors or undefined names From 5ca763ef67a3b2035522fd4012226fb4467099e6 Mon Sep 17 00:00:00 2001 From: Matvey-Serdyuk Date: Tue, 3 Dec 2024 12:31:22 +0300 Subject: [PATCH 11/11] tests success message changes --- circle.py | 6 +++++- rectangle.py | 7 ++++++- square.py | 7 ++++++- triangle.py | 7 ++++++- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/circle.py b/circle.py index 4709ee0897..a47a987442 100644 --- a/circle.py +++ b/circle.py @@ -1,5 +1,6 @@ import math import unittest +import datetime def area(r): @@ -61,4 +62,7 @@ def test_perimeter3(self): self.success_message("perimeter(\"4\")", str(perimeter("4"))) def success_message(self, func, output): - print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) + print(datetime.datetime.now().strftime('%d-%m-%Y'), end=" ") + print(datetime.datetime.now().time().isoformat()[:8], end=": ") + print(self._testMethodName + + " passed => " + str(func) + " >> " + str(output)) diff --git a/rectangle.py b/rectangle.py index e1a76ca3cd..15d7ceaf9a 100644 --- a/rectangle.py +++ b/rectangle.py @@ -1,4 +1,6 @@ import unittest +import unittest +import datetime def area(a, b): @@ -58,4 +60,7 @@ def test_perimeter3(self): self.success_message("perimeter(\"5\", 6)", 22) def success_message(self, func, output): - print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) \ No newline at end of file + print(datetime.datetime.now().strftime('%d-%m-%Y'), end=" ") + print(datetime.datetime.now().time().isoformat()[:8], end=": ") + print(self._testMethodName + + " passed => " + str(func) + " >> " + str(output)) \ No newline at end of file diff --git a/square.py b/square.py index 6c14ca3d60..b25e4c393b 100644 --- a/square.py +++ b/square.py @@ -1,4 +1,6 @@ import unittest +import unittest +import datetime def area(a): @@ -58,4 +60,7 @@ def test_perimeter3(self): self.success_message("perimeter(\"8\")", 32) def success_message(self, func, output): - print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) \ No newline at end of file + print(datetime.datetime.now().strftime('%d-%m-%Y'), end=" ") + print(datetime.datetime.now().time().isoformat()[:8], end=": ") + print(self._testMethodName + + " passed => " + str(func) + " >> " + str(output)) \ No newline at end of file diff --git a/triangle.py b/triangle.py index e849133a0b..46b82f4dd6 100644 --- a/triangle.py +++ b/triangle.py @@ -1,4 +1,6 @@ import unittest +import unittest +import datetime def area(a, h): @@ -61,4 +63,7 @@ def test_perimeter3(self): self.success_message("perimeter(\"6\", \"7\", 8)", 21) def success_message(self, func, output): - print(self._testMethodName + " passed >> " + str(func) + " >> " + str(output)) \ No newline at end of file + print(datetime.datetime.now().strftime('%d-%m-%Y'), end=" ") + print(datetime.datetime.now().time().isoformat()[:8], end=": ") + print(self._testMethodName + + " passed => " + str(func) + " >> " + str(output)) \ No newline at end of file