diff --git a/docs/drivers.rst b/docs/drivers.rst new file mode 100644 index 000000000..19cc06196 --- /dev/null +++ b/docs/drivers.rst @@ -0,0 +1,8 @@ +Supported Drivers +================= + +dpdata supports the following drivers: + +.. csv-table:: Supported Drivers + :file: drivers.csv + :header-rows: 1 diff --git a/docs/index.rst b/docs/index.rst index 6b0c5344e..c25592c17 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,6 +13,8 @@ Welcome to dpdata's documentation! Overview cli formats + drivers + minimizers api/api credits diff --git a/docs/make_format.py b/docs/make_format.py index ae8002c13..801e08308 100644 --- a/docs/make_format.py +++ b/docs/make_format.py @@ -1,9 +1,12 @@ import csv +from typing import Any from collections import defaultdict # ensure all plugins are loaded! import dpdata.plugins from dpdata.format import Format +from dpdata.driver import Driver +from dpdata.driver import Minimizer from dpdata.system import get_cls_name @@ -14,6 +17,20 @@ def get_formats() -> dict: return formats +def get_driver() -> dict: + drivers = defaultdict(list) + for kk, ff in Driver.get_drivers().items(): + drivers[ff].append(kk) + return drivers + + +def get_minimizer() -> dict: + minimizers = defaultdict(list) + for kk, ff in Minimizer.get_minimizers().items(): + minimizers[ff].append(kk) + return minimizers + + def detect_overridden(cls: Format, method: str) -> bool: """Check whether a method is override @@ -102,3 +119,37 @@ def check_supported(fmt: Format): ), } ) + + drivers = get_driver() + with open("drivers.csv", "w", newline="") as csvfile: + fieldnames = [ + "Class", + "Alias", + ] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + + writer.writeheader() + for kk, vv in drivers.items(): + writer.writerow( + { + "Class": get_cls_link(kk), + "Alias": "\n".join(("``%s``" % vvv for vvv in vv)), + } + ) + + minimizers = get_minimizer() + with open("minimizers.csv", "w", newline="") as csvfile: + fieldnames = [ + "Class", + "Alias", + ] + writer = csv.DictWriter(csvfile, fieldnames=fieldnames) + + writer.writeheader() + for kk, vv in minimizers.items(): + writer.writerow( + { + "Class": get_cls_link(kk), + "Alias": "\n".join(("``%s``" % vvv for vvv in vv)), + } + ) diff --git a/docs/minimizers.rst b/docs/minimizers.rst new file mode 100644 index 000000000..88551081d --- /dev/null +++ b/docs/minimizers.rst @@ -0,0 +1,8 @@ +Supported Minimizers +==================== + +dpdata supports the following minimizers: + +.. csv-table:: Supported Minimizers + :file: minimizers.csv + :header-rows: 1 diff --git a/dpdata/driver.py b/dpdata/driver.py index 0f9039472..2d66ae41c 100644 --- a/dpdata/driver.py +++ b/dpdata/driver.py @@ -64,6 +64,17 @@ def get_driver(key: str) -> "Driver": except KeyError as e: raise RuntimeError("Unknown driver: " + key) from e + @staticmethod + def get_drivers() -> dict: + """Get all driver plugins. + + Returns + ------- + dict + dict for all driver plugisn + """ + return Driver.__DriverPlugin.plugins + def __init__(self, *args, **kwargs) -> None: """Setup the driver.""" @@ -206,6 +217,17 @@ def get_minimizer(key: str) -> "Minimizer": except KeyError as e: raise RuntimeError("Unknown minimizer: " + key) from e + @staticmethod + def get_minimizers() -> dict: + """Get all minimizer plugins. + + Returns + ------- + dict + dict for all minimizer plugisn + """ + return Minimizer.__MinimizerPlugin.plugins + def __init__(self, *args, **kwargs) -> None: """Setup the minimizer."""