instant-python 0.1.1__py3-none-any.whl → 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- instant_python/installer/pdm_manager.py +10 -3
- instant_python/installer/uv_manager.py +11 -0
- instant_python/question_prompter/question/conditional_question.py +9 -3
- instant_python/question_prompter/step/template_step.py +21 -13
- instant_python/question_prompter/user_requirements.py +1 -0
- instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py +3 -3
- instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py +19 -0
- instant_python/templates/boilerplate/event_bus/event_bus.py +1 -1
- instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py +1 -1
- instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py +17 -0
- instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py +1 -1
- instant_python/templates/boilerplate/value_object/int_value_object.py +1 -1
- instant_python/templates/boilerplate/value_object/string_value_object.py +1 -1
- instant_python/templates/boilerplate/value_object/uuid.py +1 -1
- instant_python/templates/project_structure/clean_architecture/source.yml.j2 +2 -2
- instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +5 -3
- instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +2 -0
- instant_python/templates/project_structure/event_bus_domain.yml.j2 +3 -0
- instant_python/templates/project_structure/standard_project/source.yml.j2 +2 -2
- {instant_python-0.1.1.dist-info → instant_python-0.2.0.dist-info}/METADATA +1 -1
- {instant_python-0.1.1.dist-info → instant_python-0.2.0.dist-info}/RECORD +24 -23
- {instant_python-0.1.1.dist-info → instant_python-0.2.0.dist-info}/WHEEL +0 -0
- {instant_python-0.1.1.dist-info → instant_python-0.2.0.dist-info}/entry_points.txt +0 -0
- {instant_python-0.1.1.dist-info → instant_python-0.2.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -31,6 +31,7 @@ class PdmManager(DependencyManager):
|
|
|
31
31
|
print(f">>> Python {version} installed successfully")
|
|
32
32
|
|
|
33
33
|
def install_dependencies(self, dependencies: list[str]) -> None:
|
|
34
|
+
self._create_virtual_environment()
|
|
34
35
|
for dependency_name in dependencies:
|
|
35
36
|
self._install_dependency(dependency_name)
|
|
36
37
|
|
|
@@ -67,6 +68,12 @@ class PdmManager(DependencyManager):
|
|
|
67
68
|
group_flag += f"--group {group_name}"
|
|
68
69
|
return f"{dev_flag} {group_flag}"
|
|
69
70
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
def _create_virtual_environment(self) -> None:
|
|
72
|
+
command = f"{self._pdm} install"
|
|
73
|
+
subprocess.run(
|
|
74
|
+
command,
|
|
75
|
+
shell=True,
|
|
76
|
+
check=True,
|
|
77
|
+
cwd=self._project_directory,
|
|
78
|
+
stdout=subprocess.DEVNULL,
|
|
79
|
+
)
|
|
@@ -33,6 +33,7 @@ class UvManager(DependencyManager):
|
|
|
33
33
|
print(f">>> Python {version} installed successfully")
|
|
34
34
|
|
|
35
35
|
def install_dependencies(self, dependencies: list[str]) -> None:
|
|
36
|
+
self._create_virtual_environment()
|
|
36
37
|
for dependency_name in dependencies:
|
|
37
38
|
self._install_dependency(dependency_name)
|
|
38
39
|
|
|
@@ -71,3 +72,13 @@ class UvManager(DependencyManager):
|
|
|
71
72
|
).ask()["group_name"]
|
|
72
73
|
flag = f"--group {group_name}"
|
|
73
74
|
return flag
|
|
75
|
+
|
|
76
|
+
def _create_virtual_environment(self) -> None:
|
|
77
|
+
command = f"{self._uv} sync"
|
|
78
|
+
subprocess.run(
|
|
79
|
+
command,
|
|
80
|
+
shell=True,
|
|
81
|
+
check=True,
|
|
82
|
+
cwd=self._project_directory,
|
|
83
|
+
stdout=subprocess.DEVNULL,
|
|
84
|
+
)
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
from typing import Union
|
|
2
|
+
|
|
1
3
|
from instant_python.question_prompter.question.question import Question
|
|
2
4
|
|
|
3
5
|
|
|
4
6
|
class ConditionalQuestion:
|
|
5
7
|
def __init__(
|
|
6
|
-
self, base_question: Question, subquestions: list[Question], condition: str | bool
|
|
8
|
+
self, base_question: Question, subquestions: Union[list[Question], "ConditionalQuestion"], condition: str | bool
|
|
7
9
|
) -> None:
|
|
8
10
|
self._base_question = base_question
|
|
9
11
|
self._subquestions = subquestions
|
|
@@ -16,8 +18,12 @@ class ConditionalQuestion:
|
|
|
16
18
|
return base_answer
|
|
17
19
|
|
|
18
20
|
answers = base_answer
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
|
|
22
|
+
if isinstance(self._subquestions, ConditionalQuestion):
|
|
23
|
+
answers.update(self._subquestions.ask())
|
|
24
|
+
else:
|
|
25
|
+
for question in self._subquestions:
|
|
26
|
+
answers.update(question.ask())
|
|
21
27
|
return answers
|
|
22
28
|
|
|
23
29
|
def _base_answer_does_not_satisfies_condition(self, base_answer: dict[str, str]) -> bool:
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from instant_python.question_prompter.question.boolean_question import BooleanQuestion
|
|
1
2
|
from instant_python.question_prompter.question.choice_question import ChoiceQuestion
|
|
2
3
|
from instant_python.question_prompter.question.conditional_question import (
|
|
3
4
|
ConditionalQuestion,
|
|
@@ -17,12 +18,11 @@ class TemplateStep(Step):
|
|
|
17
18
|
self._questions = [
|
|
18
19
|
MultipleChoiceQuestion(
|
|
19
20
|
key="built_in_features",
|
|
20
|
-
message="Select the built-in features you want to include
|
|
21
|
+
message="Select the built-in features you want to include",
|
|
21
22
|
options=[
|
|
22
23
|
"value_objects",
|
|
23
24
|
"github_actions",
|
|
24
25
|
"makefile",
|
|
25
|
-
"synchronous_sqlalchemy",
|
|
26
26
|
"logger",
|
|
27
27
|
"event_bus",
|
|
28
28
|
"async_sqlalchemy",
|
|
@@ -40,18 +40,26 @@ class TemplateStep(Step):
|
|
|
40
40
|
"standard_project",
|
|
41
41
|
],
|
|
42
42
|
),
|
|
43
|
-
subquestions=
|
|
44
|
-
|
|
45
|
-
key="
|
|
46
|
-
message="
|
|
47
|
-
default=
|
|
43
|
+
subquestions=ConditionalQuestion(
|
|
44
|
+
base_question=BooleanQuestion(
|
|
45
|
+
key="specify_bounded_context",
|
|
46
|
+
message="Do you want to specify your first bounded context?",
|
|
47
|
+
default=True,
|
|
48
48
|
),
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
49
|
+
subquestions=[
|
|
50
|
+
FreeTextQuestion(
|
|
51
|
+
key="bounded_context",
|
|
52
|
+
message="Enter the bounded context name",
|
|
53
|
+
default="backoffice",
|
|
54
|
+
),
|
|
55
|
+
FreeTextQuestion(
|
|
56
|
+
key="aggregate_name",
|
|
57
|
+
message="Enter the aggregate name",
|
|
58
|
+
default="user",
|
|
59
|
+
),
|
|
60
|
+
],
|
|
61
|
+
condition=True,
|
|
62
|
+
),
|
|
55
63
|
condition=TemplateTypes.DDD,
|
|
56
64
|
),
|
|
57
65
|
]
|
|
@@ -20,6 +20,7 @@ class UserRequirements:
|
|
|
20
20
|
git_email: str = field(default_factory=str)
|
|
21
21
|
git_user_name: str = field(default_factory=str)
|
|
22
22
|
dependencies: list[str] = field(default_factory=list)
|
|
23
|
+
specify_bounded_context: bool = field(default=False)
|
|
23
24
|
bounded_context: str = field(default_factory=str)
|
|
24
25
|
aggregate_name: str = field(default_factory=str)
|
|
25
26
|
built_in_features: list[str] = field(default_factory=list)
|
|
@@ -5,8 +5,8 @@ from {{ source_name }}.{{ template_domain_import }}.event.domain_event import Do
|
|
|
5
5
|
from {{ source_name }}.{{ template_domain_import }}.event.domain_event_subscriber import (
|
|
6
6
|
DomainEventSubscriber,
|
|
7
7
|
)
|
|
8
|
-
from {{ source_name }}.{{ template_domain_import }}.exceptions.
|
|
9
|
-
|
|
8
|
+
from {{ source_name }}.{{ template_domain_import }}.exceptions.domain_event_type_not_found_error import (
|
|
9
|
+
DomainEventTypeNotFoundError,
|
|
10
10
|
)
|
|
11
11
|
|
|
12
12
|
|
|
@@ -23,6 +23,6 @@ class DomainEventJsonDeserializer:
|
|
|
23
23
|
event_class = self._events_mapping.get(content["data"]["type"])
|
|
24
24
|
|
|
25
25
|
if not event_class:
|
|
26
|
-
raise
|
|
26
|
+
raise DomainEventTypeNotFoundError(content["data"]["type"])
|
|
27
27
|
|
|
28
28
|
return event_class(**content["data"]["attributes"])
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{% set template_domain_import = "shared.domain"|compute_base_path(template) %}
|
|
2
|
+
{% if pythono_version in ["3.12", "3.13"] %}
|
|
2
3
|
from abc import ABC, abstractmethod
|
|
3
4
|
|
|
4
5
|
from {{ source_name }}.{{ template_domain_import }}.event.domain_event import DomainEvent
|
|
@@ -13,3 +14,21 @@ class DomainEventSubscriber[EventType: DomainEvent](ABC):
|
|
|
13
14
|
@abstractmethod
|
|
14
15
|
def on(self, event: EventType) -> None:
|
|
15
16
|
raise NotImplementedError
|
|
17
|
+
{% else %}
|
|
18
|
+
from abc import ABC, abstractmethod
|
|
19
|
+
from typing import Generic, TypeVar
|
|
20
|
+
|
|
21
|
+
from {{ source_name }}.{{ template_domain_import }}.event.domain_event import DomainEvent
|
|
22
|
+
|
|
23
|
+
EventType = TypeVar("EventType", bound=DomainEvent)
|
|
24
|
+
|
|
25
|
+
class DomainEventSubscriber(Generic[EventType], ABC):
|
|
26
|
+
@staticmethod
|
|
27
|
+
@abstractmethod
|
|
28
|
+
def subscribed_to() -> list[type[EventType]]:
|
|
29
|
+
raise NotImplementedError
|
|
30
|
+
|
|
31
|
+
@abstractmethod
|
|
32
|
+
def on(self, event: EventType) -> None:
|
|
33
|
+
raise NotImplementedError
|
|
34
|
+
{% endif %}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from {{ source_name }}.{{ template_domain_import }}.exceptions.domain_error import DomainError
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
class
|
|
5
|
+
class DomainEventTypeNotFoundError(DomainError):
|
|
6
6
|
def __init__(self, name: str) -> None:
|
|
7
7
|
self._message = f"Event type {name} not found among subscriber."
|
|
8
8
|
self._type = "domain_event_type_not_found"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{% set template_domain_import = "shared.domain"|compute_base_path(template) %}
|
|
2
|
+
from {{ source_name }}.{{ template_domain_import }}.exceptions.domain_error import DomainError
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class RabbitMqConnectionNotEstablishedError(DomainError):
|
|
6
|
+
def __init__(self) -> None:
|
|
7
|
+
self._message = "RabbitMQ connection not established."
|
|
8
|
+
self._type = "rabbit_mq_connection"
|
|
9
|
+
super().__init__(self._message)
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def type(self) -> str:
|
|
13
|
+
return self._type
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def message(self) -> str:
|
|
17
|
+
return self._message
|
|
@@ -6,7 +6,7 @@ from typing import TypeVar
|
|
|
6
6
|
from typing import TypeVar, Generic
|
|
7
7
|
{% endif %}
|
|
8
8
|
|
|
9
|
-
from {{ source_name }}.{{ template_domain_import }}.
|
|
9
|
+
from {{ source_name }}.{{ template_domain_import }}.value_object.uuid import Uuid
|
|
10
10
|
from {{ source_name }}.{{ template_infra_import }}.persistence.sqlalchemy.base import Base
|
|
11
11
|
from {{ source_name }}.{{ template_infra_import }}.persistence.sqlalchemy.session_maker import (
|
|
12
12
|
SessionMaker,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
from {{ source_name }}.{{ template_domain_import }}.exceptions.invalid_negative_value_error import (
|
|
3
3
|
InvalidNegativeValueError,
|
|
4
4
|
)
|
|
5
|
-
from {{ source_name }}.{{ template_domain_import }}.
|
|
5
|
+
from {{ source_name }}.{{ template_domain_import }}.value_object.value_object import ValueObject
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class IntValueObject(ValueObject[int]):
|
|
@@ -5,7 +5,7 @@ from {{ source_name }}.{{ template_domain_import }}.exceptions.incorrect_value_t
|
|
|
5
5
|
from {{ source_name }}.{{ template_domain_import }}.exceptions.required_value_error import (
|
|
6
6
|
RequiredValueError,
|
|
7
7
|
)
|
|
8
|
-
from {{ source_name }}.{{ template_domain_import }}.
|
|
8
|
+
from {{ source_name }}.{{ template_domain_import }}.value_object.value_object import ValueObject
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class StringValueObject(ValueObject[str]):
|
|
@@ -4,7 +4,7 @@ from uuid import UUID
|
|
|
4
4
|
from {{ source_name }}.{{ template_domain_import }}.exceptions.required_value_error import (
|
|
5
5
|
RequiredValueError,
|
|
6
6
|
)
|
|
7
|
-
from {{ source_name }}.{{ template_domain_import }}.
|
|
7
|
+
from {{ source_name }}.{{ template_domain_import }}.value_object.value_object import ValueObject
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class Uuid(ValueObject[str]):
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
{% if "event_bus" in built_in_features %}
|
|
37
37
|
{{ macros.include_and_indent("project_structure/event_bus_infra.yml.j2", 8) }}
|
|
38
38
|
{% endif %}
|
|
39
|
-
{% if "logger"
|
|
39
|
+
{% if ["logger", "fastapi_application"] | is_in(built_in_features) %}
|
|
40
40
|
{{ macros.include_and_indent("project_structure/logger.yml.j2", 8) }}
|
|
41
41
|
{% endif %}
|
|
42
42
|
{% if "async_sqlalchemy" in built_in_features %}
|
|
43
43
|
{{ macros.include_and_indent("project_structure/async_sqlalchemy.yml.j2", 8) }}
|
|
44
44
|
{% endif %}
|
|
45
|
-
{% if "async_alembic"
|
|
45
|
+
{% if ["async_alembic", "fastapi_application"] | is_in(built_in_features) %}
|
|
46
46
|
{{ macros.include_and_indent("project_structure/alembic_migrator.yml.j2", 8) }}
|
|
47
47
|
{% endif %}
|
|
48
48
|
{% if "fastapi_application" in built_in_features %}
|
|
@@ -38,13 +38,13 @@
|
|
|
38
38
|
{% if "event_bus" in built_in_features %}
|
|
39
39
|
{{ macros.include_and_indent("project_structure/event_bus_infra.yml.j2", 12) }}
|
|
40
40
|
{% endif %}
|
|
41
|
-
{% if "logger"
|
|
41
|
+
{% if ["logger", "fastapi_application"] | is_in(built_in_features) %}
|
|
42
42
|
{{ macros.include_and_indent("project_structure/logger.yml.j2", 12) }}
|
|
43
43
|
{% endif %}
|
|
44
44
|
{% if "async_sqlalchemy" in built_in_features %}
|
|
45
45
|
{{ macros.include_and_indent("project_structure/async_sqlalchemy.yml.j2", 12) }}
|
|
46
46
|
{% endif %}
|
|
47
|
-
{% if "async_alembic"
|
|
47
|
+
{% if ["async_alembic", "fastapi_application"] | is_in(built_in_features) %}
|
|
48
48
|
{{ macros.include_and_indent("project_structure/alembic_migrator.yml.j2", 12) }}
|
|
49
49
|
{% endif %}
|
|
50
50
|
{% if "fastapi_application" in built_in_features %}
|
|
@@ -52,4 +52,6 @@
|
|
|
52
52
|
{% endif %}
|
|
53
53
|
{% endif %}
|
|
54
54
|
{% endif %}
|
|
55
|
-
{
|
|
55
|
+
{% if specify_bounded_context %}
|
|
56
|
+
{{ macros.include_and_indent("project_structure/domain_driven_design/bounded_context.yml.j2", 4) }}
|
|
57
|
+
{% endig %}
|
|
@@ -14,13 +14,13 @@
|
|
|
14
14
|
{% if "synchronous_sqlalchemy" in built_in_features %}
|
|
15
15
|
{{ macros.include_and_indent("project_structure/synchronous_sqlalchemy.yml.j2", 4) }}
|
|
16
16
|
{% endif %}
|
|
17
|
-
{% if "logger"
|
|
17
|
+
{% if ["logger", "fastapi_application"] | is_in(built_in_features) %}
|
|
18
18
|
{{ macros.include_and_indent("project_structure/logger.yml.j2", 4) }}
|
|
19
19
|
{% endif %}
|
|
20
20
|
{% if "async_sqlalchemy" in built_in_features %}
|
|
21
21
|
{{ macros.include_and_indent("project_structure/async_sqlalchemy.yml.j2", 4) }}
|
|
22
22
|
{% endif %}
|
|
23
|
-
{% if "async_alembic"
|
|
23
|
+
{% if ["async_alembic", "fastapi_application"] | is_in(built_in_features) %}
|
|
24
24
|
{{ macros.include_and_indent("project_structure/alembic_migrator.yml.j2", 4) }}
|
|
25
25
|
{% endif %}
|
|
26
26
|
{% if "fastapi_application" in built_in_features %}
|
|
@@ -8,8 +8,8 @@ instant_python/installer/dependency_manager_factory.py,sha256=uAwpTK9ilCkaZ50d4h
|
|
|
8
8
|
instant_python/installer/git_configurer.py,sha256=di6kGnQ4TF5GSoXh2yXM7a1jg8QoFzD_YWq5HKWzYD8,1524
|
|
9
9
|
instant_python/installer/installer.py,sha256=YV0PZ2wLC4bjpalvIqk7PEpLrFr_P7GSVJ_U8rnf7Ds,565
|
|
10
10
|
instant_python/installer/managers.py,sha256=HNDazLb2iNgP1xdYvPFfMmVE9Ww_v9a0_CWTPo4XN1w,101
|
|
11
|
-
instant_python/installer/pdm_manager.py,sha256=
|
|
12
|
-
instant_python/installer/uv_manager.py,sha256=
|
|
11
|
+
instant_python/installer/pdm_manager.py,sha256=z49NAurrzgByMbB560xeAMH-5a4H1jkXi9AvtAQ8G4E,2756
|
|
12
|
+
instant_python/installer/uv_manager.py,sha256=iyoETYfheaTEXWncvcZqnmrfV91sq9fJtH_-8sTmBqg,2878
|
|
13
13
|
instant_python/project_generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
instant_python/project_generator/custom_template_manager.py,sha256=ApOBNU9hdOiQeaJhbr_RMdjm3B-vVLaXyvgj6XtbkZY,628
|
|
15
15
|
instant_python/project_generator/default_template_manager.py,sha256=UdhB7pTZLbShSOAEHWl-l35dLfV0XU4fF69HMBfMw3U,1802
|
|
@@ -23,11 +23,11 @@ instant_python/project_generator/template_manager.py,sha256=LhN56T04QlRZv0DXUIl9
|
|
|
23
23
|
instant_python/question_prompter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
24
|
instant_python/question_prompter/question_wizard.py,sha256=sRxECDBgHhDSWch8zan1Pd_XuLVdoGcaSB5SWXfSBso,476
|
|
25
25
|
instant_python/question_prompter/template_types.py,sha256=HzqlryyB5KRBnCmqnDy-4Z-Kn3aTBC3wlrDWwDLdbXs,147
|
|
26
|
-
instant_python/question_prompter/user_requirements.py,sha256=
|
|
26
|
+
instant_python/question_prompter/user_requirements.py,sha256=l9q5P_xn4Ii3TtctVG1J8B6J5nNuSynrivPVu6s02QQ,1219
|
|
27
27
|
instant_python/question_prompter/question/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
28
|
instant_python/question_prompter/question/boolean_question.py,sha256=SUWotn15hPP8njqCJ3J1FYBtQ4cQ79e5laB3YObZjo8,430
|
|
29
29
|
instant_python/question_prompter/question/choice_question.py,sha256=HeiyhihVngEcJmRW784RS1rAG8RaBua52Watb6bpVio,592
|
|
30
|
-
instant_python/question_prompter/question/conditional_question.py,sha256=
|
|
30
|
+
instant_python/question_prompter/question/conditional_question.py,sha256=_xwrOzCkKAiTM12cakfcv_4FPK4_6pE60Hrozevh5zs,1080
|
|
31
31
|
instant_python/question_prompter/question/dependencies_question.py,sha256=kI1UiFWh-WOkmN1FtoLg7IKT14FDSc4_HKhRMNCFrYs,1566
|
|
32
32
|
instant_python/question_prompter/question/free_text_question.py,sha256=LnY7kttSJGGvcja0g-2CapxFXR3ulHCAfUTQ6MP34xg,462
|
|
33
33
|
instant_python/question_prompter/question/multiple_choice_question.py,sha256=smMCE0PDbxrUFiIjOWi3ylFWg0_7VZ7D8m1m3_qImE4,457
|
|
@@ -38,7 +38,7 @@ instant_python/question_prompter/step/general_custom_template_project_step.py,sh
|
|
|
38
38
|
instant_python/question_prompter/step/general_project_step.py,sha256=e1NCVA7jDGfgaoxOINjSPhYkxTEvWuqQpeN_ClDAwRU,1879
|
|
39
39
|
instant_python/question_prompter/step/git_step.py,sha256=_Lrz43uLrxCWXjHX8szKovlVBXYXfRRmWbh8Nst_1SU,1051
|
|
40
40
|
instant_python/question_prompter/step/steps.py,sha256=KKjIj-5AmtRjZ58vv4Z8IRFa1gwbFpe0pYGWgj2ABI4,384
|
|
41
|
-
instant_python/question_prompter/step/template_step.py,sha256=
|
|
41
|
+
instant_python/question_prompter/step/template_step.py,sha256=Pjo1xUYl1Rt5KTCx4zS_ocSGkeHCglZv8XKcl7yJRxU,2731
|
|
42
42
|
instant_python/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
43
|
instant_python/templates/boilerplate/.gitignore,sha256=uViK8iDiHZGpnnvM3TpgrDwXlBk16wjMIndS8XDtWYE,3035
|
|
44
44
|
instant_python/templates/boilerplate/.pre-commit-config.yml,sha256=bOJLrQ_0LqFxHDZeJKbs2FDKE2lxnHzWtYM1CgLSDjM,823
|
|
@@ -51,10 +51,10 @@ instant_python/templates/boilerplate/random_generator.py,sha256=WHyhk9xfRsziGH1P
|
|
|
51
51
|
instant_python/templates/boilerplate/event_bus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
52
|
instant_python/templates/boilerplate/event_bus/aggregate_root.py,sha256=JgmBSYMXfh6P3twKW_HznYq8_kNHupmgPoRHSmlSA2Q,571
|
|
53
53
|
instant_python/templates/boilerplate/event_bus/domain_event.py,sha256=aD4UGS4HWQwQvyfdKLpWN1emDfHUS6NQbYlGXRHVDas,312
|
|
54
|
-
instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py,sha256=
|
|
54
|
+
instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py,sha256=gls8ZNGlFzFfd9ze8a9lbPgYARPJkUjsTHqGB5QRpZk,1052
|
|
55
55
|
instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py,sha256=BP7sJ05uec-ZVhuOpBrpTFkgMAt0M134jBCSTRlzYbQ,493
|
|
56
|
-
instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py,sha256=
|
|
57
|
-
instant_python/templates/boilerplate/event_bus/event_bus.py,sha256=
|
|
56
|
+
instant_python/templates/boilerplate/event_bus/domain_event_subscriber.py,sha256=MZUHF_DlxgvpP3HotpjUefiN6CN9V5-cTB7tvsfjowc,1047
|
|
57
|
+
instant_python/templates/boilerplate/event_bus/event_bus.py,sha256=_mojP9FAzbFRDYvjdS5XXOYOTKgUKTYywZX-fv8nao4,347
|
|
58
58
|
instant_python/templates/boilerplate/event_bus/exchange_type.py,sha256=9R79QpuSpY3jvGHw0lZptpN4Rc9mT8ySEl-rxOEblFc,250
|
|
59
59
|
instant_python/templates/boilerplate/event_bus/mock_event_bus.py,sha256=0DRRsAs66oWF6hsiCyIMBJbeXptCODJr0MoAeoulang,635
|
|
60
60
|
instant_python/templates/boilerplate/event_bus/rabbit_mq_configurer.py,sha256=F3TpTileJfm87s-5wd8J7BCWab5z27WOd0orVL60k5M,2085
|
|
@@ -65,10 +65,11 @@ instant_python/templates/boilerplate/event_bus/rabbit_mq_queue_formatter.py,sha2
|
|
|
65
65
|
instant_python/templates/boilerplate/event_bus/rabbit_mq_settings.py,sha256=0oOoAU0m9Jwo6CmBlGpEiFXU7lvIILI0OfkB9W7RNG4,131
|
|
66
66
|
instant_python/templates/boilerplate/exceptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
67
|
instant_python/templates/boilerplate/exceptions/domain_error.py,sha256=XkgOt_5SpZ-0R73KYJ61TenXT8b0wCvoC4ZEge9ierI,283
|
|
68
|
-
instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py,sha256=
|
|
68
|
+
instant_python/templates/boilerplate/exceptions/domain_event_type_not_found_error.py,sha256=iV3-7B-7V1xCnezrHlEObGXrzfui5s_4jvNABv75uMQ,529
|
|
69
69
|
instant_python/templates/boilerplate/exceptions/incorrect_value_type_error.py,sha256=to3-XOiMqvG1F7Mh_9KKsGzFx88pvAVow-NW9KNvffg,615
|
|
70
70
|
instant_python/templates/boilerplate/exceptions/invalid_id_format_error.py,sha256=lkWizihdUsctYeev_M0iCw3_L7VkhKsUSyAwa-91Sgs,481
|
|
71
71
|
instant_python/templates/boilerplate/exceptions/invalid_negative_value_error.py,sha256=Dp8l4K_77XgJ0DL1r0sLnYSPmai-Mw7CQAxJfmfSq80,553
|
|
72
|
+
instant_python/templates/boilerplate/exceptions/rabbit_mq_connection_not_established_error.py,sha256=9ariPxfnIbkDEiCm3zCil7otDZ9-NgQIVMnk680S4TM,509
|
|
72
73
|
instant_python/templates/boilerplate/exceptions/required_value_error.py,sha256=l9RPCq0b8FSs1qa49hms9v-oj_pnx3V2SiTIi89TC9M,526
|
|
73
74
|
instant_python/templates/boilerplate/fastapi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
75
|
instant_python/templates/boilerplate/fastapi/application.py,sha256=Fk6TcWY-XUa033HOsvgFR_sgaNPodVNJs2b3tSBopLg,1075
|
|
@@ -94,7 +95,7 @@ instant_python/templates/boilerplate/persistence/async/script.py.mako,sha256=Btn
|
|
|
94
95
|
instant_python/templates/boilerplate/persistence/async/sqlalchemy_repository.py,sha256=tXGKrs5fWIQG6An5I7KUO-7OCfr5ltNrHUIAd4R-kdU,1201
|
|
95
96
|
instant_python/templates/boilerplate/persistence/synchronous/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
97
|
instant_python/templates/boilerplate/persistence/synchronous/session_maker.py,sha256=5SiWm3i13MlG9tiHp-sJmwYzZ9dcyXDfPGeVZTiKlTw,622
|
|
97
|
-
instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py,sha256=
|
|
98
|
+
instant_python/templates/boilerplate/persistence/synchronous/sqlalchemy_repository.py,sha256=pyt7o-5eWlW9waXloQx6RaqZ-gAgZcUKwZq7UH6TZUo,1530
|
|
98
99
|
instant_python/templates/boilerplate/scripts/add_dependency.sh,sha256=dCugtjr8SJyJOo10Cw3amuvn-D1DdRwhleVJ_F2XbRY,731
|
|
99
100
|
instant_python/templates/boilerplate/scripts/create_aggregate.py,sha256=dgMCAtJEJjfvuvTMegjXgVGI86jupZN_z7q1fOoopNU,1061
|
|
100
101
|
instant_python/templates/boilerplate/scripts/insert_template.py,sha256=nkzSXIIj-KdQ30B_4tjut0LKeZNPUyy419A7YU6hVCw,4276
|
|
@@ -107,14 +108,14 @@ instant_python/templates/boilerplate/scripts/pre-push,sha256=2UpPIkPTnwO8UusCAij
|
|
|
107
108
|
instant_python/templates/boilerplate/scripts/remove_dependency.sh,sha256=1NRVBCCCQZeAX7YYKzQ0AEpq_OlGt-S_6selTePVUJw,707
|
|
108
109
|
instant_python/templates/boilerplate/scripts/unit.sh,sha256=XTlSZOYixobNqcdgtNVbhiLA9esodg8kMljEKCcZFNo,1107
|
|
109
110
|
instant_python/templates/boilerplate/value_object/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
110
|
-
instant_python/templates/boilerplate/value_object/int_value_object.py,sha256=
|
|
111
|
-
instant_python/templates/boilerplate/value_object/string_value_object.py,sha256=
|
|
112
|
-
instant_python/templates/boilerplate/value_object/uuid.py,sha256=
|
|
111
|
+
instant_python/templates/boilerplate/value_object/int_value_object.py,sha256=BpIEEfevEmJ8HSV8MVFqpJV0KLwi827P7gEg-QpW36o,449
|
|
112
|
+
instant_python/templates/boilerplate/value_object/string_value_object.py,sha256=eGrqGH88kZMZ2Kfo4jbsHro9Lr9amPPCgX_XvU6ClEE,736
|
|
113
|
+
instant_python/templates/boilerplate/value_object/uuid.py,sha256=nCAqo43IgdvCUNBJeXxty_B15wZkpfn0RX4d4BH2XRI,555
|
|
113
114
|
instant_python/templates/boilerplate/value_object/value_object.py,sha256=7EUE9fiTpdSgQ3FrgL7KiGZUGBKczJ3HquDqocEmVog,1007
|
|
114
115
|
instant_python/templates/project_structure/alembic_migrator.yml.j2,sha256=dYkBJj1O2_bTjw6einWkijjPV-xRUpdUkGa0ZHgTP5E,66
|
|
115
116
|
instant_python/templates/project_structure/async_alembic.yml.j2,sha256=YQMMZxueHFQPF9v0AQ1yjFOyvXHhsyI8gHd2AilG8dw,467
|
|
116
117
|
instant_python/templates/project_structure/async_sqlalchemy.yml.j2,sha256=zpVnHtNOSWQqVP5lejRciHakCEMIppjv1EKqMA3bDY4,423
|
|
117
|
-
instant_python/templates/project_structure/event_bus_domain.yml.j2,sha256=
|
|
118
|
+
instant_python/templates/project_structure/event_bus_domain.yml.j2,sha256=0rXXuhyBWZUm_RIHq0yFonkbpdvXGB5QEkLoQkDX9bs,685
|
|
118
119
|
instant_python/templates/project_structure/event_bus_infra.yml.j2,sha256=AQ8A525lZvusW5NiQew4eCzASAR2e65Bc5EUz3ENZeA,875
|
|
119
120
|
instant_python/templates/project_structure/fastapi_app.yml.j2,sha256=k92dTeV2RpTDbhy_jxg6q0yXKhQHV9T-Nu1Fl7X6oNQ,193
|
|
120
121
|
instant_python/templates/project_structure/fastapi_infra.yml.j2,sha256=fPreVwwnWUPTFhw2iWBO9TUYP5RZaAspIT6EMMV7je8,199
|
|
@@ -132,17 +133,17 @@ instant_python/templates/project_structure/python_version.yml.j2,sha256=eo400SNF
|
|
|
132
133
|
instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2,sha256=bjfiKDNxi558fPzwF6RaZq1uoCMkKWJLB2L53acmFuY,431
|
|
133
134
|
instant_python/templates/project_structure/value_objects.yml.j2,sha256=cPC-DHo8aaRwY8iVcFjxhto1HLVk9Kbybr_1r3BIr4Y,855
|
|
134
135
|
instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2,sha256=gnN6jkyRhuNxC04X7EGa0TBYwJGUwX2Jv3OE3YLPKSc,1237
|
|
135
|
-
instant_python/templates/project_structure/clean_architecture/source.yml.j2,sha256=
|
|
136
|
+
instant_python/templates/project_structure/clean_architecture/source.yml.j2,sha256=_iJjzVatJboCgJwzDRjPqyl6LXiVCZW2jE_xLr2_-HQ,2200
|
|
136
137
|
instant_python/templates/project_structure/clean_architecture/test.yml.j2,sha256=-s_V1mPa_muydoUo2sZW70fUB4Z3O_YfwXl-A5V3ZH4,547
|
|
137
138
|
instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2,sha256=P1hOzOlWm-8ZEGQP-fV-5xk2CfTC0j2BizSStKCvETw,453
|
|
138
139
|
instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2,sha256=lmKOIJv6GT0KjVZ9yiz7pCLBPY-Z9inwr5T4xxbFuus,1241
|
|
139
|
-
instant_python/templates/project_structure/domain_driven_design/source.yml.j2,sha256=
|
|
140
|
-
instant_python/templates/project_structure/domain_driven_design/test.yml.j2,sha256=
|
|
140
|
+
instant_python/templates/project_structure/domain_driven_design/source.yml.j2,sha256=OsZQp67BLLVLwknf_I75adCq1WnD9ndMjifmwqhZk2w,2638
|
|
141
|
+
instant_python/templates/project_structure/domain_driven_design/test.yml.j2,sha256=m9Z6EhY0Hwc2QjicT3ONSKvmj5ZcyyT-11IHKwxMvDw,799
|
|
141
142
|
instant_python/templates/project_structure/standard_project/main_structure.yml.j2,sha256=SG0R4_DPIkb8CCyPfFw7xoId7fmRq_lm9DTaL6MJK18,1234
|
|
142
|
-
instant_python/templates/project_structure/standard_project/source.yml.j2,sha256=
|
|
143
|
+
instant_python/templates/project_structure/standard_project/source.yml.j2,sha256=tqD9AsAAzPhulWmRrUW7k3F0eguhAKvNc_p5faQCfRg,1586
|
|
143
144
|
instant_python/templates/project_structure/standard_project/test.yml.j2,sha256=OvSSn9tQcK3ctTXaOIr_bL6QdgUNrcs518LmnStqxaE,348
|
|
144
|
-
instant_python-0.
|
|
145
|
-
instant_python-0.
|
|
146
|
-
instant_python-0.
|
|
147
|
-
instant_python-0.
|
|
148
|
-
instant_python-0.
|
|
145
|
+
instant_python-0.2.0.dist-info/METADATA,sha256=Y5buM47xtTPnPxJQ1lIUEI7uVxhMYt4Av2HxyOhNnXM,15882
|
|
146
|
+
instant_python-0.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
147
|
+
instant_python-0.2.0.dist-info/entry_points.txt,sha256=EdBTj3b3N9Pa4oNzPLPivE_AnMcQIFsmRC3RsSkoLLA,47
|
|
148
|
+
instant_python-0.2.0.dist-info/licenses/LICENSE,sha256=kf7wA-1IsqXkzXjlsG95sdQJtsqUON_lNXombfPlklo,11353
|
|
149
|
+
instant_python-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|