First update towards cpl2
This commit is contained in:
79
clean_init.py
Normal file
79
clean_init.py
Normal file
@@ -0,0 +1,79 @@
|
||||
import os
|
||||
import re
|
||||
|
||||
def clean_init_files(root_dir='.'):
|
||||
"""
|
||||
Durchsucht rekursiv alle __init__.py Dateien und entfernt:
|
||||
- Einzeilige Kommentare
|
||||
- Mehrzeilige Kommentare/Docstrings
|
||||
- Variablen, die mit __ beginnen und enden
|
||||
- VersionInfo- und version_info-Zuweisungen
|
||||
"""
|
||||
# Regex-Pattern für zu entfernende Zeilen
|
||||
comment_pattern = re.compile(r'^\s*#.*$')
|
||||
dunder_pattern = re.compile(r'^\s*__\w+__\s*=.*$')
|
||||
version_pattern = re.compile(r'^\s*(VersionInfo|version_info)\s*=.*$')
|
||||
|
||||
# Zu ignorierende Verzeichnisse
|
||||
ignore_dirs = ['venv', '.venv', 'env', '.env']
|
||||
|
||||
# Zähle bearbeitete Dateien
|
||||
processed_files = 0
|
||||
|
||||
for dirpath, dirnames, filenames in os.walk(root_dir):
|
||||
# Ignoriere venv-Verzeichnisse
|
||||
dirnames[:] = [d for d in dirnames if d not in ignore_dirs]
|
||||
|
||||
for filename in filenames:
|
||||
if filename == '__init__.py':
|
||||
file_path = os.path.join(dirpath, filename)
|
||||
|
||||
# Datei lesen
|
||||
with open(file_path, 'r', encoding='utf-8') as f:
|
||||
content = f.read()
|
||||
|
||||
# Mehrzeilige Kommentare entfernen
|
||||
# Entferne Docstrings (''' oder """)
|
||||
content = re.sub(r'(?:\'\'\'|""")[\s\S]*?(?:\'\'\'|""")', '', content)
|
||||
|
||||
# Verarbeite die Zeilen
|
||||
lines = content.splitlines()
|
||||
|
||||
# Zu behaltende Zeilen filtern
|
||||
filtered_lines = []
|
||||
for line in lines:
|
||||
if (not comment_pattern.match(line) and
|
||||
not dunder_pattern.match(line) and
|
||||
not version_pattern.match(line)):
|
||||
filtered_lines.append(line)
|
||||
|
||||
# Leere aufeinanderfolgende Zeilen entfernen
|
||||
clean_lines = []
|
||||
prev_empty = False
|
||||
for line in filtered_lines:
|
||||
is_empty = line.strip() == ''
|
||||
if not (is_empty and prev_empty):
|
||||
clean_lines.append(line)
|
||||
prev_empty = is_empty
|
||||
|
||||
# Entferne Leerzeilen am Anfang und Ende
|
||||
while clean_lines and clean_lines[0].strip() == '':
|
||||
clean_lines.pop(0)
|
||||
while clean_lines and clean_lines[-1].strip() == '':
|
||||
clean_lines.pop()
|
||||
|
||||
# Füge eine Leerzeile am Ende hinzu, wenn die Datei nicht leer ist
|
||||
if clean_lines:
|
||||
clean_lines.append('')
|
||||
|
||||
# Schreibe bereinigte Datei zurück
|
||||
with open(file_path, 'w', encoding='utf-8') as f:
|
||||
f.write('\n'.join(clean_lines))
|
||||
|
||||
processed_files += 1
|
||||
print(f"Bereinigt: {file_path}")
|
||||
|
||||
print(f"\nAbgeschlossen: {processed_files} __init__.py Dateien bereinigt")
|
||||
|
||||
if __name__ == "__main__":
|
||||
clean_init_files()
|
||||
Reference in New Issue
Block a user