python3-openEuler 0.0.4__tar.gz → 0.0.5__tar.gz

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.

Potentially problematic release.


This version of python3-openEuler might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python3-openEuler
3
- Version: 0.0.4
3
+ Version: 0.0.5
4
4
  Summary: used to get and deal information about openEuler os
5
5
  Home-page: https://gitee.com/devops_dev/openEuler
6
6
  Author: redrose2100
@@ -147,36 +147,39 @@ class OpenEuler():
147
147
 
148
148
  def __replace_macros(self,value, macros):
149
149
  """根据宏字典替换字符串中的宏."""
150
- original_value = value
151
- while True:
152
- for key, val in macros.items():
153
- value = re.sub(r'%\{' + re.escape(key) + r'\}', val, value)
154
- if value == original_value:
155
- break
156
- original_value = value
157
- return value
150
+ if not macros:
151
+ return value
152
+
153
+ # 预编译所有宏的正则表达式,提升效率
154
+ patterns = [
155
+ (re.compile(re.escape(key)), val)
156
+ for key, val in macros.items()
157
+ ]
158
+
159
+ prev_value = None
160
+ current_value = value
161
+ # 循环替换直到无变化(处理嵌套宏)
162
+ while current_value != prev_value:
163
+ prev_value = current_value
164
+ for pattern, replacement in patterns:
165
+ current_value = pattern.sub(replacement, current_value)
166
+ return current_value
167
+
158
168
 
159
169
  def __extract_macros(self,spec):
160
- macros = {}
161
- for key, value in spec.macros.items():
162
- macros[key] = value
163
- if "name" not in macros.keys():
164
- macros['name'] = spec.name
165
- if "version" not in macros.keys():
166
- macros['version'] = spec.version
167
- if "release" not in macros.keys():
168
- macros['release'] = spec.release
169
- for k, w in DEFAULT_MACROS.items():
170
- if k not in macros.keys():
171
- macros[k] = w
170
+ macros = dict(spec.macros)
171
+
172
+ # 补充必要的默认宏(若不存在)
173
+ macros.setdefault("name", spec.name)
174
+ macros.setdefault("version", spec.version)
175
+ macros.setdefault("release", spec.release)
176
+
177
+ # 补充全局默认宏(若不存在)
178
+ for key, default_val in DEFAULT_MACROS.items():
179
+ macros.setdefault(key, default_val)
180
+
172
181
  return macros
173
182
 
174
- def __get_spec_files(self,root_path):
175
- spec_files = []
176
- for elem in Path(root_path).glob("**/*"):
177
- if Path(elem).is_file() and elem.name.endswith(".spec"):
178
- spec_files.append(elem)
179
- return spec_files
180
183
 
181
184
  def __get_rpm_list_from_spec(self,spec_file):
182
185
  """从 RPM spec 文件中提取所有包名并替换宏。"""
@@ -201,7 +204,7 @@ class OpenEuler():
201
204
  with tempfile.TemporaryDirectory() as temp_dir:
202
205
  git.Repo.clone_from(repo_url, temp_dir, branch=branch, depth=1)
203
206
  log.info(f"clone {repo_name} success")
204
- spec_files = self.__get_spec_files(temp_dir)
207
+ spec_files = list(Path(temp_dir).rglob("*.spec"))
205
208
 
206
209
  for spec_file in spec_files:
207
210
  temp_list = self.__get_rpm_list_from_spec(spec_file)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python3-openEuler
3
- Version: 0.0.4
3
+ Version: 0.0.5
4
4
  Summary: used to get and deal information about openEuler os
5
5
  Home-page: https://gitee.com/devops_dev/openEuler
6
6
  Author: redrose2100
@@ -10,7 +10,7 @@ except:
10
10
 
11
11
  setup(
12
12
  name="python3-openEuler",
13
- version="0.0.4",
13
+ version="0.0.5",
14
14
  description="used to get and deal information about openEuler os",
15
15
  long_description=long_desc,
16
16
  long_description_content_type="text/markdown",