From 445e4ce45eda328954ec4e075a2fbadc92eb833e Mon Sep 17 00:00:00 2001 From: Ederson Corbari Date: Sat, 1 Apr 2023 16:47:52 -0300 Subject: [PATCH 1/2] feat: Fix code black code style :alien: --- Pipfile | 2 + RELEASES.md | 2 +- data/README.md | 2 +- doc/big-five-rewire5.png | Bin 70442 -> 53514 bytes ipipneo/facet.py | 38 ++++++++++++++---- ipipneo/ipipneo.py | 11 ++--- ipipneo/quiz.py | 81 ++++++++++++++++++++++++++++++------- ipipneo/reverse.py | 34 +++++++++++++--- ipipneo/utility.py | 15 ++++--- run-build | 7 ++++ test/test_facet.py | 84 +++++++++++++++++++++++++++++---------- test/test_ipipneo.py | 77 +++++++++++++++++++++++++++-------- test/test_model.py | 16 ++------ test/test_utility.py | 15 +++++-- 14 files changed, 286 insertions(+), 98 deletions(-) diff --git a/Pipfile b/Pipfile index 4c2085e..7d4891e 100644 --- a/Pipfile +++ b/Pipfile @@ -8,6 +8,8 @@ name = "pypi" [dev-packages] coverage = "*" plotext = "*" +black = "*" +isort = "*" [requires] python_version = "3.10" diff --git a/RELEASES.md b/RELEASES.md index 84fcb63..d5c6e94 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,4 +1,4 @@ - + ### Releases 🎈 diff --git a/data/README.md b/data/README.md index b23bab1..2367bcd 100644 --- a/data/README.md +++ b/data/README.md @@ -50,6 +50,6 @@ from ipipneo import IpipNeo IpipNeo(question=120, test=True).compute(sex="M", age=40, answers=answers120, compare=True) ``` -If you have any questions, please send us an email to: (**e at neural.io**) or create an issue reporting the question of the problem in the repository of this project (https://github.com/rewire5-io/five-factor-e/issues). +If you have any questions, please send us an email to: (**e at rewire5.io**) or create an issue reporting the question of the problem in the repository of this project (https://github.com/rewire5-io/five-factor-e/issues). Thanks! diff --git a/doc/big-five-rewire5.png b/doc/big-five-rewire5.png index 358fdebd013aef585c248fafc2a20b3d309549e8..1a3c1a538d12906676789561cdcffbb57e157819 100644 GIT binary patch literal 53514 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
rpege{Nr`t763lg8^06r)D{!RUip1r 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 jzXBzw{+AWO^tK8k|5IZ4lrf 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 diff --git a/ipipneo/facet.py b/ipipneo/facet.py index 6a9cb59..2a925ad 100644 --- a/ipipneo/facet.py +++ b/ipipneo/facet.py @@ -10,7 +10,8 @@ from enum import IntEnum -from ipipneo.model import FacetLevel, FacetScale, NormCubic, NormScale, QuestionNumber +from ipipneo.model import (FacetLevel, FacetScale, NormCubic, NormScale, + QuestionNumber) from ipipneo.utility import big5_ocean_is_valid, create_big5_dict @@ -113,11 +114,31 @@ def distrib(self, size: int, b5: dict, norm: dict) -> list: try: for i in range(1, 7): - N[i] = 50 + (10 * (b5.get("N")[i] - norm.get("ns")[i + 10]) / norm.get("ns")[i + 16]) - E[i] = 50 + (10 * (b5.get("E")[i] - norm.get("ns")[i + 22]) / norm.get("ns")[i + 28]) - O[i] = 50 + (10 * (b5.get("O")[i] - norm.get("ns")[i + 34]) / norm.get("ns")[i + 40]) - A[i] = 50 + (10 * (b5.get("A")[i] - norm.get("ns")[i + 46]) / norm.get("ns")[i + 52]) - C[i] = 50 + (10 * (b5.get("C")[i] - norm.get("ns")[i + 58]) / norm.get("ns")[i + 64]) + N[i] = 50 + ( + 10 + * (b5.get("N")[i] - norm.get("ns")[i + 10]) + / norm.get("ns")[i + 16] + ) + E[i] = 50 + ( + 10 + * (b5.get("E")[i] - norm.get("ns")[i + 22]) + / norm.get("ns")[i + 28] + ) + O[i] = 50 + ( + 10 + * (b5.get("O")[i] - norm.get("ns")[i + 34]) + / norm.get("ns")[i + 40] + ) + A[i] = 50 + ( + 10 + * (b5.get("A")[i] - norm.get("ns")[i + 46]) + / norm.get("ns")[i + 52] + ) + C[i] = 50 + ( + 10 + * (b5.get("C")[i] - norm.get("ns")[i + 58]) + / norm.get("ns")[i + 64] + ) except IndexError as e: raise BaseException(f"The number of questions setting is wrong: {str(e)}") @@ -146,7 +167,10 @@ def personality(self, size: int, big5: dict, traits: dict, label: str) -> dict: if traits[i] < FacetLevel.LOW.value: Y[i] = "low" - if traits[i] >= FacetLevel.LOW.value and traits[i] <= FacetLevel.HIGH.value: + if ( + traits[i] >= FacetLevel.LOW.value + and traits[i] <= FacetLevel.HIGH.value + ): Y[i] = "average" if traits[i] > FacetLevel.HIGH.value: Y[i] = "high" diff --git a/ipipneo/ipipneo.py b/ipipneo/ipipneo.py index 0dd5b09..3e1b834 100644 --- a/ipipneo/ipipneo.py +++ b/ipipneo/ipipneo.py @@ -14,13 +14,10 @@ from ipipneo.facet import Facet from ipipneo.model import QuestionNumber from ipipneo.norm import Norm -from ipipneo.reverse import ReverseScored120, ReverseScored300, ReverseScoredCustom -from ipipneo.utility import ( - organize_list_json, - raise_if_age_is_invalid, - raise_if_sex_is_invalid, - add_dict_footer, -) +from ipipneo.reverse import (ReverseScored120, ReverseScored300, + ReverseScoredCustom) +from ipipneo.utility import (add_dict_footer, organize_list_json, + raise_if_age_is_invalid, raise_if_sex_is_invalid) class IpipNeo(Facet): diff --git a/ipipneo/quiz.py b/ipipneo/quiz.py index 756c2e8..798901c 100644 --- a/ipipneo/quiz.py +++ b/ipipneo/quiz.py @@ -20,7 +20,9 @@ sys.path.insert(0, "../") from ipipneo.ipipneo import IpipNeo -URL_IPIP_QUESTIONS = "https://raw.githubusercontent.com/neural7/five-factor-e/main/data/IPIP-NEO" +URL_IPIP_QUESTIONS = ( + "https://raw.githubusercontent.com/rewire5-io/five-factor-e/main/data/IPIP-NEO" +) def load_ipip_questions(lang: int, question: int) -> dict: @@ -55,7 +57,10 @@ def get_questions(lang: int, question: int) -> list: - lang: The language ID. - question: Inventory model 120 or 300. """ - return [x for x in load_ipip_questions(lang=lang, question=question).get("questions", [])] + return [ + x + for x in load_ipip_questions(lang=lang, question=question).get("questions", []) + ] def get_select(lang: int, question: int) -> list: @@ -113,7 +118,9 @@ def quiz(inventory: int, sex: str, age: int, shuffle: str, lang: int) -> None: option = int(next(filter({"1", "2", "3", "4", "5"}.__contains__, replies))) answers.append({"id_question": q.get("id"), "id_select": option}) - result = IpipNeo(question=inventory).compute(sex=sex, age=age, answers={"answers": answers}, compare=True) + result = IpipNeo(question=inventory).compute( + sex=sex, age=age, answers={"answers": answers}, compare=True + ) object = json.dumps(result, indent=4) fname = f"result-{str(inventory)}-{result.get('id', 'id')}.json" @@ -140,7 +147,11 @@ def plot_results(result: dict) -> None: print( "\nInventory:", - str(result.get("model")) + "-" + str(result.get("question")) + " v" + str(result.get("version")), + str(result.get("model")) + + "-" + + str(result.get("question")) + + " v" + + str(result.get("version")), ) print("Case:", result.get("id")) print("Gender:", result.get("person").get("sex")) @@ -164,7 +175,12 @@ def plot_results(result: dict) -> None: int(big5[2].get("extraversion").get("traits")[1].get("gregariousness")), int(big5[2].get("extraversion").get("traits")[2].get("assertiveness")), int(big5[2].get("extraversion").get("traits")[3].get("activity_level")), - int(big5[2].get("extraversion").get("traits")[4].get("excitement_seeking")), + int( + big5[2] + .get("extraversion") + .get("traits")[4] + .get("excitement_seeking") + ), int(big5[2].get("extraversion").get("traits")[5].get("cheerfulness")), ], width=100, @@ -218,12 +234,36 @@ def plot_results(result: dict) -> None: C, [ int(big5[1].get("conscientiousness").get("C")), - int(big5[1].get("conscientiousness").get("traits")[0].get("self_efficacy")), - int(big5[1].get("conscientiousness").get("traits")[1].get("orderliness")), - int(big5[1].get("conscientiousness").get("traits")[2].get("dutifulness")), - int(big5[1].get("conscientiousness").get("traits")[3].get("achievement_striving")), - int(big5[1].get("conscientiousness").get("traits")[4].get("self_discipline")), - int(big5[1].get("conscientiousness").get("traits")[5].get("cautiousness")), + int( + big5[1] + .get("conscientiousness") + .get("traits")[0] + .get("self_efficacy") + ), + int( + big5[1].get("conscientiousness").get("traits")[1].get("orderliness") + ), + int( + big5[1].get("conscientiousness").get("traits")[2].get("dutifulness") + ), + int( + big5[1] + .get("conscientiousness") + .get("traits")[3] + .get("achievement_striving") + ), + int( + big5[1] + .get("conscientiousness") + .get("traits")[4] + .get("self_discipline") + ), + int( + big5[1] + .get("conscientiousness") + .get("traits")[5] + .get("cautiousness") + ), ], width=100, title="Big-Five | Consciousness", @@ -250,7 +290,12 @@ def plot_results(result: dict) -> None: int(big5[4].get("neuroticism").get("traits")[0].get("anxiety")), int(big5[4].get("neuroticism").get("traits")[1].get("anger")), int(big5[4].get("neuroticism").get("traits")[2].get("depression")), - int(big5[4].get("neuroticism").get("traits")[3].get("self_consciousness")), + int( + big5[4] + .get("neuroticism") + .get("traits")[3] + .get("self_consciousness") + ), int(big5[4].get("neuroticism").get("traits")[4].get("immoderation")), int(big5[4].get("neuroticism").get("traits")[5].get("vulnerability")), ], @@ -323,9 +368,13 @@ def main() -> None: print("\n====================================================================") if inventory == 120: - print("The following test contains 120 questions which is estimated to take you about 15 minutes to complete!") + print( + "The following test contains 120 questions which is estimated to take you about 15 minutes to complete!" + ) elif inventory == 300: - print("The following test contains 300 questions which is estimated to take you about 35 minutes to complete!") + print( + "The following test contains 300 questions which is estimated to take you about 35 minutes to complete!" + ) replies = map( input, @@ -364,7 +413,9 @@ def main() -> None: input, chain( ["\n> Choose the language of the questions above: "], - repeat("Please, only the numbers that are on the list are valid! Try again: "), + repeat( + "Please, only the numbers that are on the list are valid! Try again: " + ), ), ) lang = int(next(filter(set(map(str, range(0, 3))).__contains__, replies))) diff --git a/ipipneo/reverse.py b/ipipneo/reverse.py index 8252908..3fd5ead 100644 --- a/ipipneo/reverse.py +++ b/ipipneo/reverse.py @@ -252,10 +252,16 @@ def __new__(self, answers: dict) -> dict or BaseException or AssertionError: raise BaseException("The key named (reverse_scored) was not found!") def is_reversed_custom(x: dict) -> dict: - x["id_select"] = reverse_scored(select=x["id_select"]) if x.get("reverse_scored") == 1 else x["id_select"] + x["id_select"] = ( + reverse_scored(select=x["id_select"]) + if x.get("reverse_scored") == 1 + else x["id_select"] + ) return x - return {"answers": [is_reversed_custom(x=x) for x in answers.get("answers", [])]} + return { + "answers": [is_reversed_custom(x=x) for x in answers.get("answers", [])] + } class ReverseScored120: @@ -285,7 +291,9 @@ def __new__(self, answers: dict) -> dict or BaseException or AssertionError: if not any("id_select" in x for x in answers.get("answers", [])): raise BaseException("The key named (id_select) was not found!") - assert len(list(IPIP_NEO_ITEMS_REVERSED_120)) == 55, "The number of reverse items should be 55!" + assert ( + len(list(IPIP_NEO_ITEMS_REVERSED_120)) == 55 + ), "The number of reverse items should be 55!" def is_reversed_120(x: int, y: int) -> int: for i in IPIP_NEO_ITEMS_REVERSED_120: @@ -294,7 +302,13 @@ def is_reversed_120(x: int, y: int) -> int: return y update = map( - (lambda x: (x.__setitem__("id_select", is_reversed_120(x["id_question"], x["id_select"])))), + ( + lambda x: ( + x.__setitem__( + "id_select", is_reversed_120(x["id_question"], x["id_select"]) + ) + ) + ), answers.get("answers"), ) assert len(list(update)) == 120, "The update number should be 120!" @@ -329,7 +343,9 @@ def __new__(self, answers: dict) -> dict or BaseException or AssertionError: if not any("id_select" in x for x in answers.get("answers", [])): raise BaseException("The key named (id_select) was not found!") - assert len(list(IPIP_NEO_ITEMS_REVERSED_300)) == 148, "The number of reverse items should be 148!" + assert ( + len(list(IPIP_NEO_ITEMS_REVERSED_300)) == 148 + ), "The number of reverse items should be 148!" def is_reversed_300(x: int, y: int) -> int: for i in IPIP_NEO_ITEMS_REVERSED_300: @@ -338,7 +354,13 @@ def is_reversed_300(x: int, y: int) -> int: return y update = map( - (lambda x: (x.__setitem__("id_select", is_reversed_300(x["id_question"], x["id_select"])))), + ( + lambda x: ( + x.__setitem__( + "id_select", is_reversed_300(x["id_question"], x["id_select"]) + ) + ) + ), answers.get("answers"), ) assert len(list(update)) == 300, "The update number should be 300!" diff --git a/ipipneo/utility.py b/ipipneo/utility.py index 65144b1..2f627de 100644 --- a/ipipneo/utility.py +++ b/ipipneo/utility.py @@ -11,13 +11,8 @@ from datetime import datetime from enum import Enum -from ipipneo.model import ( - Big5Agreeableness, - Big5Conscientiousness, - Big5Extraversion, - Big5Neuroticism, - Big5Openness, -) +from ipipneo.model import (Big5Agreeableness, Big5Conscientiousness, + Big5Extraversion, Big5Neuroticism, Big5Openness) def raise_if_sex_is_invalid(sex: str) -> bool or AssertionError or BaseException: @@ -155,7 +150,9 @@ def big5_target(label: str) -> Enum or BaseException: Args: - label: The acronym for the Big-Five standard O.C.E.A.N. """ - if big5_ocean_is_valid(label=label): + big5_ocean_is_valid(label=label) + + try: if label == "O": return Big5Openness if label == "C": @@ -166,6 +163,8 @@ def big5_target(label: str) -> Enum or BaseException: return Big5Agreeableness if label == "N": return Big5Neuroticism + except BaseException: + raise BaseException("The Big-Five label is invalid!") def create_big5_dict(label: str, big5: float, x: list, y: list) -> dict: diff --git a/run-build b/run-build index c545edb..e6a2e16 100755 --- a/run-build +++ b/run-build @@ -13,8 +13,15 @@ clean_pypi() echo "Ok." } +code_style() +{ + black ipipneo/*.py && isort ipipneo/*.py + black test/*.py && isort test/*.py +} + while [[ "$#" -gt 0 ]]; do case ${1} in + -s|--style) code_style;; -p|--pypi) create_pypi;; -c|--clean) clean_pypi;; *) echo "Unknown parameter!"; exit 1;; diff --git a/test/test_facet.py b/test/test_facet.py index af26a38..5b1fcba 100644 --- a/test/test_facet.py +++ b/test/test_facet.py @@ -91,7 +91,9 @@ def test_b5create_120(self) -> None: "The number of questions setting is wrong: list index out of range", ) - b5 = facet.b5create(score=facet.score(answers=organize_list_json(load_mock_answers_120()))) + b5 = facet.b5create( + score=facet.score(answers=organize_list_json(load_mock_answers_120())) + ) assert isinstance(b5, dict), "b5 must be a dict" self.assertEqual(len(b5.get("O")), 121) @@ -116,7 +118,9 @@ def test_b5create_300(self) -> None: "The number of questions setting is wrong: list index out of range", ) - b5 = facet.b5create(score=facet.score(answers=organize_list_json(load_mock_answers_300()))) + b5 = facet.b5create( + score=facet.score(answers=organize_list_json(load_mock_answers_300())) + ) assert isinstance(b5, dict), "b5 must be a dict" self.assertEqual(len(b5.get("O")), 301) @@ -141,7 +145,9 @@ def test_domain_120(self) -> None: "Invalid position in the score array: list index out of range", ) - domain = facet.domain(score=facet.score(answers=organize_list_json(load_mock_answers_120()))) + domain = facet.domain( + score=facet.score(answers=organize_list_json(load_mock_answers_120())) + ) assert isinstance(domain, dict), "domain must be a dict" self.assertEqual(domain.get("O"), 78) @@ -160,7 +166,9 @@ def test_domain_300(self) -> None: "Invalid position in the score array: list index out of range", ) - domain = facet.domain(score=facet.score(answers=organize_list_json(load_mock_answers_300()))) + domain = facet.domain( + score=facet.score(answers=organize_list_json(load_mock_answers_300())) + ) assert isinstance(domain, dict), "domain must be a dict" self.assertEqual(domain.get("O"), 180) @@ -175,10 +183,14 @@ def test_distrib_120(self) -> None: with self.assertRaises(TypeError): facet.distrib(size=0, b5={}, norm={}) - b5 = facet.b5create(score=facet.score(answers=organize_list_json(load_mock_answers_120()))) + b5 = facet.b5create( + score=facet.score(answers=organize_list_json(load_mock_answers_120())) + ) assert isinstance(b5, dict), "b5 must be a dict" - domain = facet.domain(score=facet.score(answers=organize_list_json(load_mock_answers_120()))) + domain = facet.domain( + score=facet.score(answers=organize_list_json(load_mock_answers_120())) + ) assert isinstance(domain, dict), "domain must be a dict" with self.assertRaises(BaseException) as e: @@ -188,7 +200,9 @@ def test_distrib_120(self) -> None: "The number of questions setting is wrong: list assignment index out of range", ) - distrib = facet.distrib(size=7, b5=b5, norm=Norm(sex="M", age=40, nquestion=120)) + distrib = facet.distrib( + size=7, b5=b5, norm=Norm(sex="M", age=40, nquestion=120) + ) assert isinstance(distrib, dict), "distrib must be a dict" self.assertEqual(distrib.get("O")[0], 0) @@ -232,7 +246,9 @@ def test_distrib_120(self) -> None: self.assertEqual(distrib.get("N")[5], 43.80681818181818) self.assertEqual(distrib.get("N")[6], 46.75287356321839) - distrib = facet.distrib(size=7, b5=b5, norm=Norm(sex="F", age=30, nquestion=120)) + distrib = facet.distrib( + size=7, b5=b5, norm=Norm(sex="F", age=30, nquestion=120) + ) assert isinstance(distrib, dict), "distrib must be a dict" self.assertEqual(distrib.get("O")[1], 33.113772455089816) @@ -276,10 +292,14 @@ def test_distrib_300(self) -> None: with self.assertRaises(TypeError): facet.distrib(size=0, b5={}, norm={}) - b5 = facet.b5create(score=facet.score(answers=organize_list_json(load_mock_answers_300()))) + b5 = facet.b5create( + score=facet.score(answers=organize_list_json(load_mock_answers_300())) + ) assert isinstance(b5, dict), "b5 must be a dict" - domain = facet.domain(score=facet.score(answers=organize_list_json(load_mock_answers_300()))) + domain = facet.domain( + score=facet.score(answers=organize_list_json(load_mock_answers_300())) + ) assert isinstance(domain, dict), "domain must be a dict" with self.assertRaises(BaseException) as e: @@ -289,7 +309,9 @@ def test_distrib_300(self) -> None: "The number of questions setting is wrong: list assignment index out of range", ) - distrib = facet.distrib(size=7, b5=b5, norm=Norm(sex="M", age=40, nquestion=300)) + distrib = facet.distrib( + size=7, b5=b5, norm=Norm(sex="M", age=40, nquestion=300) + ) assert isinstance(distrib, dict), "distrib must be a dict" self.assertEqual(distrib.get("O")[0], 0) @@ -385,7 +407,9 @@ def test_personality_120(self) -> None: ############################################# # 1. Neuroticism with its facets. ############################################# - N = facet.personality(size=len(score), big5=normalize, traits=distrib, label="N") + N = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="N" + ) assert isinstance(N, dict), "N must be a dict" assert isinstance(N.get("traits"), list), "traits must be a list" @@ -418,7 +442,9 @@ def test_personality_120(self) -> None: ############################################# # 2. Extraversion with its facets. ############################################# - E = facet.personality(size=len(score), big5=normalize, traits=distrib, label="E") + E = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="E" + ) assert isinstance(N, dict), "E must be a dict" assert isinstance(N.get("traits"), list), "traits must be a list" @@ -451,7 +477,9 @@ def test_personality_120(self) -> None: ############################################# # 3. Openness with its facets. ############################################# - O = facet.personality(size=len(score), big5=normalize, traits=distrib, label="O") + O = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="O" + ) assert isinstance(O, dict), "O must be a dict" assert isinstance(O.get("traits"), list), "traits must be a list" @@ -484,7 +512,9 @@ def test_personality_120(self) -> None: ############################################# # 4. Agreeableness with its facets. ############################################# - A = facet.personality(size=len(score), big5=normalize, traits=distrib, label="A") + A = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="A" + ) assert isinstance(A, dict), "A must be a dict" assert isinstance(A.get("traits"), list), "traits must be a list" @@ -517,7 +547,9 @@ def test_personality_120(self) -> None: ############################################# # 5. Conscientiousness with its facets. ############################################# - C = facet.personality(size=len(score), big5=normalize, traits=distrib, label="C") + C = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="C" + ) assert isinstance(C, dict), "C must be a dict" assert isinstance(C.get("traits"), list), "traits must be a list" @@ -837,7 +869,9 @@ def test_personality_300(self) -> None: ############################################# # 1. Neuroticism with its facets. ############################################# - N = facet.personality(size=len(score), big5=normalize, traits=distrib, label="N") + N = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="N" + ) assert isinstance(N, dict), "N must be a dict" assert isinstance(N.get("traits"), list), "traits must be a list" @@ -870,7 +904,9 @@ def test_personality_300(self) -> None: ############################################# # 2. Extraversion with its facets. ############################################# - E = facet.personality(size=len(score), big5=normalize, traits=distrib, label="E") + E = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="E" + ) assert isinstance(N, dict), "E must be a dict" assert isinstance(N.get("traits"), list), "traits must be a list" @@ -903,7 +939,9 @@ def test_personality_300(self) -> None: ############################################# # 3. Openness with its facets. ############################################# - O = facet.personality(size=len(score), big5=normalize, traits=distrib, label="O") + O = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="O" + ) assert isinstance(O, dict), "O must be a dict" assert isinstance(O.get("traits"), list), "traits must be a list" @@ -936,7 +974,9 @@ def test_personality_300(self) -> None: ############################################# # 4. Agreeableness with its facets. ############################################# - A = facet.personality(size=len(score), big5=normalize, traits=distrib, label="A") + A = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="A" + ) assert isinstance(A, dict), "A must be a dict" assert isinstance(A.get("traits"), list), "traits must be a list" @@ -969,7 +1009,9 @@ def test_personality_300(self) -> None: ############################################# # 5. Conscientiousness with its facets. ############################################# - C = facet.personality(size=len(score), big5=normalize, traits=distrib, label="C") + C = facet.personality( + size=len(score), big5=normalize, traits=distrib, label="C" + ) assert isinstance(C, dict), "C must be a dict" assert isinstance(C.get("traits"), list), "traits must be a list" diff --git a/test/test_ipipneo.py b/test/test_ipipneo.py index 6ec1258..33dd4b4 100644 --- a/test/test_ipipneo.py +++ b/test/test_ipipneo.py @@ -25,7 +25,6 @@ def load_mock_answers_custom() -> dict: class TestIpipNeo(unittest.TestCase): - maxDiff = None def test_invalid_params(self) -> None: @@ -57,7 +56,9 @@ def test_compute_120(self) -> None: ############################################# # 1. Test with 40 year old man. ############################################# - result = IpipNeo(question=120).compute(sex="M", age=40, answers=load_mock_answers_120()) + result = IpipNeo(question=120).compute( + sex="M", age=40, answers=load_mock_answers_120() + ) self.assertTrue(len(result.get("id"))) self.assertTrue(len(result.get("theory"))) @@ -74,7 +75,9 @@ def test_compute_120(self) -> None: self.assertEqual(len(personalities), 5) self.assertEqual(personalities[0]["openness"].get("O"), 13.262383714475419) - self.assertEqual(personalities[1]["conscientiousness"].get("C"), 18.62283542366208) + self.assertEqual( + personalities[1]["conscientiousness"].get("C"), 18.62283542366208 + ) self.assertEqual(personalities[2]["extraversion"].get("E"), 34.10779114957646) self.assertEqual(personalities[3]["agreeableness"].get("A"), 1.9889215690788262) self.assertEqual(personalities[4]["neuroticism"].get("N"), 58.6632925696303) @@ -82,7 +85,9 @@ def test_compute_120(self) -> None: ############################################# # 2. Test with 30 year old woman. ############################################# - result = IpipNeo(question=120).compute(sex="F", age=30, answers=load_mock_answers_120()) + result = IpipNeo(question=120).compute( + sex="F", age=30, answers=load_mock_answers_120() + ) self.assertTrue(len(result.get("id"))) self.assertTrue(len(result.get("theory"))) @@ -99,7 +104,9 @@ def test_compute_120(self) -> None: self.assertEqual(len(personalities), 5) self.assertEqual(personalities[0]["openness"].get("O"), 8.876064362586419) - self.assertEqual(personalities[1]["conscientiousness"].get("C"), 13.877369975064141) + self.assertEqual( + personalities[1]["conscientiousness"].get("C"), 13.877369975064141 + ) self.assertEqual(personalities[2]["extraversion"].get("E"), 29.240137885780882) self.assertEqual(personalities[3]["agreeableness"].get("A"), 1) self.assertEqual(personalities[4]["neuroticism"].get("N"), 47.49034742252866) @@ -107,7 +114,9 @@ def test_compute_120(self) -> None: ############################################# # 3. Test with 65 year old woman. ############################################# - result = IpipNeo(question=120).compute(sex="F", age=65, answers=load_mock_answers_120(), compare=True) + result = IpipNeo(question=120).compute( + sex="F", age=65, answers=load_mock_answers_120(), compare=True + ) self.assertIn("id", result) self.assertIn("theory", result) @@ -143,11 +152,21 @@ def test_compute_120(self) -> None: self.assertEqual(personalities[3]["agreeableness"].get("A"), 1) self.assertEqual(personalities[4]["neuroticism"].get("N"), 67.59105722337824) - original = result.get("person").get("result").get("compare").get("user_answers_original") + original = ( + result.get("person") + .get("result") + .get("compare") + .get("user_answers_original") + ) assert isinstance(original, list), "original must be a list" self.assertEqual(len(original), 120) - reversed = result.get("person").get("result").get("compare").get("user_answers_reversed") + reversed = ( + result.get("person") + .get("result") + .get("compare") + .get("user_answers_reversed") + ) assert isinstance(reversed, list), "reversed must be a list" self.assertEqual(len(reversed), 120) @@ -212,7 +231,9 @@ def test_compute_300(self) -> None: ############################################# # 1. Test with 40 year old man. ############################################# - result = IpipNeo(question=300).compute(sex="M", age=40, answers=load_mock_answers_300()) + result = IpipNeo(question=300).compute( + sex="M", age=40, answers=load_mock_answers_300() + ) self.assertTrue(len(result.get("id"))) self.assertTrue(len(result.get("theory"))) @@ -229,7 +250,9 @@ def test_compute_300(self) -> None: self.assertEqual(len(personalities), 5) self.assertEqual(personalities[0]["openness"].get("O"), 38.846625568407774) - self.assertEqual(personalities[1]["conscientiousness"].get("C"), 4.6266733183044835) + self.assertEqual( + personalities[1]["conscientiousness"].get("C"), 4.6266733183044835 + ) self.assertEqual(personalities[2]["extraversion"].get("E"), 58.00148636052478) self.assertEqual(personalities[3]["agreeableness"].get("A"), 11.934721812005705) self.assertEqual(personalities[4]["neuroticism"].get("N"), 78.82240987792443) @@ -237,7 +260,9 @@ def test_compute_300(self) -> None: ############################################# # 2. Test with 30 year old woman. ############################################# - result = IpipNeo(question=300).compute(sex="F", age=30, answers=load_mock_answers_300()) + result = IpipNeo(question=300).compute( + sex="F", age=30, answers=load_mock_answers_300() + ) self.assertTrue(len(result.get("id"))) self.assertTrue(len(result.get("theory"))) @@ -262,7 +287,9 @@ def test_compute_300(self) -> None: ############################################# # 3. Test with 65 year old woman. ############################################# - result = IpipNeo(question=300).compute(sex="F", age=65, answers=load_mock_answers_300(), compare=True) + result = IpipNeo(question=300).compute( + sex="F", age=65, answers=load_mock_answers_300(), compare=True + ) self.assertIn("id", result) self.assertIn("theory", result) @@ -298,11 +325,21 @@ def test_compute_300(self) -> None: self.assertEqual(personalities[3]["agreeableness"].get("A"), 1) self.assertEqual(personalities[4]["neuroticism"].get("N"), 71.14096931653722) - original = result.get("person").get("result").get("compare").get("user_answers_original") + original = ( + result.get("person") + .get("result") + .get("compare") + .get("user_answers_original") + ) assert isinstance(original, list), "original must be a list" self.assertEqual(len(original), 300) - reversed = result.get("person").get("result").get("compare").get("user_answers_reversed") + reversed = ( + result.get("person") + .get("result") + .get("compare") + .get("user_answers_reversed") + ) assert isinstance(reversed, list), "reversed must be a list" self.assertEqual(len(reversed), 300) @@ -353,20 +390,26 @@ def test_compute_test_custom_reversed(self) -> None: self.assertIn("user_answers_original", compare) self.assertIn("user_answers_reversed", compare) - select1 = [x.get("reverse_scored") for x in compare.get("user_answers_original", [])] + select1 = [ + x.get("reverse_scored") for x in compare.get("user_answers_original", []) + ] assert isinstance(select1, list), "select1 must be a list" self.assertEqual(select1.count(0), 67) self.assertEqual(select1.count(1), 53) - select2 = [x.get("reverse_scored") for x in compare.get("user_answers_reversed", [])] + select2 = [ + x.get("reverse_scored") for x in compare.get("user_answers_reversed", []) + ] assert isinstance(select2, list), "select2 must be a list" self.assertEqual(select2.count(0), select1.count(0)) self.assertEqual(select2.count(1), select1.count(1)) self.assertEqual(personalities[0]["openness"].get("O"), 17.42235805055492) - self.assertEqual(personalities[1]["conscientiousness"].get("C"), 18.62283542366208) + self.assertEqual( + personalities[1]["conscientiousness"].get("C"), 18.62283542366208 + ) self.assertEqual(personalities[2]["extraversion"].get("E"), 34.10779114957646) self.assertEqual(personalities[3]["agreeableness"].get("A"), 6.331832993524202) self.assertEqual(personalities[4]["neuroticism"].get("N"), 58.6632925696303) diff --git a/test/test_model.py b/test/test_model.py index b99c620..9782302 100644 --- a/test/test_model.py +++ b/test/test_model.py @@ -2,18 +2,10 @@ import unittest -from ipipneo.model import ( - Big5Agreeableness, - Big5Conscientiousness, - Big5Extraversion, - Big5Neuroticism, - Big5Openness, - FacetLevel, - FacetScale, - NormCubic, - NormScale, - QuestionNumber, -) +from ipipneo.model import (Big5Agreeableness, Big5Conscientiousness, + Big5Extraversion, Big5Neuroticism, Big5Openness, + FacetLevel, FacetScale, NormCubic, NormScale, + QuestionNumber) class TestModel(unittest.TestCase): diff --git a/test/test_utility.py b/test/test_utility.py index 3048bc8..7f25c29 100644 --- a/test/test_utility.py +++ b/test/test_utility.py @@ -3,11 +3,14 @@ import json import unittest -from ipipneo.utility import (answers_is_valid, big5_ocean_is_valid, - big5_target, create_big5_dict, organize_list_json, +from ipipneo.utility import (add_dict_footer, answers_is_valid, + big5_ocean_is_valid, big5_target, + create_big5_dict, organize_list_json, raise_if_age_is_invalid, raise_if_sex_is_invalid, reverse_scored) +LIB_CURRENT_VERSION = "1.9.0" + def load_mock_answers(idx: int) -> dict: if idx == 1: @@ -20,7 +23,6 @@ def load_mock_answers(idx: int) -> dict: class TestUtility(unittest.TestCase): - maxDiff = None def test_raise_if_sex_is_invalid(self) -> None: @@ -591,3 +593,10 @@ def test_reverse_scored(self) -> None: self.assertEqual(reverse_scored(select=3), 3) self.assertEqual(reverse_scored(select=4), 2) self.assertEqual(reverse_scored(select=5), 1) + + def test_add_dict_footer(self) -> None: + footer = add_dict_footer() + assert isinstance(footer, dict), "footer must be a dict" + + self.assertEqual(footer.get("library"), "five-factor-e") + self.assertEqual(footer.get("version"), LIB_CURRENT_VERSION) From 935118e959be31f82925b73a5b4d3a988d7bc4a1 Mon Sep 17 00:00:00 2001 From: Ederson Corbari Date: Sat, 1 Apr 2023 16:50:37 -0300 Subject: [PATCH 2/2] feat: Fix code black code style :alien: --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index ecabd50..2bfec26 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 Neural7 +Copyright (c) 2022-2023 ReWire5 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal