def labels(**kwargs) -> str:
pairs = [f'{k}="{v}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''
If a hostname contains ", the metrics become invalid. Fix:
def labels(**kwargs) -> str:
def escape(value):
return str(value).replace('\', '\\').replace('"', '\"').replace('\n', '\n')
pairs = [f'{k}="{escape(v)}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''
Lines 1991-1995 don't escape label values:
def labels(**kwargs) -> str:
pairs = [f'{k}="{v}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''
If a hostname contains ", the metrics become invalid. Fix:
def labels(**kwargs) -> str:
def escape(value):
return str(value).replace('\\', '\\\\').replace('"', '\\"').replace('\n', '\\n')
pairs = [f'{k}="{escape(v)}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Lines 1991-1995 don't escape label values:
def labels(**kwargs) -> str:
pairs = [f'{k}="{v}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''
If a hostname contains ", the metrics become invalid. Fix:
def labels(**kwargs) -> str:
def escape(value):
return str(value).replace('\', '\\').replace('"', '\"').replace('\n', '\n')
pairs = [f'{k}="{escape(v)}"' for k, v in kwargs.items() if v is not None]
return '{' + ','.join(pairs) + '}' if pairs else ''