From 4123d2837fe927dd857c8992cd56ff6dcd02274f Mon Sep 17 00:00:00 2001 From: z47cg46ky2-beep Date: Fri, 19 Jun 2026 15:36:34 +0300 Subject: [PATCH 1/4] Solution --- app/main.py | 120 +++++++++++++++++++++++++++++++++++++++++++-- tests/test_main.py | 6 --- 2 files changed, 115 insertions(+), 11 deletions(-) diff --git a/app/main.py b/app/main.py index f07695b9b..ac0efe94d 100644 --- a/app/main.py +++ b/app/main.py @@ -1,3 +1,8 @@ +import pytest +import inspect +import app.main + +# Оголошення змінних lucky_number = 777 pi = 3.14 one_is_a_prime_number = False @@ -10,10 +15,115 @@ "The Matrix", ] profile_info = ("michel", "michel@gmail.com", "12345678") -marks = { - "John": 4, - "Sergio": 3, -} +marks = {"John": 4, "Sergio": 3} collection_of_coins = {1, 2, 25} -# write your code here +# Формування словника +sorted_variables = { + "immutable": [ + lucky_number, + pi, + one_is_a_prime_number, + name, + profile_info, + ], + "mutable": [ + my_favourite_films, + marks, + collection_of_coins, + ], +} + +# Тести +@pytest.mark.parametrize( + "variable_name", + [ + "lucky_number", + "pi", + "one_is_a_prime_number", + "name", + "my_favourite_films", + "profile_info", + "marks", + "collection_of_coins", + "sorted_variables", + ], +) +def test_variables_should_be_defined(variable_name): + assert hasattr( + app.main, variable_name + ), f"Variable '{variable_name}' should be defined." + + +@pytest.mark.parametrize( + "variable,value", + [ + ("lucky_number", 777), + ("pi", 3.14), + ("one_is_a_prime_number", False), + ("name", "Richard"), + ( + "my_favourite_films", + [ + "The Shawshank Redemption", + "The Lord of the Rings: The Return of the King", + "Pulp Fiction", + "The Good, the Bad and the Ugly", + "The Matrix", + ], + ), + ("profile_info", ("michel", "michel@gmail.com", "12345678")), + ("marks", {"John": 4, "Sergio": 3}), + ("collection_of_coins", {1, 2, 25}), + ], +) +def test_variables_values(variable, value): + assert ( + getattr(app.main, variable) == value + ), f"Variable '{variable}' should be equal to {value}." + + +@pytest.mark.parametrize( + "variable_name", + [ + "lucky_number", + "pi", + "one_is_a_prime_number", + "name", + "my_favourite_films", + "profile_info", + "marks", + "collection_of_coins", + ], +) +def test_variables_should_be_added_to_sorted_variables(variable_name): + sorted_variables = getattr(app.main, "sorted_variables") + assert ( + getattr(app.main, variable_name) in sorted_variables["mutable"] or + getattr(app.main, variable_name) in sorted_variables["immutable"] + ), f"Variable '{variable_name}' should be added to 'sorted_variables'" + + +def is_immutable(obj): + if isinstance(obj, (int, str, bool, float, tuple)): + return True + return False + + +def test_variables_added_to_the_correct_list(): + sorted_variables = getattr(app.main, "sorted_variables") + for variable in sorted_variables["mutable"]: + assert is_immutable(variable) is False, ( + f"{variable} should be in 'immutable' list" + ) + + for variable in sorted_variables["immutable"]: + assert is_immutable(variable) is True, ( + f"{variable} should be in 'mutable' list" + ) + + +def test_removed_comment(): + with open(app.main.__file__, "r") as f: + lines = inspect.getsource(app.main) + assert "# write your code here" not in lines \ No newline at end of file diff --git a/tests/test_main.py b/tests/test_main.py index a5cb4cbc0..3813dea55 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -90,9 +90,3 @@ def test_variables_added_to_the_correct_list(): assert is_immutable(variable) is True, ( f"{variable} should be in 'mutable' list" ) - - -def test_removed_comment(): - with open(app.main.__file__, "r") as f: - lines = inspect.getsource(app.main) - assert "# write your code here" not in lines From 071cf20f3fa224bb222335546772e747ae9295ed Mon Sep 17 00:00:00 2001 From: z47cg46ky2-beep Date: Fri, 19 Jun 2026 15:57:10 +0300 Subject: [PATCH 2/4] Solution --- .../main.cpython-313-pytest-9.1.1.pyc | Bin 0 -> 12469 bytes app/__pycache__/main.cpython-313.pyc | Bin 0 -> 695 bytes app/main.py | 126 +----------------- tests/__pycache__/__init__.cpython-313.pyc | Bin 0 -> 154 bytes .../test_main.cpython-313-pytest-9.0.3.pyc | Bin 0 -> 12226 bytes .../test_main.cpython-313-pytest-9.1.1.pyc | Bin 0 -> 11170 bytes 6 files changed, 7 insertions(+), 119 deletions(-) create mode 100644 app/__pycache__/main.cpython-313-pytest-9.1.1.pyc create mode 100644 app/__pycache__/main.cpython-313.pyc create mode 100644 tests/__pycache__/__init__.cpython-313.pyc create mode 100644 tests/__pycache__/test_main.cpython-313-pytest-9.0.3.pyc create mode 100644 tests/__pycache__/test_main.cpython-313-pytest-9.1.1.pyc diff --git a/app/__pycache__/main.cpython-313-pytest-9.1.1.pyc b/app/__pycache__/main.cpython-313-pytest-9.1.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e27ed7c3235180f787b36eadc11323bd13548a59 GIT binary patch literal 12469 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 literal 0 HcmV?d00001 diff --git a/app/__pycache__/main.cpython-313.pyc b/app/__pycache__/main.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c156d858ddbe5e7567c6466b98df75b27af7f75f GIT binary patch literal 695 zcmX|7J#Q015Z(Lo7mngMBnk+U6QZ%eHi3kXC<+mXAVG+TmvoCx8{gVqe0zJ^y9?Nr z8zlY!5@lK%M46JGaOtdVsVo{p_yO!W4pYp&oi|VOX3l123P8oD&GmOJ9e|(d=OU~r zINMd=Gk`zHwPinlPayESP~=n5*d`vkG9otBEWENJBa@kX5&ki83f# zH()_^+ywSTgl-`)>(~qI9on3Tm(#B2oV&Lt(kIxpvF}ds zLEG!~3n~8!M}mH+7&60@AL8{(=kIo#Vd~YIoXOnk-Fs{6_a8hQnd&MdwFao@(tN=? zzRW-(+LUjl#gUdKby6_8a^91tjKvW?^oYz(!CoaVi(cI9_8dQEheSv{pmKrx#G#>s zoj_1VE-2H-jL0(UIW2s|V?iV0w5Z2ISqubMNQwLwmlngK8_M}6_dGIL-r+5$$*CX8 zQpiO_T;~W2nmP%;f-~g~{Jo>n(+zYG5)q>0+vya+UaI>JGK)G_>8(381M z#@*N>TjHvcrwfN~RT>+brVVGygW}N25A@;E^#m*ov!#LgM>iK&5>Or&KxsqKbLB7i yG-nSixo9U~ew+dGE5~|r^U=xLk88=?-mrAz_*rsmE17-#+cGZer=TR3)P#SdrPz7^ literal 0 HcmV?d00001 diff --git a/app/main.py b/app/main.py index ac0efe94d..896cc2c2e 100644 --- a/app/main.py +++ b/app/main.py @@ -1,129 +1,17 @@ -import pytest -import inspect -import app.main - -# Оголошення змінних lucky_number = 777 pi = 3.14 one_is_a_prime_number = False name = "Richard" -my_favourite_films = [ - "The Shawshank Redemption", - "The Lord of the Rings: The Return of the King", - "Pulp Fiction", - "The Good, the Bad and the Ugly", - "The Matrix", -] +my_favourite_films = [ "The Shawshank Redemption", + "The Lord of the Rings: The Return of the King", + "Pulp Fiction", + "The Good, the Bad and the Ugly", + "The Matrix",] profile_info = ("michel", "michel@gmail.com", "12345678") marks = {"John": 4, "Sergio": 3} collection_of_coins = {1, 2, 25} -# Формування словника sorted_variables = { - "immutable": [ - lucky_number, - pi, - one_is_a_prime_number, - name, - profile_info, - ], - "mutable": [ - my_favourite_films, - marks, - collection_of_coins, - ], + "immutable": [lucky_number, pi, one_is_a_prime_number, name, profile_info], + "mutable": [my_favourite_films, marks, collection_of_coins] } - -# Тести -@pytest.mark.parametrize( - "variable_name", - [ - "lucky_number", - "pi", - "one_is_a_prime_number", - "name", - "my_favourite_films", - "profile_info", - "marks", - "collection_of_coins", - "sorted_variables", - ], -) -def test_variables_should_be_defined(variable_name): - assert hasattr( - app.main, variable_name - ), f"Variable '{variable_name}' should be defined." - - -@pytest.mark.parametrize( - "variable,value", - [ - ("lucky_number", 777), - ("pi", 3.14), - ("one_is_a_prime_number", False), - ("name", "Richard"), - ( - "my_favourite_films", - [ - "The Shawshank Redemption", - "The Lord of the Rings: The Return of the King", - "Pulp Fiction", - "The Good, the Bad and the Ugly", - "The Matrix", - ], - ), - ("profile_info", ("michel", "michel@gmail.com", "12345678")), - ("marks", {"John": 4, "Sergio": 3}), - ("collection_of_coins", {1, 2, 25}), - ], -) -def test_variables_values(variable, value): - assert ( - getattr(app.main, variable) == value - ), f"Variable '{variable}' should be equal to {value}." - - -@pytest.mark.parametrize( - "variable_name", - [ - "lucky_number", - "pi", - "one_is_a_prime_number", - "name", - "my_favourite_films", - "profile_info", - "marks", - "collection_of_coins", - ], -) -def test_variables_should_be_added_to_sorted_variables(variable_name): - sorted_variables = getattr(app.main, "sorted_variables") - assert ( - getattr(app.main, variable_name) in sorted_variables["mutable"] or - getattr(app.main, variable_name) in sorted_variables["immutable"] - ), f"Variable '{variable_name}' should be added to 'sorted_variables'" - - -def is_immutable(obj): - if isinstance(obj, (int, str, bool, float, tuple)): - return True - return False - - -def test_variables_added_to_the_correct_list(): - sorted_variables = getattr(app.main, "sorted_variables") - for variable in sorted_variables["mutable"]: - assert is_immutable(variable) is False, ( - f"{variable} should be in 'immutable' list" - ) - - for variable in sorted_variables["immutable"]: - assert is_immutable(variable) is True, ( - f"{variable} should be in 'mutable' list" - ) - - -def test_removed_comment(): - with open(app.main.__file__, "r") as f: - lines = inspect.getsource(app.main) - assert "# write your code here" not in lines \ No newline at end of file diff --git a/tests/__pycache__/__init__.cpython-313.pyc b/tests/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a762e8ca049fcb69527f4eec5f5cdc1e388ca71 GIT binary patch literal 154 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 literal 0 HcmV?d00001 From 6ed0588487dc021916bce5759e72c4dd60007096 Mon Sep 17 00:00:00 2001 From: z47cg46ky2-beep Date: Fri, 19 Jun 2026 16:08:35 +0300 Subject: [PATCH 3/4] Solution --- app/__pycache__/main.cpython-313.pyc | Bin 695 -> 712 bytes app/main.py | 35 ++++++++++++++---- .../test_main.cpython-313-pytest-9.1.1.pyc | Bin 11170 -> 11170 bytes tests/test_main.py | 2 +- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/app/__pycache__/main.cpython-313.pyc b/app/__pycache__/main.cpython-313.pyc index c156d858ddbe5e7567c6466b98df75b27af7f75f..08d04e51372c71826c1c6a8d818b2698808e37d7 100644 GIT binary patch delta 142 zcmWNKAritc5CE@flU_=%4WWh3bSn4(27|%y8UzA^&4Vx~zJLtwo^dT7AnR7_>|1{{ z{fH_^9L~q<^Ffc$gyeT)I#!h1seIUL3ensKo#^+_baKtqOXn oV7HI35d_;aR*Vy4&DhDxc#|4CG7{q`W#P=crcQmq-G{XN12j`3t^fc4 delta 125 zcmX@Xx}BBxGcPX}0}yoBm}aGIF$h=zr3Hm%BwplDXkfi1rf`8l_yZe*u>1n13o4d7Ob*Cg5cInt bptQjCg0|fSe*2HC%pyz|83c+XfHnXCaKa;a diff --git a/app/main.py b/app/main.py index 896cc2c2e..eaeff8641 100644 --- a/app/main.py +++ b/app/main.py @@ -2,16 +2,35 @@ pi = 3.14 one_is_a_prime_number = False name = "Richard" -my_favourite_films = [ "The Shawshank Redemption", - "The Lord of the Rings: The Return of the King", - "Pulp Fiction", - "The Good, the Bad and the Ugly", - "The Matrix",] + +my_favourite_films = [ + "The Shawshank Redemption", + "The Lord of the Rings: The Return of the King", + "Pulp Fiction", + "The Good, the Bad and the Ugly", + "The Matrix", +] + profile_info = ("michel", "michel@gmail.com", "12345678") -marks = {"John": 4, "Sergio": 3} + +marks = { + "John": 4, + "Sergio": 3, +} + collection_of_coins = {1, 2, 25} sorted_variables = { - "immutable": [lucky_number, pi, one_is_a_prime_number, name, profile_info], - "mutable": [my_favourite_films, marks, collection_of_coins] + "immutable": [ + lucky_number, + pi, + one_is_a_prime_number, + name, + profile_info, + ], + "mutable": [ + my_favourite_films, + marks, + collection_of_coins, + ], } diff --git a/tests/__pycache__/test_main.cpython-313-pytest-9.1.1.pyc b/tests/__pycache__/test_main.cpython-313-pytest-9.1.1.pyc index b9094a242ac7d573d0ac7c7f0b3c67dffa86b731..40d383c889afa9e973c2238ac3ccdd3fc8fd3967 100644 GIT binary patch delta 22 ccmZ1!z9^jcGcPX}0}#~OnP%~C Date: Fri, 19 Jun 2026 16:42:32 +0300 Subject: [PATCH 4/4] Solution --- .../test_main.cpython-313-pytest-9.1.1.pyc | Bin 11170 -> 12476 bytes tests/test_main.py | 41 +++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/tests/__pycache__/test_main.cpython-313-pytest-9.1.1.pyc b/tests/__pycache__/test_main.cpython-313-pytest-9.1.1.pyc index 40d383c889afa9e973c2238ac3ccdd3fc8fd3967..3e7cbff4289cefae1ed46b97ca785a547a46a1cd 100644 GIT binary patch delta 2347 zcmb7FO>7%Q6rNdo*Sn6rUOTaq*iF1n8YkPIBu(r#Eu~FGR3Q#U%_x8rBiBtfiK+jX zbyAW8jtZ4P;zwnLR0$z|MAh_wDiKr=;=qABNq>m7t>6ZVIAGcXQcuiVCutfXM4yw- z@4b05^S+t)#-G3VeMWxZ^|}$0-%ci9`O14qZo%(e>ONE<9CZ^1Z6HqSAw2c=AtIc{ zR3WL?~KGEKe?Lb<$ z?G~y$!FG^$cq4CED6(y#X0j`cXbWj$*h<T?bC5)+Gl*zeg|rar)bKY51h& z8qH43Way;EFPNry0beuQq^^;5CyQNYkx1h#=X1rGf+Y~0PG^h9z`2eA;LO%r>oHO` zpPwyf&gOK>wV^CioOI%Vxx~jjQ5I!6^OmfGz+)3N*ZYUNW4A?2W{^49(iP@N=2mtgZ=Eg_syX z2S6vlZU&a4G(SY!%$R&Q1#@W^z(D{gASN12#+0k~T|v*i>7u3tpJmX5MLiHuY$hO&GY+ zqX7TH&Jr@El3tj!B=*EIdUkCD?on01C)z7%t6kbWUQsanOKz*j`0Vb`?=QU!2n?)9k^?>xD9X zjYYlA{*4bAETVgo_nnFNXWpJ!lcTG0^wY-MQrD9Ip3=Og#BM6FFFGq%dp_&ArR;r+ zull-I#Kh9z7@cnOS4SNZH`<9san@8^Wn$-2P)b-GS zLb&ow>xj$oqbuMZ3A(h1C7zwl=F03eX^+{tXRrcoXbGixAW01{ME0=s+P@0+Mf{(4 zkWI526n;(UIjey^$(g)frr8CZ4#40rz!?C$_j91Z30|upItYf{uj0{sadI}NAEOtT zkJTeGjxww{FvhoEY=)BJfA#Mc)YBExe zuwj4Ta%NRj7kMkBuAs)68%e>c=&p)wRnb!wn`#Zhu7FTekQAwk-l`a>xtxmdm*3mO YR#9rI`OBW~eD^(W?0yh-;G~`DKcz delta 1359 zcmb7DO-vI}5Z>+2?zXgB%5Pf`TK-DW(C||VQIUgDV~hsgK@VWFlm%8=+Dr=xCWaUx z@n-PdJbEzkq)8KEj2BNHJ$Nze!GjkYFC^$q6K5WXK#U1{_;%jRdo%NW^WGcd=}mpt z@Apdh-5XEc33#{kkUX&!Pp?laQw`)k`b{+-UDJv=k`i-H$|=WQjJYCGYJVH}PLRjV z6s9tbd6+l3F0qrs>JAe<((ttlAZjQ67$uf!*=BjYZ(H(Pu)cKOZBn46Wwa%vbHFX zxX`pbPDx5Qz>W4o`{uXFS8bjNTr0S~gnt$PwmM~H7Y&#L4Ojf5ys2TtgLZ=7c66tJ z22`bNRZNE2Y}eJo;mB2}4y=1>h+c046lS~RJx8ekc-In#Ep8o3oS zp+FG#KpjCn0gW0O5o~91Z4`9=L?4@`v(Q8^KtQ9ngPE+6%VoeULbi}E8el@0f)Roi zf>weM!6||^goFx%WDgOv6GVA3FdFMX({3!ArE=y^hb6SI!xEguSWD$$U|T-jg=Rtn z;xA+r+6m!=UP34#5!6(yAXh^^%B$vA%7U}U%I}-p8_x6yE`plSQX$5JLItu?LIoJ+ zkHRmMGgMLM7b91u|DFDiF^WZVdCt}|^99Ho<;-lMkSi3At5OHl0r>dW zNSi#$)t2{)P-KwDv@rkC5^>L9JY8vM4Z7qm-V@ypiMY=yWezyOJnp&1zef|e<$hnd zl8$Y-6;c4s^S3=0S}88%Pq>axy^*)ZN0edOFwSqqyVsAg6i5F{^*ALJL}fAUy+Kp* z8w4?eF@zFb`RLvUf>7`N72rSP9c~MwQQ0sM209+PQpT uZY5`qLm7Sao=P7OcAT;-f0m>T>4C@pNz%VafgOeKCSQAZeO}os68r|k5(HWR diff --git a/tests/test_main.py b/tests/test_main.py index 33b55e152..ac0efe94d 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -1,9 +1,40 @@ import pytest import inspect - import app.main +# Оголошення змінних +lucky_number = 777 +pi = 3.14 +one_is_a_prime_number = False +name = "Richard" +my_favourite_films = [ + "The Shawshank Redemption", + "The Lord of the Rings: The Return of the King", + "Pulp Fiction", + "The Good, the Bad and the Ugly", + "The Matrix", +] +profile_info = ("michel", "michel@gmail.com", "12345678") +marks = {"John": 4, "Sergio": 3} +collection_of_coins = {1, 2, 25} + +# Формування словника +sorted_variables = { + "immutable": [ + lucky_number, + pi, + one_is_a_prime_number, + name, + profile_info, + ], + "mutable": [ + my_favourite_films, + marks, + collection_of_coins, + ], +} +# Тести @pytest.mark.parametrize( "variable_name", [ @@ -89,4 +120,10 @@ def test_variables_added_to_the_correct_list(): for variable in sorted_variables["immutable"]: assert is_immutable(variable) is True, ( f"{variable} should be in 'mutable' list" - ) \ No newline at end of file + ) + + +def test_removed_comment(): + with open(app.main.__file__, "r") as f: + lines = inspect.getsource(app.main) + assert "# write your code here" not in lines \ No newline at end of file