Skip to content

Commit

Permalink
fix: fix circular imports
Browse files Browse the repository at this point in the history
  • Loading branch information
Mala1180 committed Apr 26, 2024
1 parent 7dada35 commit 85065b2
Show file tree
Hide file tree
Showing 29 changed files with 88 additions and 96 deletions.
2 changes: 1 addition & 1 deletion application/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from application.QuestionService import QuestionService
from application.question_service import QuestionService
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from domain.graph.core import ProjectId, Question
from domain.graph.repositories import QuestionRepository
from domain.graph.core.project_id import ProjectId
from domain.graph.core.question import Question
from domain.graph.repositories.question_repository import QuestionRepository


class QuestionService:
Expand Down
12 changes: 6 additions & 6 deletions domain/graph/core/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from domain.graph.core.AnswerId import AnswerId
from domain.graph.core.Answer import Answer
from domain.graph.core.QuestionId import QuestionId
from domain.graph.core.Question import Question
from domain.graph.core.ProjectId import ProjectId
from domain.graph.core.Project import Project
from domain.graph.core.answer_id import AnswerId
from domain.graph.core.answer import Answer
from domain.graph.core.question_id import QuestionId
from domain.graph.core.question import Question
from domain.graph.core.project_id import ProjectId
from domain.graph.core.project import Project
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from pydantic import BaseModel

from domain.graph.core import AnswerId
from domain.graph.core.answer_id import AnswerId


class Answer(BaseModel):
Expand Down
File renamed without changes.
4 changes: 2 additions & 2 deletions domain/graph/core/enum/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
from domain.graph.core.enum.Action import Action
from domain.graph.core.enum.QuestionType import QuestionType
from domain.graph.core.enum.action import Action
from domain.graph.core.enum.question_type import QuestionType
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from pydantic import BaseModel

from domain.graph.core import ProjectId
from domain.graph.core.project_id import ProjectId


class Project(BaseModel):
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

from pydantic import BaseModel, field_serializer

from domain.graph.core import Answer, QuestionId
from domain.graph.core.enum import Action, QuestionType
from domain.graph.core.answer import Answer
from domain.graph.core.question_id import QuestionId
from domain.graph.core.enum.action import Action
from domain.graph.core.enum.question_type import QuestionType


class Question(BaseModel):
Expand Down
File renamed without changes.
6 changes: 3 additions & 3 deletions domain/graph/factories/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from domain.graph.factories.AnswerFactory import AnswerFactory
from domain.graph.factories.ProjectFactory import ProjectFactory
from domain.graph.factories.QuestionFactory import QuestionFactory
from domain.graph.factories.answer_factory import AnswerFactory
from domain.graph.factories.project_factory import ProjectFactory
from domain.graph.factories.question_factory import QuestionFactory
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from domain.graph.core import Answer, AnswerId
from domain.graph.core.answer import Answer
from domain.graph.core.answer_id import AnswerId


class AnswerFactory:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from domain.graph.core import Project, ProjectId
from domain.graph.core.project import Project
from domain.graph.core.project_id import ProjectId


class ProjectFactory:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
from typing import FrozenSet, Optional

from domain.graph.core import Answer, Question, QuestionId, AnswerId
from domain.graph.core.enum import Action, QuestionType
from domain.graph.factories.AnswerFactory import AnswerFactory
from domain.graph.core.answer import Answer
from domain.graph.core.answer_id import AnswerId
from domain.graph.core.enum.action import Action
from domain.graph.core.enum.question_type import QuestionType
from domain.graph.core.question import Question
from domain.graph.core.question_id import QuestionId
from domain.graph.factories.answer_factory import AnswerFactory


class QuestionFactory:
Expand All @@ -11,13 +15,13 @@ def __init__(self):
self._answer_factory = AnswerFactory()

