2525assert CHANGELOGS_DIRECTORY .is_dir (), f"Changelogs directory not found: { CHANGELOGS_DIRECTORY } "
2626assert PORTABLE_DIRECTORY .is_dir (), f"Portable directory not found: { PORTABLE_DIRECTORY } "
2727
28-
2928def find_7zip_executable () -> str :
3029 """Locates the 7-Zip executable (7z.exe)."""
3130 possible_program_files = [
@@ -38,7 +37,6 @@ def find_7zip_executable() -> str:
3837 return str (executable_path )
3938 raise RuntimeError ("7ZIP is not installed on this computer." )
4039
41-
4240def replace_lines_in_file (filepath : Path , replacements : list [tuple [str , str ]]):
4341 """
4442 Replaces lines in a file that start with a given prefix.
@@ -98,10 +96,8 @@ def build_installer_7zip(script_template_path: Path, output_script_path: Path, r
9896 except subprocess .CalledProcessError as e :
9997 print (f"Error executing 7-Zip script: { e } " , file = sys .stderr )
10098
101-
10299def _copy_items (source_directories : list [Path ], target_directory : Path , verbose : bool = False ):
103100 """Copies items from source directories to the target directory."""
104-
105101 target_directory .mkdir (parents = True , exist_ok = True )
106102 for source_dir in source_directories :
107103 if not source_dir .is_dir ():
@@ -118,7 +114,6 @@ def _copy_items(source_directories: list[Path], target_directory: Path, verbose:
118114 except Exception as e :
119115 print (f"Error copying { source_item } to { target_item } : { e } " )
120116
121-
122117def _parse_list_argument (argument_value : str | list [str ], separator = " " ) -> list [str ]:
123118 """Parse a separated list argument into a list of strings."""
124119 if argument_value is None :
@@ -127,7 +122,6 @@ def _parse_list_argument(argument_value: str | list[str], separator=" ") -> list
127122 return argument_value .split (separator )
128123 return list (argument_value )
129124
130-
131125class WinPythonDistributionBuilder :
132126 """Builds a WinPython distribution."""
133127
@@ -163,19 +157,19 @@ def __init__(
163157 """
164158 self .build_number = build_number
165159 self .release_level = release_level
166- self .target_directory = Path (target_directory ) # Ensure Path object
167- self .wheels_directory = Path (wheels_directory ) # Ensure Path object
160+ self .target_directory = Path (target_directory )
161+ self .wheels_directory = Path (wheels_directory )
168162 self .tools_directories = tools_directories or []
169163 self .documentation_directories = documentation_directories or []
170164 self .verbose = verbose
171- self .winpython_directory : Path | None = None # Will be set during build
172- self .distribution : wppm .Distribution | None = None # Will be set during build
165+ self .winpython_directory : Path | None = None
166+ self .distribution : wppm .Distribution | None = None
173167 self .base_directory = base_directory
174168 self .install_options = install_options or []
175169 self .flavor = flavor
176170 self .python_zip_file : Path = self ._get_python_zip_file ()
177- self .python_name = self .python_zip_file .stem # Filename without extension
178- self .python_directory_name = "python" # Standardized Python directory name
171+ self .python_name = self .python_zip_file .stem
172+ self .python_directory_name = "python"
179173
180174 def _get_python_zip_file (self ) -> Path :
181175 """Finds the Python .zip file in the wheels directory."""
@@ -263,10 +257,7 @@ def winpython_version_name(self) -> str:
263257
264258 @property
265259 def python_full_version (self ) -> str :
266- """
267- Retrieves the Python full version string from the distribution.
268- Will be set after _extract_python is called and distribution is initialized.
269- """
260+ """Retrieves the Python full version string from the distribution."""
270261 if self .distribution is None :
271262 return "0.0.0" # Placeholder before initialization
272263 return utils .get_python_long_version (self .distribution .target )
@@ -286,7 +277,7 @@ def architecture_bits(self) -> int:
286277 """Returns the architecture (32 or 64 bits) of the distribution."""
287278 if self .distribution :
288279 return self .distribution .architecture
289- return 64 # Default to 64 if distribution is not initialized yet
280+ return 64
290281
291282 @property
292283 def pre_path_entries (self ) -> list [str ]:
@@ -308,14 +299,10 @@ def documentation_directories_list(self) -> list[Path]:
308299 return self .documentation_directories
309300
310301 def create_installer_7zip (self , installer_type : str = ".exe" ):
311- """
312- Creates a WinPython installer using 7-Zip.
313-
314- Args: installer_type: Type of installer to create (".exe", ".7z", ".zip").
315- """
302+ """Creates a WinPython installer using 7-Zip: ".exe", ".7z", ".zip")"""
316303 self ._print_action (f"Creating WinPython installer ({ installer_type } )" )
317304 template_name = "installer_7zip.bat"
318- output_name = "installer_7zip-tmp.bat" # temp file to avoid overwriting template
305+ output_name = "installer_7zip-tmp.bat"
319306 if installer_type not in [".exe" , ".7z" , ".zip" ]:
320307 print (f"Warning: Unsupported installer type '{ installer_type } '. Defaulting to .exe" )
321308 installer_type = ".exe"
@@ -326,14 +313,10 @@ def create_installer_7zip(self, installer_type: str = ".exe"):
326313 ("VERSION" , f"{ self .python_full_version } .{ self .build_number } { self .flavor } " ),
327314 ("VERSION_INSTALL" , f'{ self .python_full_version .replace ("." , "" )} { self .build_number } ' ),
328315 ("RELEASELEVEL" , self .release_level ),
329- ("INSTALLER_OPTION" , installer_type ), # Pass installer type as option to bat script
316+ ("INSTALLER_OPTION" , installer_type ),
330317 ]
331318
332- build_installer_7zip (
333- PORTABLE_DIRECTORY / template_name ,
334- PORTABLE_DIRECTORY / output_name ,
335- replacements
336- )
319+ build_installer_7zip (PORTABLE_DIRECTORY / template_name , PORTABLE_DIRECTORY / output_name , replacements )
337320
338321 def _print_action (self , text : str ):
339322 """Prints an action message with progress indicator."""
0 commit comments