This commit is contained in:
67
convert_spans.py
Normal file
67
convert_spans.py
Normal file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python3
|
||||
"""views.py의 span 패턴을 새로운 방식으로 변환"""
|
||||
import re
|
||||
|
||||
with open('users/views.py', 'r') as f:
|
||||
content = f.read()
|
||||
|
||||
# 1. set_span_attributes(span, request, ...) -> enrich_span(request, ...)
|
||||
content = re.sub(
|
||||
r'set_span_attributes\(span, request, request\.user\)',
|
||||
'enrich_span(request, request.user)',
|
||||
content
|
||||
)
|
||||
content = re.sub(
|
||||
r'set_span_attributes\(span, request\)',
|
||||
'enrich_span(request)',
|
||||
content
|
||||
)
|
||||
|
||||
# 2. span.add_event(...) -> span_event(...)
|
||||
content = re.sub(
|
||||
r'span\.add_event\(',
|
||||
'span_event(',
|
||||
content
|
||||
)
|
||||
|
||||
# 3. span.set_attribute(...) -> span_set_attribute(...)
|
||||
content = re.sub(
|
||||
r'span\.set_attribute\(',
|
||||
'span_set_attribute(',
|
||||
content
|
||||
)
|
||||
|
||||
# 4. with tracer.start_as_current_span("...") as span: 패턴 변환
|
||||
# 여러 줄에 걸친 패턴도 처리
|
||||
def replace_span_block(match):
|
||||
indent = match.group(1)
|
||||
span_name = match.group(2)
|
||||
# operation 이름 추출 (공백, 따옴표 제거)
|
||||
op_name = span_name.strip().strip('"\'')
|
||||
# 짧은 이름으로 변환
|
||||
op_name = op_name.replace(" POST", ".post").replace(" GET", ".get")
|
||||
op_name = op_name.replace(" PUT", ".put").replace(" PATCH", ".patch")
|
||||
op_name = op_name.replace(" DELETE", ".delete")
|
||||
op_name = op_name.replace("View", "").lower()
|
||||
return f'{indent}enrich_span(request, operation="{op_name}")'
|
||||
|
||||
# 단일 줄 패턴
|
||||
content = re.sub(
|
||||
r'^(\s*)with tracer\.start_as_current_span\(([^)]+)\) as span:\s*(?:#.*)?$',
|
||||
replace_span_block,
|
||||
content,
|
||||
flags=re.MULTILINE
|
||||
)
|
||||
|
||||
# 여러 줄에 걸친 패턴 (줄바꿈 포함)
|
||||
content = re.sub(
|
||||
r'^(\s*)with tracer\.start_as_current_span\(\s*\n\s*([^)]+)\s*\) as span:\s*(?:#.*)?$',
|
||||
replace_span_block,
|
||||
content,
|
||||
flags=re.MULTILINE
|
||||
)
|
||||
|
||||
with open('users/views.py', 'w') as f:
|
||||
f.write(content)
|
||||
|
||||
print("변환 완료")
|
||||
Reference in New Issue
Block a user