From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: <gentoo-commits+bounces-1541952-garchives=archives.gentoo.org@lists.gentoo.org> Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 07C7315800A for <garchives@archives.gentoo.org>; Sat, 29 Jul 2023 03:57:54 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 42F6AE0AD1; Sat, 29 Jul 2023 03:57:53 +0000 (UTC) Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 22943E0ACF for <gentoo-commits@lists.gentoo.org>; Sat, 29 Jul 2023 03:57:53 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 22CAA340861 for <gentoo-commits@lists.gentoo.org>; Sat, 29 Jul 2023 03:57:52 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 6774DE7B for <gentoo-commits@lists.gentoo.org>; Sat, 29 Jul 2023 03:57:50 +0000 (UTC) From: "Sam James" <sam@gentoo.org> To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org> Message-ID: <1690603065.7c0086fc0ab60cf0a726e3c88b11a21e147f3aa2.sam@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: lib/portage/dbapi/ X-VCS-Repository: proj/portage X-VCS-Files: lib/portage/dbapi/__init__.py lib/portage/dbapi/porttree.py X-VCS-Directories: lib/portage/dbapi/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: 7c0086fc0ab60cf0a726e3c88b11a21e147f3aa2 X-VCS-Branch: master Date: Sat, 29 Jul 2023 03:57:50 +0000 (UTC) Precedence: bulk List-Post: <mailto:gentoo-commits@lists.gentoo.org> List-Help: <mailto:gentoo-commits+help@lists.gentoo.org> List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org> List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org> List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org> X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 2f580e11-fea6-44ef-893d-98b2d6fd8348 X-Archives-Hash: b99b3c57c0f8b6efb6074ac9340439bd commit: 7c0086fc0ab60cf0a726e3c88b11a21e147f3aa2 Author: Andrew Udvare <audvare <AT> gmail <DOT> com> AuthorDate: Sun Jul 16 21:42:58 2023 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Sat Jul 29 03:57:45 2023 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=7c0086fc dbapi: add some typing Signed-off-by: Andrew Udvare <audvare <AT> gmail.com> Closes: https://github.com/gentoo/portage/pull/1069 Signed-off-by: Sam James <sam <AT> gentoo.org> lib/portage/dbapi/__init__.py | 27 +++++++++++++++------------ lib/portage/dbapi/porttree.py | 34 ++++++++++++++++++++++++---------- 2 files changed, 39 insertions(+), 22 deletions(-) diff --git a/lib/portage/dbapi/__init__.py b/lib/portage/dbapi/__init__.py index 31453d149..428e4a48e 100644 --- a/lib/portage/dbapi/__init__.py +++ b/lib/portage/dbapi/__init__.py @@ -5,6 +5,7 @@ __all__ = ["dbapi"] import re import warnings +from typing import Any, Dict, List, Optional, Sequence, Tuple import portage @@ -29,7 +30,7 @@ from _emerge.Package import Package class dbapi: _category_re = re.compile(r"^\w[-.+\w]*$", re.UNICODE) - _categories = None + _categories: Optional[Tuple[str, ...]] = None _use_mutable = False _known_keys = frozenset(auxdbkeys) _pkg_str_aux_keys = ("EAPI", "KEYWORDS", "SLOT", "repository") @@ -38,7 +39,7 @@ class dbapi: pass @property - def categories(self): + def categories(self) -> Tuple[str, ...]: """ Use self.cp_all() to generate a category list. Mutable instances can delete the self._categories attribute in cases when the cached @@ -52,11 +53,11 @@ class dbapi: def close_caches(self): pass - def cp_list(self, cp, use_cache=1): + def cp_list(self, cp: str, use_cache: int = 1) -> Any: raise NotImplementedError(self) @staticmethod - def _cmp_cpv(cpv1, cpv2): + def _cmp_cpv(cpv1, cpv2) -> int: result = vercmp(cpv1.version, cpv2.version) if result == 0 and cpv1.build_time is not None and cpv2.build_time is not None: result = (cpv1.build_time > cpv2.build_time) - ( @@ -65,7 +66,7 @@ class dbapi: return result @staticmethod - def _cpv_sort_ascending(cpv_list): + def _cpv_sort_ascending(cpv_list: Sequence[Any]) -> None: """ Use this to sort self.cp_list() results in ascending order. It sorts in place and returns None. @@ -76,7 +77,7 @@ class dbapi: # dict to map strings back to their original values. cpv_list.sort(key=cmp_sort_key(dbapi._cmp_cpv)) - def cpv_all(self): + def cpv_all(self) -> List[str]: """Return all CPVs in the db Args: None @@ -93,16 +94,18 @@ class dbapi: cpv_list.extend(self.cp_list(cp)) return cpv_list - def cp_all(self, sort=False): + def cp_all(self, sort: bool = False) -> List[str]: """Implement this in a child class Args sort - return sorted results Returns: A list of strings 1 per CP in the datastore """ - return NotImplementedError + raise NotImplementedError - def aux_get(self, mycpv, mylist, myrepo=None): + def aux_get( + self, mycpv: str, mylist: str, myrepo: Optional[str] = None + ) -> List[str]: """Return the metadata keys in mylist for mycpv Args: mycpv - "sys-apps/foo-1.0" @@ -114,7 +117,7 @@ class dbapi: """ raise NotImplementedError - def aux_update(self, cpv, metadata_updates): + def aux_update(self, cpv: str, metadata_updates: Dict[str, Any]) -> None: """ Args: cpv - "sys-apps/foo-1.0" @@ -124,7 +127,7 @@ class dbapi: """ raise NotImplementedError - def match(self, origdep, use_cache=1): + def match(self, origdep: str, use_cache: int = 1): """Given a dependency, try to find packages that match Args: origdep - Depend atom @@ -138,7 +141,7 @@ class dbapi: self._iter_match(mydep, self.cp_list(mydep.cp, use_cache=use_cache)) ) - def _iter_match(self, atom, cpv_iter): + def _iter_match(self, atom: str, cpv_iter): cpv_iter = iter(match_from_list(atom, cpv_iter)) if atom.repo: cpv_iter = self._iter_match_repo(atom, cpv_iter) diff --git a/lib/portage/dbapi/porttree.py b/lib/portage/dbapi/porttree.py index 3c38e99d4..c47b66bda 100644 --- a/lib/portage/dbapi/porttree.py +++ b/lib/portage/dbapi/porttree.py @@ -49,6 +49,7 @@ import functools import collections from collections import OrderedDict +from typing import List, Optional, Sequence, Type, Tuple, Union from urllib.parse import urlparse @@ -435,7 +436,9 @@ class portdbapi(dbapi): return license_path return None - def findname(self, mycpv, mytree=None, myrepo=None): + def findname( + self, mycpv: str, mytree: Optional[str] = None, myrepo: Optional[str] = None + ) -> str: return self.findname2(mycpv, mytree, myrepo)[0] def getRepositoryPath(self, repository_id): @@ -494,7 +497,12 @@ class portdbapi(dbapi): """ return self.settings.repositories.ignored_repos - def findname2(self, mycpv, mytree=None, myrepo=None): + def findname2( + self, + mycpv: str, + mytree: Optional[str] = None, + myrepo: Optional[str] = None, + ) -> Union[Tuple[None, int], Tuple[str, str], Tuple[str, None]]: """ Returns the location of the CPV, and what overlay it was in. Searches overlays first, then PORTDIR; this allows us to return the first @@ -643,7 +651,13 @@ class portdbapi(dbapi): return (metadata, ebuild_hash) - def aux_get(self, mycpv, mylist, mytree=None, myrepo=None): + def aux_get( + self, + mycpv: str, + mylist: Sequence[str], + mytree: Optional[str] = None, + myrepo: Optional[str] = None, + ) -> List[str]: "stub code for returning auxilliary db information, such as SLOT, DEPEND, etc." 'input: "sys-apps/foo-1.0",["SLOT","DEPEND","HOMEPAGE"]' 'return: ["0",">=sys-libs/bar-1.0","http://www.foo.com"] or raise PortageKeyError if error' @@ -1200,12 +1214,12 @@ class portdbapi(dbapi): def xmatch( self, - level, - origdep, - mydep=DeprecationWarning, - mykey=DeprecationWarning, - mylist=DeprecationWarning, - ): + level: str, + origdep: str, + mydep: Type[DeprecationWarning] = DeprecationWarning, + mykey: Type[DeprecationWarning] = DeprecationWarning, + mylist: Type[DeprecationWarning] = DeprecationWarning, + ) -> Union[Sequence[str], str]: """ Caching match function. @@ -1381,7 +1395,7 @@ class portdbapi(dbapi): return myval - def match(self, mydep, use_cache=1): + def match(self, mydep: str, use_cache: int = 1) -> Union[Sequence[str], str]: return self.xmatch("match-visible", mydep) def gvisible(self, mylist):