instant-python 0.4.0__py3-none-any.whl → 0.5.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/cli.py +19 -2
- instant_python/errors/__init__.py +0 -0
- instant_python/errors/application_error.py +11 -0
- instant_python/errors/command_execution_error.py +20 -0
- instant_python/errors/error_types.py +6 -0
- instant_python/errors/template_file_not_found_error.py +18 -0
- instant_python/errors/unknown_dependency_manager_error.py +18 -0
- instant_python/errors/unknown_node_typer_error.py +16 -0
- instant_python/errors/unknown_template_error.py +16 -0
- instant_python/installer/dependency_manager_factory.py +5 -1
- instant_python/installer/git_configurer.py +3 -0
- instant_python/installer/installer.py +9 -3
- instant_python/installer/managers.py +0 -1
- instant_python/installer/pdm_manager.py +7 -0
- instant_python/installer/uv_manager.py +4 -0
- instant_python/intant_python_typer.py +30 -0
- instant_python/project_generator/custom_template_manager.py +2 -3
- instant_python/project_generator/folder_tree.py +3 -8
- instant_python/project_generator/jinja_custom_filters.py +2 -1
- instant_python/project_generator/project_generator.py +12 -7
- {instant_python-0.4.0.dist-info → instant_python-0.5.0.dist-info}/METADATA +2 -2
- {instant_python-0.4.0.dist-info → instant_python-0.5.0.dist-info}/RECORD +25 -16
- {instant_python-0.4.0.dist-info → instant_python-0.5.0.dist-info}/WHEEL +0 -0
- {instant_python-0.4.0.dist-info → instant_python-0.5.0.dist-info}/entry_points.txt +0 -0
- {instant_python-0.4.0.dist-info → instant_python-0.5.0.dist-info}/licenses/LICENSE +0 -0
instant_python/cli.py
CHANGED
|
@@ -1,11 +1,28 @@
|
|
|
1
|
-
import
|
|
1
|
+
from rich.console import Console
|
|
2
|
+
from rich.panel import Panel
|
|
2
3
|
|
|
3
4
|
from instant_python import folder_cli, project_cli
|
|
5
|
+
from instant_python.errors.application_error import ApplicationError
|
|
6
|
+
from instant_python.intant_python_typer import InstantPythonTyper
|
|
7
|
+
|
|
8
|
+
app = InstantPythonTyper()
|
|
9
|
+
console = Console()
|
|
4
10
|
|
|
5
|
-
app = typer.Typer()
|
|
6
11
|
app.add_typer(folder_cli.app, name="folder", help="Generate only the folder structure for a new project")
|
|
7
12
|
app.add_typer(project_cli.app, name="project", help="Generate a full project ready to be used")
|
|
8
13
|
|
|
9
14
|
|
|
15
|
+
@app.error_handler(ApplicationError)
|
|
16
|
+
def handle_application_error(exc: ApplicationError) -> None:
|
|
17
|
+
error_panel = Panel(exc.message, title="Error", border_style="red")
|
|
18
|
+
console.print(error_panel)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@app.error_handler(Exception)
|
|
22
|
+
def handle_unexpected_error(exc: Exception) -> None:
|
|
23
|
+
error_panel = Panel(f"An unexpected error occurred: {exc}", title="Error", border_style="red")
|
|
24
|
+
console.print(error_panel)
|
|
25
|
+
|
|
26
|
+
|
|
10
27
|
if __name__ == "__main__":
|
|
11
28
|
app()
|
|
File without changes
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from instant_python.errors.application_error import ApplicationError
|
|
2
|
+
from instant_python.errors.error_types import ErrorTypes
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class CommandExecutionError(ApplicationError):
|
|
6
|
+
def __init__(self, exit_code: int, stderr_output=None):
|
|
7
|
+
self._message = (
|
|
8
|
+
f"Unexpected error when executing a command, exit code {exit_code}"
|
|
9
|
+
)
|
|
10
|
+
if stderr_output:
|
|
11
|
+
self._message += f": {stderr_output.decode('utf-8').strip()}"
|
|
12
|
+
super().__init__(self._message)
|
|
13
|
+
|
|
14
|
+
@property
|
|
15
|
+
def type(self) -> str:
|
|
16
|
+
return ErrorTypes.INSTALLER.value
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def message(self) -> str:
|
|
20
|
+
return self._message
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from instant_python.errors.application_error import ApplicationError
|
|
4
|
+
from instant_python.errors.error_types import ErrorTypes
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class TemplateFileNotFoundError(ApplicationError):
|
|
8
|
+
def __init__(self, template_path: str | Path) -> None:
|
|
9
|
+
self._message = f"Could not find YAML file at: {template_path}"
|
|
10
|
+
super().__init__(self._message)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def type(self) -> str:
|
|
14
|
+
return ErrorTypes.GENERATOR.value
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def message(self) -> str:
|
|
18
|
+
return self._message
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from instant_python.errors.application_error import ApplicationError
|
|
2
|
+
from instant_python.errors.error_types import ErrorTypes
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class UnknownDependencyManagerError(ApplicationError):
|
|
6
|
+
def __init__(self, manager: str) -> None:
|
|
7
|
+
self._message = (
|
|
8
|
+
f"Unknown dependency manager: {manager}. Please use 'pdm' or 'uv'."
|
|
9
|
+
)
|
|
10
|
+
super().__init__(self._message)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def type(self) -> str:
|
|
14
|
+
return ErrorTypes.INSTALLER.value
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def message(self) -> str:
|
|
18
|
+
return self._message
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from instant_python.errors.application_error import ApplicationError
|
|
2
|
+
from instant_python.errors.error_types import ErrorTypes
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class UnknownNodeTypeError(ApplicationError):
|
|
6
|
+
def __init__(self, node_type: str) -> None:
|
|
7
|
+
self._message = f"Unknown node type: {node_type}"
|
|
8
|
+
super().__init__(self._message)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def type(self) -> str:
|
|
12
|
+
return ErrorTypes.GENERATOR.value
|
|
13
|
+
|
|
14
|
+
@property
|
|
15
|
+
def message(self) -> str:
|
|
16
|
+
return self._message
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from instant_python.errors.application_error import ApplicationError
|
|
2
|
+
from instant_python.errors.error_types import ErrorTypes
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class UnknownTemplateError(ApplicationError):
|
|
6
|
+
def __init__(self, template_name: str) -> None:
|
|
7
|
+
self._message = f"Unknown template type: {template_name}"
|
|
8
|
+
super().__init__(self._message)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def type(self) -> str:
|
|
12
|
+
return ErrorTypes.GENERATOR.value
|
|
13
|
+
|
|
14
|
+
@property
|
|
15
|
+
def message(self) -> str:
|
|
16
|
+
return self._message
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from instant_python.errors.unknown_dependency_manager_error import UnknownDependencyManagerError
|
|
1
2
|
from instant_python.installer.dependency_manager import DependencyManager
|
|
2
3
|
from instant_python.installer.managers import Managers
|
|
3
4
|
from instant_python.installer.pdm_manager import PdmManager
|
|
@@ -11,4 +12,7 @@ class DependencyManagerFactory:
|
|
|
11
12
|
Managers.UV: UvManager,
|
|
12
13
|
Managers.PDM: PdmManager,
|
|
13
14
|
}
|
|
14
|
-
|
|
15
|
+
try:
|
|
16
|
+
return managers[Managers(user_manager)](project_path)
|
|
17
|
+
except KeyError:
|
|
18
|
+
raise UnknownDependencyManagerError(user_manager)
|
|
@@ -21,6 +21,7 @@ class GitConfigurer:
|
|
|
21
21
|
check=True,
|
|
22
22
|
cwd=self._project_directory,
|
|
23
23
|
stdout=subprocess.DEVNULL,
|
|
24
|
+
stderr=subprocess.PIPE,
|
|
24
25
|
)
|
|
25
26
|
print(">>> Git repository initialized successfully")
|
|
26
27
|
|
|
@@ -32,6 +33,7 @@ class GitConfigurer:
|
|
|
32
33
|
check=True,
|
|
33
34
|
cwd=self._project_directory,
|
|
34
35
|
stdout=subprocess.DEVNULL,
|
|
36
|
+
stderr=subprocess.PIPE,
|
|
35
37
|
)
|
|
36
38
|
print(">>> Git user and email configured successfully")
|
|
37
39
|
|
|
@@ -43,5 +45,6 @@ class GitConfigurer:
|
|
|
43
45
|
check=True,
|
|
44
46
|
cwd=self._project_directory,
|
|
45
47
|
stdout=subprocess.DEVNULL,
|
|
48
|
+
stderr=subprocess.PIPE,
|
|
46
49
|
)
|
|
47
50
|
print(">>> Initial commit made successfully")
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import subprocess
|
|
2
|
+
|
|
3
|
+
from instant_python.errors.command_execution_error import CommandExecutionError
|
|
1
4
|
from instant_python.installer.dependency_manager import DependencyManager
|
|
2
5
|
|
|
3
6
|
|
|
@@ -13,6 +16,9 @@ class Installer:
|
|
|
13
16
|
def perform_installation(
|
|
14
17
|
self, python_version: str, dependencies: list[str]
|
|
15
18
|
) -> None:
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
try:
|
|
20
|
+
self._dependency_manager.install()
|
|
21
|
+
self._dependency_manager.install_python(python_version)
|
|
22
|
+
self._dependency_manager.install_dependencies(dependencies)
|
|
23
|
+
except subprocess.CalledProcessError as error:
|
|
24
|
+
raise CommandExecutionError(exit_code=error.returncode, stderr_output=error.stderr)
|
|
@@ -16,6 +16,8 @@ class PdmManager(DependencyManager):
|
|
|
16
16
|
"curl -sSL https://pdm-project.org/install-pdm.py | python3 -",
|
|
17
17
|
shell=True,
|
|
18
18
|
check=True,
|
|
19
|
+
stdout=subprocess.DEVNULL,
|
|
20
|
+
stderr=subprocess.PIPE,
|
|
19
21
|
)
|
|
20
22
|
print(">>> pdm installed successfully")
|
|
21
23
|
|
|
@@ -27,6 +29,8 @@ class PdmManager(DependencyManager):
|
|
|
27
29
|
shell=True,
|
|
28
30
|
check=True,
|
|
29
31
|
cwd=self._project_directory,
|
|
32
|
+
stdout=subprocess.DEVNULL,
|
|
33
|
+
stderr=subprocess.PIPE,
|
|
30
34
|
)
|
|
31
35
|
print(f">>> Python {version} installed successfully")
|
|
32
36
|
|
|
@@ -55,6 +59,8 @@ class PdmManager(DependencyManager):
|
|
|
55
59
|
shell=True,
|
|
56
60
|
check=True,
|
|
57
61
|
cwd=self._project_directory,
|
|
62
|
+
stdout=subprocess.DEVNULL,
|
|
63
|
+
stderr=subprocess.PIPE,
|
|
58
64
|
)
|
|
59
65
|
|
|
60
66
|
@staticmethod
|
|
@@ -76,4 +82,5 @@ class PdmManager(DependencyManager):
|
|
|
76
82
|
check=True,
|
|
77
83
|
cwd=self._project_directory,
|
|
78
84
|
stdout=subprocess.DEVNULL,
|
|
85
|
+
stderr=subprocess.PIPE,
|
|
79
86
|
)
|
|
@@ -17,6 +17,7 @@ class UvManager(DependencyManager):
|
|
|
17
17
|
shell=True,
|
|
18
18
|
check=True,
|
|
19
19
|
stdout=subprocess.DEVNULL,
|
|
20
|
+
stderr=subprocess.PIPE,
|
|
20
21
|
)
|
|
21
22
|
print(">>> uv installed successfully")
|
|
22
23
|
|
|
@@ -29,6 +30,7 @@ class UvManager(DependencyManager):
|
|
|
29
30
|
check=True,
|
|
30
31
|
cwd=self._project_directory,
|
|
31
32
|
stdout=subprocess.DEVNULL,
|
|
33
|
+
stderr=subprocess.PIPE,
|
|
32
34
|
)
|
|
33
35
|
print(f">>> Python {version} installed successfully")
|
|
34
36
|
|
|
@@ -58,6 +60,7 @@ class UvManager(DependencyManager):
|
|
|
58
60
|
check=True,
|
|
59
61
|
cwd=self._project_directory,
|
|
60
62
|
stdout=subprocess.DEVNULL,
|
|
63
|
+
stderr=subprocess.PIPE,
|
|
61
64
|
)
|
|
62
65
|
print(f">>> {dependency_name} installed successfully")
|
|
63
66
|
|
|
@@ -81,4 +84,5 @@ class UvManager(DependencyManager):
|
|
|
81
84
|
check=True,
|
|
82
85
|
cwd=self._project_directory,
|
|
83
86
|
stdout=subprocess.DEVNULL,
|
|
87
|
+
stderr=subprocess.PIPE,
|
|
84
88
|
)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from collections.abc import Callable
|
|
2
|
+
|
|
3
|
+
import typer
|
|
4
|
+
|
|
5
|
+
ExceptionType = type[Exception]
|
|
6
|
+
ErrorHandlingCallback = Callable[[Exception], None]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class InstantPythonTyper(typer.Typer):
|
|
10
|
+
error_handlers: dict[ExceptionType, ErrorHandlingCallback] = {}
|
|
11
|
+
|
|
12
|
+
def error_handler(self, exc: ExceptionType):
|
|
13
|
+
"""Registers a callback function to be called when 'exc' (the given exception) is raised."""
|
|
14
|
+
|
|
15
|
+
def decorator(func: ErrorHandlingCallback):
|
|
16
|
+
self.error_handlers[exc] = func
|
|
17
|
+
return func
|
|
18
|
+
|
|
19
|
+
return decorator
|
|
20
|
+
|
|
21
|
+
def __call__(self, *args, **kwargs):
|
|
22
|
+
"""Overrides Typer.__call__ so that when we run the CLI,
|
|
23
|
+
we can catch any exception that's raised and see if there's
|
|
24
|
+
a matching error handler for it.
|
|
25
|
+
"""
|
|
26
|
+
try:
|
|
27
|
+
super().__call__(*args, **kwargs)
|
|
28
|
+
except Exception as error:
|
|
29
|
+
callback = self.error_handlers.get(error.__class__.__base__)
|
|
30
|
+
callback(error)
|
|
@@ -2,6 +2,7 @@ from pathlib import Path
|
|
|
2
2
|
|
|
3
3
|
import yaml
|
|
4
4
|
|
|
5
|
+
from instant_python.errors.template_file_not_found_error import TemplateFileNotFoundError
|
|
5
6
|
from instant_python.project_generator.template_manager import TemplateManager
|
|
6
7
|
|
|
7
8
|
|
|
@@ -11,8 +12,6 @@ class CustomTemplateManager(TemplateManager):
|
|
|
11
12
|
|
|
12
13
|
def get_project(self, template_name: str) -> dict[str, str]:
|
|
13
14
|
if not self._template_path.is_file():
|
|
14
|
-
raise
|
|
15
|
-
f"Could not find YAML file at: {self._template_path}"
|
|
16
|
-
)
|
|
15
|
+
raise TemplateFileNotFoundError(self._template_path)
|
|
17
16
|
with open(self._template_path, "r", encoding="utf-8") as f:
|
|
18
17
|
return yaml.safe_load(f)
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
|
-
from instant_python.
|
|
3
|
+
from instant_python.errors.unknown_node_typer_error import UnknownNodeTypeError
|
|
4
4
|
from instant_python.project_generator.boilerplate_file import BoilerplateFile
|
|
5
|
+
from instant_python.project_generator.directory import Directory
|
|
5
6
|
from instant_python.project_generator.file import File
|
|
6
7
|
from instant_python.project_generator.node import Node, NodeType
|
|
7
8
|
|
|
8
9
|
|
|
9
|
-
class UnknownNodeType(ValueError):
|
|
10
|
-
def __init__(self, node_type: str) -> None:
|
|
11
|
-
self._message = f"Unknown node type: {node_type}"
|
|
12
|
-
super().__init__(self._message)
|
|
13
|
-
|
|
14
|
-
|
|
15
10
|
class FolderTree:
|
|
16
11
|
def __init__(self, project_directory: str) -> None:
|
|
17
12
|
self._project_directory = Path(project_directory)
|
|
@@ -41,4 +36,4 @@ class FolderTree:
|
|
|
41
36
|
extension = node.get("extension", "")
|
|
42
37
|
return File(name=name, extension=extension)
|
|
43
38
|
else:
|
|
44
|
-
raise
|
|
39
|
+
raise UnknownNodeTypeError(node_type)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
from instant_python.errors.unknown_template_error import UnknownTemplateError
|
|
1
2
|
from instant_python.question_prompter.template_types import TemplateTypes
|
|
2
3
|
|
|
3
4
|
|
|
@@ -15,4 +16,4 @@ def compute_base_path(initial_path: str, template_type: str) -> str:
|
|
|
15
16
|
elif template_type == TemplateTypes.STANDARD:
|
|
16
17
|
return ".".join(path_components[2:])
|
|
17
18
|
else:
|
|
18
|
-
raise
|
|
19
|
+
raise UnknownTemplateError(template_type)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import subprocess
|
|
2
2
|
|
|
3
|
+
from instant_python.errors.command_execution_error import CommandExecutionError
|
|
3
4
|
from instant_python.project_generator.folder_tree import FolderTree
|
|
4
5
|
from instant_python.project_generator.jinja_template_manager import TemplateManager
|
|
5
6
|
|
|
@@ -18,13 +19,17 @@ class ProjectGenerator:
|
|
|
18
19
|
self._format_project_files()
|
|
19
20
|
|
|
20
21
|
def _format_project_files(self) -> None:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
try:
|
|
23
|
+
subprocess.run(
|
|
24
|
+
"uvx ruff format",
|
|
25
|
+
shell=True,
|
|
26
|
+
check=True,
|
|
27
|
+
cwd=self._folder_tree.project_directory,
|
|
28
|
+
stdout=subprocess.DEVNULL,
|
|
29
|
+
stderr=subprocess.PIPE,
|
|
30
|
+
)
|
|
31
|
+
except subprocess.CalledProcessError as error:
|
|
32
|
+
raise CommandExecutionError(exit_code=error.returncode, stderr_output=error.stderr)
|
|
28
33
|
|
|
29
34
|
@property
|
|
30
35
|
def path(self) -> str:
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: instant-python
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Instant boilerplate generation for Python projects
|
|
5
|
-
Project-URL: documentation, https://dimanu-py.github.io/instant-python/
|
|
5
|
+
Project-URL: documentation, https://dimanu-py.github.io/instant-python/
|
|
6
6
|
Project-URL: repository, https://github.com/dimanu-py/instant-python/
|
|
7
7
|
Author-email: dimanu-py <diegomtz126@gmail.com>
|
|
8
8
|
License: Apache License
|
|
@@ -1,26 +1,35 @@
|
|
|
1
1
|
instant_python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
instant_python/cli.py,sha256=
|
|
2
|
+
instant_python/cli.py,sha256=seXa5ejBGG8dtEGakXRQLwurDKoRIZzEGWTY3gMcTZ4,957
|
|
3
3
|
instant_python/folder_cli.py,sha256=kEVCuhq08v8ahdUTa3sA1v5B96xoMO4U6cGEcXHrZLo,1748
|
|
4
|
+
instant_python/intant_python_typer.py,sha256=y5NUkpOXagH-9nEnb-APhwMZQyRPNAZITRCNDWJKQmE,966
|
|
4
5
|
instant_python/project_cli.py,sha256=aDYZZwpkMFN-J7UEKgvZQ9lXlKtr5e3ttdNzEtGslbw,3446
|
|
6
|
+
instant_python/errors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
instant_python/errors/application_error.py,sha256=A2XOPci4b0gkpr0EEqSxpo6gWpPxGm2VjJksZRX3KOY,212
|
|
8
|
+
instant_python/errors/command_execution_error.py,sha256=ugsU4PQKZBdHB4zihWcCEMw0xnFkRw2JAlMjf2ZfLec,649
|
|
9
|
+
instant_python/errors/error_types.py,sha256=AOcBRwJkLjE9kCGbKGebwaNzLvTbb9Vsv-bXtBEqnb0,122
|
|
10
|
+
instant_python/errors/template_file_not_found_error.py,sha256=-tozNvJLxSekXe57GjyMUzwzEGjT1sSDskLBUxygmJk,534
|
|
11
|
+
instant_python/errors/unknown_dependency_manager_error.py,sha256=AAY8jASB4RBABwjP_8CTUHw183uL_cEzgtJic3LOvC8,543
|
|
12
|
+
instant_python/errors/unknown_node_typer_error.py,sha256=pG3wqrqUJXsSFVJzZRZZfx_ttgquVK8VfhNFdw0915U,478
|
|
13
|
+
instant_python/errors/unknown_template_error.py,sha256=EfBs5HvV394o1qAah5FoJ7kkskXYWeYi63gZX4LTfdo,490
|
|
5
14
|
instant_python/installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
15
|
instant_python/installer/dependency_manager.py,sha256=0pVTtNPGUKFvLeFjiVlegIDU7SjC1urlTSSR7pvzIkU,384
|
|
7
|
-
instant_python/installer/dependency_manager_factory.py,sha256=
|
|
8
|
-
instant_python/installer/git_configurer.py,sha256=
|
|
9
|
-
instant_python/installer/installer.py,sha256=
|
|
10
|
-
instant_python/installer/managers.py,sha256=
|
|
11
|
-
instant_python/installer/pdm_manager.py,sha256=
|
|
12
|
-
instant_python/installer/uv_manager.py,sha256=
|
|
16
|
+
instant_python/installer/dependency_manager_factory.py,sha256=_CA4j3V2HzOIeEMJUgN_fCfZo2X_H0uggfuQFCierKU,742
|
|
17
|
+
instant_python/installer/git_configurer.py,sha256=TFend94t9Kx96CwXLvyeKlhHDiVTpIwUuZqv1aWsoSQ,1632
|
|
18
|
+
instant_python/installer/installer.py,sha256=537Y58ZigLc1Kys83eerFWFPjoZ6YaarnJki3bTYWRg,840
|
|
19
|
+
instant_python/installer/managers.py,sha256=EmFtL-WucSSZEs1Un3YFqVymlSLTHMTCqHoQRHSl_Oo,81
|
|
20
|
+
instant_python/installer/pdm_manager.py,sha256=YN25zBYkTDo9opmzqK2qIJ5s44qxZGMvo06XK_Szd4U,3017
|
|
21
|
+
instant_python/installer/uv_manager.py,sha256=okNedYUksLYuhtgxS9OeTiHWXBDsa5ALOXChbCM_xTs,3022
|
|
13
22
|
instant_python/project_generator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
23
|
instant_python/project_generator/boilerplate_file.py,sha256=7APVzUdgieRopJwybTkkycXRRAkr95Q3GmX5M0IrO3c,754
|
|
15
|
-
instant_python/project_generator/custom_template_manager.py,sha256=
|
|
24
|
+
instant_python/project_generator/custom_template_manager.py,sha256=cRORZXhg2dx6yKARMG5qnyDgCjtQCV_jKnOdMxjNPIk,662
|
|
16
25
|
instant_python/project_generator/directory.py,sha256=nJoxOd2RQUJoNkML3Dh7JqhR_xp0czasBXRE2WvW-kQ,747
|
|
17
26
|
instant_python/project_generator/file.py,sha256=CV8utHrK3OBWr-HjVlSYvelcvfcCRVF0cHpd_qAm0-g,484
|
|
18
|
-
instant_python/project_generator/folder_tree.py,sha256=
|
|
19
|
-
instant_python/project_generator/jinja_custom_filters.py,sha256=
|
|
27
|
+
instant_python/project_generator/folder_tree.py,sha256=X0mY_g8RzAjAlR1InZD1vAOzf8YE-8Hhf7KYSbF0JJE,1654
|
|
28
|
+
instant_python/project_generator/jinja_custom_filters.py,sha256=3VUCfHmU0y_fT5CFiJQqTYeUAShptoSTdNArrcwxDdo,698
|
|
20
29
|
instant_python/project_generator/jinja_environment.py,sha256=wEERsimWbG0XLxBNhkFN9Y2plX8SzTpOewyJRsBLSa4,595
|
|
21
30
|
instant_python/project_generator/jinja_template_manager.py,sha256=rfQXnFmtK1zCxD8RJ22NL-cojCjcJSUhrOOjAT3sLb4,1472
|
|
22
31
|
instant_python/project_generator/node.py,sha256=nmT09M8vPPbgDUTpykU_bPY_1w0IT9oVFoKPCfi64Yk,315
|
|
23
|
-
instant_python/project_generator/project_generator.py,sha256=
|
|
32
|
+
instant_python/project_generator/project_generator.py,sha256=MG_eVvj3Wy9inGYkNN2PIe4jObDYvbSJqrb61G9SLAY,1294
|
|
24
33
|
instant_python/project_generator/template_manager.py,sha256=LhN56T04QlRZv0DXUIl9yx3y1OFq_S9Zq8efxgNHSVI,175
|
|
25
34
|
instant_python/question_prompter/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
35
|
instant_python/question_prompter/question_wizard.py,sha256=32SoH2ADQklU3WkLorn3NtztyaHACcCIfU2zEsMQKFc,512
|
|
@@ -146,8 +155,8 @@ instant_python/templates/project_structure/domain_driven_design/test.yml.j2,sha2
|
|
|
146
155
|
instant_python/templates/project_structure/standard_project/main_structure.yml.j2,sha256=Tger29wWSQRqJ4NF8aIq5a3cb1sIm8CL5fyTAv-ZcbU,1306
|
|
147
156
|
instant_python/templates/project_structure/standard_project/source.yml.j2,sha256=tqD9AsAAzPhulWmRrUW7k3F0eguhAKvNc_p5faQCfRg,1586
|
|
148
157
|
instant_python/templates/project_structure/standard_project/test.yml.j2,sha256=wadDyJsuDlUecFPNu4RU2v34gOAlKFCQSL5z5U8rgdU,372
|
|
149
|
-
instant_python-0.
|
|
150
|
-
instant_python-0.
|
|
151
|
-
instant_python-0.
|
|
152
|
-
instant_python-0.
|
|
153
|
-
instant_python-0.
|
|
158
|
+
instant_python-0.5.0.dist-info/METADATA,sha256=QUDokGny6-yiPPsMxqJ2Xhum8umkvI_2UdN_oDNMgX8,16211
|
|
159
|
+
instant_python-0.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
160
|
+
instant_python-0.5.0.dist-info/entry_points.txt,sha256=EdBTj3b3N9Pa4oNzPLPivE_AnMcQIFsmRC3RsSkoLLA,47
|
|
161
|
+
instant_python-0.5.0.dist-info/licenses/LICENSE,sha256=kf7wA-1IsqXkzXjlsG95sdQJtsqUON_lNXombfPlklo,11353
|
|
162
|
+
instant_python-0.5.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|