def create_question(
self,
question_id: QuestionId,
text: str,
question_type: QuestionType,
available_answers: FrozenSet[Answer],
previous_question_id: Optional[QuestionId] = None,
action_needed: Optional[Action] = None,
self,
question_id: QuestionId,
text: str,
question_type: QuestionType,
available_answers: FrozenSet[Answer],
previous_question_id: Optional[QuestionId] = None,
action_needed: Optional[Action] = None,
) -> Question:
return Question(
id=question_id,
Expand All @@ -29,11 +33,11 @@ def create_question(
)

def create_boolean_question(
self,
question_id: QuestionId,
text: str,
previous_question_id: Optional[QuestionId] = None,
action_needed: Optional[Action] = None,
self,
question_id: QuestionId,
text: str,
previous_question_id: Optional[QuestionId] = None,
action_needed: Optional[Action] = None,
) -> Question:
available_answers: FrozenSet[Answer] = frozenset(
{
Expand Down
2 changes: 1 addition & 1 deletion domain/graph/repositories/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from domain.graph.repositories.QuestionRepository import QuestionRepository
from domain.graph.repositories.question_repository import QuestionRepository
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
from abc import ABC, abstractmethod
from typing import List

from domain.graph.core import ProjectId, QuestionId, Question
from domain.graph.core.project_id import ProjectId
from domain.graph.core.question import Question
from domain.graph.core.question_id import QuestionId


class QuestionRepository(ABC):
Expand Down
2 changes: 1 addition & 1 deletion domain/project/core/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from domain.project.core.SelectableQuestion import SelectableQuestion
from domain.project.core.selectable_question import SelectableQuestion
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
from pydantic import field_serializer
from typing_extensions import Self

from domain.graph.core import Answer, Question, QuestionId
from domain.project.core.selection import SelectionStrategy, SingleSelectionStrategy
from domain.project.factories import SelectableQuestionFactory
from domain.graph.core.answer import Answer
from domain.graph.core.question import Question
from domain.project.core.selection.selection_strategy import SelectionStrategy


class SelectableQuestion(Question):
Expand All @@ -21,28 +21,30 @@ def select_answer(self, answer: Answer) -> Self:
selected_answers = self.selection_strategy.select_answer(
answer, self.selected_answers
)
return SelectableQuestionFactory().create_question(
self.id,
self.text,
self.type,
self.available_answers,
self.previous_question_id,
self.action_needed,
selected_answers,
return SelectableQuestion(
id=self.id,
text=self.text,
type=self.type,
available_answers=self.available_answers,
previous_question_id=self.previous_question_id,
action_needed=self.action_needed,
selection_strategy=self.selection_strategy,
selected_answers=selected_answers,
)

def deselect_answer(self, answer: Answer) -> Self:
selected_answers = self.selection_strategy.deselect_answer(
answer, self.selected_answers
)
return SelectableQuestionFactory().create_question(
self.id,
self.text,
self.type,
self.available_answers,
self.previous_question_id,
self.action_needed,
selected_answers,
return SelectableQuestion(
id=self.id,
text=self.text,
type=self.type,
available_answers=self.available_answers,
previous_question_id=self.previous_question_id,
action_needed=self.action_needed,
selection_strategy=self.selection_strategy,
selected_answers=selected_answers,
)

@field_serializer("selected_answers", when_used="json")
Expand All @@ -65,21 +67,3 @@ def __hash__(self):
self.action_needed,
)
)


if __name__ == "__main__":
print(
SelectableQuestion(
id=QuestionId(code="question_id"),
text="Do you practice TDD?",
type=QuestionType.SINGLE_CHOICE,
available_answers=frozenset(
{
Answer(text="Always", value="always"),
Answer(text="Never", value="never"),
}
),
action_needed=None,
selection_strategy=SingleSelectionStrategy(),
)
)
10 changes: 3 additions & 7 deletions domain/project/core/selection/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
from domain.project.core.selection.SelectionStrategy import SelectionStrategy
from domain.project.core.selection.MultipleSelectionStrategy import (
MultipleSelectionStrategy,
)
from domain.project.core.selection.SingleSelectionStrategy import (
SingleSelectionStrategy,
)
from domain.project.core.selection.selection_strategy import SelectionStrategy
from domain.project.core.selection.multiple_selection_strategy import MultipleSelectionStrategy
from domain.project.core.selection.single_selection_strategy import SingleSelectionStrategy
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from typing_extensions import FrozenSet

from domain.graph.core import Answer
from domain.project.core.selection import SelectionStrategy
from domain.graph.core.answer import Answer
from domain.project.core.selection.selection_strategy import SelectionStrategy


class MultipleSelectionStrategy(SelectionStrategy):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from pydantic import BaseModel
from typing_extensions import FrozenSet

from domain.graph.core import Answer
from domain.graph.core.answer import Answer


class SelectionStrategy(ABC, BaseModel):
Expand Down
2 changes: 1 addition & 1 deletion domain/project/factories/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from domain.project.factories.SelectableQuestionFactory import SelectableQuestionFactory
from domain.project.factories.selectable_question_factory import SelectableQuestionFactory
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
from typing import FrozenSet, Optional

from domain.graph.core import Answer, QuestionId, AnswerId
from domain.graph.core.enum import Action, QuestionType
from domain.graph.factories import AnswerFactory
from domain.project.core import SelectableQuestion
from domain.project.core.selection import (
SingleSelectionStrategy,
MultipleSelectionStrategy,
)
from domain.graph.core.answer import Answer
from domain.graph.core.answer_id import AnswerId
from domain.graph.core.enum.action import Action
from domain.graph.core.enum.question_type import QuestionType
from domain.graph.core.question_id import QuestionId
from domain.graph.factories.answer_factory import AnswerFactory
from domain.project.core.selectable_question import SelectableQuestion
from domain.project.core.selection.multiple_selection_strategy import MultipleSelectionStrategy
from domain.project.core.selection.single_selection_strategy import SingleSelectionStrategy


class SelectableQuestionFactory:
Expand Down
2 changes: 1 addition & 1 deletion storage/repositories/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
from storage.repositories.GraphQuestionRepository import GraphQuestionRepository
from storage.repositories.graph_question_repository import GraphQuestionRepository
2 changes: 1 addition & 1 deletion test/unit/domain/test_TestSelectableQuestion.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

from domain.graph.core import Answer, AnswerId, QuestionId
from domain.graph.core.enum import QuestionType
from domain.graph.factories.AnswerFactory import AnswerFactory
from domain.graph.factories.answer_factory import AnswerFactory
from domain.project.core import SelectableQuestion
from domain.project.factories import SelectableQuestionFactory

Expand Down

0 comments on commit 85065b2

Please sign in to comment.