Skip to content

Commit

Permalink
fixup! feat: Support inheritance
Browse files Browse the repository at this point in the history
  • Loading branch information
pawamoy committed Jun 19, 2023
1 parent 9f93ff0 commit 470c96c
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 7 deletions.
35 changes: 28 additions & 7 deletions duties.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ def fuzz(
"""
import logging

from griffe.loader import GriffeLoader
from griffe.cli import _load_packages as load_packages

def find_pdm_packages() -> list[str]:
Expand All @@ -314,21 +315,41 @@ def find_pdm_packages() -> list[str]:
).split("\n")

if not profile:
stblib_packages = sorted([m for m in sys.stdlib_module_names if not m.startswith("_")]) # type: ignore[attr-defined]
logging.basicConfig(level=getattr(logging, level))
stblib_packages = sorted([m for m in sys.stdlib_module_names if not m.startswith("_")]) # type: ignore[attr-defined]
griffe_load = lazy(load_packages, name="griffe.load")

# fuzz on standard lib
ctx.run(
griffe_load(stblib_packages, resolve_aliases=True, resolve_implicit=True, resolve_external=False),
title="Fuzz on standard library",
capture=None,
)
def compute_inherited_members(obj):
try:
is_class = obj.is_class
except Exception:
return
if is_class:
assert obj.inherited_members is not None
else:
for cls in obj.classes.values():
compute_inherited_members(cls)

def fuzz_stdlib():
loader = GriffeLoader()
for package in stblib_packages:
try:
loader.load_module(package)
except ModuleNotFoundError:
pass
loader.resolve_aliases(implicit=True, external=True)
for package in loader.modules_collection.members.values():
compute_inherited_members(package)

ctx.run(fuzz_stdlib, title="Fuzz on standard library", capture=False)

# fuzz on all PDM cached packages
if pdm:
packages = find_pdm_packages()
ctx.run(
griffe_load(packages, resolve_aliases=True),
title=f"Loading {len(packages)} packages",
title=f"Fuzz on {len(packages)} packages from PDM cache",
capture=None,
)
else:
Expand Down
12 changes: 12 additions & 0 deletions src/griffe/dataclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -983,6 +983,14 @@ def aliases(self) -> dict[str, Alias]: # noqa: D102
def member_is_exported(self, member: Object | Alias, *, explicitely: bool = True) -> bool: # noqa: D102
return self.final_target.member_is_exported(member, explicitely=explicitely)

@property
def inherited_members(self) -> dict[str, Alias]: # noqa: D102
return self.final_target.inherited_members

@property
def all_members(self) -> dict[str, Object | Alias]: # noqa: D102
return self.final_target.all_members

def is_kind(self, kind: str | Kind | set[str | Kind]) -> bool: # noqa: D102
return self.final_target.is_kind(kind)

Expand Down Expand Up @@ -1113,6 +1121,10 @@ def annotation(self) -> str | Name | Expression | None: # noqa: D102
def annotation(self, annotation: str | Name | Expression | None) -> None:
cast(Attribute, self.target).annotation = annotation

@property
def resolved_bases(self) -> list[Object]: # noqa: D102
return cast(Class, self.final_target).resolved_bases

def mro(self) -> list[Class]: # noqa: D102
return cast(Class, self.final_target).mro()

Expand Down

0 comments on commit 470c96c

Please sign in to comment.