Skip to content

Commit

Permalink
New tool
Browse files Browse the repository at this point in the history
  • Loading branch information
bashtage committed Jul 25, 2020
1 parent 9327c29 commit 44578bf
Showing 1 changed file with 80 additions and 0 deletions.
80 changes: 80 additions & 0 deletions tools/enumerate-api.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
import importlib
from setuptools import find_packages
import setuptools
import os
import sys
from pkgutil import iter_modules
import inspect

FILE_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT = os.path.join(FILE_DIR, "..", "statsmodels")


def find_modules(path):
modules = set()
for pkg in find_packages(path):
modules.add(pkg)
pkgpath = path + "/" + pkg.replace(".", "/")
if sys.version_info.major == 2 or (
sys.version_info.major == 3 and sys.version_info.minor < 6
):
for _, name, ispkg in iter_modules([pkgpath]):
if not ispkg:
modules.add(pkg + "." + name)
else:
for info in iter_modules([pkgpath]):
if not info.ispkg:
modules.add(pkg + "." + info.name)
return modules


modules = find_modules(ROOT)
funcs = {}
for mod in modules:
module = f"statsmodels.{mod}"
print(module)
if (
".sandbox" in module
or module.endswith(".tests")
or ".tests." in module
):
continue
lib = None
try:
lib = importlib.import_module(module)
except Exception:
pass
if lib is None:
continue
for v in dir(lib):
if v.startswith("_"):
continue
func = getattr(lib, v)
if not (inspect.isfunction(func) or inspect.isclass(func)):
continue
if "statsmodels" not in func.__module__:
continue
try:
sig = inspect.signature(func)
funcs[f"{func.__module__}.{v}"] = tuple(
k for k in sig.parameters.keys()
)
except Exception:
funcs[f"{func.__module__}.{v}"] = tuple()
if inspect.isclass(func):
for v2 in dir(func):
if v2.startswith("_"):
continue
method = getattr(func, v2)
if not (
inspect.isfunction(method)
or inspect.isclass(method)
or inspect.ismethod(method)
):
continue
sig = inspect.signature(method)
funcs[f"{method.__module__}.{v}.{v2}"] = tuple(
k for k in sig.parameters.keys()
)
print(f"{method.__module__}.{v}.{v2}")
print(f"{module}.{v}")

0 comments on commit 44578bf

Please sign in to comment.