db: more type hints (#46242)
This commit is contained in:
parent
9d754c127a
commit
7c473937ba
@ -212,7 +212,7 @@ def __init__(
|
|||||||
ref_count: int = 0,
|
ref_count: int = 0,
|
||||||
explicit: bool = False,
|
explicit: bool = False,
|
||||||
installation_time: Optional[float] = None,
|
installation_time: Optional[float] = None,
|
||||||
deprecated_for: Optional["spack.spec.Spec"] = None,
|
deprecated_for: Optional[str] = None,
|
||||||
in_buildcache: bool = False,
|
in_buildcache: bool = False,
|
||||||
origin=None,
|
origin=None,
|
||||||
):
|
):
|
||||||
@ -1028,7 +1028,7 @@ def _check_ref_counts(self):
|
|||||||
|
|
||||||
Does no locking.
|
Does no locking.
|
||||||
"""
|
"""
|
||||||
counts = {}
|
counts: Dict[str, int] = {}
|
||||||
for key, rec in self._data.items():
|
for key, rec in self._data.items():
|
||||||
counts.setdefault(key, 0)
|
counts.setdefault(key, 0)
|
||||||
for dep in rec.spec.dependencies(deptype=_TRACKED_DEPENDENCIES):
|
for dep in rec.spec.dependencies(deptype=_TRACKED_DEPENDENCIES):
|
||||||
@ -1218,7 +1218,7 @@ def _add(
|
|||||||
self._data[key].explicit = explicit
|
self._data[key].explicit = explicit
|
||||||
|
|
||||||
@_autospec
|
@_autospec
|
||||||
def add(self, spec: "spack.spec.Spec", *, explicit=False) -> None:
|
def add(self, spec: "spack.spec.Spec", *, explicit: bool = False) -> None:
|
||||||
"""Add spec at path to database, locking and reading DB to sync.
|
"""Add spec at path to database, locking and reading DB to sync.
|
||||||
|
|
||||||
``add()`` will lock and read from the DB on disk.
|
``add()`` will lock and read from the DB on disk.
|
||||||
@ -1229,7 +1229,7 @@ def add(self, spec: "spack.spec.Spec", *, explicit=False) -> None:
|
|||||||
with self.write_transaction():
|
with self.write_transaction():
|
||||||
self._add(spec, explicit=explicit)
|
self._add(spec, explicit=explicit)
|
||||||
|
|
||||||
def _get_matching_spec_key(self, spec, **kwargs):
|
def _get_matching_spec_key(self, spec: "spack.spec.Spec", **kwargs) -> str:
|
||||||
"""Get the exact spec OR get a single spec that matches."""
|
"""Get the exact spec OR get a single spec that matches."""
|
||||||
key = spec.dag_hash()
|
key = spec.dag_hash()
|
||||||
upstream, record = self.query_by_spec_hash(key)
|
upstream, record = self.query_by_spec_hash(key)
|
||||||
@ -1241,12 +1241,12 @@ def _get_matching_spec_key(self, spec, **kwargs):
|
|||||||
return key
|
return key
|
||||||
|
|
||||||
@_autospec
|
@_autospec
|
||||||
def get_record(self, spec, **kwargs):
|
def get_record(self, spec: "spack.spec.Spec", **kwargs) -> Optional[InstallRecord]:
|
||||||
key = self._get_matching_spec_key(spec, **kwargs)
|
key = self._get_matching_spec_key(spec, **kwargs)
|
||||||
upstream, record = self.query_by_spec_hash(key)
|
upstream, record = self.query_by_spec_hash(key)
|
||||||
return record
|
return record
|
||||||
|
|
||||||
def _decrement_ref_count(self, spec):
|
def _decrement_ref_count(self, spec: "spack.spec.Spec") -> None:
|
||||||
key = spec.dag_hash()
|
key = spec.dag_hash()
|
||||||
|
|
||||||
if key not in self._data:
|
if key not in self._data:
|
||||||
@ -1263,7 +1263,7 @@ def _decrement_ref_count(self, spec):
|
|||||||
for dep in spec.dependencies(deptype=_TRACKED_DEPENDENCIES):
|
for dep in spec.dependencies(deptype=_TRACKED_DEPENDENCIES):
|
||||||
self._decrement_ref_count(dep)
|
self._decrement_ref_count(dep)
|
||||||
|
|
||||||
def _increment_ref_count(self, spec):
|
def _increment_ref_count(self, spec: "spack.spec.Spec") -> None:
|
||||||
key = spec.dag_hash()
|
key = spec.dag_hash()
|
||||||
|
|
||||||
if key not in self._data:
|
if key not in self._data:
|
||||||
@ -1272,14 +1272,14 @@ def _increment_ref_count(self, spec):
|
|||||||
rec = self._data[key]
|
rec = self._data[key]
|
||||||
rec.ref_count += 1
|
rec.ref_count += 1
|
||||||
|
|
||||||
def _remove(self, spec):
|
def _remove(self, spec: "spack.spec.Spec") -> "spack.spec.Spec":
|
||||||
"""Non-locking version of remove(); does real work."""
|
"""Non-locking version of remove(); does real work."""
|
||||||
key = self._get_matching_spec_key(spec)
|
key = self._get_matching_spec_key(spec)
|
||||||
rec = self._data[key]
|
rec = self._data[key]
|
||||||
|
|
||||||
# This install prefix is now free for other specs to use, even if the
|
# This install prefix is now free for other specs to use, even if the
|
||||||
# spec is only marked uninstalled.
|
# spec is only marked uninstalled.
|
||||||
if not rec.spec.external and rec.installed:
|
if not rec.spec.external and rec.installed and rec.path:
|
||||||
self._installed_prefixes.remove(rec.path)
|
self._installed_prefixes.remove(rec.path)
|
||||||
|
|
||||||
if rec.ref_count > 0:
|
if rec.ref_count > 0:
|
||||||
@ -1303,7 +1303,7 @@ def _remove(self, spec):
|
|||||||
return rec.spec
|
return rec.spec
|
||||||
|
|
||||||
@_autospec
|
@_autospec
|
||||||
def remove(self, spec):
|
def remove(self, spec: "spack.spec.Spec") -> "spack.spec.Spec":
|
||||||
"""Removes a spec from the database. To be called on uninstall.
|
"""Removes a spec from the database. To be called on uninstall.
|
||||||
|
|
||||||
Reads the database, then:
|
Reads the database, then:
|
||||||
@ -1318,7 +1318,7 @@ def remove(self, spec):
|
|||||||
with self.write_transaction():
|
with self.write_transaction():
|
||||||
return self._remove(spec)
|
return self._remove(spec)
|
||||||
|
|
||||||
def deprecator(self, spec):
|
def deprecator(self, spec: "spack.spec.Spec") -> Optional["spack.spec.Spec"]:
|
||||||
"""Return the spec that the given spec is deprecated for, or None"""
|
"""Return the spec that the given spec is deprecated for, or None"""
|
||||||
with self.read_transaction():
|
with self.read_transaction():
|
||||||
spec_key = self._get_matching_spec_key(spec)
|
spec_key = self._get_matching_spec_key(spec)
|
||||||
@ -1329,14 +1329,14 @@ def deprecator(self, spec):
|
|||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def specs_deprecated_by(self, spec):
|
def specs_deprecated_by(self, spec: "spack.spec.Spec") -> List["spack.spec.Spec"]:
|
||||||
"""Return all specs deprecated in favor of the given spec"""
|
"""Return all specs deprecated in favor of the given spec"""
|
||||||
with self.read_transaction():
|
with self.read_transaction():
|
||||||
return [
|
return [
|
||||||
rec.spec for rec in self._data.values() if rec.deprecated_for == spec.dag_hash()
|
rec.spec for rec in self._data.values() if rec.deprecated_for == spec.dag_hash()
|
||||||
]
|
]
|
||||||
|
|
||||||
def _deprecate(self, spec, deprecator):
|
def _deprecate(self, spec: "spack.spec.Spec", deprecator: "spack.spec.Spec") -> None:
|
||||||
spec_key = self._get_matching_spec_key(spec)
|
spec_key = self._get_matching_spec_key(spec)
|
||||||
spec_rec = self._data[spec_key]
|
spec_rec = self._data[spec_key]
|
||||||
|
|
||||||
@ -1354,17 +1354,17 @@ def _deprecate(self, spec, deprecator):
|
|||||||
self._data[spec_key] = spec_rec
|
self._data[spec_key] = spec_rec
|
||||||
|
|
||||||
@_autospec
|
@_autospec
|
||||||
def mark(self, spec, key, value):
|
def mark(self, spec: "spack.spec.Spec", key, value) -> None:
|
||||||
"""Mark an arbitrary record on a spec."""
|
"""Mark an arbitrary record on a spec."""
|
||||||
with self.write_transaction():
|
with self.write_transaction():
|
||||||
return self._mark(spec, key, value)
|
return self._mark(spec, key, value)
|
||||||
|
|
||||||
def _mark(self, spec, key, value):
|
def _mark(self, spec: "spack.spec.Spec", key, value) -> None:
|
||||||
record = self._data[self._get_matching_spec_key(spec)]
|
record = self._data[self._get_matching_spec_key(spec)]
|
||||||
setattr(record, key, value)
|
setattr(record, key, value)
|
||||||
|
|
||||||
@_autospec
|
@_autospec
|
||||||
def deprecate(self, spec, deprecator):
|
def deprecate(self, spec: "spack.spec.Spec", deprecator: "spack.spec.Spec") -> None:
|
||||||
"""Marks a spec as deprecated in favor of its deprecator"""
|
"""Marks a spec as deprecated in favor of its deprecator"""
|
||||||
with self.write_transaction():
|
with self.write_transaction():
|
||||||
return self._deprecate(spec, deprecator)
|
return self._deprecate(spec, deprecator)
|
||||||
@ -1372,16 +1372,16 @@ def deprecate(self, spec, deprecator):
|
|||||||
@_autospec
|
@_autospec
|
||||||
def installed_relatives(
|
def installed_relatives(
|
||||||
self,
|
self,
|
||||||
spec,
|
spec: "spack.spec.Spec",
|
||||||
direction="children",
|
direction: str = "children",
|
||||||
transitive=True,
|
transitive: bool = True,
|
||||||
deptype: Union[dt.DepFlag, dt.DepTypes] = dt.ALL,
|
deptype: Union[dt.DepFlag, dt.DepTypes] = dt.ALL,
|
||||||
):
|
) -> Set["spack.spec.Spec"]:
|
||||||
"""Return installed specs related to this one."""
|
"""Return installed specs related to this one."""
|
||||||
if direction not in ("parents", "children"):
|
if direction not in ("parents", "children"):
|
||||||
raise ValueError("Invalid direction: %s" % direction)
|
raise ValueError("Invalid direction: %s" % direction)
|
||||||
|
|
||||||
relatives = set()
|
relatives: Set[spack.spec.Spec] = set()
|
||||||
for spec in self.query(spec):
|
for spec in self.query(spec):
|
||||||
if transitive:
|
if transitive:
|
||||||
to_add = spec.traverse(direction=direction, root=False, deptype=deptype)
|
to_add = spec.traverse(direction=direction, root=False, deptype=deptype)
|
||||||
@ -1408,7 +1408,7 @@ def installed_relatives(
|
|||||||
return relatives
|
return relatives
|
||||||
|
|
||||||
@_autospec
|
@_autospec
|
||||||
def installed_extensions_for(self, extendee_spec):
|
def installed_extensions_for(self, extendee_spec: "spack.spec.Spec"):
|
||||||
"""Returns the specs of all packages that extend the given spec"""
|
"""Returns the specs of all packages that extend the given spec"""
|
||||||
for spec in self.query():
|
for spec in self.query():
|
||||||
if spec.package.extends(extendee_spec):
|
if spec.package.extends(extendee_spec):
|
||||||
@ -1667,7 +1667,7 @@ def unused_specs(
|
|||||||
self,
|
self,
|
||||||
root_hashes: Optional[Container[str]] = None,
|
root_hashes: Optional[Container[str]] = None,
|
||||||
deptype: Union[dt.DepFlag, dt.DepTypes] = dt.LINK | dt.RUN,
|
deptype: Union[dt.DepFlag, dt.DepTypes] = dt.LINK | dt.RUN,
|
||||||
) -> "List[spack.spec.Spec]":
|
) -> List["spack.spec.Spec"]:
|
||||||
"""Return all specs that are currently installed but not needed by root specs.
|
"""Return all specs that are currently installed but not needed by root specs.
|
||||||
|
|
||||||
By default, roots are all explicit specs in the database. If a set of root
|
By default, roots are all explicit specs in the database. If a set of root
|
||||||
|
Loading…
Reference in New Issue
Block a user