instant-python 0.2.0__py3-none-any.whl → 0.4.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/folder_cli.py +9 -9
- instant_python/project_cli.py +3 -3
- instant_python/project_generator/boilerplate_file.py +20 -0
- instant_python/project_generator/file.py +4 -8
- instant_python/project_generator/folder_tree.py +4 -0
- instant_python/project_generator/jinja_environment.py +20 -0
- instant_python/project_generator/{default_template_manager.py → jinja_template_manager.py} +8 -13
- instant_python/project_generator/node.py +1 -0
- instant_python/project_generator/project_generator.py +1 -1
- instant_python/question_prompter/question_wizard.py +3 -3
- instant_python/question_prompter/{user_requirements.py → requirements_configuration.py} +2 -2
- instant_python/templates/boilerplate/README.md +5 -0
- instant_python/templates/boilerplate/event_bus/aggregate_root.py +0 -1
- instant_python/templates/boilerplate/value_object/int_value_object.py +7 -4
- instant_python/templates/project_structure/alembic_migrator.yml.j2 +1 -1
- instant_python/templates/project_structure/async_alembic.yml.j2 +5 -5
- instant_python/templates/project_structure/async_sqlalchemy.yml.j2 +3 -3
- instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2 +1 -0
- instant_python/templates/project_structure/clean_architecture/test.yml.j2 +2 -2
- instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2 +1 -0
- instant_python/templates/project_structure/domain_driven_design/source.yml.j2 +1 -1
- instant_python/templates/project_structure/domain_driven_design/test.yml.j2 +3 -3
- instant_python/templates/project_structure/event_bus_domain.yml.j2 +7 -7
- instant_python/templates/project_structure/event_bus_infra.yml.j2 +8 -8
- instant_python/templates/project_structure/fastapi_app.yml.j2 +2 -2
- instant_python/templates/project_structure/fastapi_infra.yml.j2 +2 -2
- instant_python/templates/project_structure/github_action.yml.j2 +2 -2
- instant_python/templates/project_structure/gitignore.yml.j2 +1 -1
- instant_python/templates/project_structure/license.yml.j2 +1 -1
- instant_python/templates/project_structure/logger.yml.j2 +2 -2
- instant_python/templates/project_structure/makefile.yml.j2 +10 -10
- instant_python/templates/project_structure/mypy.yml.j2 +1 -1
- instant_python/templates/project_structure/pre_commit.yml.j2 +1 -1
- instant_python/templates/project_structure/pyproject.yml.j2 +1 -1
- instant_python/templates/project_structure/pytest.yml.j2 +1 -1
- instant_python/templates/project_structure/python_version.yml.j2 +1 -1
- instant_python/templates/project_structure/readme.yml.j2 +3 -0
- instant_python/templates/project_structure/standard_project/main_structure.yml.j2 +1 -0
- instant_python/templates/project_structure/standard_project/test.yml.j2 +2 -2
- instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2 +3 -3
- instant_python/templates/project_structure/value_objects.yml.j2 +9 -9
- {instant_python-0.2.0.dist-info → instant_python-0.4.0.dist-info}/METADATA +9 -3
- {instant_python-0.2.0.dist-info → instant_python-0.4.0.dist-info}/RECORD +46 -42
- {instant_python-0.2.0.dist-info → instant_python-0.4.0.dist-info}/WHEEL +0 -0
- {instant_python-0.2.0.dist-info → instant_python-0.4.0.dist-info}/entry_points.txt +0 -0
- {instant_python-0.2.0.dist-info → instant_python-0.4.0.dist-info}/licenses/LICENSE +0 -0
instant_python/folder_cli.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import typer
|
|
2
2
|
|
|
3
3
|
from instant_python.project_generator.custom_template_manager import CustomTemplateManager
|
|
4
|
-
from instant_python.project_generator.
|
|
4
|
+
from instant_python.project_generator.jinja_template_manager import JinjaTemplateManager
|
|
5
5
|
from instant_python.project_generator.folder_tree import FolderTree
|
|
6
6
|
from instant_python.project_generator.project_generator import ProjectGenerator
|
|
7
7
|
from instant_python.question_prompter.question.free_text_question import FreeTextQuestion
|
|
@@ -13,8 +13,8 @@ from instant_python.question_prompter.step.template_step import TemplateStep
|
|
|
13
13
|
app = typer.Typer()
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
@app.command("template", help="Pass a custom template folder structure"
|
|
17
|
-
def create_folder_structure_from_template(
|
|
16
|
+
@app.command("template", help="Pass a custom template folder structure")
|
|
17
|
+
def create_folder_structure_from_template(template_path: str) -> None:
|
|
18
18
|
project_name = FreeTextQuestion(
|
|
19
19
|
key="project_slug",
|
|
20
20
|
message="Enter the name of the project (CANNOT CONTAIN SPACES)",
|
|
@@ -22,7 +22,7 @@ def create_folder_structure_from_template(template_name: str) -> None:
|
|
|
22
22
|
).ask()
|
|
23
23
|
project_generator = ProjectGenerator(
|
|
24
24
|
folder_tree=FolderTree(project_name["project_slug"]),
|
|
25
|
-
template_manager=CustomTemplateManager(
|
|
25
|
+
template_manager=CustomTemplateManager(template_path),
|
|
26
26
|
)
|
|
27
27
|
|
|
28
28
|
project_generator.generate()
|
|
@@ -33,17 +33,17 @@ def create_default_project_structure() -> None:
|
|
|
33
33
|
wizard = QuestionWizard(
|
|
34
34
|
steps=Steps(GeneralProjectStep(), TemplateStep())
|
|
35
35
|
)
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
requirements = wizard.run()
|
|
37
|
+
requirements.save_in_memory()
|
|
38
38
|
|
|
39
39
|
project_generator = ProjectGenerator(
|
|
40
|
-
folder_tree=FolderTree(
|
|
41
|
-
template_manager=
|
|
40
|
+
folder_tree=FolderTree(requirements.project_slug),
|
|
41
|
+
template_manager=JinjaTemplateManager(),
|
|
42
42
|
)
|
|
43
43
|
|
|
44
44
|
project_generator.generate()
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
requirements.remove()
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
if __name__ == "__main__":
|
instant_python/project_cli.py
CHANGED
|
@@ -4,8 +4,8 @@ from instant_python.installer.dependency_manager_factory import DependencyManage
|
|
|
4
4
|
from instant_python.installer.git_configurer import GitConfigurer
|
|
5
5
|
from instant_python.installer.installer import Installer
|
|
6
6
|
from instant_python.project_generator.custom_template_manager import CustomTemplateManager
|
|
7
|
-
from instant_python.project_generator.
|
|
8
|
-
|
|
7
|
+
from instant_python.project_generator.jinja_template_manager import (
|
|
8
|
+
JinjaTemplateManager,
|
|
9
9
|
)
|
|
10
10
|
from instant_python.project_generator.folder_tree import FolderTree
|
|
11
11
|
from instant_python.project_generator.project_generator import ProjectGenerator
|
|
@@ -74,7 +74,7 @@ def create_full_project() -> None:
|
|
|
74
74
|
|
|
75
75
|
project_generator = ProjectGenerator(
|
|
76
76
|
folder_tree=FolderTree(user_requirements.project_slug),
|
|
77
|
-
template_manager=
|
|
77
|
+
template_manager=JinjaTemplateManager(),
|
|
78
78
|
)
|
|
79
79
|
project_generator.generate()
|
|
80
80
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from instant_python.project_generator.jinja_template_manager import JinjaTemplateManager
|
|
4
|
+
from instant_python.project_generator.node import Node
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class BoilerplateFile(Node):
|
|
8
|
+
|
|
9
|
+
def __init__(self, name: str, extension: str) -> None:
|
|
10
|
+
self._file_name = f"{name.split('/')[-1]}{extension}"
|
|
11
|
+
self._template_path = f"boilerplate/{name}{extension}"
|
|
12
|
+
self._template_manager = JinjaTemplateManager()
|
|
13
|
+
|
|
14
|
+
def __repr__(self) -> str:
|
|
15
|
+
return f"{self.__class__.__name__}(name={self._file_name})"
|
|
16
|
+
|
|
17
|
+
def create(self, base_path: Path) -> None:
|
|
18
|
+
file_path = base_path / self._file_name
|
|
19
|
+
content = self._template_manager.get_boilerplate(self._template_path)
|
|
20
|
+
file_path.write_text(content)
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from instant_python.project_generator.default_template_manager import DefaultTemplateManager
|
|
4
3
|
from instant_python.project_generator.node import Node
|
|
5
4
|
|
|
6
5
|
|
|
7
6
|
class File(Node):
|
|
8
|
-
|
|
9
7
|
def __init__(self, name: str, extension: str) -> None:
|
|
10
|
-
self._file_name =
|
|
11
|
-
self.
|
|
12
|
-
self._template_manager = DefaultTemplateManager()
|
|
8
|
+
self._file_name = name
|
|
9
|
+
self._extension = extension
|
|
13
10
|
|
|
14
11
|
def __repr__(self) -> str:
|
|
15
12
|
return f"{self.__class__.__name__}(name={self._file_name})"
|
|
16
13
|
|
|
17
14
|
def create(self, base_path: Path) -> None:
|
|
18
|
-
file_path = base_path / self._file_name
|
|
19
|
-
|
|
20
|
-
file_path.write_text(content)
|
|
15
|
+
file_path = base_path / f"{self._file_name}{self._extension}"
|
|
16
|
+
file_path.touch(exist_ok=True)
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
3
|
from instant_python.project_generator.directory import Directory
|
|
4
|
+
from instant_python.project_generator.boilerplate_file import BoilerplateFile
|
|
4
5
|
from instant_python.project_generator.file import File
|
|
5
6
|
from instant_python.project_generator.node import Node, NodeType
|
|
6
7
|
|
|
@@ -33,6 +34,9 @@ class FolderTree:
|
|
|
33
34
|
is_python_module = node.get("python", False)
|
|
34
35
|
directory_children = [self._build_tree(child) for child in children]
|
|
35
36
|
return Directory(name=name, children=directory_children, python_module=is_python_module)
|
|
37
|
+
elif node_type == NodeType.BOILERPLATE:
|
|
38
|
+
extension = node.get("extension", "")
|
|
39
|
+
return BoilerplateFile(name=name, extension=extension)
|
|
36
40
|
elif node_type == NodeType.FILE:
|
|
37
41
|
extension = node.get("extension", "")
|
|
38
42
|
return File(name=name, extension=extension)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from jinja2 import Environment, Template, PackageLoader
|
|
2
|
+
|
|
3
|
+
from instant_python.project_generator.jinja_custom_filters import (
|
|
4
|
+
is_in,
|
|
5
|
+
compute_base_path,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class JinjaEnvironment:
|
|
10
|
+
def __init__(self) -> None:
|
|
11
|
+
self._env = Environment(
|
|
12
|
+
loader=PackageLoader("instant_python", "templates"),
|
|
13
|
+
trim_blocks=True,
|
|
14
|
+
lstrip_blocks=True,
|
|
15
|
+
)
|
|
16
|
+
self._env.filters["is_in"] = is_in
|
|
17
|
+
self._env.filters["compute_base_path"] = compute_base_path
|
|
18
|
+
|
|
19
|
+
def get_template(self, name: str) -> Template:
|
|
20
|
+
return self._env.get_template(name)
|
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
import yaml
|
|
2
|
-
from jinja2 import
|
|
2
|
+
from jinja2 import Template
|
|
3
3
|
|
|
4
|
-
from instant_python.project_generator.
|
|
4
|
+
from instant_python.project_generator.jinja_environment import JinjaEnvironment
|
|
5
5
|
from instant_python.project_generator.template_manager import TemplateManager
|
|
6
6
|
from instant_python.question_prompter.template_types import TemplateTypes
|
|
7
|
-
from instant_python.question_prompter.
|
|
7
|
+
from instant_python.question_prompter.requirements_configuration import RequirementsConfiguration
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
class
|
|
10
|
+
class JinjaTemplateManager(TemplateManager):
|
|
11
11
|
|
|
12
12
|
def __init__(self) -> None:
|
|
13
13
|
self._requirements = self._load_memory_requirements()
|
|
14
|
-
self._env =
|
|
15
|
-
"templates"),
|
|
16
|
-
trim_blocks=True,
|
|
17
|
-
lstrip_blocks=True)
|
|
18
|
-
self._env.filters["is_in"] = is_in
|
|
19
|
-
self._env.filters["compute_base_path"] = compute_base_path
|
|
14
|
+
self._env = JinjaEnvironment()
|
|
20
15
|
|
|
21
16
|
def get_project(self, template_name: str) -> dict:
|
|
22
17
|
template = self._get_template(
|
|
@@ -36,7 +31,7 @@ class DefaultTemplateManager(TemplateManager):
|
|
|
36
31
|
return template.render(**self._requirements.to_dict(), template_types=TemplateTypes)
|
|
37
32
|
|
|
38
33
|
@staticmethod
|
|
39
|
-
def _load_memory_requirements() ->
|
|
40
|
-
with open("
|
|
34
|
+
def _load_memory_requirements() -> RequirementsConfiguration:
|
|
35
|
+
with open("ipy.yml") as file:
|
|
41
36
|
requirements = yaml.safe_load(file)
|
|
42
|
-
return
|
|
37
|
+
return RequirementsConfiguration(**requirements)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import subprocess
|
|
2
2
|
|
|
3
3
|
from instant_python.project_generator.folder_tree import FolderTree
|
|
4
|
-
from instant_python.project_generator.
|
|
4
|
+
from instant_python.project_generator.jinja_template_manager import TemplateManager
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class ProjectGenerator:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
from instant_python.question_prompter.step.steps import Steps
|
|
2
|
-
from instant_python.question_prompter.
|
|
2
|
+
from instant_python.question_prompter.requirements_configuration import RequirementsConfiguration
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
class QuestionWizard:
|
|
@@ -7,9 +7,9 @@ class QuestionWizard:
|
|
|
7
7
|
self._steps = steps
|
|
8
8
|
self._answers = {}
|
|
9
9
|
|
|
10
|
-
def run(self) ->
|
|
10
|
+
def run(self) -> RequirementsConfiguration:
|
|
11
11
|
for step in self._steps:
|
|
12
12
|
answer = step.run(self._answers)
|
|
13
13
|
self._answers.update(answer)
|
|
14
14
|
|
|
15
|
-
return
|
|
15
|
+
return RequirementsConfiguration(**self._answers)
|
|
@@ -6,7 +6,7 @@ import yaml
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
@dataclass
|
|
9
|
-
class
|
|
9
|
+
class RequirementsConfiguration:
|
|
10
10
|
project_slug: str
|
|
11
11
|
license: str
|
|
12
12
|
version: str
|
|
@@ -27,7 +27,7 @@ class UserRequirements:
|
|
|
27
27
|
year: int = field(default=datetime.now().year)
|
|
28
28
|
|
|
29
29
|
def __post_init__(self) -> None:
|
|
30
|
-
self._file_path = "
|
|
30
|
+
self._file_path = "ipy.yml"
|
|
31
31
|
|
|
32
32
|
def to_dict(self) -> dict:
|
|
33
33
|
return asdict(self)
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{% set template_domain_import = "shared.domain"|compute_base_path(template) %}
|
|
2
2
|
from {{ source_name }}.{{ template_domain_import }}.exceptions.invalid_negative_value_error import (
|
|
3
|
-
|
|
3
|
+
InvalidNegativeValueError,
|
|
4
4
|
)
|
|
5
5
|
from {{ source_name }}.{{ template_domain_import }}.value_object.value_object import ValueObject
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class IntValueObject(ValueObject[int]):
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
def __init__(self, value: int) -> None:
|
|
10
|
+
super().__init__(value)
|
|
11
|
+
|
|
12
|
+
def _validate(self, value: int) -> None:
|
|
13
|
+
if value < 0:
|
|
14
|
+
raise InvalidNegativeValueError(value)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
- name: persistence/async/alembic
|
|
2
|
-
type:
|
|
2
|
+
type: boilerplate_file
|
|
3
3
|
extension: .ini
|
|
4
4
|
- name: migrations
|
|
5
5
|
type: directory
|
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
- name: versions
|
|
8
8
|
type: directory
|
|
9
9
|
- name: persistence/async/README
|
|
10
|
-
type:
|
|
10
|
+
type: boilerplate_file
|
|
11
11
|
extension: .md
|
|
12
12
|
- name: persistence/async/env
|
|
13
|
-
type:
|
|
13
|
+
type: boilerplate_file
|
|
14
14
|
extension: .py
|
|
15
15
|
- name: persistence/async/models_metadata
|
|
16
|
-
type:
|
|
16
|
+
type: boilerplate_file
|
|
17
17
|
extension: .py
|
|
18
18
|
- name: persistence/async/script
|
|
19
|
-
type:
|
|
19
|
+
type: boilerplate_file
|
|
20
20
|
extension: .py.mako
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
python: True
|
|
8
8
|
children:
|
|
9
9
|
- name: persistence/base
|
|
10
|
-
type:
|
|
10
|
+
type: boilerplate_file
|
|
11
11
|
extension: .py
|
|
12
12
|
- name: persistence/async/sqlalchemy_repository
|
|
13
|
-
type:
|
|
13
|
+
type: boilerplate_file
|
|
14
14
|
extension: .py
|
|
15
15
|
- name: persistence/async/postgres_settings
|
|
16
|
-
type:
|
|
16
|
+
type: boilerplate_file
|
|
17
17
|
extension: .py
|
|
@@ -11,6 +11,7 @@ root:
|
|
|
11
11
|
{{ macros.include_and_indent("project_structure/pyproject.yml.j2", 2) }}
|
|
12
12
|
{% if git %}
|
|
13
13
|
{{ macros.include_and_indent("project_structure/gitignore.yml.j2", 2) }}
|
|
14
|
+
{{ macros.include_and_indent("project_structure/readme.yml.j2", 2) }}
|
|
14
15
|
{% endif %}
|
|
15
16
|
{{ macros.include_and_indent("project_structure/python_version.yml.j2", 2) }}
|
|
16
17
|
{% if "pytest" in dependencies %}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
{% if "event_bus" in built_in_features %}
|
|
10
10
|
children:
|
|
11
11
|
- name: event_bus/mock_event_bus
|
|
12
|
-
type:
|
|
12
|
+
type: boilerplate_file
|
|
13
13
|
extension: .py
|
|
14
14
|
{% endif %}
|
|
15
15
|
- name: integration
|
|
@@ -19,5 +19,5 @@
|
|
|
19
19
|
type: directory
|
|
20
20
|
python: True
|
|
21
21
|
- name: random_generator
|
|
22
|
-
type:
|
|
22
|
+
type: boilerplate_file
|
|
23
23
|
extension: .py
|
|
@@ -11,6 +11,7 @@ root:
|
|
|
11
11
|
{{ macros.include_and_indent("project_structure/pyproject.yml.j2", 2) }}
|
|
12
12
|
{% if git %}
|
|
13
13
|
{{ macros.include_and_indent("project_structure/gitignore.yml.j2", 2) }}
|
|
14
|
+
{{ macros.include_and_indent("project_structure/readme.yml.j2", 2) }}
|
|
14
15
|
{% endif %}
|
|
15
16
|
{{ macros.include_and_indent("project_structure/python_version.yml.j2", 2) }}
|
|
16
17
|
{% if "pytest" in dependencies %}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
python: True
|
|
13
13
|
children:
|
|
14
14
|
- name: random_generator
|
|
15
|
-
type:
|
|
15
|
+
type: boilerplate_file
|
|
16
16
|
extension: .py
|
|
17
17
|
{% if "event_bus" in built_in_features %}
|
|
18
18
|
- name: infra
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
python: True
|
|
21
21
|
children:
|
|
22
22
|
- name: event_bus/mock_event_bus
|
|
23
|
-
type:
|
|
23
|
+
type: boilerplate_file
|
|
24
24
|
extension: .py
|
|
25
25
|
{% endif %}
|
|
26
26
|
{% if specify_bounded_context %}
|
|
27
27
|
{{ macros.include_and_indent("project_structure/domain_driven_design/bounded_context.yml.j2", 4) }}
|
|
28
|
-
{%
|
|
28
|
+
{% endif %}
|
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
- name: event_bus/aggregate_root
|
|
2
|
-
type:
|
|
2
|
+
type: boilerplate_file
|
|
3
3
|
extension: .py
|
|
4
4
|
- name: event
|
|
5
5
|
type: directory
|
|
6
6
|
python: True
|
|
7
7
|
children:
|
|
8
8
|
- name: event_bus/domain_event
|
|
9
|
-
type:
|
|
9
|
+
type: boilerplate_file
|
|
10
10
|
extension: .py
|
|
11
11
|
- name: event_bus/domain_event_subscriber
|
|
12
|
-
type:
|
|
12
|
+
type: boilerplate_file
|
|
13
13
|
extension: .py
|
|
14
14
|
- name: event_bus/event_bus
|
|
15
|
-
type:
|
|
15
|
+
type: boilerplate_file
|
|
16
16
|
extension: .py
|
|
17
17
|
- name: event_bus/exchange_type
|
|
18
|
-
type:
|
|
18
|
+
type: boilerplate_file
|
|
19
19
|
extension: .py
|
|
20
20
|
- name: exceptions
|
|
21
21
|
type: directory
|
|
22
22
|
python: True
|
|
23
23
|
children:
|
|
24
24
|
- name: exceptions/domain_event_type_not_found_error
|
|
25
|
-
type:
|
|
25
|
+
type: boilerplate_file
|
|
26
26
|
extension: .py
|
|
27
27
|
- name: exceptions/rabbit_mq_connection_not_established_error
|
|
28
|
-
type:
|
|
28
|
+
type: boilerplate_file
|
|
29
29
|
extension: .py
|
|
@@ -3,30 +3,30 @@
|
|
|
3
3
|
python: True
|
|
4
4
|
children:
|
|
5
5
|
- name: event_bus/domain_event_json_deserializer
|
|
6
|
-
type:
|
|
6
|
+
type: boilerplate_file
|
|
7
7
|
extension: .py
|
|
8
8
|
- name: event_bus/domain_event_json_serializer
|
|
9
|
-
type:
|
|
9
|
+
type: boilerplate_file
|
|
10
10
|
extension: .py
|
|
11
11
|
- name: rabbit_mq
|
|
12
12
|
type: directory
|
|
13
13
|
python: True
|
|
14
14
|
children:
|
|
15
15
|
- name: event_bus/rabbit_mq_configurer
|
|
16
|
-
type:
|
|
16
|
+
type: boilerplate_file
|
|
17
17
|
extension: .py
|
|
18
18
|
- name: event_bus/rabbit_mq_connection
|
|
19
|
-
type:
|
|
19
|
+
type: boilerplate_file
|
|
20
20
|
extension: .py
|
|
21
21
|
- name: event_bus/rabbit_mq_consumer
|
|
22
|
-
type:
|
|
22
|
+
type: boilerplate_file
|
|
23
23
|
extension: .py
|
|
24
24
|
- name: event_bus/rabbit_mq_event_bus
|
|
25
|
-
type:
|
|
25
|
+
type: boilerplate_file
|
|
26
26
|
extension: .py
|
|
27
27
|
- name: event_bus/rabbit_mq_queue_formatter
|
|
28
|
-
type:
|
|
28
|
+
type: boilerplate_file
|
|
29
29
|
extension: .py
|
|
30
30
|
- name: event_bus/rabbit_mq_settings
|
|
31
|
-
type:
|
|
31
|
+
type: boilerplate_file
|
|
32
32
|
extension: .py
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
type: directory
|
|
9
9
|
children:
|
|
10
10
|
- name: github/action
|
|
11
|
-
type:
|
|
11
|
+
type: boilerplate_file
|
|
12
12
|
extension: .yml
|
|
13
13
|
- name: workflows
|
|
14
14
|
type: directory
|
|
15
15
|
children:
|
|
16
16
|
- name: github/test_lint
|
|
17
|
-
type:
|
|
17
|
+
type: boilerplate_file
|
|
18
18
|
extension: .yml
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
- name: .gitignore
|
|
2
|
-
type:
|
|
2
|
+
type: boilerplate_file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
- name: LICENSE
|
|
2
|
-
type:
|
|
2
|
+
type: boilerplate_file
|
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
{% import "project_structure/macros.j2" as macros with context %}
|
|
2
2
|
- name: scripts/makefile
|
|
3
|
-
type:
|
|
3
|
+
type: boilerplate_file
|
|
4
4
|
- name: scripts
|
|
5
5
|
type: directory
|
|
6
6
|
children:
|
|
7
7
|
- name: scripts/add_dependency
|
|
8
|
-
type:
|
|
8
|
+
type: boilerplate_file
|
|
9
9
|
extension: .sh
|
|
10
10
|
- name: scripts/remove_dependency
|
|
11
|
-
type:
|
|
11
|
+
type: boilerplate_file
|
|
12
12
|
extension: .sh
|
|
13
13
|
- name: scripts/local_setup
|
|
14
|
-
type:
|
|
14
|
+
type: boilerplate_file
|
|
15
15
|
extension: .sh
|
|
16
16
|
- name: hooks
|
|
17
17
|
type: directory
|
|
18
18
|
children:
|
|
19
19
|
- name: scripts/pre-commit
|
|
20
|
-
type:
|
|
20
|
+
type: boilerplate_file
|
|
21
21
|
- name: scripts/pre-push
|
|
22
|
-
type:
|
|
22
|
+
type: boilerplate_file
|
|
23
23
|
- name: scripts/post-merge
|
|
24
|
-
type:
|
|
24
|
+
type: boilerplate_file
|
|
25
25
|
{% if template == "domain_driven_design" %}
|
|
26
26
|
- name: test
|
|
27
27
|
type: directory
|
|
28
28
|
children:
|
|
29
29
|
- name: scripts/unit
|
|
30
|
-
type:
|
|
30
|
+
type: boilerplate_file
|
|
31
31
|
extension: .sh
|
|
32
32
|
- name: scripts/integration
|
|
33
|
-
type:
|
|
33
|
+
type: boilerplate_file
|
|
34
34
|
extension: .sh
|
|
35
35
|
- name: scripts/create_aggregate
|
|
36
|
-
type:
|
|
36
|
+
type: boilerplate_file
|
|
37
37
|
extension: .py
|
|
38
38
|
{% endif %}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
- name: .python-version
|
|
2
|
-
type:
|
|
2
|
+
type: boilerplate_file
|
|
@@ -11,6 +11,7 @@ root:
|
|
|
11
11
|
{{ macros.include_and_indent("project_structure/pyproject.yml.j2", 2) }}
|
|
12
12
|
{% if git %}
|
|
13
13
|
{{ macros.include_and_indent("project_structure/gitignore.yml.j2", 2) }}
|
|
14
|
+
{{ macros.include_and_indent("project_structure/readme.yml.j2", 2) }}
|
|
14
15
|
{% endif %}
|
|
15
16
|
{{ macros.include_and_indent("project_structure/python_version.yml.j2", 2) }}
|
|
16
17
|
{% if "pytest" in dependencies %}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
python: True
|
|
4
4
|
children:
|
|
5
5
|
- name: random_generator
|
|
6
|
-
type:
|
|
6
|
+
type: boilerplate_file
|
|
7
7
|
extension: .py
|
|
8
8
|
{% if "event_bus" in built_in_features %}
|
|
9
9
|
- name: event
|
|
@@ -11,6 +11,6 @@
|
|
|
11
11
|
python: True
|
|
12
12
|
children:
|
|
13
13
|
- name: event_bus/mock_event_bus
|
|
14
|
-
type:
|
|
14
|
+
type: boilerplate_file
|
|
15
15
|
extension: .py
|
|
16
16
|
{% endif %}
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
python: True
|
|
8
8
|
children:
|
|
9
9
|
- name: persistence/base
|
|
10
|
-
type:
|
|
10
|
+
type: boilerplate_file
|
|
11
11
|
extension: .py
|
|
12
12
|
- name: persistence/synchronous/session_maker
|
|
13
|
-
type:
|
|
13
|
+
type: boilerplate_file
|
|
14
14
|
extension: .py
|
|
15
15
|
- name: persistence/synchronous/sqlalchemy_repository
|
|
16
|
-
type:
|
|
16
|
+
type: boilerplate_file
|
|
17
17
|
extension: .py
|
|
@@ -3,33 +3,33 @@
|
|
|
3
3
|
python: True
|
|
4
4
|
children:
|
|
5
5
|
- name: exceptions/domain_error
|
|
6
|
-
type:
|
|
6
|
+
type: boilerplate_file
|
|
7
7
|
extension: .py
|
|
8
8
|
- name: exceptions/incorrect_value_type_error
|
|
9
|
-
type:
|
|
9
|
+
type: boilerplate_file
|
|
10
10
|
extension: .py
|
|
11
11
|
- name: exceptions/invalid_negative_value_error
|
|
12
|
-
type:
|
|
12
|
+
type: boilerplate_file
|
|
13
13
|
extension: .py
|
|
14
14
|
- name: exceptions/invalid_id_format_error
|
|
15
|
-
type:
|
|
15
|
+
type: boilerplate_file
|
|
16
16
|
extension: .py
|
|
17
17
|
- name: exceptions/required_value_error
|
|
18
|
-
type:
|
|
18
|
+
type: boilerplate_file
|
|
19
19
|
extension: .py
|
|
20
20
|
- name: value_object
|
|
21
21
|
type: directory
|
|
22
22
|
python: True
|
|
23
23
|
children:
|
|
24
24
|
- name: value_object/value_object
|
|
25
|
-
type:
|
|
25
|
+
type: boilerplate_file
|
|
26
26
|
extension: .py
|
|
27
27
|
- name: value_object/string_value_object
|
|
28
|
-
type:
|
|
28
|
+
type: boilerplate_file
|
|
29
29
|
extension: .py
|
|
30
30
|
- name: value_object/int_value_object
|
|
31
|
-
type:
|
|
31
|
+
type: boilerplate_file
|
|
32
32
|
extension: .py
|
|
33
33
|
- name: value_object/uuid
|
|
34
|
-
type:
|
|
34
|
+
type: boilerplate_file
|
|
35
35
|
extension: .py
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instant-python
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Instant boilerplate generation for Python projects
|
|
5
|
+
Project-URL: documentation, https://dimanu-py.github.io/instant-python/welcome/
|
|
6
|
+
Project-URL: repository, https://github.com/dimanu-py/instant-python/
|
|
5
7
|
Author-email: dimanu-py <diegomtz126@gmail.com>
|
|
6
8
|
License: Apache License
|
|
7
9
|
Version 2.0, January 2004
|
|
@@ -205,6 +207,10 @@ License: Apache License
|
|
|
205
207
|
See the License for the specific language governing permissions and
|
|
206
208
|
limitations under the License.
|
|
207
209
|
License-File: LICENSE
|
|
210
|
+
Classifier: Environment :: Console
|
|
211
|
+
Classifier: Intended Audience :: Developers
|
|
212
|
+
Classifier: Operating System :: MacOS
|
|
213
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
208
214
|
Requires-Python: >=3.9
|
|
209
215
|
Requires-Dist: jinja2>=3.1.5
|
|
210
216
|
Requires-Dist: pyyaml>=6.0.2
|
|
@@ -261,7 +267,7 @@ as soon as possible. An overview of the features is given below, but you can fin
|
|
|
261
267
|
[documentation](https://dimanu-py.github.io/instant-python/guide/features/).
|
|
262
268
|
|
|
263
269
|
- Project slug: Configure the name of the main folder of your project.
|
|
264
|
-
- Source name: Configure the name of the source code of your project.
|
|
270
|
+
- Source name: Configure the name of the source code folder of your project.
|
|
265
271
|
- Description: Include a description about your project.
|
|
266
272
|
- Version: Set the initial version of your project.
|
|
267
273
|
- Author: Set the author of the project.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
instant_python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
2
|
instant_python/cli.py,sha256=94jwSQmOI_2jjaLyz9IcPFt6cIDUO6Kzd2JssKW-TFE,327
|
|
3
|
-
instant_python/folder_cli.py,sha256=
|
|
4
|
-
instant_python/project_cli.py,sha256=
|
|
3
|
+
instant_python/folder_cli.py,sha256=kEVCuhq08v8ahdUTa3sA1v5B96xoMO4U6cGEcXHrZLo,1748
|
|
4
|
+
instant_python/project_cli.py,sha256=aDYZZwpkMFN-J7UEKgvZQ9lXlKtr5e3ttdNzEtGslbw,3446
|
|
5
5
|
instant_python/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
instant_python/installer/dependency_manager.py,sha256=0pVTtNPGUKFvLeFjiVlegIDU7SjC1urlTSSR7pvzIkU,384
|
|
7
7
|
instant_python/installer/dependency_manager_factory.py,sha256=uAwpTK9ilCkaZ50d4hePWNndpK0fOHqEClRQmViJjnY,541
|
|
@@ -11,19 +11,21 @@ instant_python/installer/managers.py,sha256=HNDazLb2iNgP1xdYvPFfMmVE9Ww_v9a0_CWT
|
|
|
11
11
|
instant_python/installer/pdm_manager.py,sha256=z49NAurrzgByMbB560xeAMH-5a4H1jkXi9AvtAQ8G4E,2756
|
|
12
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
|
+
instant_python/project_generator/boilerplate_file.py,sha256=7APVzUdgieRopJwybTkkycXRRAkr95Q3GmX5M0IrO3c,754
|
|
14
15
|
instant_python/project_generator/custom_template_manager.py,sha256=ApOBNU9hdOiQeaJhbr_RMdjm3B-vVLaXyvgj6XtbkZY,628
|
|
15
|
-
instant_python/project_generator/default_template_manager.py,sha256=UdhB7pTZLbShSOAEHWl-l35dLfV0XU4fF69HMBfMw3U,1802
|
|
16
16
|
instant_python/project_generator/directory.py,sha256=nJoxOd2RQUJoNkML3Dh7JqhR_xp0czasBXRE2WvW-kQ,747
|
|
17
|
-
instant_python/project_generator/file.py,sha256=
|
|
18
|
-
instant_python/project_generator/folder_tree.py,sha256=
|
|
17
|
+
instant_python/project_generator/file.py,sha256=CV8utHrK3OBWr-HjVlSYvelcvfcCRVF0cHpd_qAm0-g,484
|
|
18
|
+
instant_python/project_generator/folder_tree.py,sha256=ophcp4FuXz4QBVKvEvq6V0_bzwMHFdfnzNB2UPdSkj4,1752
|
|
19
19
|
instant_python/project_generator/jinja_custom_filters.py,sha256=uXHmcTvhcVYJeG5EhTFfacIFs7Pu9F5YOPo2144LYpM,638
|
|
20
|
-
instant_python/project_generator/
|
|
21
|
-
instant_python/project_generator/
|
|
20
|
+
instant_python/project_generator/jinja_environment.py,sha256=wEERsimWbG0XLxBNhkFN9Y2plX8SzTpOewyJRsBLSa4,595
|
|
21
|
+
instant_python/project_generator/jinja_template_manager.py,sha256=rfQXnFmtK1zCxD8RJ22NL-cojCjcJSUhrOOjAT3sLb4,1472
|
|
22
|
+
instant_python/project_generator/node.py,sha256=nmT09M8vPPbgDUTpykU_bPY_1w0IT9oVFoKPCfi64Yk,315
|
|
23
|
+
instant_python/project_generator/project_generator.py,sha256=B6j9Pp6hz1qsn2th0Ou0hEjDTakUBXDklx4MvfXkwls,982
|
|
22
24
|
instant_python/project_generator/template_manager.py,sha256=LhN56T04QlRZv0DXUIl9yx3y1OFq_S9Zq8efxgNHSVI,175
|
|
23
25
|
instant_python/question_prompter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
instant_python/question_prompter/question_wizard.py,sha256=
|
|
26
|
+
instant_python/question_prompter/question_wizard.py,sha256=32SoH2ADQklU3WkLorn3NtztyaHACcCIfU2zEsMQKFc,512
|
|
27
|
+
instant_python/question_prompter/requirements_configuration.py,sha256=RyUBOOmQZbOnMldg9eVlJpgsanEiZTSMgiOJnt7O-yI,1214
|
|
25
28
|
instant_python/question_prompter/template_types.py,sha256=HzqlryyB5KRBnCmqnDy-4Z-Kn3aTBC3wlrDWwDLdbXs,147
|
|
26
|
-
instant_python/question_prompter/user_requirements.py,sha256=l9q5P_xn4Ii3TtctVG1J8B6J5nNuSynrivPVu6s02QQ,1219
|
|
27
29
|
instant_python/question_prompter/question/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
30
|
instant_python/question_prompter/question/boolean_question.py,sha256=SUWotn15hPP8njqCJ3J1FYBtQ4cQ79e5laB3YObZjo8,430
|
|
29
31
|
instant_python/question_prompter/question/choice_question.py,sha256=HeiyhihVngEcJmRW784RS1rAG8RaBua52Watb6bpVio,592
|
|
@@ -44,12 +46,13 @@ instant_python/templates/boilerplate/.gitignore,sha256=uViK8iDiHZGpnnvM3TpgrDwXl
|
|
|
44
46
|
instant_python/templates/boilerplate/.pre-commit-config.yml,sha256=bOJLrQ_0LqFxHDZeJKbs2FDKE2lxnHzWtYM1CgLSDjM,823
|
|
45
47
|
instant_python/templates/boilerplate/.python-version,sha256=YZMxU5G2EgDP3ZURqLP5qFjhq7-fqpQX7IUL9stt8_0,20
|
|
46
48
|
instant_python/templates/boilerplate/LICENSE,sha256=rQvLuj_wsQA7R72dWoE9dgrJbeOlcFTzgJP6i4irhzM,47356
|
|
49
|
+
instant_python/templates/boilerplate/README.md,sha256=N_UvKMIcfQSK7dQOk3xgqfY95iedSCMQXo7_n9PEnoQ,56
|
|
47
50
|
instant_python/templates/boilerplate/mypy.ini,sha256=RWGydwoR9HwmqIT3wzAqaQQ4qo_m2T3cwFIX6MmJ3YE,865
|
|
48
51
|
instant_python/templates/boilerplate/pyproject.toml,sha256=zkfECqqNetKszcY9azjjFKuzpgpO5PATTQXB4cRoHMc,736
|
|
49
52
|
instant_python/templates/boilerplate/pytest.ini,sha256=UKGay9Gune7ft1FAy1O4VyVmnuLunQW5YeZfcuOKTZg,249
|
|
50
53
|
instant_python/templates/boilerplate/random_generator.py,sha256=WHyhk9xfRsziGH1PtVFSZavQGy5LzJkWLN8wwyKz3As,134
|
|
51
54
|
instant_python/templates/boilerplate/event_bus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
-
instant_python/templates/boilerplate/event_bus/aggregate_root.py,sha256=
|
|
55
|
+
instant_python/templates/boilerplate/event_bus/aggregate_root.py,sha256=Rmq_ZJ3DPOV0XdOhbGWKxssA-73_iS6weGiKO1B1740,570
|
|
53
56
|
instant_python/templates/boilerplate/event_bus/domain_event.py,sha256=aD4UGS4HWQwQvyfdKLpWN1emDfHUS6NQbYlGXRHVDas,312
|
|
54
57
|
instant_python/templates/boilerplate/event_bus/domain_event_json_deserializer.py,sha256=gls8ZNGlFzFfd9ze8a9lbPgYARPJkUjsTHqGB5QRpZk,1052
|
|
55
58
|
instant_python/templates/boilerplate/event_bus/domain_event_json_serializer.py,sha256=BP7sJ05uec-ZVhuOpBrpTFkgMAt0M134jBCSTRlzYbQ,493
|
|
@@ -108,42 +111,43 @@ instant_python/templates/boilerplate/scripts/pre-push,sha256=2UpPIkPTnwO8UusCAij
|
|
|
108
111
|
instant_python/templates/boilerplate/scripts/remove_dependency.sh,sha256=1NRVBCCCQZeAX7YYKzQ0AEpq_OlGt-S_6selTePVUJw,707
|
|
109
112
|
instant_python/templates/boilerplate/scripts/unit.sh,sha256=XTlSZOYixobNqcdgtNVbhiLA9esodg8kMljEKCcZFNo,1107
|
|
110
113
|
instant_python/templates/boilerplate/value_object/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
-
instant_python/templates/boilerplate/value_object/int_value_object.py,sha256=
|
|
114
|
+
instant_python/templates/boilerplate/value_object/int_value_object.py,sha256=Bwk8KcooTy0InEUOulD7gxADhNjoO_cQ7oFOEjNVjao,547
|
|
112
115
|
instant_python/templates/boilerplate/value_object/string_value_object.py,sha256=eGrqGH88kZMZ2Kfo4jbsHro9Lr9amPPCgX_XvU6ClEE,736
|
|
113
116
|
instant_python/templates/boilerplate/value_object/uuid.py,sha256=nCAqo43IgdvCUNBJeXxty_B15wZkpfn0RX4d4BH2XRI,555
|
|
114
117
|
instant_python/templates/boilerplate/value_object/value_object.py,sha256=7EUE9fiTpdSgQ3FrgL7KiGZUGBKczJ3HquDqocEmVog,1007
|
|
115
|
-
instant_python/templates/project_structure/alembic_migrator.yml.j2,sha256=
|
|
116
|
-
instant_python/templates/project_structure/async_alembic.yml.j2,sha256=
|
|
117
|
-
instant_python/templates/project_structure/async_sqlalchemy.yml.j2,sha256=
|
|
118
|
-
instant_python/templates/project_structure/event_bus_domain.yml.j2,sha256=
|
|
119
|
-
instant_python/templates/project_structure/event_bus_infra.yml.j2,sha256=
|
|
120
|
-
instant_python/templates/project_structure/fastapi_app.yml.j2,sha256=
|
|
121
|
-
instant_python/templates/project_structure/fastapi_infra.yml.j2,sha256=
|
|
122
|
-
instant_python/templates/project_structure/github_action.yml.j2,sha256=
|
|
123
|
-
instant_python/templates/project_structure/gitignore.yml.j2,sha256=
|
|
124
|
-
instant_python/templates/project_structure/license.yml.j2,sha256
|
|
125
|
-
instant_python/templates/project_structure/logger.yml.j2,sha256=
|
|
118
|
+
instant_python/templates/project_structure/alembic_migrator.yml.j2,sha256=7xCrOaZMHXuCz2QAGnM8xB9mgzdR9IqEFWV6Iyc3DY4,78
|
|
119
|
+
instant_python/templates/project_structure/async_alembic.yml.j2,sha256=7OdjRGXHFHc56LqtC_NxsNX23kq3Pgsoh0u4QKopJjI,527
|
|
120
|
+
instant_python/templates/project_structure/async_sqlalchemy.yml.j2,sha256=XaOKwRBZOyR1JOtY53KB8WizzESF5VmaTPfk36vft1s,459
|
|
121
|
+
instant_python/templates/project_structure/event_bus_domain.yml.j2,sha256=kqnY9EZaZ2O3HWaQb16jISpR287tBAKxyiq6IaPt1PA,769
|
|
122
|
+
instant_python/templates/project_structure/event_bus_infra.yml.j2,sha256=pCKtjiIfi6VSBdM7n1QL7lQgM-lRqm2_7eOXYOstwaQ,971
|
|
123
|
+
instant_python/templates/project_structure/fastapi_app.yml.j2,sha256=e3n1OXSea7LkOPlRCIbKwzyT6n-Y_YhSXwF1-TWX34Y,217
|
|
124
|
+
instant_python/templates/project_structure/fastapi_infra.yml.j2,sha256=VJg6fLYL20iYugnE-Q4QpZg7TfM62zKdkuAxE_gWWmI,223
|
|
125
|
+
instant_python/templates/project_structure/github_action.yml.j2,sha256=3QLShPuxi8TyUgUW52_41faqIaspNR5Ak12L8DZy1AU,431
|
|
126
|
+
instant_python/templates/project_structure/gitignore.yml.j2,sha256=Ex3A7rvCvuIqxTVdeHxM3DPyTl73AcrHyiceHOIzFuw,43
|
|
127
|
+
instant_python/templates/project_structure/license.yml.j2,sha256=0h2OAyK4-HKWsM6Gllkh1wGRXmEl2mRJLlKgOPlyCY0,40
|
|
128
|
+
instant_python/templates/project_structure/logger.yml.j2,sha256=RxAYOeHK7qhBR1uxXtdPvt12v7rOwaNTWfhXw8ogxUs,216
|
|
126
129
|
instant_python/templates/project_structure/macros.j2,sha256=oAvJhQDJsk6yLm1r6P_kUdKAuLpOmuqmMauJdhKYv0U,173
|
|
127
|
-
instant_python/templates/project_structure/makefile.yml.j2,sha256=
|
|
128
|
-
instant_python/templates/project_structure/mypy.yml.j2,sha256=
|
|
129
|
-
instant_python/templates/project_structure/pre_commit.yml.j2,sha256=
|
|
130
|
-
instant_python/templates/project_structure/pyproject.yml.j2,sha256=
|
|
131
|
-
instant_python/templates/project_structure/pytest.yml.j2,sha256=
|
|
132
|
-
instant_python/templates/project_structure/python_version.yml.j2,sha256=
|
|
133
|
-
instant_python/templates/project_structure/
|
|
134
|
-
instant_python/templates/project_structure/
|
|
135
|
-
instant_python/templates/project_structure/
|
|
130
|
+
instant_python/templates/project_structure/makefile.yml.j2,sha256=uPowe64k1cTf2hyIk-GidVm98rgn03oU37ScRIMiBrY,1061
|
|
131
|
+
instant_python/templates/project_structure/mypy.yml.j2,sha256=Th3HkMdEu2xgORRhMV5QoqkilF90xfKb8JAEOXmEGUc,55
|
|
132
|
+
instant_python/templates/project_structure/pre_commit.yml.j2,sha256=ZPHevC5MHwZTJymKXKFMnDPCJVR_K_V3-tIq-qyEKeY,68
|
|
133
|
+
instant_python/templates/project_structure/pyproject.yml.j2,sha256=QC_Q5Y1MfMen0fbVfllCDpX70idbNIR4gpL1gIgeQs0,61
|
|
134
|
+
instant_python/templates/project_structure/pytest.yml.j2,sha256=OePEtuRCiktOKWwMMGR5FVA4eU9BuspxOhIVDy0HToI,57
|
|
135
|
+
instant_python/templates/project_structure/python_version.yml.j2,sha256=zlkshfPrAOpenxx2D4DxRMrDGlPa5Lth9aIwpWaciy0,48
|
|
136
|
+
instant_python/templates/project_structure/readme.yml.j2,sha256=Km1zSVKfGwx7GHn0CMMAKQieCO089wKb8QoPVUnoDUU,56
|
|
137
|
+
instant_python/templates/project_structure/synchronous_sqlalchemy.yml.j2,sha256=mC7WBchO0bzHcGkTw0k4woDstUvoQaJKlrCW82A96o8,467
|
|
138
|
+
instant_python/templates/project_structure/value_objects.yml.j2,sha256=X5AyyZoRllCYdvRUaXSYlcZk_EQg2OyfdCS8pejjFpc,963
|
|
139
|
+
instant_python/templates/project_structure/clean_architecture/main_structure.yml.j2,sha256=MYNr83LppMnmynSWO8AOGEEBwnJlw1DXaSH1AVP_7GU,1309
|
|
136
140
|
instant_python/templates/project_structure/clean_architecture/source.yml.j2,sha256=_iJjzVatJboCgJwzDRjPqyl6LXiVCZW2jE_xLr2_-HQ,2200
|
|
137
|
-
instant_python/templates/project_structure/clean_architecture/test.yml.j2,sha256
|
|
141
|
+
instant_python/templates/project_structure/clean_architecture/test.yml.j2,sha256=xDC57oL6bCZUVIBjBDBL-aNBUfx0jL2bPZX2bfnwKFQ,571
|
|
138
142
|
instant_python/templates/project_structure/domain_driven_design/bounded_context.yml.j2,sha256=P1hOzOlWm-8ZEGQP-fV-5xk2CfTC0j2BizSStKCvETw,453
|
|
139
|
-
instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2,sha256=
|
|
140
|
-
instant_python/templates/project_structure/domain_driven_design/source.yml.j2,sha256=
|
|
141
|
-
instant_python/templates/project_structure/domain_driven_design/test.yml.j2,sha256=
|
|
142
|
-
instant_python/templates/project_structure/standard_project/main_structure.yml.j2,sha256=
|
|
143
|
+
instant_python/templates/project_structure/domain_driven_design/main_structure.yml.j2,sha256=fHZ5BdVbDkpxInGydzhYrTy24v-5jqeA6UhVEhTVYew,1313
|
|
144
|
+
instant_python/templates/project_structure/domain_driven_design/source.yml.j2,sha256=NadiPEkIjMlKnGAVHCiPYH3DHxnuJLJ7DD5xoL1e-K0,2638
|
|
145
|
+
instant_python/templates/project_structure/domain_driven_design/test.yml.j2,sha256=OPA0AF4IRPswk-eJ-m5ZDTFmIDu6gN2MvBErMYqI264,823
|
|
146
|
+
instant_python/templates/project_structure/standard_project/main_structure.yml.j2,sha256=Tger29wWSQRqJ4NF8aIq5a3cb1sIm8CL5fyTAv-ZcbU,1306
|
|
143
147
|
instant_python/templates/project_structure/standard_project/source.yml.j2,sha256=tqD9AsAAzPhulWmRrUW7k3F0eguhAKvNc_p5faQCfRg,1586
|
|
144
|
-
instant_python/templates/project_structure/standard_project/test.yml.j2,sha256=
|
|
145
|
-
instant_python-0.
|
|
146
|
-
instant_python-0.
|
|
147
|
-
instant_python-0.
|
|
148
|
-
instant_python-0.
|
|
149
|
-
instant_python-0.
|
|
148
|
+
instant_python/templates/project_structure/standard_project/test.yml.j2,sha256=wadDyJsuDlUecFPNu4RU2v34gOAlKFCQSL5z5U8rgdU,372
|
|
149
|
+
instant_python-0.4.0.dist-info/METADATA,sha256=tiopciQ2xxGGgywmembbt_D8PLjldw60h_FCkEPpHl8,16219
|
|
150
|
+
instant_python-0.4.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
151
|
+
instant_python-0.4.0.dist-info/entry_points.txt,sha256=EdBTj3b3N9Pa4oNzPLPivE_AnMcQIFsmRC3RsSkoLLA,47
|
|
152
|
+
instant_python-0.4.0.dist-info/licenses/LICENSE,sha256=kf7wA-1IsqXkzXjlsG95sdQJtsqUON_lNXombfPlklo,11353
|
|
153
|
+
instant_python-0.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|