Skip to content

Commit

Permalink
format format.py
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexCheema committed Jul 28, 2024
1 parent 4cb36a7 commit cb217b7
Showing 1 changed file with 75 additions and 70 deletions.
145 changes: 75 additions & 70 deletions format.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,96 +10,101 @@

# Add ignore patterns here
IGNORE_PATTERNS = [
'.venv/*',
'setup.py',
'*helpers.py',
'*node_service_pb2.py',
'*node_service_pb2_grpc.py',
'.venv/*',
'setup.py',
'*helpers.py',
'*node_service_pb2.py',
'*node_service_pb2_grpc.py',
]


def should_ignore(file_path):
for pattern in IGNORE_PATTERNS:
if fnmatch.fnmatch(file_path, pattern):
return True
return False
for pattern in IGNORE_PATTERNS:
if fnmatch.fnmatch(file_path, pattern):
return True
return False


def preserve_debug_lines(content):
def replace(match):
indent, line = match.groups()
return f"{indent}{PLACEHOLDER}{line.strip()}"
return DEBUG_PATTERN.sub(replace, content)
def replace(match):
indent, line = match.groups()
return f"{indent}{PLACEHOLDER}{line.strip()}"

return DEBUG_PATTERN.sub(replace, content)


def restore_debug_lines(content):
return re.sub(f"^(\\s*){PLACEHOLDER}(.+)$", r"\1\2", content, flags=re.MULTILINE)
return re.sub(f"^(\\s*){PLACEHOLDER}(.+)$", r"\1\2", content, flags=re.MULTILINE)


def adjust_indentation(content):
lines = content.split('\n')
adjusted_lines = []
for line in lines:
if line.strip() and not line.startswith(PLACEHOLDER):
indent = len(line) - len(line.lstrip())
new_indent = ' ' * (indent // 2)
adjusted_lines.append(new_indent + line.lstrip())
else:
adjusted_lines.append(line)
return '\n'.join(adjusted_lines)
lines = content.split('\n')
adjusted_lines = []
for line in lines:
if line.strip() and not line.startswith(PLACEHOLDER):
indent = len(line) - len(line.lstrip())
new_indent = ' ' * (indent // 2)
adjusted_lines.append(new_indent + line.lstrip())
else:
adjusted_lines.append(line)
return '\n'.join(adjusted_lines)


def process_file(file_path, process_func):
with open(file_path, 'r') as file:
content = file.read()
with open(file_path, 'r') as file:
content = file.read()

modified_content = process_func(content)
modified_content = process_func(content)

if content != modified_content:
with open(file_path, 'w') as file:
file.write(modified_content)
if content != modified_content:
with open(file_path, 'w') as file:
file.write(modified_content)

def run_black(target):
# Convert ignore patterns to Black's --extend-exclude format
exclude_patterns = '|'.join(f'({pattern.replace("*", ".*")})' for pattern in IGNORE_PATTERNS)
command = [
"black",
"--line-length", "200",
"--extend-exclude", exclude_patterns,
target
]
subprocess.run(command, check=True)

def format_files(target):
if os.path.isfile(target):
files = [target] if not should_ignore(target) else []
elif os.path.isdir(target):
files = []
for root, _, filenames in os.walk(target):
for filename in filenames:
if filename.endswith('.py'):
file_path = os.path.join(root, filename)
if not should_ignore(file_path):
files.append(file_path)
else:
print(f"Error: {target} is not a valid file or directory")
return
def run_black(target):
# Convert ignore patterns to Black's --extend-exclude format
exclude_patterns = '|'.join(f'({pattern.replace("*", ".*")})' for pattern in IGNORE_PATTERNS)
command = ["black", "--line-length", "200", "--extend-exclude", exclude_patterns, target]
subprocess.run(command, check=True)

# Preserve debug lines
for file in files:
process_file(file, preserve_debug_lines)

# Run Black
run_black(target)
def format_files(target):
if os.path.isfile(target):
files = [target] if not should_ignore(target) else []
elif os.path.isdir(target):
files = []
for root, _, filenames in os.walk(target):
for filename in filenames:
if filename.endswith('.py'):
file_path = os.path.join(root, filename)
if not should_ignore(file_path):
files.append(file_path)
else:
print(f"Error: {target} is not a valid file or directory")
return

# Preserve debug lines
for file in files:
process_file(file, preserve_debug_lines)

# Run Black
run_black(target)

# Adjust indentation and restore debug lines
for file in files:
process_file(file, adjust_indentation)
process_file(file, restore_debug_lines)

# Adjust indentation and restore debug lines
for file in files:
process_file(file, adjust_indentation)
process_file(file, restore_debug_lines)

def main():
if len(sys.argv) < 2:
print("Usage: python format.py <directory_or_file>")
sys.exit(1)
if len(sys.argv) < 2:
print("Usage: python format.py <directory_or_file>")
sys.exit(1)

target = sys.argv[1]
format_files(target)
print("Formatting completed.")

target = sys.argv[1]
format_files(target)
print("Formatting completed.")

if __name__ == "__main__":
main()
main()

0 comments on commit cb217b7

Please sign in to comment.