Esempio n. 1
0
    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
Esempio n. 2
0
    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")
Esempio n. 3
0
    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")
Esempio n. 4
0
    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")
Esempio n. 5
0
    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")
Esempio n. 6
0
    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")
Esempio n. 7
0
    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")
Esempio n. 8
0
    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!")
Esempio n. 9
0
    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")
Esempio n. 10
0
 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!")
Esempio n. 11
0
    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")
Esempio n. 12
0
    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")
Esempio n. 13
0
    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")
Esempio n. 14
0
    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")
Esempio n. 15
0
    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")
Esempio n. 16
0
    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")
Esempio n. 17
0
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
Esempio n. 18
0
 def test_italics_without_reset(self):
     message = ircstyle.style("Hello, world!", italics=True, reset=False)
     self.assertEqual(message, "\x1DHello, world!")
Esempio n. 19
0
    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")
Esempio n. 20
0
    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")
Esempio n. 21
0
 def test_italics_with_reset(self):
     message = ircstyle.style("Hello, world!", italics=True)
     self.assertEqual(message, "\x1DHello, world!\x0F")
Esempio n. 22
0
    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")
Esempio n. 23
0
 def test_underline_with_reset(self):
     message = ircstyle.style("Hello, world!", underline=True)
     self.assertEqual(message, "\x1FHello, world!\x0F")
Esempio n. 24
0
 def test_bold_with_reset(self):
     message = ircstyle.style("Hello, world!", bold=True)
     self.assertEqual(message, "\x02Hello, world!\x0F")
Esempio n. 25
0
 def test_underline_without_reset(self):
     message = ircstyle.style("Hello, world!", underline=True, reset=False)
     self.assertEqual(message, "\x1FHello, world!")
Esempio n. 26
0

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},
    },
}
Esempio n. 27
0
 def test_bold_without_reset(self):
     message = ircstyle.style("Hello, world!", bold=True, reset=False)
     self.assertEqual(message, "\x02Hello, world!")