From b07631c85bf4be44a48f2ffa2f98857dcec0ba96 Mon Sep 17 00:00:00 2001 From: Vladimir Gromov Date: Thu, 17 Jul 2025 16:17:50 -0300 Subject: [PATCH 1/4] ozon test --- hero_analysis/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 166 bytes .../__pycache__/heroanalyzer.cpython-312.pyc | Bin 0 -> 3792 bytes hero_analysis/heroanalyzer.py | 73 ++++++++++++++++++ hero_analysis/tests/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 172 bytes ..._heroanalyzer.cpython-312-pytest-8.4.1.pyc | Bin 0 -> 1991 bytes hero_analysis/tests/test_heroanalyzer.py | 25 ++++++ readme.md | 39 ++-------- 9 files changed, 103 insertions(+), 34 deletions(-) create mode 100644 hero_analysis/__init__.py create mode 100644 hero_analysis/__pycache__/__init__.cpython-312.pyc create mode 100644 hero_analysis/__pycache__/heroanalyzer.cpython-312.pyc create mode 100644 hero_analysis/heroanalyzer.py create mode 100644 hero_analysis/tests/__init__.py create mode 100644 hero_analysis/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 hero_analysis/tests/__pycache__/test_heroanalyzer.cpython-312-pytest-8.4.1.pyc create mode 100644 hero_analysis/tests/test_heroanalyzer.py diff --git a/hero_analysis/__init__.py b/hero_analysis/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hero_analysis/__pycache__/__init__.cpython-312.pyc b/hero_analysis/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9a7093d68ee75b1931cd839c572e7a153c80969 GIT binary patch literal 166 zcmX@j%ge<81j}}oW`O9&AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdpJy0TTw0J?l#yDLubWtq83SU(C*~#QR2F9z$Hd2H=4F<| l$LkeT{^GF7%}*)KNwq6t1)9nT#Kj=SM`lJw#v*1Q3jp$AD@FhS literal 0 HcmV?d00001 diff --git a/hero_analysis/__pycache__/heroanalyzer.cpython-312.pyc b/hero_analysis/__pycache__/heroanalyzer.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..96e48939115c29153bf0681f339ca724749996cf GIT binary patch literal 3792 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 C>V*aX literal 0 HcmV?d00001 diff --git a/hero_analysis/heroanalyzer.py b/hero_analysis/heroanalyzer.py new file mode 100644 index 00000000..c5212efc --- /dev/null +++ b/hero_analysis/heroanalyzer.py @@ -0,0 +1,73 @@ +import json # for work with json_files +import glob # module for finding files by pattern +from pathlib import Path + +class HeroAnalyzer: + """A class to analyze superhero data based on gender and occupation + """ + + BASE_DIR = Path(__file__).parent.parent # lift up by 2 levels + DEFAULT_DATA_PATH = str(BASE_DIR / 'api' / 'id' / '*.json') #search json files + + def __init__(self,gender:str,occupation:bool): + """Put arguments + Args: + gender (str): Heroes gender to filter ('Male'/'Female') + occupation (bool): Heroes work to filter + """ + self.gender:str = gender.lower() + self.occupation:bool = occupation + self.height_max:int = 0 #stores the maximum height + + def main(self) -> str: + """Find the maximum height of superhero + Work with JSON file in directory and checks each hero: + - Gender + - Occupation + - Height + + Returns: + str: Max height of Hero or "No data!" + """ + json_files = glob.glob(self.DEFAULT_DATA_PATH) + if type(self.occupation)!= bool: + return "Not bool type!" + for file in json_files: + try: + with open(file, 'r', encoding='utf-8') as file: + datas = json.load(file) + + hero_Gender=datas['appearance']['gender'].lower() + hero_Occupation = datas['work']['occupation'] + hero_Height = datas['appearance']['height'][1] # example "180 cm" + + hero_Height = float(hero_Height.split()[0]) #take str value to flout + hero_Height = int(round(hero_Height)) #round float value to int + + if self._check_string(hero_Occupation) and self._check_gender(hero_Gender) and hero_Height > self.height_max: + self.height_max = hero_Height + + except (KeyError, ValueError, IndexError): + continue + + return str(self.height_max) if self.height_max !=0 else "No datas!" + + def _check_string(self, hero_Occupation:str) -> bool: + """Check string hero occupation in str + Args: + hero_Occupation (str): Heros occupation + Returns: + bool: If len of str occupation has got symbols return True else False + """ + + return bool(len(hero_Occupation)>1) == self.occupation + + def _check_gender(self, hero_Gender: str) -> bool: + """Check hero gender in str + Args: + hero_Gender (str): put gender of hero + Returns: + bool: If gender of hero the same what would put return bool True + """ + return hero_Gender == self.gender + \ No newline at end of file diff --git a/hero_analysis/tests/__init__.py b/hero_analysis/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/hero_analysis/tests/__pycache__/__init__.cpython-312.pyc b/hero_analysis/tests/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..520d64b3a5ec9c58efbb913efcf4bce73ba312a9 GIT binary patch literal 172 zcmX@j%ge<81j}}oW`O9&AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdpJy0TTw0J?l#yDLubWtq83SU(C*~#QR2F9z$CRWNmlVgu r$7kkcmc+;F6;%G>u*uC&Da}c>D`Ewj%?QNBAjU^#Mn=XWW*`dyH5V=0 literal 0 HcmV?d00001 diff --git a/hero_analysis/tests/__pycache__/test_heroanalyzer.cpython-312-pytest-8.4.1.pyc b/hero_analysis/tests/__pycache__/test_heroanalyzer.cpython-312-pytest-8.4.1.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8ca0046f57faa3ca4fb83a029214e972b16a658 GIT binary patch literal 1991 zcmb_c&2Jk;6rb5$?>crq8c-#NUR)#~i%JqZX%dqLh}u{jXinx5Sz2wp>&D62yP8>- z+N`C5DnZ48V{o;=~03;gl2a?e5raRH+w6_M7+n&71c%GyC1t zRF1&-w%ptQStI0k1af3j<+KmV1L6>edSsWzv(i=@3MFlAH$!nn@$|N_Ys5PBvb$L~ zd+>sEG@1`Cj&!Lx>Mi1EU(;hHVVul8a-1&i=6lrC|3I{3QZf0i%lxg5?e+RD>tDWY zdtH~8t`rlce5L5#3EW2LIu>(z*9*-HrYiKR+qONoD%4VC8L)N}P)(@oYpbTpplAYM zc@=>U0PHGjS8-o6-dAH;U}HbqH@Du~t}^UP><3Vd87Ycmu!$JOj)YcYUH5Ey#}A8p zzV8*oUf^C%qliq^_PEPt5_`;oO`{kmE{q7F+T5w0P3-tZ#|~`{enc)QEG~y(vynrT z7A!fnR9>#eprL}59GE!b({*V40}@iX5Rqtj7y~s@57L8?>o^ZIg+!V>ra>mkM9Sej z@Oq^4KSOzS$N{$W+;C{5H>soGo~Ck)wZm}K5Stf|gZNTPl*}^LZNe{(`Ja5+3Q?pU zr?s$gOKk7CF|zDXh(F5uS+<(=`W(BAv~#rots+JGd~QWUOQ=Y5GGAzYIDvuT=#CK? zEgGY2I4c`5R?9PpsNTQPa=!&E75 z7Evop3Y3&uGWkN=Zgp~lc{4XCZYGASCKp=h@=(m2f5@6pgWeK~GKv)xtNm%4!y5|Y zDC@8p$aOQv@Ky^A{fpc?K@UAzHWRZ}!}dJ*Gz6^Sw*#BGViK0Ey>813TOBTR&j$-G z3Krk@yB>Z;0%qOv{5{*VI(FL?6Bf6dF4AIpD~{drJKK!;OuT3{eb%-^3sU#&jvc~^ zIU$VnBPEqGn}h6F0aMIl^rVE+I9MJBR}+vpUmFJ%jt{0N$64+AoAvjhAG}_w-*EY1 z=m+&yr)k&yzTYX;c{gy`K72smu!B||6${ezdc4K!*rG&QxDfO3iCqYKA{V!>;X$5k z3F6^% original source from [superheroapi.com](http://superheroapi.com) edited, cleaned up & made available to [contribution](#contribute) - -## API -- [documentation](api) -- [glossary](api/glossary.md) - -## Builder - -> ! api folder is generated, it's useless editing it, check builder sources instead +# Superhero Analysis #### Clone project ``` -git clone https://github.com/akabab/superhero-api.git -cd superhero-api +git clone https://github.com/Bambit-s/hero_test.git +cd hero_test ``` #### Install dependencies @@ -28,26 +16,9 @@ npm install npm run build ``` -#### Release a new version - -Edit package.json version then run `release` script +#### Start test ``` -npm run release +python -m pytest ``` -## Contribute - -You can contribute by: -- add new or edit images of heroes in the [`builder/sources/images`](https://github.com/akabab/superhero-api/tree/master/builder/sources/images) folder -- submit `powerstats` values for heroes with `null` ones -- suggest new heroes with a complete JSON object -- .. - -Check the [Care Center](api/carecenter.md) for needed contributions - -**Fork & PR** - ---- -#### Message for original owners from TwentyEight10 -Contact me :) From 718447ab7c70fa7ff9acadc9536a3c5be647b6cc Mon Sep 17 00:00:00 2001 From: Vladimir Gromov <58440308+Bambit-s@users.noreply.github.com> Date: Thu, 17 Jul 2025 16:24:18 -0300 Subject: [PATCH 2/4] Update readme.md --- readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 10b714b3..4f645b9c 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ #### Clone project ``` -git clone https://github.com/Bambit-s/hero_test.git +git clone https://github.com/Bambit-s/hero_test/tree/my_test cd hero_test ``` From 4f2aa55ed565dff1f481bd4927b5afbbaca2aaec Mon Sep 17 00:00:00 2001 From: Vladimir Gromov Date: Thu, 17 Jul 2025 16:55:49 -0300 Subject: [PATCH 3/4] commit1 --- .../__pycache__/__init__.cpython-312.pyc | Bin 166 -> 0 bytes .../__pycache__/heroanalyzer.cpython-312.pyc | Bin 3792 -> 0 bytes .../tests/__pycache__/__init__.cpython-312.pyc | Bin 172 -> 0 bytes ...est_heroanalyzer.cpython-312-pytest-8.4.1.pyc | Bin 1991 -> 0 bytes readme.md | 13 +------------ 5 files changed, 1 insertion(+), 12 deletions(-) delete mode 100644 hero_analysis/__pycache__/__init__.cpython-312.pyc delete mode 100644 hero_analysis/__pycache__/heroanalyzer.cpython-312.pyc delete mode 100644 hero_analysis/tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 hero_analysis/tests/__pycache__/test_heroanalyzer.cpython-312-pytest-8.4.1.pyc diff --git a/hero_analysis/__pycache__/__init__.cpython-312.pyc b/hero_analysis/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d9a7093d68ee75b1931cd839c572e7a153c80969..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmX@j%ge<81j}}oW`O9&AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdpJy0TTw0J?l#yDLubWtq83SU(C*~#QR2F9z$Hd2H=4F<| l$LkeT{^GF7%}*)KNwq6t1)9nT#Kj=SM`lJw#v*1Q3jp$AD@FhS diff --git a/hero_analysis/__pycache__/heroanalyzer.cpython-312.pyc b/hero_analysis/__pycache__/heroanalyzer.cpython-312.pyc deleted file mode 100644 index 96e48939115c29153bf0681f339ca724749996cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3792 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 C>V*aX diff --git a/hero_analysis/tests/__pycache__/__init__.cpython-312.pyc b/hero_analysis/tests/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 520d64b3a5ec9c58efbb913efcf4bce73ba312a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmX@j%ge<81j}}oW`O9&AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdpJy0TTw0J?l#yDLubWtq83SU(C*~#QR2F9z$CRWNmlVgu r$7kkcmc+;F6;%G>u*uC&Da}c>D`Ewj%?QNBAjU^#Mn=XWW*`dyH5V=0 diff --git a/hero_analysis/tests/__pycache__/test_heroanalyzer.cpython-312-pytest-8.4.1.pyc b/hero_analysis/tests/__pycache__/test_heroanalyzer.cpython-312-pytest-8.4.1.pyc deleted file mode 100644 index f8ca0046f57faa3ca4fb83a029214e972b16a658..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1991 zcmb_c&2Jk;6rb5$?>crq8c-#NUR)#~i%JqZX%dqLh}u{jXinx5Sz2wp>&D62yP8>- z+N`C5DnZ48V{o;=~03;gl2a?e5raRH+w6_M7+n&71c%GyC1t zRF1&-w%ptQStI0k1af3j<+KmV1L6>edSsWzv(i=@3MFlAH$!nn@$|N_Ys5PBvb$L~ zd+>sEG@1`Cj&!Lx>Mi1EU(;hHVVul8a-1&i=6lrC|3I{3QZf0i%lxg5?e+RD>tDWY zdtH~8t`rlce5L5#3EW2LIu>(z*9*-HrYiKR+qONoD%4VC8L)N}P)(@oYpbTpplAYM zc@=>U0PHGjS8-o6-dAH;U}HbqH@Du~t}^UP><3Vd87Ycmu!$JOj)YcYUH5Ey#}A8p zzV8*oUf^C%qliq^_PEPt5_`;oO`{kmE{q7F+T5w0P3-tZ#|~`{enc)QEG~y(vynrT z7A!fnR9>#eprL}59GE!b({*V40}@iX5Rqtj7y~s@57L8?>o^ZIg+!V>ra>mkM9Sej z@Oq^4KSOzS$N{$W+;C{5H>soGo~Ck)wZm}K5Stf|gZNTPl*}^LZNe{(`Ja5+3Q?pU zr?s$gOKk7CF|zDXh(F5uS+<(=`W(BAv~#rots+JGd~QWUOQ=Y5GGAzYIDvuT=#CK? zEgGY2I4c`5R?9PpsNTQPa=!&E75 z7Evop3Y3&uGWkN=Zgp~lc{4XCZYGASCKp=h@=(m2f5@6pgWeK~GKv)xtNm%4!y5|Y zDC@8p$aOQv@Ky^A{fpc?K@UAzHWRZ}!}dJ*Gz6^Sw*#BGViK0Ey>813TOBTR&j$-G z3Krk@yB>Z;0%qOv{5{*VI(FL?6Bf6dF4AIpD~{drJKK!;OuT3{eb%-^3sU#&jvc~^ zIU$VnBPEqGn}h6F0aMIl^rVE+I9MJBR}+vpUmFJ%jt{0N$64+AoAvjhAG}_w-*EY1 z=m+&yr)k&yzTYX;c{gy`K72smu!B||6${ezdc4K!*rG&QxDfO3iCqYKA{V!>;X$5k z3F6^% Date: Fri, 18 Jul 2025 15:32:09 -0300 Subject: [PATCH 4/4] commit2 --- readme.md | 5 +++++ requirements.txt | 1 + 2 files changed, 6 insertions(+) create mode 100644 requirements.txt diff --git a/readme.md b/readme.md index bd527b04..72fd554e 100644 --- a/readme.md +++ b/readme.md @@ -5,6 +5,11 @@ cd hero_test ``` +#### install pytest +``` +pip install -r requirements.txt +``` + #### Start test ``` python -m pytest diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..225ee3d4 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +pytest==8.4.1 \ No newline at end of file