YouTubeDownloader v1.1.2
YouTube content downloader
Loading...
Searching...
No Matches
update_py_requirements Namespace Reference

Classes

class  PackageInfo
 Package Information. More...
 

Functions

None create_package_summary_xls (list[PackageInfo] l_package_info)
 Update xls field with package summary.
 
PackageInfo|None get_package_info (str package)
 Upgrade package from text file to latest version.
 
list[PackageInfoupdate_packages (str filename)
 Update package from text file to latest version.
 

Variables

str FONT_NAME = "Consolas"
 
int I_TIMEOUT = 2
 
list l_all_package_info = []
 
list[PackageInfol_file_package = update_packages(req_file)
 
list L_FILES = ["requirements.txt", "constraints.txt"]
 
list L_IGNORE_PACKAGES = []
 
list L_PACKAGE_INFO_TITLE = ["Package", "Version", "Author", "Author_Mail", "License", "Homepage", "Package URL", "Requires", "Requires Py"]
 
 log = logging.getLogger("UpdatePyRequirements")
 

Detailed Description


Function Documentation

◆ create_package_summary_xls()

None create_package_summary_xls ( list[PackageInfo] l_package_info)

Update xls field with package summary.

Parameters
l_package_info: list with package infos

Definition at line 47 of file update_py_requirements.py.

47def create_package_summary_xls(l_package_info: list[PackageInfo]) -> None:
48 """!
49 @brief Update xls field with package summary
50 @param l_package_info : list with package infos
51 """
52 xls_creator = XLSCreator(font_name=FONT_NAME)
53 worksheet = xls_creator.workbook.active
54 worksheet.title = "PackageInfo"
55 for i, title in enumerate(L_PACKAGE_INFO_TITLE):
56 xls_creator.set_cell(worksheet, 1, i + 1, title, bold=True)
57 l_added_package = []
58 i_package = 0
59 for package in l_package_info:
60 if package not in l_added_package:
61 l_added_package.append(package)
62 for i, value in enumerate(package):
63 if isinstance(value, list):
64 if not value:
65 value = ""
66 else:
67 value = "\n".join(value)
68 elif isinstance(value, str):
69 pass
70 elif not value:
71 value = ""
72 xls_creator.set_cell(worksheet, i_package + 2, i + 1, str(value))
73 i_package += 1
74 xls_creator.set_table(worksheet, max_col=len(l_added_package[0]), max_row=len(l_added_package) + 1)
75 xls_creator.set_column_autowidth(worksheet)
76 worksheet.freeze_panes = "C2"
77 xls_creator.save(filename="PackageInfos.xlsx")
78 log.info("Write %s package infos to file", len(l_added_package))
79
80

◆ get_package_info()

PackageInfo | None get_package_info ( str package)

Upgrade package from text file to latest version.

Parameters
package: check latest version of this package
Returns
package info

Definition at line 81 of file update_py_requirements.py.

81def get_package_info(package: str) -> PackageInfo | None:
82 """!
83 @brief Upgrade package from text file to latest version
84 @param package : check latest version of this package
85 @return package info
86 """
87 try:
88 url = f"https://pypi.org/pypi/{package}/json"
89 response = requests.get(url, timeout=I_TIMEOUT)
90 response.raise_for_status()
91 d_package_info = response.json()
92 except requests.exceptions.RequestException as e:
93 log.error("Error occurred: %s", e)
94 package_info = None
95 else:
96 l_requires_dist: list[str] = []
97 requires_dist = d_package_info["info"]["requires_dist"]
98 if requires_dist:
99 for req in requires_dist:
100 l_requires_dist.append(req)
101 package_info = PackageInfo(package,
102 d_package_info["info"]["version"],
103 d_package_info["info"]["author"],
104 d_package_info["info"]["author_email"],
105 d_package_info["info"]["license"],
106 d_package_info["info"]["home_page"],
107 d_package_info["info"]["package_url"],
108 l_requires_dist,
109 d_package_info["info"]["requires_python"])
110 return package_info
111
112

◆ update_packages()

list[PackageInfo] update_packages ( str filename)

Update package from text file to latest version.

Parameters
filename: file name
Returns
list with updated packages

Definition at line 113 of file update_py_requirements.py.

113def update_packages(filename: str) -> list[PackageInfo]:
114 """!
115 @brief Update package from text file to latest version
116 @param filename : file name
117 @return list with updated packages
118 """
119 with open(filename, mode="r", encoding="utf-8") as file:
120 lines = file.readlines()
121
122 i_update_cnt = 0
123 l_package_info = []
124 updated_lines = []
125 for line in lines:
126 if re.match(r"^\s*#", line): # comment line
127 updated_lines.append(line)
128 elif re.match(r"^\s*([\w\-]+)==([\w\.\-]+)\s*(#.*)?$", line): # check for fix version 'package==version'
129 package, version, comment = re.findall(r"^\s*([\w\-]+)==([\w\.\-]+)\s*(#.*)?$", line)[0]
130 if comment != "":
131 comment = f" {comment}"
132 package_info = get_package_info(package)
133 if (package_info is not None) and (package not in L_IGNORE_PACKAGES):
134 if package_info.version and (package_info.version != version):
135 updated_lines.append(f"{package}=={package_info.version}{comment}\n")
136 i_update_cnt += 1
137 log.info("Updated: %s %s", package, package_info.version)
138 else:
139 updated_lines.append(line)
140 log.debug(line)
141 l_package_info.append(package_info)
142 else:
143 updated_lines.append(line)
144 log.debug(line)
145 else: # package without version
146 updated_lines.append(line)
147 if line.strip():
148 package_info = get_package_info(line)
149 if package_info is not None:
150 l_package_info.append(package_info)
151 log.debug(line)
152
153 with open(filename, mode="w", encoding="utf-8") as file:
154 file.writelines(updated_lines)
155 log.info("%s packages updates in %s\n", i_update_cnt, filename)
156 return l_package_info
157
158

Variable Documentation

◆ FONT_NAME

str FONT_NAME = "Consolas"

Definition at line 26 of file update_py_requirements.py.

◆ I_TIMEOUT

int I_TIMEOUT = 2

Definition at line 27 of file update_py_requirements.py.

◆ l_all_package_info

list l_all_package_info = []

Definition at line 160 of file update_py_requirements.py.

◆ l_file_package

list[PackageInfo] l_file_package = update_packages(req_file)

Definition at line 162 of file update_py_requirements.py.

◆ L_FILES

list L_FILES = ["requirements.txt", "constraints.txt"]

Definition at line 24 of file update_py_requirements.py.

◆ L_IGNORE_PACKAGES

list L_IGNORE_PACKAGES = []

Definition at line 25 of file update_py_requirements.py.

◆ L_PACKAGE_INFO_TITLE

list L_PACKAGE_INFO_TITLE = ["Package", "Version", "Author", "Author_Mail", "License", "Homepage", "Package URL", "Requires", "Requires Py"]

Definition at line 29 of file update_py_requirements.py.

◆ log

log = logging.getLogger("UpdatePyRequirements")

Definition at line 21 of file update_py_requirements.py.