mirror of
https://github.com/aykhans/AzSuicideDataVisualization.git
synced 2025-04-22 02:23:48 +00:00
135 lines
3.8 KiB
Python
135 lines
3.8 KiB
Python
import toml
|
|
from typing import Dict
|
|
|
|
import click
|
|
|
|
from streamlit.config_option import ConfigOption
|
|
|
|
|
|
def server_option_changed(
|
|
old_options: Dict[str, ConfigOption], new_options: Dict[str, ConfigOption]
|
|
) -> bool:
|
|
"""Return True if and only if an option in the server section differs
|
|
between old_options and new_options."""
|
|
for opt_name in old_options.keys():
|
|
if not opt_name.startswith("server"):
|
|
continue
|
|
|
|
old_val = old_options[opt_name].value
|
|
new_val = new_options[opt_name].value
|
|
if old_val != new_val:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def show_config(
|
|
section_descriptions: Dict[str, str],
|
|
config_options: Dict[str, ConfigOption],
|
|
) -> None:
|
|
"""Print the given config sections/options to the terminal."""
|
|
SKIP_SECTIONS = {"_test", "ui"}
|
|
|
|
out = []
|
|
out.append(
|
|
_clean(
|
|
"""
|
|
# Below are all the sections and options you can have in
|
|
~/.streamlit/config.toml.
|
|
"""
|
|
)
|
|
)
|
|
|
|
def append_desc(text):
|
|
out.append(click.style(text, bold=True))
|
|
|
|
def append_comment(text):
|
|
out.append(click.style(text))
|
|
|
|
def append_section(text):
|
|
out.append(click.style(text, bold=True, fg="green"))
|
|
|
|
def append_setting(text):
|
|
out.append(click.style(text, fg="green"))
|
|
|
|
def append_newline():
|
|
out.append("")
|
|
|
|
for section, section_description in section_descriptions.items():
|
|
if section in SKIP_SECTIONS:
|
|
continue
|
|
|
|
append_newline()
|
|
append_section("[%s]" % section)
|
|
append_newline()
|
|
|
|
for key, option in config_options.items():
|
|
if option.section != section:
|
|
continue
|
|
|
|
if option.visibility == "hidden":
|
|
continue
|
|
|
|
if option.is_expired():
|
|
continue
|
|
|
|
key = option.key.split(".")[1]
|
|
description_paragraphs = _clean_paragraphs(option.description)
|
|
|
|
for i, txt in enumerate(description_paragraphs):
|
|
if i == 0:
|
|
append_desc("# %s" % txt)
|
|
else:
|
|
append_comment("# %s" % txt)
|
|
|
|
toml_default = toml.dumps({"default": option.default_val})
|
|
toml_default = toml_default[10:].strip()
|
|
|
|
if len(toml_default) > 0:
|
|
append_comment("# Default: %s" % toml_default)
|
|
else:
|
|
# Don't say "Default: (unset)" here because this branch applies
|
|
# to complex config settings too.
|
|
pass
|
|
|
|
if option.deprecated:
|
|
append_comment("#")
|
|
append_comment("# " + click.style("DEPRECATED.", fg="yellow"))
|
|
append_comment(
|
|
"# %s" % "\n".join(_clean_paragraphs(option.deprecation_text))
|
|
)
|
|
append_comment(
|
|
"# This option will be removed on or after %s."
|
|
% option.expiration_date
|
|
)
|
|
append_comment("#")
|
|
|
|
option_is_manually_set = (
|
|
option.where_defined != ConfigOption.DEFAULT_DEFINITION
|
|
)
|
|
|
|
if option_is_manually_set:
|
|
append_comment("# The value below was set in %s" % option.where_defined)
|
|
|
|
toml_setting = toml.dumps({key: option.value})
|
|
|
|
if len(toml_setting) == 0:
|
|
toml_setting = f"# {key} =\n"
|
|
elif not option_is_manually_set:
|
|
toml_setting = f"# {toml_setting}"
|
|
|
|
append_setting(toml_setting)
|
|
|
|
click.echo("\n".join(out))
|
|
|
|
|
|
def _clean(txt):
|
|
"""Replace all whitespace with a single space."""
|
|
return " ".join(txt.split()).strip()
|
|
|
|
|
|
def _clean_paragraphs(txt):
|
|
paragraphs = txt.split("\n\n")
|
|
cleaned_paragraphs = [_clean(x) for x in paragraphs]
|
|
return cleaned_paragraphs
|