]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
manager: get rid of old linters and clean-up some warnings docs-develop-mana-s0qkcd/deployments/3273
authorOto Šťáva <oto.stava@nic.cz>
Mon, 5 Feb 2024 16:38:18 +0000 (17:38 +0100)
committerOto Šťáva <oto.stava@nic.cz>
Thu, 15 Feb 2024 12:41:39 +0000 (13:41 +0100)
Removes references to pyright, which is not in use anymore. Also removes
warning suppressions and instead properly resolves the warnings.

50 files changed:
manager/knot_resolver_manager/cli/command.py
manager/knot_resolver_manager/compat/asyncio.py
manager/knot_resolver_manager/datamodel/config_schema.py
manager/knot_resolver_manager/datamodel/types/types.py
manager/knot_resolver_manager/kresd_controller/supervisord/config_file.py
manager/knot_resolver_manager/server.py
manager/knot_resolver_manager/utils/__init__.py
manager/knot_resolver_manager/utils/modeling/base_schema.py
manager/knot_resolver_manager/utils/modeling/json_pointer.py
manager/knot_resolver_manager/utils/modeling/parsing.py
manager/pyproject.toml
manager/typings/READMEmd [deleted file]
manager/typings/pytest/__init__.pyi [deleted file]
manager/typings/pytest/__main__.pyi [deleted file]
manager/typings/supervisor/__init__.pyi [deleted file]
manager/typings/supervisor/childutils.pyi [deleted file]
manager/typings/supervisor/compat.pyi [deleted file]
manager/typings/supervisor/confecho.pyi [deleted file]
manager/typings/supervisor/datatypes.pyi [deleted file]
manager/typings/supervisor/dispatchers.pyi [deleted file]
manager/typings/supervisor/events.pyi [deleted file]
manager/typings/supervisor/http.pyi [deleted file]
manager/typings/supervisor/http_client.pyi [deleted file]
manager/typings/supervisor/loggers.pyi [deleted file]
manager/typings/supervisor/medusa/__init__.pyi [deleted file]
manager/typings/supervisor/medusa/asynchat_25.pyi [deleted file]
manager/typings/supervisor/medusa/asyncore_25.pyi [deleted file]
manager/typings/supervisor/medusa/auth_handler.pyi [deleted file]
manager/typings/supervisor/medusa/counter.pyi [deleted file]
manager/typings/supervisor/medusa/default_handler.pyi [deleted file]
manager/typings/supervisor/medusa/filesys.pyi [deleted file]
manager/typings/supervisor/medusa/http_date.pyi [deleted file]
manager/typings/supervisor/medusa/http_server.pyi [deleted file]
manager/typings/supervisor/medusa/logger.pyi [deleted file]
manager/typings/supervisor/medusa/producers.pyi [deleted file]
manager/typings/supervisor/medusa/util.pyi [deleted file]
manager/typings/supervisor/medusa/xmlrpc_handler.pyi [deleted file]
manager/typings/supervisor/options.pyi [deleted file]
manager/typings/supervisor/pidproxy.pyi [deleted file]
manager/typings/supervisor/poller.pyi [deleted file]
manager/typings/supervisor/process.pyi [deleted file]
manager/typings/supervisor/rpcinterface.pyi [deleted file]
manager/typings/supervisor/socket_manager.pyi [deleted file]
manager/typings/supervisor/states.pyi [deleted file]
manager/typings/supervisor/supervisorctl.pyi [deleted file]
manager/typings/supervisor/supervisord.pyi [deleted file]
manager/typings/supervisor/templating.pyi [deleted file]
manager/typings/supervisor/tests/__init__.pyi [deleted file]
manager/typings/supervisor/web.pyi [deleted file]
manager/typings/supervisor/xmlrpc.pyi [deleted file]

index f8917417594336bcd2127b20174d3042b62912e4..ba490e47e8cf84642924d569bfaa2d17da324a18 100644 (file)
@@ -58,7 +58,7 @@ def get_socket_from_config(config: Path, optional_file: bool) -> Optional[Socket
                 )
         return None
     except ValueError as e:
-        raise DataValidationError(*e.args)
+        raise DataValidationError(*e.args) from e
     except OSError as e:
         if not optional_file:
             raise e
index 9362db3fd594ce55e167ab754f3f33a7fab17fe6..d98f06c1643f0d51410bd25907c55134aa54fbd7 100644 (file)
@@ -2,15 +2,6 @@
 #
 # pylint: disable=no-member
 
-# We disable pyright checks because it can't find method that don't exist in this Python version
-# so the reported error is correct, but due to the version checking conditions, it never happens.
-# Due to backporting, we are also using private methods and non-existent members of classes
-#
-# pyright: reportUnknownMemberType=false
-# pyright: reportUnknownVariableType=false
-# pyright: reportGeneralTypeIssues=false
-# pyright: reportPrivateUsage=false
-
 import asyncio
 import functools
 import logging
index 3383ad3aa7553d77fd6640242d139624285d59cc..8aa99446c482b57dd283dbecc7c01d601ced3423 100644 (file)
@@ -159,7 +159,7 @@ class KresConfig(ConfigSchema):
         # FIXME the `cwd` argument is used only for configuring control socket path
         # it should be removed and relative path used instead as soon as issue
         # https://gitlab.nic.cz/knot/knot-resolver/-/issues/720 is fixed
-        return MAIN_TEMPLATE.render(cfg=self, cwd=os.getcwd())  # pyright: reportUnknownMemberType=false
+        return MAIN_TEMPLATE.render(cfg=self, cwd=os.getcwd())
 
 
 def get_rundir_without_validation(data: Dict[str, Any]) -> Dir:
index 19bc75bb20b382db56574f386962e8e3b9fa1da0..505b0be76a313f7b2057203659579b2b916dba0c 100644 (file)
@@ -147,11 +147,11 @@ class DomainName(StrBase):
         super().__init__(source_value, object_path)
         try:
             punycode = self._value.encode("idna").decode("utf-8") if self._value != "." else "."
-        except ValueError:
+        except ValueError as e:
             raise ValueError(
                 f"conversion of '{self._value}' to IDN punycode representation failed",
                 object_path,
-            )
+            ) from e
 
         if type(self)._re.match(punycode):
             self._punycode = punycode
index 08450739bb7d6750b85105ac3405ac0d3cf0c170..fab0a1430039bfa6c14563cf2d73f9c63a65c731 100644 (file)
@@ -32,7 +32,7 @@ class SupervisordKresID(KresID):
 
     @staticmethod
     def from_string(val: str) -> "SupervisordKresID":
-        if val == "cache-gc" or val == "cache-gc:cache-gc":
+        if val in ("cache-gc", "cache-gc:cache-gc"):
             # the double name is checked because thats how we read it from supervisord
             return SupervisordKresID.new(SubprocessType.GC, 0)
         else:
@@ -170,7 +170,7 @@ async def write_config_file(config: KresConfig) -> None:
     template = await read_resource(__package__, "supervisord.conf.j2")
     assert template is not None
     template = template.decode("utf8")
-    config_string = Template(template).render(  # pyright: reportUnknownMemberType=false
+    config_string = Template(template).render(
         gc=ProcessTypeConfig.create_gc_config(config),
         kresd=ProcessTypeConfig.create_kresd_config(config),
         manager=ProcessTypeConfig.create_manager_config(config),
index 6834e70fb830d441a90b39b45115f7082c38ac4c..a6fc408d0ea83071402f28f62ceb6e6a7338234f 100644 (file)
@@ -432,7 +432,7 @@ def _set_working_directory(config_raw: Dict[str, Any]) -> None:
     try:
         rundir = get_rundir_without_validation(config_raw)
     except ValueError as e:
-        raise DataValidationError(str(e), "/rundir")
+        raise DataValidationError(str(e), "/rundir") from e
 
     logger.debug(f"Changing working directory to '{rundir.to_path().absolute()}'.")
     os.chdir(rundir.to_path())
@@ -457,12 +457,12 @@ def _lock_working_directory(attempt: int = 0) -> None:
             raise KresManagerException(
                 "Another manager is running in the same working directory."
                 f" PID file is located at {os.getcwd()}/{PID_FILE_NAME}"
-            )
+            ) from e
         else:
             raise KresManagerException(
                 "Another manager is running in the same working directory."
                 f" PID file is located at {os.getcwd()}/{PID_FILE_NAME}"
-            )
+            ) from e
 
     # now we know that we are the only manager running in this directory
 
index 062b740dc69f346420f46b116d216bbf0c952df9..edc36fcad38122bc49adbf3b7870d819d024aced 100644 (file)
@@ -22,10 +22,10 @@ def ignore_exceptions_optional(
             try:
                 return func(*nargs, **nkwargs)
             except BaseException as e:
-                if isinstance(e, exceptions):  # pyright: reportUnnecessaryIsInstance=false
+                if isinstance(e, exceptions):
                     return default
                 else:
-                    raise e  # pyright: reportGeneralTypeIssues=false
+                    raise e
 
         return f
 
index 06a6cc22b3542d512fa775e64f2963c9774817b9..78fe187af323bedf0d6cd27792393642d15a194d 100644 (file)
@@ -521,7 +521,7 @@ class ObjectMapper:
         try:
             default = self._create_default(getattr(cls, name, None))
         except ValueError as e:
-            raise DataValidationError(str(e), f"{object_path}/{name}")
+            raise DataValidationError(str(e), f"{object_path}/{name}") from e
 
         value = self.map_object(python_type, default, object_path=f"{object_path}/{name}")
         setattr(obj, name, value)
index adbfa36d811d554ac5871d52052fcbf7c6cb0b53..6d7c9e3970ae44fd216ba5bfc62f2b3151af31df 100644 (file)
@@ -69,10 +69,10 @@ class _JSONPtr:
                         try:
                             token = int(token)
                             current = current[token]
-                        except ValueError:
+                        except ValueError as e:
                             raise ValueError(
                                 f"invalid JSON pointer: list '{current_ptr}' require numbers as keys, instead got '{token}'"
-                            )
+                            ) from e
 
                 elif isinstance(current, dict):
                     current = current.get(token, None)
index aaac6807795dc67ffd5f687702bd7310bad04515..185a53a134ea2481d5abbe301da40e878f4970d4 100644 (file)
@@ -39,7 +39,7 @@ class _RaiseDuplicatesLoader(yaml.SafeLoader):
                     node.start_mark,
                     f"found unacceptable key ({exc})",
                     key_node.start_mark,
-                )
+                ) from exc
 
             # check for duplicate keys
             if key in mapping:
@@ -92,4 +92,8 @@ def try_to_parse(data: str) -> Any:
         try:
             return parse_yaml(data)
         except yaml.YAMLError as ye:
-            raise DataParsingError(f"failed to parse data, JSON: {je}, YAML: {ye}")
+            # We do not raise-from here because there are two possible causes
+            # and we may not know which one is the actual one.
+            raise DataParsingError(  # pylint: disable=raise-missing-from
+                f"failed to parse data, JSON: {je}, YAML: {ye}"
+            )
index 4d220a7bd2c9c97799fa03ea71d06cf18dbf6533..b5445f2669ca5f020747ef9cb11fe78feaf8b5ac 100644 (file)
@@ -129,22 +129,16 @@ disable= [
     "missing-docstring",
     "no-else-return",
     "no-self-use",
-    "raise-missing-from",
     "too-few-public-methods",
     "unused-import",  # checked by flake8,
-    "bad-continuation", # conflicts with black
-    "consider-using-in", # pyright can't see through in expressions,
     "too-many-return-statements", # would prevent us from using recursive tree traversals
     "logging-fstring-interpolation", # see https://github.com/PyCQA/pylint/issues/1788
     "no-else-raise", # not helpful for readability, when we want explicit branches
     "raising-bad-type", # handled by type checker
     "too-many-arguments",  # sure, but how can we change the signatures to take less arguments? artificially create objects with arguments? That's stupid...
-    "no-member",  # checked by pyright
-    "import-error", # checked by pyright (and pylint does not do it properly)
-    "unsupported-delete-operation", # checked by pyright
-    "unsubscriptable-object", # checked by pyright
-    "unsupported-membership-test", # checked by pyright
     "invalid-overridden-method",  # hopefully checked by type checkers
+    "no-member",  # pylint does not do it properly
+    "import-error", # pylint does not do it properly
 ]
 
 [tool.pylint.SIMILARITIES]
@@ -156,14 +150,6 @@ ignore-imports = "yes"
 [tool.pylint.DESIGN]
 max-parents = "10"
 
-[tool.pyright]
-include = [
-    "knot_resolver_manager",
-    "tests"
-]
-exclude = []
-typeCheckingMode = "strict"
-
 [tool.mypy]
 python_version = "3.7"
 # strict = true
