##// END OF EJS Templates
interfaces: move peer `capabilities()` to the `ipeercapabilities` interface...
interfaces: move peer `capabilities()` to the `ipeercapabilities` interface I'm not sure why this was on the `ipeercommands` interface. It appears to be because these interfaces started out as `_basewirecommands` to hold wire commands, back in 558f5b2ee10e. The capabilities interface wasn't split out until 98861a2298b5, when it pulled the capability related methods off of the `ipeerbase` interface. Perhaps it was an oversight to not look at the commands interface because, while this is a wire command, both `sshpeer` and `httppeer` now perform a handshake while instantiating the peer object, and cache a fixed list of capabilities in that object. Likewise, `localpeer` is given a fixed set of capabilities when instantiated. Back in 558f5b2ee10e, `httppeer` looks like it issued a wire command when this method was called, but `sshpeer` obtained and cached the capabilities when instantiated, and this method always returned a fixed value. There's a perfectly good interface with other capability related methods, and having it here makes it easier to implement the base `peer` mixin class.

File last commit:

r53348:f5d134e5 default
r53417:1554bd50 default
Show More
status.py
53 lines | 1.4 KiB | text/x-python | PythonLexer
# status.py - Type annotations for status related objects
#
# Copyright Matt Harbison <mharbison72@gmail.com>
#
# This software may be used and distributed according to the terms of the
# GNU General Public License version 2 or any later version.
from __future__ import annotations
import abc
from typing import (
Iterator,
Protocol,
)
class Status(Protocol):
"""Struct with a list of files per status.
The 'deleted', 'unknown' and 'ignored' properties are only
relevant to the working copy.
"""
modified: list[bytes]
"""The list of files with modifications."""
added: list[bytes]
"""The list of files that started being tracked."""
removed: list[bytes]
"""The list of files that stopped being tracked."""
deleted: list[bytes]
"""The list of files in the working directory that are deleted from the
file system (but not in the removed state)."""
unknown: list[bytes]
"""The list of files in the working directory that are not tracked."""
ignored: list[bytes]
"""The list of files in the working directory that are ignored."""
clean: list[bytes]
"""The list of files that are not in any other state."""
@abc.abstractmethod
def __iter__(self) -> Iterator[list[bytes]]:
"""Iterates over each of the categories of file lists."""
@abc.abstractmethod
def __repr__(self) -> str:
"""Creates a string representation of the file lists."""