def _search_inner(self, query: str) -> str: log.debug(f"Searching {self.name} for {query!r}.") styled_name = ircstyle.style(self.name, italics=True, reset=True) response = self._search(query) df = response["results"] if df is None: # Note: Explicit check prevents: ValueError: The truth value of a DataFrame is ambiguous styled_query = ircstyle.style(query, italics=True, reset=True) response_ = f"0 {styled_name} search results for {styled_query}. For help, see {self._syntax_help}" return response_ markdown_df = df.copy() markdown_df.insert(0, "date_utc", markdown_df["datetime"].dt.date) markdown_df["title"] = "[" + markdown_df["title"].str.replace( "|", r"\|") + "](" + markdown_df["long_url"] + ")" markdown_df.drop(columns=["datetime", "long_url", "short_url"], inplace=True) truncation_indicator = "max" if response["truncated"] else "all" gist = self._github_user.create_gist( public=False, files={ "results.md": github.InputFileContent( markdown_df.to_markdown(index=False, tablefmt="github")), "results.csv": github.InputFileContent(df.to_csv(index=False)), }, description= f"{query}: {truncation_indicator} {len(df)} search results from {self.name}", ) styled_query = ircstyle.style(query, italics=True, reset=False) response = f"{truncation_indicator.capitalize()} {len(df)} search results → {gist.html_url}#file-results-md (from {styled_name} for {styled_query})" return response
def test_fg_and_bg(self): message = ircstyle.style("Hello, world!", fg="yellow", bg="blue") self.assertEqual(message, "\x0308,02Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.yellow, bg=ircstyle.colors.blue) self.assertEqual(message, "\x0308,02Hello, world!\x0F")
def test_fg_teal(self): message = ircstyle.style("Hello, world!", fg="teal") self.assertEqual(message, "\x0310Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.teal) self.assertEqual(message, "\x0310Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.cyan) self.assertEqual(message, "\x0310Hello, world!\x0F")
def test_fg_royal(self): message = ircstyle.style("Hello, world!", fg="royal") self.assertEqual(message, "\x0312Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.royal) self.assertEqual(message, "\x0312Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.light_blue) self.assertEqual(message, "\x0312Hello, world!\x0F")
def test_fg_lime(self): message = ircstyle.style("Hello, world!", fg="lime") self.assertEqual(message, "\x0309Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.lime) self.assertEqual(message, "\x0309Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.light_green) self.assertEqual(message, "\x0309Hello, world!\x0F")
def test_fg_silver(self): message = ircstyle.style("Hello, world!", fg="silver") self.assertEqual(message, "\x0315Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.silver) self.assertEqual(message, "\x0315Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.light_grey) self.assertEqual(message, "\x0315Hello, world!\x0F")
def test_fg_aqua(self): message = ircstyle.style("Hello, world!", fg="aqua") self.assertEqual(message, "\x0311Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.aqua) self.assertEqual(message, "\x0311Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.light_cyan) self.assertEqual(message, "\x0311Hello, world!\x0F")
def test_fg_and_bg_no_reset(self): message = ircstyle.style("Hello, world!", fg="yellow", bg="blue", reset=False) self.assertEqual(message, "\x0308,02Hello, world!") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.yellow, bg=ircstyle.colors.blue, reset=False) self.assertEqual(message, "\x0308,02Hello, world!")
def test_fg_and_bg_with_attributes(self): message = ircstyle.style("Hello, world!", fg="yellow", bg="blue", bold=True, underline=True) self.assertEqual(message, "\x0308,02\x02\x1fHello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.yellow, bg=ircstyle.colors.blue, bold=True, underline=True) self.assertEqual(message, "\x0308,02\x02\x1fHello, world!\x0F")
def test_complex_attributes_without_reset(self): message = ircstyle.style("Hello, world!", bold=True, italics=True, underline=True, reset=False) self.assertEqual(message, "\x02\x1d\x1fHello, world!")
def test_fg_red(self): message = ircstyle.style("Hello, world!", fg="red") self.assertEqual(message, "\x0304Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.red) self.assertEqual(message, "\x0304Hello, world!\x0F")
def test_fg_green(self): message = ircstyle.style("Hello, world!", fg="green") self.assertEqual(message, "\x0303Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.green) self.assertEqual(message, "\x0303Hello, world!\x0F")
def test_fg_blue(self): message = ircstyle.style("Hello, world!", fg="blue") self.assertEqual(message, "\x0302Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.blue) self.assertEqual(message, "\x0302Hello, world!\x0F")
def test_fg_white(self): message = ircstyle.style("Hello, world!", fg="white") self.assertEqual(message, "\x0300Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.white) self.assertEqual(message, "\x0300Hello, world!\x0F")
def test_fg_pink(self): message = ircstyle.style("Hello, world!", fg="pink") self.assertEqual(message, "\x0313Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.pink) self.assertEqual(message, "\x0313Hello, world!\x0F")
def test_fg_purple(self): message = ircstyle.style("Hello, world!", fg="purple") self.assertEqual(message, "\x0306Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.purple) self.assertEqual(message, "\x0306Hello, world!\x0F")
def _ircstyle_style(text: str, **style_config: Union[bool, str]) -> str: """Style the given text with the given options using `ircstyle`.""" return ircstyle.style(text, **style_config, reset=True) if ( style_config and any(style_config.values())) else text
def test_italics_without_reset(self): message = ircstyle.style("Hello, world!", italics=True, reset=False) self.assertEqual(message, "\x1DHello, world!")
def test_fg_orange(self): message = ircstyle.style("Hello, world!", fg="orange") self.assertEqual(message, "\x0307Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.orange) self.assertEqual(message, "\x0307Hello, world!\x0F")
def test_fg_yellow(self): message = ircstyle.style("Hello, world!", fg="yellow") self.assertEqual(message, "\x0308Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.yellow) self.assertEqual(message, "\x0308Hello, world!\x0F")
def test_italics_with_reset(self): message = ircstyle.style("Hello, world!", italics=True) self.assertEqual(message, "\x1DHello, world!\x0F")
def test_fg_brown(self): message = ircstyle.style("Hello, world!", fg="brown") self.assertEqual(message, "\x0305Hello, world!\x0F") message = ircstyle.style("Hello, world!", fg=ircstyle.colors.brown) self.assertEqual(message, "\x0305Hello, world!\x0F")
def test_underline_with_reset(self): message = ircstyle.style("Hello, world!", underline=True) self.assertEqual(message, "\x1FHello, world!\x0F")
def test_bold_with_reset(self): message = ircstyle.style("Hello, world!", bold=True) self.assertEqual(message, "\x02Hello, world!\x0F")
def test_underline_without_reset(self): message = ircstyle.style("Hello, world!", underline=True, reset=False) self.assertEqual(message, "\x1FHello, world!")
def configure_logging() -> None: """Configure logging.""" logging.config.dictConfig(LOGGING) log = logging.getLogger(__name__) log.debug("Logging is configured.") INSTANCE: Dict = {} # Set from YAML config file. PACKAGE_NAME = Path(__file__).parent.stem runtime = types.SimpleNamespace() # Set at runtime. # pylint: disable=invalid-name ALERTS_CHANNEL_FORMAT_DEFAULT = "##{nick}-alerts" MAX_WORKERS_PER_CHANNEL = 3 TITLE_PREFIX = ircstyle.style("Рци", fg="green", reset=True) TITLE_TIMEOUT = 60 LOGGING = { # Ref: https://docs.python.org/3/howto/logging.html#configuring-logging "version": 1, "formatters": { "detailed": {"format": "%(asctime)s %(levelname)s %(threadName)s:%(name)s:%(lineno)d:%(funcName)s: %(message)s"}, # Note: Use %(thread)x- if needed for thread ID. }, "handlers": {"console": {"class": "logging.StreamHandler", "level": "DEBUG", "formatter": "detailed", "stream": "ext://sys.stdout"}}, "loggers": { "__main__": {"level": "INFO", "handlers": ["console"], "propagate": False}, PACKAGE_NAME: {"level": "INFO", "handlers": ["console"], "propagate": False}, "": {"level": "CRITICAL", "handlers": ["console"]}, # "urltitle": {"level": "INFO", "handlers": ["console"], "propagate": False}, }, }
def test_bold_without_reset(self): message = ircstyle.style("Hello, world!", bold=True, reset=False) self.assertEqual(message, "\x02Hello, world!")