mercurial/interfaces/repository.py
changeset 52478 d01af74e67b4
parent 52476 0c60be5e021a
child 52479 99ca58c7cd0d
equal deleted inserted replaced
52477:d37d8dfe65bd 52478:d01af74e67b4
    26     # to avoid circular imports
    26     # to avoid circular imports
    27     from ..utils import (
    27     from ..utils import (
    28         urlutil,
    28         urlutil,
    29     )
    29     )
    30 
    30 
       
    31     # TODO: make a protocol class for this
       
    32     NodeConstants = Any
       
    33 
    31     # TODO: create a Protocol class, since importing uimod here causes a cycle
    34     # TODO: create a Protocol class, since importing uimod here causes a cycle
    32     #  that confuses pytype.
    35     #  that confuses pytype.
    33     Ui = Any
    36     Ui = Any
       
    37 
       
    38     # TODO: make a protocol class for this
       
    39     Vfs = Any
    34 
    40 
    35 # Local repository feature string.
    41 # Local repository feature string.
    36 
    42 
    37 # Revlogs are being used for file storage.
    43 # Revlogs are being used for file storage.
    38 REPO_FEATURE_REVLOG_FILE_STORAGE = b'revlogfilestorage'
    44 REPO_FEATURE_REVLOG_FILE_STORAGE = b'revlogfilestorage'
  1295 
  1301 
  1296 
  1302 
  1297 class imanifeststorage(Protocol):
  1303 class imanifeststorage(Protocol):
  1298     """Storage interface for manifest data."""
  1304     """Storage interface for manifest data."""
  1299 
  1305 
  1300     nodeconstants = interfaceutil.Attribute(
  1306     nodeconstants: NodeConstants
  1301         """nodeconstants used by the current repository."""
  1307     """nodeconstants used by the current repository."""
  1302     )
  1308 
  1303 
  1309     tree: bytes
  1304     tree = interfaceutil.Attribute(
  1310     """The path to the directory this manifest tracks.
  1305         """The path to the directory this manifest tracks.
  1311 
  1306 
  1312     The empty bytestring represents the root manifest.
  1307         The empty bytestring represents the root manifest.
  1313     """
  1308         """
  1314 
  1309     )
  1315     index: ifilerevisionssequence
  1310 
  1316     """An ``ifilerevisionssequence`` instance."""
  1311     index = interfaceutil.Attribute(
  1317 
  1312         """An ``ifilerevisionssequence`` instance."""
  1318     opener: Vfs
  1313     )
  1319     """VFS opener to use to access underlying files used for storage.
  1314 
  1320 
  1315     opener = interfaceutil.Attribute(
  1321     TODO this is revlog specific and should not be exposed.
  1316         """VFS opener to use to access underlying files used for storage.
  1322     """
  1317 
  1323 
  1318         TODO this is revlog specific and should not be exposed.
  1324     # TODO: finish type hints
  1319         """
  1325     fulltextcache: dict
  1320     )
  1326     """Dict with cache of fulltexts.
  1321 
  1327 
  1322     fulltextcache = interfaceutil.Attribute(
  1328     TODO this doesn't feel appropriate for the storage interface.
  1323         """Dict with cache of fulltexts.
  1329     """
  1324 
       
  1325         TODO this doesn't feel appropriate for the storage interface.
       
  1326         """
       
  1327     )
       
  1328 
  1330 
  1329     def __len__(self):
  1331     def __len__(self):
  1330         """Obtain the number of revisions stored for this manifest."""
  1332         """Obtain the number of revisions stored for this manifest."""
  1331 
  1333 
  1332     def __iter__(self):
  1334     def __iter__(self):