diff --git a/manager/typings/READMEmd b/manager/typings/READMEmd
deleted file mode 100644 (file)
index 2e2c88b..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Type stubs
-
-See (pyright documentation)[https://github.com/microsoft/pyright/blob/master/docs/type-stubs.md]
-
-Generate stubs using this command (replacing `jinja2` for an appropriate package):
-```
-poetry run yarn pyright --createstub jinja2
-```
\ No newline at end of file
diff --git a/manager/typings/pytest/__init__.pyi b/manager/typings/pytest/__init__.pyi
deleted file mode 100644 (file)
index 1a485dd..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-from _pytest import __version__
-from _pytest.assertion import register_assert_rewrite
-from _pytest.compat import _setup_collect_fakemodule
-from _pytest.config import ExitCode, UsageError, cmdline, hookimpl, hookspec, main
-from _pytest.debugging import pytestPDB as __pytestPDB
-from _pytest.fixtures import fillfixtures as _fillfuncargs
-from _pytest.fixtures import fixture, yield_fixture
-from _pytest.freeze_support import freeze_includes
-from _pytest.main import Session
-from _pytest.mark import MARK_GEN as mark
-from _pytest.mark import param
-from _pytest.nodes import Collector, File, Item
-from _pytest.outcomes import exit, fail, importorskip, skip, xfail
-from _pytest.python import Class, Function, Instance, Module, Package
-from _pytest.python_api import approx, raises
-from _pytest.recwarn import deprecated_call, warns
-from _pytest.warning_types import (
-    PytestAssertRewriteWarning,
-    PytestCacheWarning,
-    PytestCollectionWarning,
-    PytestConfigWarning,
-    PytestDeprecationWarning,
-    PytestExperimentalApiWarning,
-    PytestUnhandledCoroutineWarning,
-    PytestUnknownMarkWarning,
-    PytestWarning,
-)
-
-"""
-pytest: unit and functional testing with Python.
-"""
-set_trace = ...
diff --git a/manager/typings/pytest/__main__.pyi b/manager/typings/pytest/__main__.pyi
deleted file mode 100644 (file)
index de3c14c..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-"""
-pytest entry point
-"""
-if __name__ == "__main__":
-    ...
diff --git a/manager/typings/supervisor/__init__.pyi b/manager/typings/supervisor/__init__.pyi
deleted file mode 100644 (file)
index cea7ef9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
diff --git a/manager/typings/supervisor/childutils.pyi b/manager/typings/supervisor/childutils.pyi
deleted file mode 100644 (file)
index 7845a5a..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-def getRPCTransport(env): # -> SupervisorTransport:
-    ...
-
-def getRPCInterface(env):
-    ...
-
-def get_headers(line): # -> dict[Unknown, Unknown]:
-    ...
-
-def eventdata(payload): # -> tuple[dict[Unknown, Unknown], Unknown]:
-    ...
-
-def get_asctime(now=...): # -> str:
-    ...
-
-class ProcessCommunicationsProtocol:
-    def send(self, msg, fp=...): # -> None:
-        ...
-    
-    def stdout(self, msg): # -> None:
-        ...
-    
-    def stderr(self, msg): # -> None:
-        ...
-    
-
-
-pcomm = ...
-class EventListenerProtocol:
-    def wait(self, stdin=..., stdout=...): # -> tuple[dict[Unknown, Unknown], Unknown]:
-        ...
-    
-    def ready(self, stdout=...): # -> None:
-        ...
-    
-    def ok(self, stdout=...): # -> None:
-        ...
-    
-    def fail(self, stdout=...): # -> None:
-        ...
-    
-    def send(self, data, stdout=...): # -> None:
-        ...
-    
-
-
-listener = ...
diff --git a/manager/typings/supervisor/compat.pyi b/manager/typings/supervisor/compat.pyi
deleted file mode 100644 (file)
index 72fc9a4..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-PY2 = ...
-if PY2:
-    long = ...
-    raw_input = ...
-    unicode = ...
-    unichr = ...
-    basestring = ...
-    def as_bytes(s, encoding=...): # -> str:
-        ...
-    
-    def as_string(s, encoding=...): # -> unicode:
-        ...
-    
-    def is_text_stream(stream): # -> bool:
-        ...
-    
-else:
-    long = ...
-    basestring = ...
-    raw_input = ...
-    unichr = ...
-    class unicode(str):
-        def __init__(self, string, encoding, errors) -> None:
-            ...
-        
-    
-    
-    def as_bytes(s, encoding=...): # -> bytes:
-        ...
-    
-    def as_string(s, encoding=...): # -> str:
-        ...
-    
-    def is_text_stream(stream): # -> bool:
-        ...
diff --git a/manager/typings/supervisor/confecho.pyi b/manager/typings/supervisor/confecho.pyi
deleted file mode 100644 (file)
index 9cd6e68..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-def main(out=...): # -> None:
-    ...
diff --git a/manager/typings/supervisor/datatypes.pyi b/manager/typings/supervisor/datatypes.pyi
deleted file mode 100644 (file)
index 5ef53bc..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-def process_or_group_name(name): # -> str:
-    """Ensures that a process or group name is not created with
-       characters that break the eventlistener protocol or web UI URLs"""
-    ...
-
-def integer(value): # -> int:
-    ...
-
-TRUTHY_STRINGS = ...
-FALSY_STRINGS = ...
-def boolean(s): # -> bool:
-    """Convert a string value to a boolean value."""
-    ...
-
-def list_of_strings(arg): # -> list[Unknown]:
-    ...
-
-def list_of_ints(arg): # -> list[int]:
-    ...
-
-def list_of_exitcodes(arg): # -> list[int]:
-    ...
-
-def dict_of_key_value_pairs(arg): # -> dict[Unknown, Unknown]:
-    """ parse KEY=val,KEY2=val2 into {'KEY':'val', 'KEY2':'val2'}
-        Quotes can be used to allow commas in the value
-    """
-    ...
-
-class Automatic:
-    ...
-
-
-class Syslog:
-    """TODO deprecated; remove this special 'syslog' filename in the future"""
-    ...
-
-
-LOGFILE_NONES = ...
-LOGFILE_AUTOS = ...
-LOGFILE_SYSLOGS = ...
-def logfile_name(val): # -> Type[Automatic] | Type[Syslog] | None:
-    ...
-
-class RangeCheckedConversion:
-    """Conversion helper that range checks another conversion."""
-    def __init__(self, conversion, min=..., max=...) -> None:
-        ...
-    
-    def __call__(self, value):
-        ...
-    
-
-
-port_number = ...
-def inet_address(s): # -> tuple[Unknown | Literal[''], Unknown]:
-    ...
-
-class SocketAddress:
-    def __init__(self, s) -> None:
-        ...
-    
-
-
-class SocketConfig:
-    """ Abstract base class which provides a uniform abstraction
-    for TCP vs Unix sockets """
-    url = ...
-    addr = ...
-    backlog = ...
-    def __repr__(self): # -> str:
-        ...
-    
-    def __str__(self) -> str:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def __ne__(self, other) -> bool:
-        ...
-    
-    def get_backlog(self): # -> None:
-        ...
-    
-    def addr(self):
-        ...
-    
-    def create_and_bind(self):
-        ...
-    
-
-
-class InetStreamSocketConfig(SocketConfig):
-    """ TCP socket config helper """
-    host = ...
-    port = ...
-    def __init__(self, host, port, **kwargs) -> None:
-        ...
-    
-    def addr(self): # -> tuple[Unknown | None, Unknown | None]:
-        ...
-    
-    def create_and_bind(self): # -> socket:
-        ...
-    
-
-
-class UnixStreamSocketConfig(SocketConfig):
-    """ Unix domain socket config helper """
-    path = ...
-    mode = ...
-    owner = ...
-    sock = ...
-    def __init__(self, path, **kwargs) -> None:
-        ...
-    
-    def addr(self): # -> Unknown | None:
-        ...
-    
-    def create_and_bind(self): # -> socket:
-        ...
-    
-    def get_mode(self): # -> None:
-        ...
-    
-    def get_owner(self): # -> None:
-        ...
-    
-
-
-def colon_separated_user_group(arg): # -> tuple[int, int]:
-    """ Find a user ID and group ID from a string like 'user:group'.  Returns
-        a tuple (uid, gid).  If the string only contains a user like 'user'
-        then (uid, -1) will be returned.  Raises ValueError if either
-        the user or group can't be resolved to valid IDs on the system. """
-    ...
-
-def name_to_uid(name): # -> int:
-    """ Find a user ID from a string containing a user name or ID.
-        Raises ValueError if the string can't be resolved to a valid
-        user ID on the system. """
-    ...
-
-def name_to_gid(name): # -> int:
-    """ Find a group ID from a string containing a group name or ID.
-        Raises ValueError if the string can't be resolved to a valid
-        group ID on the system. """
-    ...
-
-def gid_for_uid(uid): # -> int:
-    ...
-
-def octal_type(arg): # -> int:
-    ...
-
-def existing_directory(v):
-    ...
-
-def existing_dirpath(v):
-    ...
-
-def logging_level(value): # -> Any:
-    ...
-
-class SuffixMultiplier:
-    def __init__(self, d, default=...) -> None:
-        ...
-    
-    def __call__(self, v): # -> int:
-        ...
-    
-
-
-byte_size = ...
-def url(value):
-    ...
-
-SIGNUMS = ...
-def signal_number(value): # -> int | Any:
-    ...
-
-class RestartWhenExitUnexpected:
-    ...
-
-
-class RestartUnconditionally:
-    ...
-
-
-def auto_restart(value): # -> Type[RestartUnconditionally] | Type[RestartWhenExitUnexpected] | str | Literal[False]:
-    ...
-
-def profile_options(value): # -> tuple[list[Unknown], bool]:
-    ...
diff --git a/manager/typings/supervisor/dispatchers.pyi b/manager/typings/supervisor/dispatchers.pyi
deleted file mode 100644 (file)
index dfeff5c..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-def find_prefix_at_end(haystack, needle): # -> int:
-    ...
-
-class PDispatcher:
-    """ Asyncore dispatcher for mainloop, representing a process channel
-    (stdin, stdout, or stderr).  This class is abstract. """
-    closed = ...
-    def __init__(self, process, channel, fd) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def readable(self):
-        ...
-    
-    def writable(self):
-        ...
-    
-    def handle_read_event(self):
-        ...
-    
-    def handle_write_event(self):
-        ...
-    
-    def handle_error(self): # -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def flush(self): # -> None:
-        ...
-    
-
-
-class POutputDispatcher(PDispatcher):
-    """
-    Dispatcher for one channel (stdout or stderr) of one process.
-    Serves several purposes:
-
-    - capture output sent within <!--XSUPERVISOR:BEGIN--> and
-      <!--XSUPERVISOR:END--> tags and signal a ProcessCommunicationEvent
-      by calling notify(event).
-    - route the output to the appropriate log handlers as specified in the
-      config.
-    """
-    childlog = ...
-    normallog = ...
-    capturelog = ...
-    capturemode = ...
-    output_buffer = ...
-    def __init__(self, process, event_type, fd) -> None:
-        """
-        Initialize the dispatcher.
-
-        `event_type` should be one of ProcessLogStdoutEvent or
-        ProcessLogStderrEvent
-        """
-        ...
-    
-    def removelogs(self): # -> None:
-        ...
-    
-    def reopenlogs(self): # -> None:
-        ...
-    
-    def record_output(self): # -> None:
-        ...
-    
-    def toggle_capturemode(self): # -> None:
-        ...
-    
-    def writable(self): # -> Literal[False]:
-        ...
-    
-    def readable(self): # -> bool:
-        ...
-    
-    def handle_read_event(self): # -> None:
-        ...
-    
-
-
-class PEventListenerDispatcher(PDispatcher):
-    """ An output dispatcher that monitors and changes a process'
-    listener_state """
-    childlog = ...
-    state_buffer = ...
-    READY_FOR_EVENTS_TOKEN = ...
-    RESULT_TOKEN_START = ...
-    READY_FOR_EVENTS_LEN = ...
-    RESULT_TOKEN_START_LEN = ...
-    def __init__(self, process, channel, fd) -> None:
-        ...
-    
-    def removelogs(self): # -> None:
-        ...
-    
-    def reopenlogs(self): # -> None:
-        ...
-    
-    def writable(self): # -> Literal[False]:
-        ...
-    
-    def readable(self): # -> bool:
-        ...
-    
-    def handle_read_event(self): # -> None:
-        ...
-    
-    def handle_listener_state_change(self): # -> None:
-        ...
-    
-    def handle_result(self, result): # -> None:
-        ...
-    
-
-
-class PInputDispatcher(PDispatcher):
-    """ Input (stdin) dispatcher """
-    def __init__(self, process, channel, fd) -> None:
-        ...
-    
-    def writable(self): # -> bool:
-        ...
-    
-    def readable(self): # -> Literal[False]:
-        ...
-    
-    def flush(self): # -> None:
-        ...
-    
-    def handle_write_event(self): # -> None:
-        ...
-    
-
-
-ANSI_ESCAPE_BEGIN = ...
-ANSI_TERMINATORS = ...
-def stripEscapes(s): # -> Literal[b'']:
-    """
-    Remove all ANSI color escapes from the given string.
-    """
-    ...
-
-class RejectEvent(Exception):
-    """ The exception type expected by a dispatcher when a handler wants
-    to reject an event """
-    ...
-
-
-def default_handler(event, response): # -> None:
-    ...
diff --git a/manager/typings/supervisor/events.pyi b/manager/typings/supervisor/events.pyi
deleted file mode 100644 (file)
index 85c6662..0000000
+++ /dev/null
@@ -1,227 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-callbacks = ...
-def subscribe(type, callback): # -> None:
-    ...
-
-def unsubscribe(type, callback): # -> None:
-    ...
-
-def notify(event): # -> None:
-    ...
-
-def clear(): # -> None:
-    ...
-
-class Event:
-    """ Abstract event type """
-    ...
-
-
-class ProcessLogEvent(Event):
-    """ Abstract """
-    channel = ...
-    def __init__(self, process, pid, data) -> None:
-        ...
-    
-    def payload(self): # -> str:
-        ...
-    
-
-
-class ProcessLogStdoutEvent(ProcessLogEvent):
-    channel = ...
-
-
-class ProcessLogStderrEvent(ProcessLogEvent):
-    channel = ...
-
-
-class ProcessCommunicationEvent(Event):
-    """ Abstract """
-    BEGIN_TOKEN = ...
-    END_TOKEN = ...
-    def __init__(self, process, pid, data) -> None:
-        ...
-    
-    def payload(self): # -> str:
-        ...
-    
-
-
-class ProcessCommunicationStdoutEvent(ProcessCommunicationEvent):
-    channel = ...
-
-
-class ProcessCommunicationStderrEvent(ProcessCommunicationEvent):
-    channel = ...
-
-
-class RemoteCommunicationEvent(Event):
-    def __init__(self, type, data) -> None:
-        ...
-    
-    def payload(self): # -> str:
-        ...
-    
-
-
-class SupervisorStateChangeEvent(Event):
-    """ Abstract class """
-    def payload(self): # -> Literal['']:
-        ...
-    
-
-
-class SupervisorRunningEvent(SupervisorStateChangeEvent):
-    ...
-
-
-class SupervisorStoppingEvent(SupervisorStateChangeEvent):
-    ...
-
-
-class EventRejectedEvent:
-    def __init__(self, process, event) -> None:
-        ...
-    
-
-
-class ProcessStateEvent(Event):
-    """ Abstract class, never raised directly """
-    frm = ...
-    to = ...
-    def __init__(self, process, from_state, expected=...) -> None:
-        ...
-    
-    def payload(self): # -> str:
-        ...
-    
-    def get_extra_values(self): # -> list[Unknown]:
-        ...
-    
-
-
-class ProcessStateFatalEvent(ProcessStateEvent):
-    ...
-
-
-class ProcessStateUnknownEvent(ProcessStateEvent):
-    ...
-
-
-class ProcessStateStartingOrBackoffEvent(ProcessStateEvent):
-    def get_extra_values(self): # -> list[tuple[Literal['tries'], int]]:
-        ...
-    
-
-
-class ProcessStateBackoffEvent(ProcessStateStartingOrBackoffEvent):
-    ...
-
-
-class ProcessStateStartingEvent(ProcessStateStartingOrBackoffEvent):
-    ...
-
-
-class ProcessStateExitedEvent(ProcessStateEvent):
-    def get_extra_values(self): # -> list[tuple[Literal['expected'], int] | tuple[Literal['pid'], Unknown]]:
-        ...
-    
-
-
-class ProcessStateRunningEvent(ProcessStateEvent):
-    def get_extra_values(self): # -> list[tuple[Literal['pid'], Unknown]]:
-        ...
-    
-
-
-class ProcessStateStoppingEvent(ProcessStateEvent):
-    def get_extra_values(self): # -> list[tuple[Literal['pid'], Unknown]]:
-        ...
-    
-
-
-class ProcessStateStoppedEvent(ProcessStateEvent):
-    def get_extra_values(self): # -> list[tuple[Literal['pid'], Unknown]]:
-        ...
-    
-
-
-class ProcessGroupEvent(Event):
-    def __init__(self, group) -> None:
-        ...
-    
-    def payload(self): # -> str:
-        ...
-    
-
-
-class ProcessGroupAddedEvent(ProcessGroupEvent):
-    ...
-
-
-class ProcessGroupRemovedEvent(ProcessGroupEvent):
-    ...
-
-
-class TickEvent(Event):
-    """ Abstract """
-    def __init__(self, when, supervisord) -> None:
-        ...
-    
-    def payload(self): # -> str:
-        ...
-    
-
-
-class Tick5Event(TickEvent):
-    period = ...
-
-
-class Tick60Event(TickEvent):
-    period = ...
-
-
-class Tick3600Event(TickEvent):
-    period = ...
-
-
-TICK_EVENTS = ...
-class EventTypes:
-    EVENT = Event
-    PROCESS_STATE = ProcessStateEvent
-    PROCESS_STATE_STOPPED = ProcessStateStoppedEvent
-    PROCESS_STATE_EXITED = ProcessStateExitedEvent
-    PROCESS_STATE_STARTING = ProcessStateStartingEvent
-    PROCESS_STATE_STOPPING = ProcessStateStoppingEvent
-    PROCESS_STATE_BACKOFF = ProcessStateBackoffEvent
-    PROCESS_STATE_FATAL = ProcessStateFatalEvent
-    PROCESS_STATE_RUNNING = ProcessStateRunningEvent
-    PROCESS_STATE_UNKNOWN = ProcessStateUnknownEvent
-    PROCESS_COMMUNICATION = ProcessCommunicationEvent
-    PROCESS_COMMUNICATION_STDOUT = ProcessCommunicationStdoutEvent
-    PROCESS_COMMUNICATION_STDERR = ProcessCommunicationStderrEvent
-    PROCESS_LOG = ProcessLogEvent
-    PROCESS_LOG_STDOUT = ProcessLogStdoutEvent
-    PROCESS_LOG_STDERR = ProcessLogStderrEvent
-    REMOTE_COMMUNICATION = RemoteCommunicationEvent
-    SUPERVISOR_STATE_CHANGE = SupervisorStateChangeEvent
-    SUPERVISOR_STATE_CHANGE_RUNNING = SupervisorRunningEvent
-    SUPERVISOR_STATE_CHANGE_STOPPING = SupervisorStoppingEvent
-    TICK = TickEvent
-    TICK_5 = Tick5Event
-    TICK_60 = Tick60Event
-    TICK_3600 = Tick3600Event
-    PROCESS_GROUP = ProcessGroupEvent
-    PROCESS_GROUP_ADDED = ProcessGroupAddedEvent
-    PROCESS_GROUP_REMOVED = ProcessGroupRemovedEvent
-
-
-def getEventNameByType(requested): # -> str | None:
-    ...
-
-def register(name, event): # -> None:
-    ...
diff --git a/manager/typings/supervisor/http.pyi b/manager/typings/supervisor/http.pyi
deleted file mode 100644 (file)
index 4f0503f..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-from supervisor.medusa import http_server
-from supervisor.medusa.auth_handler import auth_handler
-
-class NOT_DONE_YET:
-    ...
-
-
-class deferring_chunked_producer:
-    """A producer that implements the 'chunked' transfer coding for HTTP/1.1.
-    Here is a sample usage:
-            request['Transfer-Encoding'] = 'chunked'
-            request.push (
-                    producers.chunked_producer (your_producer)
-                    )
-            request.done()
-    """
-    def __init__(self, producer, footers=...) -> None:
-        ...
-    
-    def more(self): # -> Type[NOT_DONE_YET] | bytes:
-        ...
-    
-
-
-class deferring_composite_producer:
-    """combine a fifo of producers into one"""
-    def __init__(self, producers) -> None:
-        ...
-    
-    def more(self): # -> Type[NOT_DONE_YET] | Literal[b'']:
-        ...
-    
-
-
-class deferring_globbing_producer:
-    """
-    'glob' the output from a producer into a particular buffer size.
-    helps reduce the number of calls to send().  [this appears to
-    gain about 30% performance on requests to a single channel]
-    """
-    def __init__(self, producer, buffer_size=...) -> None:
-        ...
-    
-    def more(self): # -> Type[NOT_DONE_YET] | bytes:
-        ...
-    
-
-
-class deferring_hooked_producer:
-    """
-    A producer that will call <function> when it empties,.
-    with an argument of the number of bytes produced.  Useful
-    for logging/instrumentation purposes.
-    """
-    def __init__(self, producer, function) -> None:
-        ...
-    
-    def more(self): # -> Type[NOT_DONE_YET] | Literal[b'']:
-        ...
-    
-
-
-class deferring_http_request(http_server.http_request):
-    """ The medusa http_request class uses the default set of producers in
-    medusa.producers.  We can't use these because they don't know anything
-    about deferred responses, so we override various methods here.  This was
-    added to support tail -f like behavior on the logtail handler """
-    def done(self, *arg, **kw): # -> None:
-        """ I didn't want to override this, but there's no way around
-        it in order to support deferreds - CM
-
-        finalize this transaction - send output to the http channel"""
-        ...
-    
-    def log(self, bytes): # -> None:
-        """ We need to override this because UNIX domain sockets return
-        an empty string for the addr rather than a (host, port) combination """
-        ...
-    
-    def cgi_environment(self): # -> dict[Unknown, Unknown]:
-        ...
-    
-    def get_server_url(self): # -> str:
-        """ Functionality that medusa's http request doesn't have; set an
-        attribute named 'server_url' on the request based on the Host: header
-        """
-        ...
-    
-
-
-class deferring_http_channel(http_server.http_channel):
-    ac_out_buffer_size = ...
-    delay = ...
-    last_writable_check = ...
-    def writable(self, now=...): # -> bool:
-        ...
-    
-    def refill_buffer(self): # -> None:
-        """ Implement deferreds """
-        ...
-    
-    def found_terminator(self): # -> None:
-        """ We only override this to use 'deferring_http_request' class
-        instead of the normal http_request class; it sucks to need to override
-        this """
-        ...
-    
-
-
-class supervisor_http_server(http_server.http_server):
-    channel_class = deferring_http_channel
-    ip = ...
-    def prebind(self, sock, logger_object): # -> None:
-        """ Override __init__ to do logger setup earlier so it can
-        go to our logger object instead of stdout """
-        ...
-    
-    def postbind(self): # -> None:
-        ...
-    
-    def log_info(self, message, type=...): # -> None:
-        ...
-    
-
-
-class supervisor_af_inet_http_server(supervisor_http_server):
-    """ AF_INET version of supervisor HTTP server """
-    def __init__(self, ip, port, logger_object) -> None:
-        ...
-    
-
-
-class supervisor_af_unix_http_server(supervisor_http_server):
-    """ AF_UNIX version of supervisor HTTP server """
-    def __init__(self, socketname, sockchmod, sockchown, logger_object) -> None:
-        ...
-    
-    def checkused(self, socketname): # -> bool:
-        ...
-    
-
-
-class tail_f_producer:
-    def __init__(self, request, filename, head) -> None:
-        ...
-    
-    def __del__(self): # -> None:
-        ...
-    
-    def more(self): # -> bytes | Type[NOT_DONE_YET] | Literal['''==> File truncated <==
-''']:
-        ...
-    
-
-
-class logtail_handler:
-    IDENT = ...
-    path = ...
-    def __init__(self, supervisord) -> None:
-        ...
-    
-    def match(self, request):
-        ...
-    
-    def handle_request(self, request): # -> None:
-        ...
-    
-
-
-class mainlogtail_handler:
-    IDENT = ...
-    path = ...
-    def __init__(self, supervisord) -> None:
-        ...
-    
-    def match(self, request):
-        ...
-    
-    def handle_request(self, request): # -> None:
-        ...
-    
-
-
-def make_http_servers(options, supervisord): # -> list[Unknown]:
-    ...
-
-class LogWrapper:
-    '''Receives log messages from the Medusa servers and forwards
-    them to the Supervisor logger'''
-    def __init__(self, logger) -> None:
-        ...
-    
-    def log(self, msg): # -> None:
-        '''Medusa servers call this method.  There is no log level so
-        we have to sniff the message.  We want "Server Error" messages
-        from medusa.http_server logged as errors at least.'''
-        ...
-    
-
-
-class encrypted_dictionary_authorizer:
-    def __init__(self, dict) -> None:
-        ...
-    
-    def authorize(self, auth_info): # -> Literal[False]:
-        ...
-    
-
-
-class supervisor_auth_handler(auth_handler):
-    def __init__(self, dict, handler, realm=...) -> None:
-        ...
diff --git a/manager/typings/supervisor/http_client.pyi b/manager/typings/supervisor/http_client.pyi
deleted file mode 100644 (file)
index 94dcd82..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-from supervisor.medusa import asynchat_25 as asynchat
-
-CR = ...
-LF = ...
-CRLF = ...
-class Listener:
-    def status(self, url, status): # -> None:
-        ...
-    
-    def error(self, url, error): # -> None:
-        ...
-    
-    def response_header(self, url, name, value): # -> None:
-        ...
-    
-    def done(self, url): # -> None:
-        ...
-    
-    def feed(self, url, data): # -> None:
-        ...
-    
-    def close(self, url): # -> None:
-        ...
-    
-
-
-class HTTPHandler(asynchat.async_chat):
-    def __init__(self, listener, username=..., password=..., conn=..., map=...) -> None:
-        ...
-    
-    def get(self, serverurl, path=...): # -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def header(self, name, value): # -> None:
-        ...
-    
-    def handle_error(self): # -> None:
-        ...
-    
-    def handle_connect(self): # -> None:
-        ...
-    
-    def feed(self, data): # -> None:
-        ...
-    
-    def collect_incoming_data(self, bytes): # -> None:
-        ...
-    
-    def found_terminator(self): # -> None:
-        ...
-    
-    def ignore(self): # -> None:
-        ...
-    
-    def status_line(self): # -> tuple[bytes | Unknown, int, bytes | Unknown]:
-        ...
-    
-    def headers(self): # -> None:
-        ...
-    
-    def response_header(self, name, value): # -> None:
-        ...
-    
-    def body(self): # -> None:
-        ...
-    
-    def done(self): # -> None:
-        ...
-    
-    def chunked_size(self): # -> None:
-        ...
-    
-    def chunked_body(self): # -> None:
-        ...
-    
-    def trailer(self): # -> None:
-        ...
diff --git a/manager/typings/supervisor/loggers.pyi b/manager/typings/supervisor/loggers.pyi
deleted file mode 100644 (file)
index b46f233..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-"""
-Logger implementation loosely modeled on PEP 282.  We don't use the
-PEP 282 logger implementation in the stdlib ('logging') because it's
-idiosyncratic and a bit slow for our purposes (we don't use threads).
-"""
-class LevelsByName:
-    CRIT = ...
-    ERRO = ...
-    WARN = ...
-    INFO = ...
-    DEBG = ...
-    TRAC = ...
-    BLAT = ...
-
-
-class LevelsByDescription:
-    critical = ...
-    error = ...
-    warn = ...
-    info = ...
-    debug = ...
-    trace = ...
-    blather = ...
-
-
-LOG_LEVELS_BY_NUM = ...
-def getLevelNumByDescription(description): # -> Any | None:
-    ...
-
-class Handler:
-    fmt = ...
-    level = ...
-    def __init__(self, stream=...) -> None:
-        ...
-    
-    def setFormat(self, fmt): # -> None:
-        ...
-    
-    def setLevel(self, level): # -> None:
-        ...
-    
-    def flush(self): # -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def emit(self, record): # -> None:
-        ...
-    
-    def handleError(self): # -> None:
-        ...
-    
-
-
-class StreamHandler(Handler):
-    def __init__(self, strm=...) -> None:
-        ...
-    
-    def remove(self): # -> None:
-        ...
-    
-    def reopen(self): # -> None:
-        ...
-    
-
-
-class BoundIO:
-    def __init__(self, maxbytes, buf=...) -> None:
-        ...
-    
-    def flush(self): # -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def write(self, b): # -> None:
-        ...
-    
-    def getvalue(self): # -> Unknown | bytes:
-        ...
-    
-    def clear(self): # -> None:
-        ...
-    
-
-
-class FileHandler(Handler):
-    """File handler which supports reopening of logs.
-    """
-    def __init__(self, filename, mode=...) -> None:
-        ...
-    
-    def reopen(self): # -> None:
-        ...
-    
-    def remove(self): # -> None:
-        ...
-    
-
-
-class RotatingFileHandler(FileHandler):
-    def __init__(self, filename, mode=..., maxBytes=..., backupCount=...) -> None:
-        """
-        Open the specified file and use it as the stream for logging.
-
-        By default, the file grows indefinitely. You can specify particular
-        values of maxBytes and backupCount to allow the file to rollover at
-        a predetermined size.
-
-        Rollover occurs whenever the current log file is nearly maxBytes in
-        length. If backupCount is >= 1, the system will successively create
-        new files with the same pathname as the base file, but with extensions
-        ".1", ".2" etc. appended to it. For example, with a backupCount of 5
-        and a base file name of "app.log", you would get "app.log",
-        "app.log.1", "app.log.2", ... through to "app.log.5". The file being
-        written to is always "app.log" - when it gets filled up, it is closed
-        and renamed to "app.log.1", and if files "app.log.1", "app.log.2" etc.
-        exist, then they are renamed to "app.log.2", "app.log.3" etc.
-        respectively.
-
-        If maxBytes is zero, rollover never occurs.
-        """
-        ...
-    
-    def emit(self, record): # -> None:
-        """
-        Emit a record.
-
-        Output the record to the file, catering for rollover as described
-        in doRollover().
-        """
-        ...
-    
-    def removeAndRename(self, sfn, dfn): # -> None:
-        ...
-    
-    def doRollover(self): # -> None:
-        """
-        Do a rollover, as described in __init__().
-        """
-        ...
-    
-
-
-class LogRecord:
-    def __init__(self, level, msg, **kw) -> None:
-        ...
-    
-    def asdict(self): # -> dict[str, str | Unknown]:
-        ...
-    
-
-
-class Logger:
-    def __init__(self, level=..., handlers=...) -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def blather(self, msg, **kw): # -> None:
-        ...
-    
-    def trace(self, msg, **kw): # -> None:
-        ...
-    
-    def debug(self, msg, **kw): # -> None:
-        ...
-    
-    def info(self, msg, **kw): # -> None:
-        ...
-    
-    def warn(self, msg, **kw): # -> None:
-        ...
-    
-    def error(self, msg, **kw): # -> None:
-        ...
-    
-    def critical(self, msg, **kw): # -> None:
-        ...
-    
-    def log(self, level, msg, **kw): # -> None:
-        ...
-    
-    def addHandler(self, hdlr): # -> None:
-        ...
-    
-    def getvalue(self):
-        ...
-    
-
-
-class SyslogHandler(Handler):
-    def __init__(self) -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def reopen(self): # -> None:
-        ...
-    
-    def emit(self, record): # -> None:
-        ...
-    
-
-
-def getLogger(level=...): # -> Logger:
-    ...
-
-_2MB = ...
-def handle_boundIO(logger, fmt, maxbytes=...): # -> None:
-    """Attach a new BoundIO handler to an existing Logger"""
-    ...
-
-def handle_stdout(logger, fmt): # -> None:
-    """Attach a new StreamHandler with stdout handler to an existing Logger"""
-    ...
-
-def handle_syslog(logger, fmt): # -> None:
-    """Attach a new Syslog handler to an existing Logger"""
-    ...
-
-def handle_file(logger, filename, fmt, rotating=..., maxbytes=..., backups=...): # -> None:
-    """Attach a new file handler to an existing Logger. If the filename
-    is the magic name of 'syslog' then make it a syslog handler instead."""
-    ...
diff --git a/manager/typings/supervisor/medusa/__init__.pyi b/manager/typings/supervisor/medusa/__init__.pyi
deleted file mode 100644 (file)
index 2317f9a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-"""medusa.__init__
-"""
-__revision__ = ...
diff --git a/manager/typings/supervisor/medusa/asynchat_25.pyi b/manager/typings/supervisor/medusa/asynchat_25.pyi
deleted file mode 100644 (file)
index c269d90..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-from supervisor.medusa import asyncore_25 as asyncore
-
-r"""A class supporting chat-style (command/response) protocols.
-
-This class adds support for 'chat' style protocols - where one side
-sends a 'command', and the other sends a response (examples would be
-the common internet protocols - smtp, nntp, ftp, etc..).
-
-The handle_read() method looks at the input stream for the current
-'terminator' (usually '\r\n' for single-line responses, '\r\n.\r\n'
-for multi-line output), calling self.found_terminator() on its
-receipt.
-
-for example:
-Say you build an async nntp client using this class.  At the start
-of the connection, you'll have self.terminator set to '\r\n', in
-order to process the single-line greeting.  Just before issuing a
-'LIST' command you'll set it to '\r\n.\r\n'.  The output of the LIST
-command will be accumulated (using your own 'collect_incoming_data'
-method) up to the terminator, and then control will be returned to
-you - by calling your self.found_terminator() method.
-"""
-class async_chat(asyncore.dispatcher):
-    """This is an abstract class.  You must derive from this class, and add
-    the two methods collect_incoming_data() and found_terminator()"""
-    ac_in_buffer_size = ...
-    ac_out_buffer_size = ...
-    def __init__(self, conn=..., map=...) -> None:
-        ...
-    
-    def collect_incoming_data(self, data):
-        ...
-    
-    def found_terminator(self):
-        ...
-    
-    def set_terminator(self, term): # -> None:
-        """Set the input delimiter.  Can be a fixed string of any length, an integer, or None"""
-        ...
-    
-    def get_terminator(self): # -> int:
-        ...
-    
-    def handle_read(self): # -> None:
-        ...
-    
-    def handle_write(self): # -> None:
-        ...
-    
-    def handle_close(self): # -> None:
-        ...
-    
-    def push(self, data): # -> None:
-        ...
-    
-    def push_with_producer(self, producer): # -> None:
-        ...
-    
-    def readable(self): # -> bool:
-        """predicate for inclusion in the readable for select()"""
-        ...
-    
-    def writable(self): # -> bool:
-        """predicate for inclusion in the writable for select()"""
-        ...
-    
-    def close_when_done(self): # -> None:
-        """automatically close this channel once the outgoing queue is empty"""
-        ...
-    
-    def refill_buffer(self): # -> None:
-        ...
-    
-    def initiate_send(self): # -> None:
-        ...
-    
-    def discard_buffers(self): # -> None:
-        ...
-    
-
-
-class simple_producer:
-    def __init__(self, data, buffer_size=...) -> None:
-        ...
-    
-    def more(self): # -> bytes:
-        ...
-    
-
-
-class fifo:
-    def __init__(self, list=...) -> None:
-        ...
-    
-    def __len__(self): # -> int:
-        ...
-    
-    def is_empty(self): # -> bool:
-        ...
-    
-    def first(self):
-        ...
-    
-    def push(self, data): # -> None:
-        ...
-    
-    def pop(self): # -> tuple[Literal[1], Unknown] | tuple[Literal[0], None]:
-        ...
-    
-
-
-def find_prefix_at_end(haystack, needle): # -> int:
-    ...
diff --git a/manager/typings/supervisor/medusa/asyncore_25.pyi b/manager/typings/supervisor/medusa/asyncore_25.pyi
deleted file mode 100644 (file)
index d0eb145..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import os
-
-"""Basic infrastructure for asynchronous socket service clients and servers.
-
-There are only two ways to have a program on a single processor do "more
-than one thing at a time".  Multi-threaded programming is the simplest and
-most popular way to do it, but there is another very different technique,
-that lets you have nearly all the advantages of multi-threading, without
-actually using multiple threads. it's really only practical if your program
-is largely I/O bound. If your program is CPU bound, then preemptive
-scheduled threads are probably what you really need. Network servers are
-rarely CPU-bound, however.
-
-If your operating system supports the select() system call in its I/O
-library (and nearly all do), then you can use it to juggle multiple
-communication channels at once; doing other work while your I/O is taking
-place in the "background."  Although this strategy can seem strange and
-complex, especially at first, it is in many ways easier to understand and
-control than multi-threaded programming. The module documented here solves
-many of the difficult problems for you, making the task of building
-sophisticated high-performance network servers and clients a snap.
-"""
-class ExitNow(Exception):
-    ...
-
-
-def read(obj): # -> None:
-    ...
-
-def write(obj): # -> None:
-    ...
-
-def readwrite(obj, flags): # -> None:
-    ...
-
-def poll(timeout=..., map=...): # -> None:
-    ...
-
-def poll2(timeout=..., map=...): # -> None:
-    ...
-
-poll3 = ...
-def loop(timeout=..., use_poll=..., map=..., count=...): # -> None:
-    ...
-
-class dispatcher:
-    debug = ...
-    connected = ...
-    accepting = ...
-    closing = ...
-    addr = ...
-    def __init__(self, sock=..., map=...) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def add_channel(self, map=...): # -> None:
-        ...
-    
-    def del_channel(self, map=...): # -> None:
-        ...
-    
-    def create_socket(self, family, type): # -> None:
-        ...
-    
-    def set_socket(self, sock, map=...): # -> None:
-        ...
-    
-    def set_reuse_addr(self): # -> None:
-        ...
-    
-    def readable(self): # -> Literal[True]:
-        ...
-    
-    def writable(self): # -> Literal[True]:
-        ...
-    
-    def listen(self, num): # -> None:
-        ...
-    
-    def bind(self, addr): # -> None:
-        ...
-    
-    def connect(self, address): # -> None:
-        ...
-    
-    def accept(self): # -> tuple[socket | Unknown, _RetAddress | Unknown] | None:
-        ...
-    
-    def send(self, data): # -> int:
-        ...
-    
-    def recv(self, buffer_size): # -> bytes:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def __getattr__(self, attr): # -> Any:
-        ...
-    
-    def log(self, message): # -> None:
-        ...
-    
-    def log_info(self, message, type=...): # -> None:
-        ...
-    
-    def handle_read_event(self): # -> None:
-        ...
-    
-    def handle_write_event(self): # -> None:
-        ...
-    
-    def handle_expt_event(self): # -> None:
-        ...
-    
-    def handle_error(self): # -> None:
-        ...
-    
-    def handle_expt(self): # -> None:
-        ...
-    
-    def handle_read(self): # -> None:
-        ...
-    
-    def handle_write(self): # -> None:
-        ...
-    
-    def handle_connect(self): # -> None:
-        ...
-    
-    def handle_accept(self): # -> None:
-        ...
-    
-    def handle_close(self): # -> None:
-        ...
-    
-
-
-class dispatcher_with_send(dispatcher):
-    def __init__(self, sock=..., map=...) -> None:
-        ...
-    
-    def initiate_send(self): # -> None:
-        ...
-    
-    def handle_write(self): # -> None:
-        ...
-    
-    def writable(self): # -> int | Literal[True]:
-        ...
-    
-    def send(self, data): # -> None:
-        ...
-    
-
-
-def compact_traceback(): # -> tuple[tuple[Unknown, Unknown, Unknown], Type[BaseException] | None, BaseException | None, str]:
-    ...
-
-def close_all(map=...): # -> None:
-    ...
-
-if os.name == 'posix':
-    class file_wrapper:
-        def __init__(self, fd) -> None:
-            ...
-        
-        def recv(self, buffersize): # -> str:
-            ...
-        
-        def send(self, s): # -> int:
-            ...
-        
-        read = ...
-        write = ...
-        def close(self): # -> None:
-            ...
-        
-        def fileno(self):
-            ...
-        
-    
-    
-    class file_dispatcher(dispatcher):
-        def __init__(self, fd, map=...) -> None:
-            ...
-        
-        def set_file(self, fd): # -> None:
-            ...
diff --git a/manager/typings/supervisor/medusa/auth_handler.pyi b/manager/typings/supervisor/medusa/auth_handler.pyi
deleted file mode 100644 (file)
index 8c19e35..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-RCS_ID = ...
-get_header = ...
-class auth_handler:
-    def __init__(self, dict, handler, realm=...) -> None:
-        ...
-    
-    def match(self, request):
-        ...
-    
-    def handle_request(self, request): # -> None:
-        ...
-    
-    def handle_unauthorized(self, request): # -> None:
-        ...
-    
-    def make_nonce(self, request): # -> bytes:
-        """A digest-authentication <nonce>, constructed as suggested in RFC 2069"""
-        ...
-    
-    def apply_hash(self, s): # -> bytes:
-        """Apply MD5 to a string <s>, then wrap it in base64 encoding."""
-        ...
-    
-    def status(self): # -> composite_producer:
-        ...
-    
-
-
-class dictionary_authorizer:
-    def __init__(self, dict) -> None:
-        ...
-    
-    def authorize(self, auth_info): # -> Literal[1, 0]:
-        ...
-    
-
-
-AUTHORIZATION = ...
diff --git a/manager/typings/supervisor/medusa/counter.pyi b/manager/typings/supervisor/medusa/counter.pyi
deleted file mode 100644 (file)
index f540230..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-class counter:
-    """general-purpose counter"""
-    def __init__(self, initial_value=...) -> None:
-        ...
-    
-    def increment(self, delta=...): # -> Unknown:
-        ...
-    
-    def decrement(self, delta=...): # -> Unknown:
-        ...
-    
-    def as_long(self): # -> int:
-        ...
-    
-    def __nonzero__(self):
-        ...
-    
-    __bool__ = ...
-    def __repr__(self): # -> str:
-        ...
-    
-    def __str__(self) -> str:
-        ...
diff --git a/manager/typings/supervisor/medusa/default_handler.pyi b/manager/typings/supervisor/medusa/default_handler.pyi
deleted file mode 100644 (file)
index 227e0da..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import supervisor.medusa.producers as producers
-
-RCS_ID = ...
-unquote = ...
-class default_handler:
-    valid_commands = ...
-    IDENT = ...
-    directory_defaults = ...
-    default_file_producer = producers.file_producer
-    def __init__(self, filesystem) -> None:
-        ...
-    
-    hit_counter = ...
-    def __repr__(self): # -> str:
-        ...
-    
-    def match(self, request): # -> Literal[1]:
-        ...
-    
-    def handle_request(self, request): # -> None:
-        ...
-    
-    def set_content_type(self, path, request): # -> None:
-        ...
-    
-    def status(self): # -> simple_producer:
-        ...
-    
-
-
-IF_MODIFIED_SINCE = ...
-USER_AGENT = ...
-CONTENT_TYPE = ...
-get_header = ...
-get_header_match = ...
-def get_extension(path): # -> Literal['']:
-    ...
diff --git a/manager/typings/supervisor/medusa/filesys.pyi b/manager/typings/supervisor/medusa/filesys.pyi
deleted file mode 100644 (file)
index 7f0ffdb..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import os
-
-class abstract_filesystem:
-    def __init__(self) -> None:
-        ...
-    
-    def current_directory(self): # -> None:
-        """Return a string representing the current directory."""
-        ...
-    
-    def listdir(self, path, long=...): # -> None:
-        """Return a listing of the directory at 'path' The empty string
-        indicates the current directory.  If 'long' is set, instead
-        return a list of (name, stat_info) tuples
-        """
-        ...
-    
-    def open(self, path, mode): # -> None:
-        """Return an open file object"""
-        ...
-    
-    def stat(self, path): # -> None:
-        """Return the equivalent of os.stat() on the given path."""
-        ...
-    
-    def isdir(self, path): # -> None:
-        """Does the path represent a directory?"""
-        ...
-    
-    def isfile(self, path): # -> None:
-        """Does the path represent a plain file?"""
-        ...
-    
-    def cwd(self, path): # -> None:
-        """Change the working directory."""
-        ...
-    
-    def cdup(self): # -> None:
-        """Change to the parent of the current directory."""
-        ...
-    
-    def longify(self, path): # -> None:
-        """Return a 'long' representation of the filename
-        [for the output of the LIST command]"""
-        ...
-    
-
-
-def safe_stat(path): # -> tuple[Unknown, stat_result] | None:
-    ...
-
-class os_filesystem:
-    path_module = os.path
-    do_globbing = ...
-    def __init__(self, root, wd=...) -> None:
-        ...
-    
-    def current_directory(self): # -> Unknown | str:
-        ...
-    
-    def isfile(self, path): # -> bool:
-        ...
-    
-    def isdir(self, path): # -> bool:
-        ...
-    
-    def cwd(self, path): # -> Literal[0, 1]:
-        ...
-    
-    def cdup(self): # -> Literal[0, 1]:
-        ...
-    
-    def listdir(self, path, long=...): # -> list_producer:
-        ...
-    
-    def stat(self, path): # -> stat_result:
-        ...
-    
-    def open(self, path, mode): # -> TextIOWrapper:
-        ...
-    
-    def unlink(self, path): # -> None:
-        ...
-    
-    def mkdir(self, path): # -> None:
-        ...
-    
-    def rmdir(self, path): # -> None:
-        ...
-    
-    def rename(self, src, dst): # -> None:
-        ...
-    
-    def normalize(self, path): # -> str:
-        ...
-    
-    def translate(self, path): # -> str:
-        ...
-    
-    def longify(self, path_stat_info_tuple): # -> str:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-
-
-if os.name == 'posix':
-    class unix_filesystem(os_filesystem):
-        ...
-    
-    
-    class schizophrenic_unix_filesystem(os_filesystem):
-        PROCESS_UID = ...
-        PROCESS_EUID = ...
-        PROCESS_GID = ...
-        PROCESS_EGID = ...
-        def __init__(self, root, wd=..., persona=...) -> None:
-            ...
-        
-        def become_persona(self): # -> None:
-            ...
-        
-        def become_nobody(self): # -> None:
-            ...
-        
-        def cwd(self, path): # -> Literal[0, 1]:
-            ...
-        
-        def cdup(self): # -> Literal[0, 1]:
-            ...
-        
-        def open(self, filename, mode): # -> TextIOWrapper:
-            ...
-        
-        def listdir(self, path, long=...): # -> list_producer:
-            ...
-        
-    
-    
-class msdos_filesystem(os_filesystem):
-    def longify(self, path_stat_info_tuple): # -> str:
-        ...
-    
-
-
-class merged_filesystem:
-    def __init__(self, *fsys) -> None:
-        ...
-    
-
-
-def msdos_longify(file, stat_info): # -> str:
-    ...
-
-def msdos_date(t): # -> str:
-    ...
-
-months = ...
-mode_table = ...
-def unix_longify(file, stat_info): # -> str:
-    ...
-
-def ls_date(now, t): # -> str:
-    ...
-
-class list_producer:
-    def __init__(self, list, func=...) -> None:
-        ...
-    
-    def more(self): # -> str:
-        ...
diff --git a/manager/typings/supervisor/medusa/http_date.pyi b/manager/typings/supervisor/medusa/http_date.pyi
deleted file mode 100644 (file)
index 1aa9fa0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-def concat(*args): # -> str:
-    ...
-
-def join(seq, field=...):
-    ...
-
-def group(s):
-    ...
-
-short_days = ...
-long_days = ...
-short_day_reg = ...
-long_day_reg = ...
-daymap = ...
-hms_reg = ...
-months = ...
-monmap = ...
-months_reg = ...
-rfc822_date = ...
-rfc822_reg = ...
-def unpack_rfc822(m): # -> tuple[int, Unknown, int, int, int, int, Literal[0], Literal[0], Literal[0]]:
-    ...
-
-rfc850_date = ...
-rfc850_reg = ...
-def unpack_rfc850(m): # -> tuple[int, Unknown, int, int, int, int, Literal[0], Literal[0], Literal[0]]:
-    ...
-
-def build_http_date(when): # -> str:
-    ...
-
-def parse_http_date(d): # -> int:
-    ...
diff --git a/manager/typings/supervisor/medusa/http_server.pyi b/manager/typings/supervisor/medusa/http_server.pyi
deleted file mode 100644 (file)
index 0a3ee62..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import supervisor.medusa.asynchat_25 as asynchat
-import supervisor.medusa.asyncore_25 as asyncore
-
-RCS_ID = ...
-VERSION_STRING = ...
-class http_request:
-    reply_code = ...
-    request_counter = ...
-    use_chunked = ...
-    collector = ...
-    def __init__(self, *args) -> None:
-        ...
-    
-    def __setitem__(self, key, value): # -> None:
-        ...
-    
-    def __getitem__(self, key): # -> str:
-        ...
-    
-    def __contains__(self, key): # -> bool:
-        ...
-    
-    def has_key(self, key): # -> bool:
-        ...
-    
-    def build_reply_header(self): # -> bytes:
-        ...
-    
-    def add_header(self, name, value): # -> None:
-        """ Adds a header to the reply headers """
-        ...
-    
-    def clear_headers(self): # -> None:
-        """ Clears the reply header list """
-        ...
-    
-    def remove_header(self, name, value=...): # -> None:
-        """ Removes the specified header.
-        If a value is provided, the name and
-        value must match to remove the header.
-        If the value is None, removes all headers
-        with that name."""
-        ...
-    
-    def get_reply_headers(self): # -> List[Unknown]:
-        """ Get the tuple of headers that will be used
-        for generating reply headers"""
-        ...
-    
-    def get_reply_header_text(self): # -> str:
-        """ Gets the reply header (including status and
-        additional crlf)"""
-        ...
-    
-    path_regex = ...
-    def split_uri(self): # -> Tuple[str | Any, ...]:
-        ...
-    
-    def get_header_with_regex(self, head_reg, group): # -> Literal['']:
-        ...
-    
-    def get_header(self, header): # -> None:
-        ...
-    
-    def collect_incoming_data(self, data): # -> None:
-        ...
-    
-    def found_terminator(self): # -> None:
-        ...
-    
-    def push(self, thing): # -> None:
-        ...
-    
-    def response(self, code=...): # -> str:
-        ...
-    
-    def error(self, code): # -> None:
-        ...
-    
-    reply_now = ...
-    def done(self): # -> None:
-        """finalize this transaction - send output to the http channel"""
-        ...
-    
-    def log_date_string(self, when): # -> str:
-        ...
-    
-    def log(self, bytes): # -> None:
-        ...
-    
-    responses = ...
-    DEFAULT_ERROR_MESSAGE = ...
-    def log_info(self, msg, level): # -> None:
-        ...
-    
-
-
-class http_channel(asynchat.async_chat):
-    ac_out_buffer_size = ...
-    current_request = ...
-    channel_counter = ...
-    def __init__(self, server, conn, addr) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    maintenance_interval = ...
-    def check_maintenance(self): # -> None:
-        ...
-    
-    def maintenance(self): # -> None:
-        ...
-    
-    zombie_timeout = ...
-    def kill_zombies(self): # -> None:
-        ...
-    
-    def send(self, data): # -> int:
-        ...
-    
-    def recv(self, buffer_size): # -> bytes:
-        ...
-    
-    def handle_error(self): # -> None:
-        ...
-    
-    def log(self, *args): # -> None:
-        ...
-    
-    def collect_incoming_data(self, data): # -> None:
-        ...
-    
-    def found_terminator(self): # -> None:
-        ...
-    
-    def writable_for_proxy(self): # -> bool | Literal[1] | None:
-        ...
-    
-
-
-class http_server(asyncore.dispatcher):
-    SERVER_IDENT = ...
-    channel_class = http_channel
-    def __init__(self, ip, port, resolver=..., logger_object=...) -> None:
-        ...
-    
-    def writable(self): # -> Literal[0]:
-        ...
-    
-    def handle_read(self): # -> None:
-        ...
-    
-    def readable(self): # -> bool:
-        ...
-    
-    def handle_connect(self): # -> None:
-        ...
-    
-    def handle_accept(self): # -> None:
-        ...
-    
-    def install_handler(self, handler, back=...): # -> None:
-        ...
-    
-    def remove_handler(self, handler): # -> None:
-        ...
-    
-    def status(self): # -> composite_producer:
-        ...
-    
-
-
-def maybe_status(thing): # -> None:
-    ...
-
-CONNECTION = ...
-def join_headers(headers): # -> list[Unknown]:
-    ...
-
-def get_header(head_reg, lines, group=...): # -> Literal['']:
-    ...
-
-def get_header_match(head_reg, lines): # -> Literal['']:
-    ...
-
-REQUEST = ...
-def crack_request(r): # -> tuple[str | Any, str | Any, str | Any | None] | tuple[None, None, None]:
-    ...
-
-if __name__ == '__main__':
-    ...
diff --git a/manager/typings/supervisor/medusa/logger.pyi b/manager/typings/supervisor/medusa/logger.pyi
deleted file mode 100644 (file)
index 2a2a9d0..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import supervisor.medusa.asynchat_25 as asynchat
-
-class file_logger:
-    def __init__(self, file, flush=..., mode=...) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def write(self, data): # -> None:
-        ...
-    
-    def writeline(self, line): # -> None:
-        ...
-    
-    def writelines(self, lines): # -> None:
-        ...
-    
-    def maybe_flush(self): # -> None:
-        ...
-    
-    def flush(self): # -> None:
-        ...
-    
-    def softspace(self, *args): # -> None:
-        ...
-    
-    def log(self, message): # -> None:
-        ...
-    
-
-
-class rotating_file_logger(file_logger):
-    def __init__(self, file, freq=..., maxsize=..., flush=..., mode=...) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def next_backup(self, freq): # -> float | None:
-        ...
-    
-    def maybe_flush(self): # -> None:
-        ...
-    
-    def maybe_rotate(self): # -> None:
-        ...
-    
-    def rotate(self): # -> None:
-        ...
-    
-
-
-class socket_logger(asynchat.async_chat):
-    def __init__(self, address) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def log(self, message): # -> None:
-        ...
-    
-
-
-class multi_logger:
-    def __init__(self, loggers) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def log(self, message): # -> None:
-        ...
-    
-
-
-class resolving_logger:
-    """Feed (ip, message) combinations into this logger to get a
-    resolved hostname in front of the message.  The message will not
-    be logged until the PTR request finishes (or fails)."""
-    def __init__(self, resolver, logger) -> None:
-        ...
-    
-    class logger_thunk:
-        def __init__(self, message, logger) -> None:
-            ...
-        
-        def __call__(self, host, ttl, answer): # -> None:
-            ...
-        
-    
-    
-    def log(self, ip, message): # -> None:
-        ...
-    
-
-
-class unresolving_logger:
-    """Just in case you don't want to resolve"""
-    def __init__(self, logger) -> None:
-        ...
-    
-    def log(self, ip, message): # -> None:
-        ...
-    
-
-
-def strip_eol(line):
-    ...
-
-class tail_logger:
-    """Keep track of the last <size> log messages"""
-    def __init__(self, logger, size=...) -> None:
-        ...
-    
-    def log(self, message): # -> None:
-        ...
diff --git a/manager/typings/supervisor/medusa/producers.pyi b/manager/typings/supervisor/medusa/producers.pyi
deleted file mode 100644 (file)
index 00a005d..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-RCS_ID = ...
-class simple_producer:
-    """producer for a string"""
-    def __init__(self, data, buffer_size=...) -> None:
-        ...
-    
-    def more(self): # -> bytes | Unknown:
-        ...
-    
-
-
-class scanning_producer:
-    """like simple_producer, but more efficient for large strings"""
-    def __init__(self, data, buffer_size=...) -> None:
-        ...
-    
-    def more(self): # -> Literal[b'']:
-        ...
-    
-
-
-class lines_producer:
-    """producer for a list of lines"""
-    def __init__(self, lines) -> None:
-        ...
-    
-    def more(self): # -> str:
-        ...
-    
-
-
-class buffer_list_producer:
-    """producer for a list of strings"""
-    def __init__(self, buffers) -> None:
-        ...
-    
-    def more(self): # -> Literal[b'']:
-        ...
-    
-
-
-class file_producer:
-    """producer wrapper for file[-like] objects"""
-    out_buffer_size = ...
-    def __init__(self, file) -> None:
-        ...
-    
-    def more(self): # -> Literal[b'']:
-        ...
-    
-
-
-class output_producer:
-    """Acts like an output file; suitable for capturing sys.stdout"""
-    def __init__(self) -> None:
-        ...
-    
-    def write(self, data): # -> None:
-        ...
-    
-    def writeline(self, line): # -> None:
-        ...
-    
-    def writelines(self, lines): # -> None:
-        ...
-    
-    def flush(self): # -> None:
-        ...
-    
-    def softspace(self, *args): # -> None:
-        ...
-    
-    def more(self): # -> bytes | Literal['']:
-        ...
-    
-
-
-class composite_producer:
-    """combine a fifo of producers into one"""
-    def __init__(self, producers) -> None:
-        ...
-    
-    def more(self): # -> Literal[b'']:
-        ...
-    
-
-
-class globbing_producer:
-    """
-    'glob' the output from a producer into a particular buffer size.
-    helps reduce the number of calls to send().  [this appears to
-    gain about 30% performance on requests to a single channel]
-    """
-    def __init__(self, producer, buffer_size=...) -> None:
-        ...
-    
-    def more(self): # -> bytes:
-        ...
-    
-
-
-class hooked_producer:
-    """
-    A producer that will call <function> when it empties,.
-    with an argument of the number of bytes produced.  Useful
-    for logging/instrumentation purposes.
-    """
-    def __init__(self, producer, function) -> None:
-        ...
-    
-    def more(self): # -> Literal['']:
-        ...
-    
-
-
-class chunked_producer:
-    """A producer that implements the 'chunked' transfer coding for HTTP/1.1.
-    Here is a sample usage:
-            request['Transfer-Encoding'] = 'chunked'
-            request.push (
-                    producers.chunked_producer (your_producer)
-                    )
-            request.done()
-    """
-    def __init__(self, producer, footers=...) -> None:
-        ...
-    
-    def more(self): # -> bytes:
-        ...
-    
-
-
-class compressed_producer:
-    """
-    Compress another producer on-the-fly, using ZLIB
-    """
-    def __init__(self, producer, level=...) -> None:
-        ...
-    
-    def more(self): # -> bytes:
-        ...
-    
-
-
-class escaping_producer:
-    """A producer that escapes a sequence of characters"""
-    def __init__(self, producer, esc_from=..., esc_to=...) -> None:
-        ...
-    
-    def more(self):
-        ...
diff --git a/manager/typings/supervisor/medusa/util.pyi b/manager/typings/supervisor/medusa/util.pyi
deleted file mode 100644 (file)
index 9d54a35..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-def html_repr(object): # -> str:
-    ...
-
-def progressive_divide(n, parts): # -> list[Unknown]:
-    ...
-
-def split_by_units(n, units, dividers, format_string): # -> list[Unknown]:
-    ...
-
-def english_bytes(n): # -> list[str]:
-    ...
-
-def english_time(n): # -> list[str]:
-    ...
diff --git a/manager/typings/supervisor/medusa/xmlrpc_handler.pyi b/manager/typings/supervisor/medusa/xmlrpc_handler.pyi
deleted file mode 100644 (file)
index 52e60dc..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-VERSION = ...
-class xmlrpc_handler:
-    def match(self, request): # -> Literal[1, 0]:
-        ...
-    
-    def handle_request(self, request): # -> None:
-        ...
-    
-    def continue_request(self, data, request): # -> None:
-        ...
-    
-    def call(self, method, params): # -> NoReturn:
-        ...
-    
-
-
-class collector:
-    """gathers input for POST and PUT requests"""
-    def __init__(self, handler, request) -> None:
-        ...
-    
-    def collect_incoming_data(self, data): # -> None:
-        ...
-    
-    def found_terminator(self): # -> None:
-        ...
-    
-
-
-if __name__ == '__main__':
-    class rpc_demo(xmlrpc_handler):
-        def call(self, method, params): # -> Literal['Sure, that works']:
-            ...
-        
-    
-    
-    hs = ...
-    rpc = ...
diff --git a/manager/typings/supervisor/options.pyi b/manager/typings/supervisor/options.pyi
deleted file mode 100644 (file)
index 3363b96..0000000
+++ /dev/null
@@ -1,527 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import warnings
-
-from supervisor.compat import ConfigParser
-
-VERSION = ...
-def normalize_path(v):
-    ...
-
-class Dummy:
-    ...
-
-
-class Options:
-    stderr = ...
-    stdout = ...
-    exit = ...
-    warnings = warnings
-    uid = ...
-    progname = ...
-    configfile = ...
-    schemadir = ...
-    configroot = ...
-    here = ...
-    positional_args_allowed = ...
-    def __init__(self, require_configfile=...) -> None:
-        """Constructor.
-
-        Params:
-        require_configfile -- whether we should fail on no config file.
-        """
-        ...
-    
-    def default_configfile(self): # -> str | None:
-        """Return the name of the found config file or print usage/exit."""
-        ...
-    
-    def help(self, dummy): # -> None:
-        """Print a long help message to stdout and exit(0).
-
-        Occurrences of "%s" in are replaced by self.progname.
-        """
-        ...
-    
-    def usage(self, msg): # -> None:
-        """Print a brief error message to stderr and exit(2)."""
-        ...
-    
-    def add(self, name=..., confname=..., short=..., long=..., handler=..., default=..., required=..., flag=..., env=...): # -> None:
-        """Add information about a configuration option.
-
-        This can take several forms:
-
-        add(name, confname)
-            Configuration option 'confname' maps to attribute 'name'
-        add(name, None, short, long)
-            Command line option '-short' or '--long' maps to 'name'
-        add(None, None, short, long, handler)
-            Command line option calls handler
-        add(name, None, short, long, handler)
-            Assign handler return value to attribute 'name'
-
-        In addition, one of the following keyword arguments may be given:
-
-        default=...  -- if not None, the default value
-        required=... -- if nonempty, an error message if no value provided
-        flag=...     -- if not None, flag value for command line option
-        env=...      -- if not None, name of environment variable that
-                        overrides the configuration file or default
-        """
-        ...
-    
-    def realize(self, args=..., doc=..., progname=...): # -> None:
-        """Realize a configuration.
-
-        Optional arguments:
-
-        args     -- the command line arguments, less the program name
-                    (default is sys.argv[1:])
-
-        doc      -- usage message (default is __main__.__doc__)
-        """
-        ...
-    
-    def process_config(self, do_usage=...): # -> None:
-        """Process configuration data structure.
-
-        This includes reading config file if necessary, setting defaults etc.
-        """
-        ...
-    
-    def process_config_file(self, do_usage): # -> None:
-        ...
-    
-    def exists(self, path): # -> bool:
-        ...
-    
-    def open(self, fn, mode=...): # -> TextIOWrapper:
-        ...
-    
-    def get_plugins(self, parser, factory_key, section_prefix): # -> list[Unknown]:
-        ...
-    
-    def import_spec(self, spec): # -> Any:
-        ...
-    
-
-
-class ServerOptions(Options):
-    user = ...
-    sockchown = ...
-    sockchmod = ...
-    logfile = ...
-    loglevel = ...
-    pidfile = ...
-    passwdfile = ...
-    nodaemon = ...
-    silent = ...
-    httpservers = ...
-    unlink_pidfile = ...
-    unlink_socketfiles = ...
-    mood = ...
-    def __init__(self) -> None:
-        ...
-    
-    def version(self, dummy): # -> None:
-        """Print version to stdout and exit(0).
-        """
-        ...
-    
-    def getLogger(self, *args, **kwargs): # -> Logger:
-        ...
-    
-    def default_configfile(self): # -> str | None:
-        ...
-    
-    def realize(self, *arg, **kw): # -> None:
-        ...
-    
-    def process_config(self, do_usage=...): # -> None:
-        ...
-    
-    def read_config(self, fp):
-        ...
-    
-    def process_groups_from_parser(self, parser): # -> list[Unknown]:
-        ...
-    
-    def parse_fcgi_socket(self, sock, proc_uid, socket_owner, socket_mode, socket_backlog): # -> UnixStreamSocketConfig | InetStreamSocketConfig:
-        ...
-    
-    def processes_from_section(self, parser, section, group_name, klass=...): # -> list[Unknown]:
-        ...
-    
-    def server_configs_from_parser(self, parser): # -> list[Unknown]:
-        ...
-    
-    def daemonize(self): # -> None:
-        ...
-    
-    def write_pidfile(self): # -> None:
-        ...
-    
-    def cleanup(self): # -> None:
-        ...
-    
-    def close_httpservers(self): # -> None:
-        ...
-    
-    def close_logger(self): # -> None:
-        ...
-    
-    def setsignals(self): # -> None:
-        ...
-    
-    def get_signal(self): # -> None:
-        ...
-    
-    def openhttpservers(self, supervisord): # -> None:
-        ...
-    
-    def get_autochildlog_name(self, name, identifier, channel):
-        ...
-    
-    def clear_autochildlogdir(self): # -> None:
-        ...
-    
-    def get_socket_map(self): # -> dict[Unknown, Unknown]:
-        ...
-    
-    def cleanup_fds(self): # -> None:
-        ...
-    
-    def kill(self, pid, signal): # -> None:
-        ...
-    
-    def waitpid(self): # -> tuple[int | None, int | None]:
-        ...
-    
-    def drop_privileges(self, user): # -> str | None:
-        """Drop privileges to become the specified user, which may be a
-        username or uid.  Called for supervisord startup and when spawning
-        subprocesses.  Returns None on success or a string error message if
-        privileges could not be dropped."""
-        ...
-    
-    def set_uid_or_exit(self): # -> None:
-        """Set the uid of the supervisord process.  Called during supervisord
-        startup only.  No return value.  Exits the process via usage() if
-        privileges could not be dropped."""
-        ...
-    
-    def set_rlimits_or_exit(self): # -> None:
-        """Set the rlimits of the supervisord process.  Called during
-        supervisord startup only.  No return value.  Exits the process via
-        usage() if any rlimits could not be set."""
-        ...
-    
-    def make_logger(self): # -> None:
-        ...
-    
-    def make_http_servers(self, supervisord): # -> list[Unknown]:
-        ...
-    
-    def close_fd(self, fd): # -> None:
-        ...
-    
-    def fork(self): # -> int:
-        ...
-    
-    def dup2(self, frm, to): # -> None:
-        ...
-    
-    def setpgrp(self): # -> None:
-        ...
-    
-    def stat(self, filename): # -> stat_result:
-        ...
-    
-    def write(self, fd, data): # -> int:
-        ...
-    
-    def execve(self, filename, argv, env): # -> NoReturn:
-        ...
-    
-    def mktempfile(self, suffix, prefix, dir):
-        ...
-    
-    def remove(self, path): # -> None:
-        ...
-    
-    def setumask(self, mask): # -> None:
-        ...
-    
-    def get_path(self): # -> List[str]:
-        """Return a list corresponding to $PATH, or a default."""
-        ...
-    
-    def get_pid(self): # -> int:
-        ...
-    
-    def check_execv_args(self, filename, argv, st): # -> None:
-        ...
-    
-    def reopenlogs(self): # -> None:
-        ...
-    
-    def readfd(self, fd): # -> bytes:
-        ...
-    
-    def chdir(self, dir): # -> None:
-        ...
-    
-    def make_pipes(self, stderr=...): # -> dict[str, None]:
-        """ Create pipes for parent to child stdin/stdout/stderr
-        communications.  Open fd in non-blocking mode so we can read them
-        in the mainloop without blocking.  If stderr is False, don't
-        create a pipe for stderr. """
-        ...
-    
-    def close_parent_pipes(self, pipes): # -> None:
-        ...
-    
-    def close_child_pipes(self, pipes): # -> None:
-        ...
-    
-
-
-class ClientOptions(Options):
-    positional_args_allowed = ...
-    interactive = ...
-    prompt = ...
-    serverurl = ...
-    username = ...
-    password = ...
-    history_file = ...
-    def __init__(self) -> None:
-        ...
-    
-    def realize(self, *arg, **kw): # -> None:
-        ...
-    
-    def read_config(self, fp):
-        ...
-    
-    def getServerProxy(self):
-        ...
-    
-
-
-_marker = ...
-class UnhosedConfigParser(ConfigParser.RawConfigParser):
-    mysection = ...
-    def __init__(self, *args, **kwargs) -> None:
-        ...
-    
-    def read_string(self, string, source=...): # -> None:
-        '''Parse configuration data from a string.  This is intended
-        to be used in tests only.  We add this method for Py 2/3 compat.'''
-        ...
-    
-    def read(self, filenames, **kwargs): # -> list[Unknown]:
-        '''Attempt to read and parse a list of filenames, returning a list
-        of filenames which were successfully parsed.  This is a method of
-        RawConfigParser that is overridden to build self.section_to_file,
-        which is a mapping of section names to the files they came from.
-        '''
-        ...
-    
-    def saneget(self, section, option, default=..., do_expand=..., expansions=...): # -> str:
-        ...
-    
-    def getdefault(self, option, default=..., expansions=..., **kwargs): # -> str:
-        ...
-    
-    def expand_here(self, here): # -> None:
-        ...
-    
-
-
-class Config:
-    def __ne__(self, other) -> bool:
-        ...
-    
-    def __lt__(self, other) -> bool:
-        ...
-    
-    def __le__(self, other) -> bool:
-        ...
-    
-    def __gt__(self, other) -> bool:
-        ...
-    
-    def __ge__(self, other) -> bool:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-
-
-class ProcessConfig(Config):
-    req_param_names = ...
-    optional_param_names = ...
-    def __init__(self, options, **params) -> None:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def get_path(self):
-        '''Return a list corresponding to $PATH that is configured to be set
-        in the process environment, or the system default.'''
-        ...
-    
-    def create_autochildlogs(self): # -> None:
-        ...
-    
-    def make_process(self, group=...): # -> Subprocess:
-        ...
-    
-    def make_dispatchers(self, proc): # -> tuple[dict[Unknown, Unknown], Unknown]:
-        ...
-    
-
-
-class EventListenerConfig(ProcessConfig):
-    def make_dispatchers(self, proc): # -> tuple[dict[Unknown, Unknown], Unknown]:
-        ...
-    
-
-
-class FastCGIProcessConfig(ProcessConfig):
-    def make_process(self, group=...): # -> FastCGISubprocess:
-        ...
-    
-    def make_dispatchers(self, proc): # -> tuple[dict[Unknown, Unknown], Unknown]:
-        ...
-    
-
-
-class ProcessGroupConfig(Config):
-    def __init__(self, options, name, priority, process_configs) -> None:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def after_setuid(self): # -> None:
-        ...
-    
-    def make_group(self): # -> ProcessGroup:
-        ...
-    
-
-
-class EventListenerPoolConfig(Config):
-    def __init__(self, options, name, priority, process_configs, buffer_size, pool_events, result_handler) -> None:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def after_setuid(self): # -> None:
-        ...
-    
-    def make_group(self): # -> EventListenerPool:
-        ...
-    
-
-
-class FastCGIGroupConfig(ProcessGroupConfig):
-    def __init__(self, options, name, priority, process_configs, socket_config) -> None:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def make_group(self): # -> FastCGIProcessGroup:
-        ...
-    
-
-
-def readFile(filename, offset, length): # -> bytes:
-    """ Read length bytes from the file named by filename starting at
-    offset """
-    ...
-
-def tailFile(filename, offset, length): # -> list[str | int | bool] | list[str | Unknown | bool]:
-    """
-    Read length bytes from the file named by filename starting at
-    offset, automatically increasing offset and setting overflow
-    flag if log size has grown beyond (offset + length).  If length
-    bytes are not available, as many bytes as are available are returned.
-    """
-    ...
-
-def decode_wait_status(sts): # -> tuple[int, str] | tuple[Literal[-1], Unknown | str] | tuple[Literal[-1], Unknown]:
-    """Decode the status returned by wait() or waitpid().
-
-    Return a tuple (exitstatus, message) where exitstatus is the exit
-    status, or -1 if the process was killed by a signal; and message
-    is a message telling what happened.  It is the caller's
-    responsibility to display the message.
-    """
-    ...
-
-_signames = ...
-def signame(sig):
-    """Return a symbolic name for a signal.
-
-    Return "signal NNN" if there is no corresponding SIG name in the
-    signal module.
-    """
-    ...
-
-class SignalReceiver:
-    def __init__(self) -> None:
-        ...
-    
-    def receive(self, sig, frame): # -> None:
-        ...
-    
-    def get_signal(self): # -> None:
-        ...
-    
-
-
-def expand(s, expansions, name):
-    ...
-
-def make_namespec(group_name, process_name): # -> str:
-    ...
-
-def split_namespec(namespec): # -> tuple[Unknown, Unknown | None]:
-    ...
-
-class ProcessException(Exception):
-    """ Specialized exceptions used when attempting to start a process """
-    ...
-
-
-class BadCommand(ProcessException):
-    """ Indicates the command could not be parsed properly. """
-    ...
-
-
-class NotExecutable(ProcessException):
-    """ Indicates that the filespec cannot be executed because its path
-    resolves to a file which is not executable, or which is a directory. """
-    ...
-
-
-class NotFound(ProcessException):
-    """ Indicates that the filespec cannot be executed because it could not
-    be found """
-    ...
-
-
-class NoPermission(ProcessException):
-    """ Indicates that the file cannot be executed because the supervisor
-    process does not possess the appropriate UNIX filesystem permission
-    to execute the file. """
-    ...
diff --git a/manager/typings/supervisor/pidproxy.pyi b/manager/typings/supervisor/pidproxy.pyi
deleted file mode 100644 (file)
index 21a4d3f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-""" An executable which proxies for a subprocess; upon a signal, it sends that
-signal to the process identified by a pidfile. """
-class PidProxy:
-    pid = ...
-    def __init__(self, args) -> None:
-        ...
-    
-    def go(self): # -> None:
-        ...
-    
-    def usage(self): # -> None:
-        ...
-    
-    def setsignals(self): # -> None:
-        ...
-    
-    def reap(self, sig, frame): # -> None:
-        ...
-    
-    def passtochild(self, sig, frame): # -> None:
-        ...
-    
-
-
-def main(): # -> None:
-    ...
-
-if __name__ == '__main__':
-    ...
diff --git a/manager/typings/supervisor/poller.pyi b/manager/typings/supervisor/poller.pyi
deleted file mode 100644 (file)
index f4b0d99..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-class BasePoller:
-    def __init__(self, options) -> None:
-        ...
-    
-    def initialize(self): # -> None:
-        ...
-    
-    def register_readable(self, fd):
-        ...
-    
-    def register_writable(self, fd):
-        ...
-    
-    def unregister_readable(self, fd):
-        ...
-    
-    def unregister_writable(self, fd):
-        ...
-    
-    def poll(self, timeout):
-        ...
-    
-    def before_daemonize(self): # -> None:
-        ...
-    
-    def after_daemonize(self): # -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-
-
-class SelectPoller(BasePoller):
-    def initialize(self): # -> None:
-        ...
-    
-    def register_readable(self, fd): # -> None:
-        ...
-    
-    def register_writable(self, fd): # -> None:
-        ...
-    
-    def unregister_readable(self, fd): # -> None:
-        ...
-    
-    def unregister_writable(self, fd): # -> None:
-        ...
-    
-    def unregister_all(self): # -> None:
-        ...
-    
-    def poll(self, timeout): # -> tuple[list[Unknown], list[Unknown]] | tuple[List[Any], List[Any]]:
-        ...
-    
-
-
-class PollPoller(BasePoller):
-    def initialize(self): # -> None:
-        ...
-    
-    def register_readable(self, fd): # -> None:
-        ...
-    
-    def register_writable(self, fd): # -> None:
-        ...
-    
-    def unregister_readable(self, fd): # -> None:
-        ...
-    
-    def unregister_writable(self, fd): # -> None:
-        ...
-    
-    def poll(self, timeout): # -> tuple[list[Unknown], list[Unknown]]:
-        ...
-    
-
-
-class KQueuePoller(BasePoller):
-    '''
-    Wrapper for select.kqueue()/kevent()
-    '''
-    max_events = ...
-    def initialize(self): # -> None:
-        ...
-    
-    def register_readable(self, fd): # -> None:
-        ...
-    
-    def register_writable(self, fd): # -> None:
-        ...
-    
-    def unregister_readable(self, fd): # -> None:
-        ...
-    
-    def unregister_writable(self, fd): # -> None:
-        ...
-    
-    def poll(self, timeout): # -> tuple[list[Unknown], list[Unknown]]:
-        ...
-    
-    def before_daemonize(self): # -> None:
-        ...
-    
-    def after_daemonize(self): # -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-
-
-def implements_poll(): # -> bool:
-    ...
-
-def implements_kqueue(): # -> bool:
-    ...
-
-if implements_kqueue():
-    Poller = ...
-else:
-    Poller = ...
-    Poller = ...
diff --git a/manager/typings/supervisor/process.pyi b/manager/typings/supervisor/process.pyi
deleted file mode 100644 (file)
index df784aa..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import functools
-
-@functools.total_ordering
-class Subprocess:
-    """A class to manage a subprocess."""
-    pid = ...
-    config = ...
-    state = ...
-    listener_state = ...
-    event = ...
-    laststart = ...
-    laststop = ...
-    laststopreport = ...
-    delay = ...
-    administrative_stop = ...
-    system_stop = ...
-    killing = ...
-    backoff = ...
-    dispatchers = ...
-    pipes = ...
-    exitstatus = ...
-    spawnerr = ...
-    group = ...
-    def __init__(self, config) -> None:
-        """Constructor.
-
-        Argument is a ProcessConfig instance.
-        """
-        ...
-    
-    def removelogs(self): # -> None:
-        ...
-    
-    def reopenlogs(self): # -> None:
-        ...
-    
-    def drain(self): # -> None:
-        ...
-    
-    def write(self, chars): # -> None:
-        ...
-    
-    def get_execv_args(self): # -> tuple[str | None, List[str]]:
-        """Internal: turn a program name into a file name, using $PATH,
-        make sure it exists / is executable, raising a ProcessException
-        if not """
-        ...
-    
-    event_map = ...
-    def change_state(self, new_state, expected=...): # -> Literal[False] | None:
-        ...
-    
-    def record_spawnerr(self, msg): # -> None:
-        ...
-    
-    def spawn(self): # -> None:
-        """Start the subprocess.  It must not be running already.
-
-        Return the process id.  If the fork() call fails, return None.
-        """
-        ...
-    
-    def stop(self): # -> str | None:
-        """ Administrative stop """
-        ...
-    
-    def stop_report(self): # -> None:
-        """ Log a 'waiting for x to stop' message with throttling. """
-        ...
-    
-    def give_up(self): # -> None:
-        ...
-    
-    def kill(self, sig): # -> str | None:
-        """Send a signal to the subprocess with the intention to kill
-        it (to make it exit).  This may or may not actually kill it.
-
-        Return None if the signal was sent, or an error message string
-        if an error occurred or if the subprocess is not running.
-        """
-        ...
-    
-    def signal(self, sig): # -> str | None:
-        """Send a signal to the subprocess, without intending to kill it.
-
-        Return None if the signal was sent, or an error message string
-        if an error occurred or if the subprocess is not running.
-        """
-        ...
-    
-    def finish(self, pid, sts): # -> None:
-        """ The process was reaped and we need to report and manage its state
-        """
-        ...
-    
-    def set_uid(self): # -> None:
-        ...
-    
-    def __lt__(self, other) -> bool:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def get_state(self): # -> int | None:
-        ...
-    
-    def transition(self): # -> None:
-        ...
-    
-
-
-class FastCGISubprocess(Subprocess):
-    """Extends Subprocess class to handle FastCGI subprocesses"""
-    def __init__(self, config) -> None:
-        ...
-    
-    def before_spawn(self): # -> None:
-        """
-        The FastCGI socket needs to be created by the parent before we fork
-        """
-        ...
-    
-    def spawn(self): # -> None:
-        """
-        Overrides Subprocess.spawn() so we can hook in before it happens
-        """
-        ...
-    
-    def after_finish(self): # -> None:
-        """
-        Releases reference to FastCGI socket when process is reaped
-        """
-        ...
-    
-    def finish(self, pid, sts): # -> None:
-        """
-        Overrides Subprocess.finish() so we can hook in after it happens
-        """
-        ...
-    
-
-
-@functools.total_ordering
-class ProcessGroupBase:
-    def __init__(self, config) -> None:
-        ...
-    
-    def __lt__(self, other) -> bool:
-        ...
-    
-    def __eq__(self, other) -> bool:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def removelogs(self): # -> None:
-        ...
-    
-    def reopenlogs(self): # -> None:
-        ...
-    
-    def stop_all(self): # -> None:
-        ...
-    
-    def get_unstopped_processes(self): # -> list[Unknown]:
-        """ Processes which aren't in a state that is considered 'stopped' """
-        ...
-    
-    def get_dispatchers(self): # -> dict[Unknown, Unknown]:
-        ...
-    
-    def before_remove(self): # -> None:
-        ...
-    
-
-
-class ProcessGroup(ProcessGroupBase):
-    def transition(self): # -> None:
-        ...
-    
-
-
-class FastCGIProcessGroup(ProcessGroup):
-    def __init__(self, config, **kwargs) -> None:
-        ...
-    
-
-
-class EventListenerPool(ProcessGroupBase):
-    def __init__(self, config) -> None:
-        ...
-    
-    def handle_rejected(self, event): # -> None:
-        ...
-    
-    def transition(self): # -> None:
-        ...
-    
-    def before_remove(self): # -> None:
-        ...
-    
-    def dispatch(self): # -> None:
-        ...
-    
-
-
-class GlobalSerial:
-    def __init__(self) -> None:
-        ...
-    
-
-
-GlobalSerial = ...
-def new_serial(inst):
-    ...
diff --git a/manager/typings/supervisor/rpcinterface.pyi b/manager/typings/supervisor/rpcinterface.pyi
deleted file mode 100644 (file)
index df40334..0000000
+++ /dev/null
@@ -1,336 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-API_VERSION = ...
-class SupervisorNamespaceRPCInterface:
-    def __init__(self, supervisord) -> None:
-        ...
-    
-    def getAPIVersion(self): # -> Literal['3.0']:
-        """ Return the version of the RPC API used by supervisord
-
-        @return string version version id
-        """
-        ...
-    
-    getVersion = ...
-    def getSupervisorVersion(self): # -> str:
-        """ Return the version of the supervisor package in use by supervisord
-
-        @return string version version id
-        """
-        ...
-    
-    def getIdentification(self):
-        """ Return identifying string of supervisord
-
-        @return string identifier identifying string
-        """
-        ...
-    
-    def getState(self): # -> dict[str, Unknown | None]:
-        """ Return current state of supervisord as a struct
-
-        @return struct A struct with keys int statecode, string statename
-        """
-        ...
-    
-    def getPID(self):
-        """ Return the PID of supervisord
-
-        @return int PID
-        """
-        ...
-    
-    def readLog(self, offset, length): # -> str:
-        """ Read length bytes from the main log starting at offset
-
-        @param int offset         offset to start reading from.
-        @param int length         number of bytes to read from the log.
-        @return string result     Bytes of log
-        """
-        ...
-    
-    readMainLog = ...
-    def clearLog(self): # -> Literal[True]:
-        """ Clear the main log.
-
-        @return boolean result always returns True unless error
-        """
-        ...
-    
-    def shutdown(self): # -> Literal[True]:
-        """ Shut down the supervisor process
-
-        @return boolean result always returns True unless error
-        """
-        ...
-    
-    def restart(self): # -> Literal[True]:
-        """ Restart the supervisor process
-
-        @return boolean result  always return True unless error
-        """
-        ...
-    
-    def reloadConfig(self): # -> list[list[list[Unknown]]]:
-        """
-        Reload the configuration.
-
-        The result contains three arrays containing names of process
-        groups:
-
-        * `added` gives the process groups that have been added
-        * `changed` gives the process groups whose contents have
-          changed
-        * `removed` gives the process groups that are no longer
-          in the configuration
-
-        @return array result  [[added, changed, removed]]
-
-        """
-        ...
-    
-    def addProcessGroup(self, name): # -> Literal[True]:
-        """ Update the config for a running process from config file.
-
-        @param string name         name of process group to add
-        @return boolean result     true if successful
-        """
-        ...
-    
-    def removeProcessGroup(self, name): # -> Literal[True]:
-        """ Remove a stopped process from the active configuration.
-
-        @param string name         name of process group to remove
-        @return boolean result     Indicates whether the removal was successful
-        """
-        ...
-    
-    def startProcess(self, name, wait=...): # -> () -> (Type[NOT_DONE_YET] | Literal[True]) | Literal[True]:
-        """ Start a process
-
-        @param string name Process name (or ``group:name``, or ``group:*``)
-        @param boolean wait Wait for process to be fully started
-        @return boolean result     Always true unless error
-
-        """
-        ...
-    
-    def startProcessGroup(self, name, wait=...): # -> (processes: Unknown = processes, predicate: Unknown = predicate, func: Unknown = func, extra_kwargs: Unknown = extra_kwargs, callbacks: Unknown = callbacks, results: Unknown = results) -> (Unknown | Type[NOT_DONE_YET]):
-        """ Start all processes in the group named 'name'
-
-        @param string name     The group name
-        @param boolean wait    Wait for each process to be fully started
-        @return array result   An array of process status info structs
-        """
-        ...
-    
-    def startAllProcesses(self, wait=...): # -> (processes: Unknown = processes, predicate: Unknown = predicate, func: Unknown = func, extra_kwargs: Unknown = extra_kwargs, callbacks: Unknown = callbacks, results: Unknown = results) -> (Unknown | Type[NOT_DONE_YET]):
-        """ Start all processes listed in the configuration file
-
-        @param boolean wait    Wait for each process to be fully started
-        @return array result   An array of process status info structs
-        """
-        ...
-    
-    def stopProcess(self, name, wait=...): # -> () -> (Type[NOT_DONE_YET] | Literal[True]) | Literal[True]:
-        """ Stop a process named by name
-
-        @param string name  The name of the process to stop (or 'group:name')
-        @param boolean wait        Wait for the process to be fully stopped
-        @return boolean result     Always return True unless error
-        """
-        ...
-    
-    def stopProcessGroup(self, name, wait=...): # -> (processes: Unknown = processes, predicate: Unknown = predicate, func: Unknown = func, extra_kwargs: Unknown = extra_kwargs, callbacks: Unknown = callbacks, results: Unknown = results) -> (Unknown | Type[NOT_DONE_YET]):
-        """ Stop all processes in the process group named 'name'
-
-        @param string name     The group name
-        @param boolean wait    Wait for each process to be fully stopped
-        @return array result   An array of process status info structs
-        """
-        ...
-    
-    def stopAllProcesses(self, wait=...): # -> (processes: Unknown = processes, predicate: Unknown = predicate, func: Unknown = func, extra_kwargs: Unknown = extra_kwargs, callbacks: Unknown = callbacks, results: Unknown = results) -> (Unknown | Type[NOT_DONE_YET]):
-        """ Stop all processes in the process list
-
-        @param  boolean wait   Wait for each process to be fully stopped
-        @return array result   An array of process status info structs
-        """
-        ...
-    
-    def signalProcess(self, name, signal): # -> Literal[True]:
-        """ Send an arbitrary UNIX signal to the process named by name
-
-        @param string name    Name of the process to signal (or 'group:name')
-        @param string signal  Signal to send, as name ('HUP') or number ('1')
-        @return boolean
-        """
-        ...
-    
-    def signalProcessGroup(self, name, signal): # -> Type[NOT_DONE_YET] | list[Unknown]:
-        """ Send a signal to all processes in the group named 'name'
-
-        @param string name    The group name
-        @param string signal  Signal to send, as name ('HUP') or number ('1')
-        @return array
-        """
-        ...
-    
-    def signalAllProcesses(self, signal): # -> Type[NOT_DONE_YET] | list[Unknown]:
-        """ Send a signal to all processes in the process list
-
-        @param string signal  Signal to send, as name ('HUP') or number ('1')
-        @return array         An array of process status info structs
-        """
-        ...
-    
-    def getAllConfigInfo(self): # -> list[Unknown]:
-        """ Get info about all available process configurations. Each struct
-        represents a single process (i.e. groups get flattened).
-
-        @return array result  An array of process config info structs
-        """
-        ...
-    
-    def getProcessInfo(self, name): # -> dict[str, Unknown | int | str | None]:
-        """ Get info about a process named name
-
-        @param string name The name of the process (or 'group:name')
-        @return struct result     A structure containing data about the process
-        """
-        ...
-    
-    def getAllProcessInfo(self): # -> list[Unknown]:
-        """ Get info about all processes
-
-        @return array result  An array of process status results
-        """
-        ...
-    
-    def readProcessStdoutLog(self, name, offset, length): # -> str:
-        """ Read length bytes from name's stdout log starting at offset
-
-        @param string name        the name of the process (or 'group:name')
-        @param int offset         offset to start reading from.
-        @param int length         number of bytes to read from the log.
-        @return string result     Bytes of log
-        """
-        ...
-    
-    readProcessLog = ...
-    def readProcessStderrLog(self, name, offset, length): # -> str:
-        """ Read length bytes from name's stderr log starting at offset
-
-        @param string name        the name of the process (or 'group:name')
-        @param int offset         offset to start reading from.
-        @param int length         number of bytes to read from the log.
-        @return string result     Bytes of log
-        """
-        ...
-    
-    def tailProcessStdoutLog(self, name, offset, length): # -> list[str | int | bool]:
-        """
-        Provides a more efficient way to tail the (stdout) log than
-        readProcessStdoutLog().  Use readProcessStdoutLog() to read
-        chunks and tailProcessStdoutLog() to tail.
-
-        Requests (length) bytes from the (name)'s log, starting at
-        (offset).  If the total log size is greater than (offset +
-        length), the overflow flag is set and the (offset) is
-        automatically increased to position the buffer at the end of
-        the log.  If less than (length) bytes are available, the
-        maximum number of available bytes will be returned.  (offset)
-        returned is always the last offset in the log +1.
-
-        @param string name         the name of the process (or 'group:name')
-        @param int offset          offset to start reading from
-        @param int length          maximum number of bytes to return
-        @return array result       [string bytes, int offset, bool overflow]
-        """
-        ...
-    
-    tailProcessLog = ...
-    def tailProcessStderrLog(self, name, offset, length): # -> list[str | int | bool]:
-        """
-        Provides a more efficient way to tail the (stderr) log than
-        readProcessStderrLog().  Use readProcessStderrLog() to read
-        chunks and tailProcessStderrLog() to tail.
-
-        Requests (length) bytes from the (name)'s log, starting at
-        (offset).  If the total log size is greater than (offset +
-        length), the overflow flag is set and the (offset) is
-        automatically increased to position the buffer at the end of
-        the log.  If less than (length) bytes are available, the
-        maximum number of available bytes will be returned.  (offset)
-        returned is always the last offset in the log +1.
-
-        @param string name         the name of the process (or 'group:name')
-        @param int offset          offset to start reading from
-        @param int length          maximum number of bytes to return
-        @return array result       [string bytes, int offset, bool overflow]
-        """
-        ...
-    
-    def clearProcessLogs(self, name): # -> Literal[True]:
-        """ Clear the stdout and stderr logs for the named process and
-        reopen them.
-
-        @param string name   The name of the process (or 'group:name')
-        @return boolean result      Always True unless error
-        """
-        ...
-    
-    clearProcessLog = ...
-    def clearAllProcessLogs(self): # -> () -> (Type[NOT_DONE_YET] | list[Unknown]):
-        """ Clear all process log files
-
-        @return array result   An array of process status info structs
-        """
-        ...
-    
-    def sendProcessStdin(self, name, chars): # -> Literal[True]:
-        """ Send a string of chars to the stdin of the process name.
-        If non-7-bit data is sent (unicode), it is encoded to utf-8
-        before being sent to the process' stdin.  If chars is not a
-        string or is not unicode, raise INCORRECT_PARAMETERS.  If the
-        process is not running, raise NOT_RUNNING.  If the process'
-        stdin cannot accept input (e.g. it was closed by the child
-        process), raise NO_FILE.
-
-        @param string name        The process name to send to (or 'group:name')
-        @param string chars       The character data to send to the process
-        @return boolean result    Always return True unless error
-        """
-        ...
-    
-    def sendRemoteCommEvent(self, type, data): # -> Literal[True]:
-        """ Send an event that will be received by event listener
-        subprocesses subscribing to the RemoteCommunicationEvent.
-
-        @param  string  type  String for the "type" key in the event header
-        @param  string  data  Data for the event body
-        @return boolean       Always return True unless error
-        """
-        ...
-    
-
-
-def make_allfunc(processes, predicate, func, **extra_kwargs): # -> (processes: Unknown = processes, predicate: Unknown = predicate, func: Unknown = func, extra_kwargs: Unknown = extra_kwargs, callbacks: Unknown = callbacks, results: Unknown = results) -> (Unknown | Type[NOT_DONE_YET]):
-    """ Return a closure representing a function that calls a
-    function for every process, and returns a result """
-    ...
-
-def isRunning(process): # -> bool:
-    ...
-
-def isNotRunning(process): # -> bool:
-    ...
-
-def isSignallable(process): # -> Literal[True] | None:
-    ...
-
-def make_main_rpcinterface(supervisord): # -> SupervisorNamespaceRPCInterface:
-    ...
diff --git a/manager/typings/supervisor/socket_manager.pyi b/manager/typings/supervisor/socket_manager.pyi
deleted file mode 100644 (file)
index 05b26f0..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-class Proxy:
-    """ Class for wrapping a shared resource object and getting
-        notified when it's deleted
-    """
-    def __init__(self, object, **kwargs) -> None:
-        ...
-    
-    def __del__(self): # -> None:
-        ...
-    
-    def __getattr__(self, name): # -> Any:
-        ...
-    
-
-
-class ReferenceCounter:
-    """ Class for tracking references to a shared resource
-    """
-    def __init__(self, **kwargs) -> None:
-        ...
-    
-    def get_count(self): # -> int:
-        ...
-    
-    def increment(self): # -> None:
-        ...
-    
-    def decrement(self): # -> None:
-        ...
-    
-
-
-class SocketManager:
-    """ Class for managing sockets in servers that create/bind/listen
-        before forking multiple child processes to accept()
-        Sockets are managed at the process group level and referenced counted
-        at the process level b/c that's really the only place to hook in
-    """
-    def __init__(self, socket_config, **kwargs) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def config(self): # -> Unknown:
-        ...
-    
-    def is_prepared(self): # -> bool:
-        ...
-    
-    def get_socket(self): # -> Proxy:
-        ...
-    
-    def get_socket_ref_count(self): # -> int:
-        ...
diff --git a/manager/typings/supervisor/states.pyi b/manager/typings/supervisor/states.pyi
deleted file mode 100644 (file)
index d0a21f5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-class ProcessStates:
-    STOPPED = ...
-    STARTING = ...
-    RUNNING = ...
-    BACKOFF = ...
-    STOPPING = ...
-    EXITED = ...
-    FATAL = ...
-    UNKNOWN = ...
-
-
-STOPPED_STATES = ...
-RUNNING_STATES = ...
-SIGNALLABLE_STATES = ...
-def getProcessStateDescription(code): # -> None:
-    ...
-
-class SupervisorStates:
-    FATAL = ...
-    RUNNING = ...
-    RESTARTING = ...
-    SHUTDOWN = ...
-
-
-def getSupervisorStateDescription(code): # -> None:
-    ...
-
-class EventListenerStates:
-    READY = ...
-    BUSY = ...
-    ACKNOWLEDGED = ...
-    UNKNOWN = ...
-
-
-def getEventListenerStateDescription(code): # -> None:
-    ...
-
-_process_states_by_code = ...
-_supervisor_states_by_code = ...
-_eventlistener_states_by_code = ...
diff --git a/manager/typings/supervisor/supervisorctl.pyi b/manager/typings/supervisor/supervisorctl.pyi
deleted file mode 100644 (file)
index 3034638..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-import cmd
-import threading
-
-"""supervisorctl -- control applications run by supervisord from the cmd line.
-
-Usage: %s [options] [action [arguments]]
-
-Options:
--c/--configuration FILENAME -- configuration file path (searches if not given)
--h/--help -- print usage message and exit
--i/--interactive -- start an interactive shell after executing commands
--s/--serverurl URL -- URL on which supervisord server is listening
-     (default "http://localhost:9001").
--u/--username USERNAME -- username to use for authentication with server
--p/--password PASSWORD -- password to use for authentication with server
--r/--history-file -- keep a readline history (if readline is available)
-
-action [arguments] -- see below
-
-Actions are commands like "tail" or "stop".  If -i is specified or no action is
-specified on the command line, a "shell" interpreting actions typed
-interactively is started.  Use the action "help" to find out about available
-actions.
-"""
-class LSBInitExitStatuses:
-    SUCCESS = ...
-    GENERIC = ...
-    INVALID_ARGS = ...
-    UNIMPLEMENTED_FEATURE = ...
-    INSUFFICIENT_PRIVILEGES = ...
-    NOT_INSTALLED = ...
-    NOT_RUNNING = ...
-
-
-class LSBStatusExitStatuses:
-    NOT_RUNNING = ...
-    UNKNOWN = ...
-
-
-DEAD_PROGRAM_FAULTS = ...
-class fgthread(threading.Thread):
-    """ A subclass of threading.Thread, with a kill() method.
-    To be used for foreground output/error streaming.
-    http://mail.python.org/pipermail/python-list/2004-May/260937.html
-    """
-    def __init__(self, program, ctl) -> None:
-        ...
-    
-    def start(self): # -> None:
-        ...
-    
-    def run(self): # -> None:
-        ...
-    
-    def globaltrace(self, frame, why, arg): # -> (frame: Unknown, why: Unknown, arg: Unknown) -> (frame: Unknown, why: Unknown, arg: Unknown) -> Unknown | None:
-        ...
-    
-    def localtrace(self, frame, why, arg): # -> (frame: Unknown, why: Unknown, arg: Unknown) -> Unknown:
-        ...
-    
-    def kill(self): # -> None:
-        ...
-    
-
-
-class Controller(cmd.Cmd):
-    def __init__(self, options, completekey=..., stdin=..., stdout=...) -> None:
-        ...
-    
-    def emptyline(self): # -> None:
-        ...
-    
-    def default(self, line): # -> None:
-        ...
-    
-    def exec_cmdloop(self, args, options): # -> None:
-        ...
-    
-    def set_exitstatus_from_xmlrpc_fault(self, faultcode, ignored_faultcode=...): # -> None:
-        ...
-    
-    def onecmd(self, line): # -> Any | None:
-        """ Override the onecmd method to:
-          - catch and print all exceptions
-          - call 'do_foo' on plugins rather than ourself
-        """
-        ...
-    
-    def output(self, message): # -> None:
-        ...
-    
-    def get_supervisor(self): # -> Any:
-        ...
-    
-    def get_server_proxy(self, namespace=...): # -> Any:
-        ...
-    
-    def upcheck(self): # -> bool:
-        ...
-    
-    def complete(self, text, state, line=...): # -> str | None:
-        """Completer function that Cmd will register with readline using
-        readline.set_completer().  This function will be called by readline
-        as complete(text, state) where text is a fragment to complete and
-        state is an integer (0..n).  Each call returns a string with a new
-        completion.  When no more are available, None is returned."""
-        ...
-    
-    def do_help(self, arg): # -> None:
-        ...
-    
-    def help_help(self): # -> None:
-        ...
-    
-    def do_EOF(self, arg): # -> Literal[1]:
-        ...
-    
-    def help_EOF(self): # -> None:
-        ...
-    
-
-
-def get_names(inst): # -> List[Unknown]:
-    ...
-
-class ControllerPluginBase:
-    name = ...
-    def __init__(self, controller) -> None:
-        ...
-    
-    doc_header = ...
-    def do_help(self, arg): # -> None:
-        ...
-    
-
-
-def not_all_langs(): # -> str | None:
-    ...
-
-def check_encoding(ctl): # -> None:
-    ...
-
-class DefaultControllerPlugin(ControllerPluginBase):
-    name = ...
-    listener = ...
-    def do_tail(self, arg): # -> None:
-        ...
-    
-    def help_tail(self): # -> None:
-        ...
-    
-    def do_maintail(self, arg): # -> None:
-        ...
-    
-    def help_maintail(self): # -> None:
-        ...
-    
-    def do_quit(self, arg):
-        ...
-    
-    def help_quit(self): # -> None:
-        ...
-    
-    do_exit = ...
-    def help_exit(self): # -> None:
-        ...
-    
-    def do_status(self, arg): # -> None:
-        ...
-    
-    def help_status(self): # -> None:
-        ...
-    
-    def do_pid(self, arg): # -> None:
-        ...
-    
-    def help_pid(self): # -> None:
-        ...
-    
-    def do_start(self, arg): # -> None:
-        ...
-    
-    def help_start(self): # -> None:
-        ...
-    
-    def do_stop(self, arg): # -> None:
-        ...
-    
-    def help_stop(self): # -> None:
-        ...
-    
-    def do_signal(self, arg): # -> None:
-        ...
-    
-    def help_signal(self): # -> None:
-        ...
-    
-    def do_restart(self, arg): # -> None:
-        ...
-    
-    def help_restart(self): # -> None:
-        ...
-    
-    def do_shutdown(self, arg): # -> None:
-        ...
-    
-    def help_shutdown(self): # -> None:
-        ...
-    
-    def do_reload(self, arg): # -> None:
-        ...
-    
-    def help_reload(self): # -> None:
-        ...
-    
-    def do_avail(self, arg): # -> None:
-        ...
-    
-    def help_avail(self): # -> None:
-        ...
-    
-    def do_reread(self, arg): # -> None:
-        ...
-    
-    def help_reread(self): # -> None:
-        ...
-    
-    def do_add(self, arg): # -> None:
-        ...
-    
-    def help_add(self): # -> None:
-        ...
-    
-    def do_remove(self, arg): # -> None:
-        ...
-    
-    def help_remove(self): # -> None:
-        ...
-    
-    def do_update(self, arg): # -> None:
-        ...
-    
-    def help_update(self): # -> None:
-        ...
-    
-    def do_clear(self, arg): # -> None:
-        ...
-    
-    def help_clear(self): # -> None:
-        ...
-    
-    def do_open(self, arg): # -> None:
-        ...
-    
-    def help_open(self): # -> None:
-        ...
-    
-    def do_version(self, arg): # -> None:
-        ...
-    
-    def help_version(self): # -> None:
-        ...
-    
-    def do_fg(self, arg): # -> None:
-        ...
-    
-    def help_fg(self, args=...): # -> None:
-        ...
-    
-
-
-def main(args=..., options=...): # -> None:
-    ...
-
-if __name__ == "__main__":
-    ...
diff --git a/manager/typings/supervisor/supervisord.pyi b/manager/typings/supervisor/supervisord.pyi
deleted file mode 100644 (file)
index 5990f96..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-"""supervisord -- run a set of applications as daemons.
-
-Usage: %s [options]
-
-Options:
--c/--configuration FILENAME -- configuration file path (searches if not given)
--n/--nodaemon -- run in the foreground (same as 'nodaemon=true' in config file)
--s/--silent -- no logs to stdout (maps to 'silent=true' in config file)
--h/--help -- print this usage message and exit
--v/--version -- print supervisord version number and exit
--u/--user USER -- run supervisord as this user (or numeric uid)
--m/--umask UMASK -- use this umask for daemon subprocess (default is 022)
--d/--directory DIRECTORY -- directory to chdir to when daemonized
--l/--logfile FILENAME -- use FILENAME as logfile path
--y/--logfile_maxbytes BYTES -- use BYTES to limit the max size of logfile
--z/--logfile_backups NUM -- number of backups to keep when max bytes reached
--e/--loglevel LEVEL -- use LEVEL as log level (debug,info,warn,error,critical)
--j/--pidfile FILENAME -- write a pid file for the daemon process to FILENAME
--i/--identifier STR -- identifier used for this instance of supervisord
--q/--childlogdir DIRECTORY -- the log directory for child process logs
--k/--nocleanup --  prevent the process from performing cleanup (removal of
-                   old automatic child log files) at startup.
--a/--minfds NUM -- the minimum number of file descriptors for start success
--t/--strip_ansi -- strip ansi escape codes from process output
---minprocs NUM  -- the minimum number of processes available for start success
---profile_options OPTIONS -- run supervisord under profiler and output
-                             results based on OPTIONS, which  is a comma-sep'd
-                             list of 'cumulative', 'calls', and/or 'callers',
-                             e.g. 'cumulative,callers')
-"""
-class Supervisor:
-    stopping = ...
-    lastshutdownreport = ...
-    process_groups = ...
-    stop_groups = ...
-    def __init__(self, options) -> None:
-        ...
-    
-    def main(self): # -> None:
-        ...
-    
-    def run(self): # -> None:
-        ...
-    
-    def diff_to_active(self): # -> tuple[list[Unknown], list[Unknown], list[Unknown]]:
-        ...
-    
-    def add_process_group(self, config): # -> bool:
-        ...
-    
-    def remove_process_group(self, name): # -> bool:
-        ...
-    
-    def get_process_map(self): # -> dict[Unknown, Unknown]:
-        ...
-    
-    def shutdown_report(self): # -> list[Unknown]:
-        ...
-    
-    def ordered_stop_groups_phase_1(self): # -> None:
-        ...
-    
-    def ordered_stop_groups_phase_2(self): # -> None:
-        ...
-    
-    def runforever(self): # -> None:
-        ...
-    
-    def tick(self, now=...): # -> None:
-        """ Send one or more 'tick' events when the timeslice related to
-        the period for the event type rolls over """
-        ...
-    
-    def reap(self, once=..., recursionguard=...): # -> None:
-        ...
-    
-    def handle_signal(self): # -> None:
-        ...
-    
-    def get_state(self):
-        ...
-    
-
-
-def timeslice(period, when): # -> int:
-    ...
-
-def profile(cmd, globals, locals, sort_order, callers): # -> None:
-    ...
-
-def main(args=..., test=...): # -> None:
-    ...
-
-def go(options): # -> None:
-    ...
-
-if __name__ == "__main__":
-    ...
diff --git a/manager/typings/supervisor/templating.pyi b/manager/typings/supervisor/templating.pyi
deleted file mode 100644 (file)
index e122826..0000000
+++ /dev/null
@@ -1,476 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-from xml.etree.ElementTree import TreeBuilder
-
-from supervisor.compat import PY2, HTMLParser
-
-AUTOCLOSE = ...
-IGNOREEND = ...
-_BLANK = ...
-_SPACE = ...
-_EQUAL = ...
-_QUOTE = ...
-_OPEN_TAG_START = ...
-_CLOSE_TAG_START = ...
-_OPEN_TAG_END = ...
-_SELF_CLOSE = ...
-_OMITTED_TEXT = ...
-_COMMENT_START = ...
-_COMMENT_END = ...
-_PI_START = ...
-_PI_END = ...
-_AMPER_ESCAPED = ...
-_LT = ...
-_LT_ESCAPED = ...
-_QUOTE_ESCAPED = ...
-_XML_PROLOG_BEGIN = ...
-_ENCODING = ...
-_XML_PROLOG_END = ...
-_DOCTYPE_BEGIN = ...
-_PUBLIC = ...
-_DOCTYPE_END = ...
-if PY2:
-    def encode(text, encoding):
-        ...
-    
-else:
-    def encode(text, encoding): # -> bytes:
-        ...
-    
-def Replace(text, structure=...): # -> _MeldElementInterface:
-    ...
-
-class PyHelper:
-    def findmeld(self, node, name, default=...):
-        ...
-    
-    def clone(self, node, parent=...): # -> _MeldElementInterface:
-        ...
-    
-    def bfclone(self, node, parent=...): # -> _MeldElementInterface:
-        ...
-    
-    def getiterator(self, node, tag=...): # -> list[Unknown]:
-        ...
-    
-    def content(self, node, text, structure=...): # -> None:
-        ...
-    
-
-
-helper = ...
-_MELD_NS_URL = ...
-_MELD_PREFIX = ...
-_MELD_LOCAL = ...
-_MELD_ID = ...
-_MELD_SHORT_ID = ...
-_XHTML_NS_URL = ...
-_XHTML_PREFIX = ...
-_XHTML_PREFIX_LEN = ...
-_marker = ...
-class doctype:
-    html_strict = ...
-    html = ...
-    xhtml_strict = ...
-    xhtml = ...
-
-
-class _MeldElementInterface:
-    parent = ...
-    attrib = ...
-    text = ...
-    tail = ...
-    structure = ...
-    def __init__(self, tag, attrib) -> None:
-        ...
-    
-    def __repr__(self): # -> str:
-        ...
-    
-    def __len__(self): # -> int:
-        ...
-    
-    def __getitem__(self, index):
-        ...
-    
-    def __getslice__(self, start, stop): # -> List[Unknown]:
-        ...
-    
-    def getchildren(self): # -> list[Unknown]:
-        ...
-    
-    def find(self, path):
-        ...
-    
-    def findtext(self, path, default=...):
-        ...
-    
-    def findall(self, path):
-        ...
-    
-    def clear(self): # -> None:
-        ...
-    
-    def get(self, key, default=...):
-        ...
-    
-    def set(self, key, value): # -> None:
-        ...
-    
-    def keys(self): # -> list[Unknown]:
-        ...
-    
-    def items(self): # -> list[Unknown]:
-        ...
-    
-    def getiterator(self, *ignored_args, **ignored_kw): # -> list[Unknown]:
-        ...
-    
-    def __setitem__(self, index, element): # -> None:
-        ...
-    
-    def __setslice__(self, start, stop, elements): # -> None:
-        ...
-    
-    def append(self, element): # -> None:
-        ...
-    
-    def insert(self, index, element): # -> None:
-        ...
-    
-    def __delitem__(self, index): # -> None:
-        ...
-    
-    def __delslice__(self, start, stop): # -> None:
-        ...
-    
-    def remove(self, element): # -> None:
-        ...
-    
-    def makeelement(self, tag, attrib): # -> _MeldElementInterface:
-        ...
-    
-    def __mod__(self, other): # -> list[Unknown]:
-        """ Fill in the text values of meld nodes in tree; only
-        support dictionarylike operand (sequence operand doesn't seem
-        to make sense here)"""
-        ...
-    
-    def fillmelds(self, **kw): # -> list[Unknown]:
-        """ Fill in the text values of meld nodes in tree using the
-        keyword arguments passed in; use the keyword keys as meld ids
-        and the keyword values as text that should fill in the node
-        text on which that meld id is found.  Return a list of keys
-        from **kw that were not able to be found anywhere in the tree.
-        Never raises an exception. """
-        ...
-    
-    def fillmeldhtmlform(self, **kw): # -> list[Unknown]:
-        """ Perform magic to 'fill in' HTML form element values from a
-        dictionary.  Unlike 'fillmelds', the type of element being
-        'filled' is taken into consideration.
-
-        Perform a 'findmeld' on each key in the dictionary and use the
-        value that corresponds to the key to perform mutation of the
-        tree, changing data in what is presumed to be one or more HTML
-        form elements according to the following rules::
-
-          If the found element is an 'input group' (its meld id ends
-          with the string ':inputgroup'), set the 'checked' attribute
-          on the appropriate subelement which has a 'value' attribute
-          which matches the dictionary value.  Also remove the
-          'checked' attribute from every other 'input' subelement of
-          the input group.  If no input subelement's value matches the
-          dictionary value, this key is treated as 'unfilled'.
-
-          If the found element is an 'input type=text', 'input
-          type=hidden', 'input type=submit', 'input type=password',
-          'input type=reset' or 'input type=file' element, replace its
-          'value' attribute with the value.
-
-          If the found element is an 'input type=checkbox' or 'input
-          type='radio' element, set its 'checked' attribute to true if
-          the dict value is true, or remove its 'checked' attribute if
-          the dict value is false.
-
-          If the found element is a 'select' element and the value
-          exists in the 'value=' attribute of one of its 'option'
-          subelements, change that option's 'selected' attribute to
-          true and mark all other option elements as unselected.  If
-          the select element does not contain an option with a value
-          that matches the dictionary value, do nothing and return
-          this key as unfilled.
-
-          If the found element is a 'textarea' or any other kind of
-          element, replace its text with the value.
-
-          If the element corresponding to the key is not found,
-          do nothing and treat the key as 'unfilled'.
-
-        Return a list of 'unfilled' keys, representing meld ids
-        present in the dictionary but not present in the element tree
-        or meld ids which could not be filled due to the lack of any
-        matching subelements for 'select' nodes or 'inputgroup' nodes.
-        """
-        ...
-    
-    def findmeld(self, name, default=...):
-        """ Find a node in the tree that has a 'meld id' corresponding
-        to 'name'. Iterate over all subnodes recursively looking for a
-        node which matches.  If we can't find the node, return None."""
-        ...
-    
-    def findmelds(self): # -> list[Unknown]:
-        """ Find all nodes that have a meld id attribute and return
-        the found nodes in a list"""
-        ...
-    
-    def findwithattrib(self, attrib, value=...): # -> list[Unknown]:
-        """ Find all nodes that have an attribute named 'attrib'.  If
-        'value' is not None, omit nodes on which the attribute value
-        does not compare equally to 'value'. Return the found nodes in
-        a list."""
-        ...
-    
-    def repeat(self, iterable, childname=...): # -> list[Unknown]:
-        """repeats an element with values from an iterable.  If
-        'childname' is not None, repeat the element on which the
-        repeat is called, otherwise find the child element with a
-        'meld:id' matching 'childname' and repeat that.  The element
-        is repeated within its parent element (nodes that are created
-        as a result of a repeat share the same parent).  This method
-        returns an iterable; the value of each iteration is a
-        two-sequence in the form (newelement, data).  'newelement' is
-        a clone of the template element (including clones of its
-        children) which has already been seated in its parent element
-        in the template. 'data' is a value from the passed in
-        iterable.  Changing 'newelement' (typically based on values
-        from 'data') mutates the element 'in place'."""
-        ...
-    
-    def replace(self, text, structure=...): # -> None:
-        """ Replace this element with a Replace node in our parent with
-        the text 'text' and return the index of our position in
-        our parent.  If we have no parent, do nothing, and return None.
-        Pass the 'structure' flag to the replace node so it can do the right
-        thing at render time. """
-        ...
-    
-    def content(self, text, structure=...): # -> None:
-        """ Delete this node's children and append a Replace node that
-        contains text.  Always return None.  Pass the 'structure' flag
-        to the replace node so it can do the right thing at render
-        time."""
-        ...
-    
-    def attributes(self, **kw): # -> None:
-        """ Set attributes on this node. """
-        ...
-    
-    def write_xmlstring(self, encoding=..., doctype=..., fragment=..., declaration=..., pipeline=...): # -> bytes:
-        ...
-    
-    def write_xml(self, file, encoding=..., doctype=..., fragment=..., declaration=..., pipeline=...): # -> None:
-        """ Write XML to 'file' (which can be a filename or filelike object)
-
-        encoding    - encoding string (if None, 'utf-8' encoding is assumed)
-                      Must be a recognizable Python encoding type.
-        doctype     - 3-tuple indicating name, pubid, system of doctype.
-                      The default is to prevent a doctype from being emitted.
-        fragment    - True if a 'fragment' should be emitted for this node (no
-                      declaration, no doctype).  This causes both the
-                      'declaration' and 'doctype' parameters to become ignored
-                      if provided.
-        declaration - emit an xml declaration header (including an encoding
-                      if it's not None).  The default is to emit the
-                      doctype.
-        pipeline    - preserve 'meld' namespace identifiers in output
-                      for use in pipelining
-        """
-        ...
-    
-    def write_htmlstring(self, encoding=..., doctype=..., fragment=...): # -> bytes:
-        ...
-    
-    def write_html(self, file, encoding=..., doctype=..., fragment=...): # -> None:
-        """ Write HTML to 'file' (which can be a filename or filelike object)
-
-        encoding    - encoding string (if None, 'utf-8' encoding is assumed).
-                      Unlike XML output, this is not used in a declaration,
-                      but it is used to do actual character encoding during
-                      output.  Must be a recognizable Python encoding type.
-        doctype     - 3-tuple indicating name, pubid, system of doctype.
-                      The default is the value of doctype.html (HTML 4.0
-                      'loose')
-        fragment    - True if a "fragment" should be omitted (no doctype).
-                      This overrides any provided "doctype" parameter if
-                      provided.
-
-        Namespace'd elements and attributes have their namespaces removed
-        during output when writing HTML, so pipelining cannot be performed.
-
-        HTML is not valid XML, so an XML declaration header is never emitted.
-        """
-        ...
-    
-    def write_xhtmlstring(self, encoding=..., doctype=..., fragment=..., declaration=..., pipeline=...): # -> bytes:
-        ...
-    
-    def write_xhtml(self, file, encoding=..., doctype=..., fragment=..., declaration=..., pipeline=...): # -> None:
-        """ Write XHTML to 'file' (which can be a filename or filelike object)
-
-        encoding    - encoding string (if None, 'utf-8' encoding is assumed)
-                      Must be a recognizable Python encoding type.
-        doctype     - 3-tuple indicating name, pubid, system of doctype.
-                      The default is the value of doctype.xhtml (XHTML
-                      'loose').
-        fragment    - True if a 'fragment' should be emitted for this node (no
-                      declaration, no doctype).  This causes both the
-                      'declaration' and 'doctype' parameters to be ignored.
-        declaration - emit an xml declaration header (including an encoding
-                      string if 'encoding' is not None)
-        pipeline    - preserve 'meld' namespace identifiers in output
-                      for use in pipelining
-        """
-        ...
-    
-    def clone(self, parent=...): # -> _MeldElementInterface:
-        """ Create a clone of an element.  If parent is not None,
-        append the element to the parent.  Recurse as necessary to create
-        a deep clone of the element. """
-        ...
-    
-    def deparent(self): # -> None:
-        """ Remove ourselves from our parent node (de-parent) and return
-        the index of the parent which was deleted. """
-        ...
-    
-    def parentindex(self): # -> None:
-        """ Return the parent node index in which we live """
-        ...
-    
-    def shortrepr(self, encoding=...): # -> bytes:
-        ...
-    
-    def diffmeld(self, other): # -> dict[str, dict[str, list[Unknown]]]:
-        """ Compute the meld element differences from this node (the
-        source) to 'other' (the target).  Return a dictionary of
-        sequences in the form {'unreduced:
-               {'added':[], 'removed':[], 'moved':[]},
-                               'reduced':
-               {'added':[], 'removed':[], 'moved':[]},}
-                               """
-        ...
-    
-    def meldid(self):
-        ...
-    
-    def lineage(self): # -> list[Unknown]:
-        ...
-    
-
-
-class MeldTreeBuilder(TreeBuilder):
-    def __init__(self) -> None:
-        ...
-    
-    def start(self, tag, attrs): # -> Element:
-        ...
-    
-    def comment(self, data): # -> None:
-        ...
-    
-    def doctype(self, name, pubid, system): # -> None:
-        ...
-    
-
-
-class HTMLXMLParser(HTMLParser):
-    """ A mostly-cut-and-paste of ElementTree's HTMLTreeBuilder that
-    does special meld3 things (like preserve comments and munge meld
-    ids).  Subclassing is not possible due to private attributes. :-("""
-    def __init__(self, builder=..., encoding=...) -> None:
-        ...
-    
-    def close(self): # -> Element:
-        ...
-    
-    def handle_starttag(self, tag, attrs): # -> None:
-        ...
-    
-    def handle_endtag(self, tag): # -> None:
-        ...
-    
-    def handle_charref(self, char): # -> None:
-        ...
-    
-    def handle_entityref(self, name): # -> None:
-        ...
-    
-    def handle_data(self, data): # -> None:
-        ...
-    
-    def unknown_entityref(self, name): # -> None:
-        ...
-    
-    def handle_comment(self, data): # -> None:
-        ...
-    
-
-
-def do_parse(source, parser): # -> Element:
-    ...
-
-def parse_xml(source): # -> Element:
-    """ Parse source (a filelike object) into an element tree.  If
-    html is true, use a parser that can resolve somewhat ambiguous
-    HTML into XHTML.  Otherwise use a 'normal' parser only."""
-    ...
-
-def parse_html(source, encoding=...): # -> Element:
-    ...
-
-def parse_xmlstring(text): # -> Element:
-    ...
-
-def parse_htmlstring(text, encoding=...): # -> Element:
-    ...
-
-attrib_needs_escaping = ...
-cdata_needs_escaping = ...
-_HTMLTAGS_UNBALANCED = ...
-_HTMLTAGS_NOESCAPE = ...
-_HTMLATTRS_BOOLEAN = ...
-_NONENTITY_RE = ...
-_XML_DECL_RE = ...
-_BEGIN_TAG_RE = ...
-def insert_doctype(data, doctype=...):
-    ...
-
-def insert_meld_ns_decl(data):
-    ...
-
-def prefeed(data, doctype=...):
-    ...
-
-def sharedlineage(srcelement, tgtelement): # -> bool:
-    ...
-
-def diffreduce(elements): # -> list[Unknown]:
-    ...
-
-def intersection(S1, S2): # -> list[Unknown]:
-    ...
-
-def melditerator(element, meldid=..., _MELD_ID=...): # -> Generator[Unknown, None, None]:
-    ...
-
-_NON_ASCII_MIN = ...
-_NON_ASCII_MAX = ...
-_escape_map = ...
-_namespace_map = ...
-_pattern = ...
-def fixtag(tag, namespaces): # -> tuple[str, tuple[str, str | Unknown] | None]:
-    ...
diff --git a/manager/typings/supervisor/tests/__init__.pyi b/manager/typings/supervisor/tests/__init__.pyi
deleted file mode 100644 (file)
index cea7ef9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
diff --git a/manager/typings/supervisor/web.pyi b/manager/typings/supervisor/web.pyi
deleted file mode 100644 (file)
index 3ac195f..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-class DeferredWebProducer:
-    """ A medusa producer that implements a deferred callback; requires
-    a subclass of asynchat.async_chat that handles NOT_DONE_YET sentinel """
-    CONNECTION = ...
-    def __init__(self, request, callback) -> None:
-        ...
-    
-    def more(self): # -> Type[NOT_DONE_YET] | Literal[''] | None:
-        ...
-    
-    def sendresponse(self, response): # -> None:
-        ...
-    
-
-
-class ViewContext:
-    def __init__(self, **kw) -> None:
-        ...
-    
-
-
-class MeldView:
-    content_type = ...
-    delay = ...
-    def __init__(self, context) -> None:
-        ...
-    
-    def __call__(self): # -> Type[NOT_DONE_YET]:
-        ...
-    
-    def render(self): # -> None:
-        ...
-    
-    def clone(self):
-        ...
-    
-
-
-class TailView(MeldView):
-    def render(self): # -> str:
-        ...
-    
-
-
-class StatusView(MeldView):
-    def actions_for_process(self, process): # -> list[dict[str, str | Unknown | None] | dict[str, str | Unknown]] | list[dict[str, str | Unknown | None] | dict[str, str | Unknown] | None]:
-        ...
-    
-    def css_class_for_state(self, state): # -> Literal['statusrunning', 'statuserror', 'statusnominal']:
-        ...
-    
-    def make_callback(self, namespec, action): # -> () -> str | () -> (Type[NOT_DONE_YET] | str) | () -> Unknown | () -> (str | Type[NOT_DONE_YET] | Unknown) | () -> (Type[NOT_DONE_YET] | Unknown):
-        ...
-    
-    def render(self): # -> Type[NOT_DONE_YET] | str:
-        ...
-    
-
-
-class OKView:
-    delay = ...
-    def __init__(self, context) -> None:
-        ...
-    
-    def __call__(self): # -> dict[str, str]:
-        ...
-    
-
-
-VIEWS = ...
-class supervisor_ui_handler:
-    IDENT = ...
-    def __init__(self, supervisord) -> None:
-        ...
-    
-    def match(self, request): # -> bool | None:
-        ...
-    
-    def handle_request(self, request): # -> None:
-        ...
-    
-    def continue_request(self, data, request): # -> None:
-        ...
diff --git a/manager/typings/supervisor/xmlrpc.pyi b/manager/typings/supervisor/xmlrpc.pyi
deleted file mode 100644 (file)
index 879c49b..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-"""
-This type stub file was generated by pyright.
-"""
-
-from supervisor.compat import httplib, xmlrpclib
-from supervisor.medusa.xmlrpc_handler import xmlrpc_handler
-
-class Faults:
-    UNKNOWN_METHOD = ...
-    INCORRECT_PARAMETERS = ...
-    BAD_ARGUMENTS = ...
-    SIGNATURE_UNSUPPORTED = ...
-    SHUTDOWN_STATE = ...
-    BAD_NAME = ...
-    BAD_SIGNAL = ...
-    NO_FILE = ...
-    NOT_EXECUTABLE = ...
-    FAILED = ...
-    ABNORMAL_TERMINATION = ...
-    SPAWN_ERROR = ...
-    ALREADY_STARTED = ...
-    NOT_RUNNING = ...
-    SUCCESS = ...
-    ALREADY_ADDED = ...
-    STILL_RUNNING = ...
-    CANT_REREAD = ...
-
-
-def getFaultDescription(code): # -> str:
-    ...
-
-class RPCError(Exception):
-    def __init__(self, code, extra=...) -> None:
-        ...
-    
-    def __str__(self) -> str:
-        ...
-    
-
-
-class DeferredXMLRPCResponse:
-    """ A medusa producer that implements a deferred callback; requires
-    a subclass of asynchat.async_chat that handles NOT_DONE_YET sentinel """
-    CONNECTION = ...
-    def __init__(self, request, callback) -> None:
-        ...
-    
-    def more(self): # -> Type[NOT_DONE_YET] | Literal[''] | None:
-        ...
-    
-    def getresponse(self, body): # -> None:
-        ...
-    
-
-
-def xmlrpc_marshal(value):
-    ...
-
-class SystemNamespaceRPCInterface:
-    def __init__(self, namespaces) -> None:
-        ...
-    
-    def listMethods(self): # -> list[Unknown]:
-        """ Return an array listing the available method names
-
-        @return array result  An array of method names available (strings).
-        """
-        ...
-    
-    def methodHelp(self, name):
-        """ Return a string showing the method's documentation
-
-        @param string name   The name of the method.
-        @return string result The documentation for the method name.
-        """
-        ...
-    
-    def methodSignature(self, name): # -> List[Unknown]:
-        """ Return an array describing the method signature in the
-        form [rtype, ptype, ptype...] where rtype is the return data type
-        of the method, and ptypes are the parameter data types that the
-        method accepts in method argument order.
-
-        @param string name  The name of the method.
-        @return array result  The result.
-        """
-        ...
-    
-    def multicall(self, calls): # -> (remaining_calls: Unknown = remaining_calls, callbacks: Unknown = callbacks, results: Unknown = results) -> (Type[NOT_DONE_YET] | Unknown) | Type[NOT_DONE_YET] | list[Unknown]:
-        """Process an array of calls, and return an array of
-        results. Calls should be structs of the form {'methodName':
-        string, 'params': array}. Each result will either be a
-        single-item array containing the result value, or a struct of
-        the form {'faultCode': int, 'faultString': string}. This is
-        useful when you need to make lots of small calls without lots
-        of round trips.
-
-        @param array calls  An array of call requests
-        @return array result  An array of results
-        """
-        ...
-    
-
-
-class AttrDict(dict):
-    def __getattr__(self, name): # -> None:
-        ...
-    
-
-
-class RootRPCInterface:
-    def __init__(self, subinterfaces) -> None:
-        ...
-    
-
-
-def capped_int(value): # -> int:
-    ...
-
-def make_datetime(text): # -> datetime:
-    ...
-
-class supervisor_xmlrpc_handler(xmlrpc_handler):
-    path = ...
-    IDENT = ...
-    unmarshallers = ...
-    def __init__(self, supervisord, subinterfaces) -> None:
-        ...
-    
-    def loads(self, data): # -> tuple[tuple[Any, ...] | None, Any | None]:
-        ...
-    
-    def match(self, request):
-        ...
-    
-    def continue_request(self, data, request): # -> None:
-        ...
-    
-    def call(self, method, params): # -> Any:
-        ...
-    
-
-
-def traverse(ob, method, params): # -> Any:
-    ...
-
-class SupervisorTransport(xmlrpclib.Transport):
-    """
-    Provides a Transport for xmlrpclib that uses
-    httplib.HTTPConnection in order to support persistent
-    connections.  Also support basic auth and UNIX domain socket
-    servers.
-    """
-    connection = ...
-    def __init__(self, username=..., password=..., serverurl=...) -> None:
-        ...
-    
-    def close(self): # -> None:
-        ...
-    
-    def request(self, host, handler, request_body, verbose=...):
-        ...
-    
-
-
-class UnixStreamHTTPConnection(httplib.HTTPConnection):
-    def connect(self): # -> None:
-        ...
-    
-
-
-def gettags(comment): # -> list[Unknown]:
-    """ Parse documentation strings into JavaDoc-like tokens """
-    ...