Skip to content

templates

summary

set_environment

Parameters:

Name Type Description Default
folder str

The folder where the template file is located.

required
template str

The template file name.

required

Returns:

Type Description
jimja2.Template

Return a jinja2 template.

Source code in pystru/temp.py
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
def set_environment(folder: str, template:str):
    """_summary_
    # set_environment
    Parameters
    ----------
    folder : str
        The folder where the template file is located.
    template : str
        The template file name.

    Returns
    -------
    jimja2.Template
        Return a jinja2 template.
    """
    env = Environment(loader=FileSystemLoader(folder))
    template = env.get_template(template)
    return template
Source code in pystru/temp.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class CreateFoldersAndFiles:
    def __init__(self, templates_dir: str, meta_data: dict, **kwargs):
        """_summary_

        Parameters
        ----------
        templates_dir : str
            The folder where the template file is located.
        meta_data : dict
            The meta data for the template file.
        **kwargs : dict
            The structure data for the project.
        """
        self.templates_dir = templates_dir
        self.files_dir = os.path.join(templates_dir, "files")
        self.meta_data = meta_data
        self.kwargs = kwargs

    def create(self):
        self.__create_folders()
        self.__create_files_from_jinja2()
        self.__copy_files()

    def __create_folders(self):
        for folder in self.kwargs['folders']:
            os.makedirs(name=folder, exist_ok=True)

    def __create_files_from_jinja2(self):
        for _, file in self.kwargs['jinja2'].items():
            template = set_environment(folder=self.templates_dir, template=file)
            with open(file, "w", encoding="utf-8") as f:
                f.write(template.render(**self.meta_data))

    def __copy_files(self):
        for _, (dir, file_name) in self.kwargs['files'].items():
            if dir != ".":
                dst = os.path.join(dir, file_name)
            else:
                dst = file_name

            shutil.copyfile(dst=dst, src=os.path.join(self.files_dir, dst))

__init__(templates_dir, meta_data, **kwargs)

summary

Parameters:

Name Type Description Default
templates_dir str

The folder where the template file is located.

required
meta_data dict

The meta data for the template file.

required
**kwargs dict

The structure data for the project.

{}
Source code in pystru/temp.py
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def __init__(self, templates_dir: str, meta_data: dict, **kwargs):
    """_summary_

    Parameters
    ----------
    templates_dir : str
        The folder where the template file is located.
    meta_data : dict
        The meta data for the template file.
    **kwargs : dict
        The structure data for the project.
    """
    self.templates_dir = templates_dir
    self.files_dir = os.path.join(templates_dir, "files")
    self.meta_data = meta_data
    self.kwargs = kwargs
Source code in pystru/temp.py
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
class Structure:
    def __init__(self, file_path: str):
        """_summary_

        Parameters
        ----------
        file_path : str
            The path of the structure file.
        """
        self.file_path = file_path

    @property
    def structure_data(self) -> dict:
        """_summary_

        Returns
        -------
        dict
            The structure data.
        """
        import toml
        return toml.load(self.file_path)

    @staticmethod
    def inherit_data(parent: dict={}, child: dict={}):
        child.update(parent)
        return child

    @property
    def tiny(self):
        return {
            "jinja2": self.structure_data["tiny"]["jinja2"],
            "files": self.structure_data["tiny"]["files"],
            "folders": self.structure_data["tiny"]["folders"],
        }

    @property
    def basic(self):
        basic_jinj2 = Structure.inherit_data(
            parent=self.structure_data["tiny"]["jinja2"], 
            child=self.structure_data["basic"]["jinja2"]
        )
        basic_files = Structure.inherit_data(
            parent=self.structure_data["tiny"]["files"], 
            child=self.structure_data["basic"]["files"]
        )
        basic_folders = Structure.inherit_data(
            parent=self.structure_data["tiny"]["folders"], 
        )

        return {
            "jinja2": basic_jinj2,
            "files": basic_files,
            "folders": basic_folders,
        }

structure_data: dict property

summary

Returns:

Type Description
dict

The structure data.

__init__(file_path)

summary

Parameters:

Name Type Description Default
file_path str

The path of the structure file.

required
Source code in pystru/temp.py
70
71
72
73
74
75
76
77
78
def __init__(self, file_path: str):
    """_summary_

    Parameters
    ----------
    file_path : str
        The path of the structure file.
    """
    self.file_path = file_path