Mercurial > public > mercurial-scm > hg
comparison mercurial/posix.py @ 49815:464fe8b8f474
typing: add type hints to the platform `cachestat` classes
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Fri, 16 Dec 2022 18:14:54 -0500 |
parents | 58dff81ffba1 |
children | ae93ada06454 |
comparison
equal
deleted
inserted
replaced
49814:1d1b244a91b6 | 49815:464fe8b8f474 |
---|---|
18 import sys | 18 import sys |
19 import tempfile | 19 import tempfile |
20 import unicodedata | 20 import unicodedata |
21 | 21 |
22 from typing import ( | 22 from typing import ( |
23 Any, | |
23 Iterable, | 24 Iterable, |
24 Iterator, | 25 Iterator, |
25 List, | 26 List, |
26 NoReturn, | 27 NoReturn, |
27 Optional, | 28 Optional, |
670 """ | 671 """ |
671 pass | 672 pass |
672 | 673 |
673 | 674 |
674 class cachestat: | 675 class cachestat: |
675 def __init__(self, path): | 676 def __init__(self, path: bytes) -> None: |
676 self.stat = os.stat(path) | 677 self.stat = os.stat(path) |
677 | 678 |
678 def cacheable(self): | 679 def cacheable(self) -> bool: |
679 return bool(self.stat.st_ino) | 680 return bool(self.stat.st_ino) |
680 | 681 |
681 __hash__ = object.__hash__ | 682 __hash__ = object.__hash__ |
682 | 683 |
683 def __eq__(self, other): | 684 def __eq__(self, other: Any) -> bool: |
684 try: | 685 try: |
685 # Only dev, ino, size, mtime and atime are likely to change. Out | 686 # Only dev, ino, size, mtime and atime are likely to change. Out |
686 # of these, we shouldn't compare atime but should compare the | 687 # of these, we shouldn't compare atime but should compare the |
687 # rest. However, one of the other fields changing indicates | 688 # rest. However, one of the other fields changing indicates |
688 # something fishy going on, so return False if anything but atime | 689 # something fishy going on, so return False if anything but atime |
699 and self.stat[stat.ST_CTIME] == other.stat[stat.ST_CTIME] | 700 and self.stat[stat.ST_CTIME] == other.stat[stat.ST_CTIME] |
700 ) | 701 ) |
701 except AttributeError: | 702 except AttributeError: |
702 return False | 703 return False |
703 | 704 |
704 def __ne__(self, other): | 705 def __ne__(self, other: Any) -> bool: |
705 return not self == other | 706 return not self == other |
706 | 707 |
707 | 708 |
708 def statislink(st: Optional[os.stat_result]) -> bool: | 709 def statislink(st: Optional[os.stat_result]) -> bool: |
709 '''check whether a stat result is a symlink''' | 710 '''check whether a stat result is a symlink''' |