#!/usr/bin/env python3
# fmt: on
# Some license here.
#
# Has many lines. Many, many lines.
# Many, many, many lines.
"""Module docstring.

Possibly also many, many lines.
"""

import os.path
import sys

import a
from b.c import X  # some noqa comment

try:
    import fast
except ImportError:
    import slow as fast


# Some comment before a function.
y = 1
(
    # some strings
    y  # type: ignore
)


def function(default=None):
    """Docstring comes first.

    Possibly many lines.
    """
    # FIXME: Some comment about why this function is crap but still in production.
    import inner_imports

    if inner_imports.are_evil():
        # Explains why we have this if.
        # In great detail indeed.
        x = X()
        return x.method1()  # type: ignore

    # This return is also commented for some reason.
    return default


# Explains why we use global state.
GLOBAL_STATE = {"a": a(1), "b": a(2), "c": a(3)}


# Another comment!
# This time two lines.


class Foo:
    """Docstring for class Foo.  Example from Sphinx docs."""

    #: Doc comment for class attribute Foo.bar.
    #: It can have multiple lines.
    bar = 1

    flox = 1.5  #: Doc comment for Foo.flox. One line only.

    baz = 2
    """Docstring for class attribute Foo.baz."""

    def __init__(self):
        #: Doc comment for instance attribute qux.
        self.qux = 3

        self.spam = 4
        """Docstring for instance attribute spam."""


#' <h1>This is pweave!</h1>


@fast(really=True)
async def wat():
    # This comment, for some reason \
    # contains a trailing backslash.
    async with X.open_async() as x:  # Some more comments
        result = await x.method1()
    # Comment after ending a block.
    if result:
        print("A OK", file=sys.stdout)
        # Comment between things.
        print()


# Some closing comments.
# Maybe Vim or Emacs directives for formatting.
# Who knows.