From 31241058d18e677e305c53e518ab50d54e339570 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Fri, 27 Jan 2023 12:30:44 -0500 Subject: [PATCH 1/6] docs: add the list of drivers and minimizers Signed-off-by: Jinzhe Zeng --- docs/drivers.rst | 8 +++++++ docs/index.rst | 2 ++ docs/make_format.py | 51 +++++++++++++++++++++++++++++++++++++++++++++ docs/minimizer.rst | 8 +++++++ dpdata/system.py | 4 ++-- 5 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 docs/drivers.rst create mode 100644 docs/minimizer.rst diff --git a/docs/drivers.rst b/docs/drivers.rst new file mode 100644 index 000000000..f34d972af --- /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 \ No newline at end of file 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/minimizer.rst b/docs/minimizer.rst new file mode 100644 index 000000000..a05601e3b --- /dev/null +++ b/docs/minimizer.rst @@ -0,0 +1,8 @@ +Supported Minimizers +==================== + +dpdata supports the following minimizers: + +.. csv-table:: Supported Minimizers + :file: minimizers.csv + :header-rows: 1 \ No newline at end of file diff --git a/dpdata/system.py b/dpdata/system.py index f7ad7b5f8..7eb18941d 100644 --- a/dpdata/system.py +++ b/dpdata/system.py @@ -1532,7 +1532,7 @@ def get_cls_name(cls: object) -> str: str the fully qualified name of a class """ - return ".".join([cls.__module__, cls.__name__]) + return ".".join([cls.__module__, cls.__name__]) # type: ignore def add_format_methods(): @@ -1553,7 +1553,7 @@ def add_format_methods(): for method, formatcls in Format.get_from_methods().items(): - def get_func(ff): + def get_func(ff): # type: ignore # ff is not initized when defining from_format so cannot be polluted def from_format(self, file_name, **kwargs): return self.from_fmt_obj(ff(), file_name, **kwargs) From 837bedccfaf2c4c34da1a5bc363a8ad7ad29ea7d Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 28 Jan 2023 19:14:16 +0000 Subject: [PATCH 2/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- docs/drivers.rst | 2 +- docs/minimizer.rst | 2 +- dpdata/system.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/drivers.rst b/docs/drivers.rst index f34d972af..19cc06196 100644 --- a/docs/drivers.rst +++ b/docs/drivers.rst @@ -5,4 +5,4 @@ dpdata supports the following drivers: .. csv-table:: Supported Drivers :file: drivers.csv - :header-rows: 1 \ No newline at end of file + :header-rows: 1 diff --git a/docs/minimizer.rst b/docs/minimizer.rst index a05601e3b..88551081d 100644 --- a/docs/minimizer.rst +++ b/docs/minimizer.rst @@ -5,4 +5,4 @@ dpdata supports the following minimizers: .. csv-table:: Supported Minimizers :file: minimizers.csv - :header-rows: 1 \ No newline at end of file + :header-rows: 1 diff --git a/dpdata/system.py b/dpdata/system.py index 7eb18941d..3326c5ecf 100644 --- a/dpdata/system.py +++ b/dpdata/system.py @@ -1532,7 +1532,7 @@ def get_cls_name(cls: object) -> str: str the fully qualified name of a class """ - return ".".join([cls.__module__, cls.__name__]) # type: ignore + return ".".join([cls.__module__, cls.__name__]) # type: ignore def add_format_methods(): From 2930c8de8eaf71f49928286a8a82d6b485803250 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Fri, 27 Jan 2023 12:32:19 -0500 Subject: [PATCH 3/6] revert system.py Signed-off-by: Jinzhe Zeng --- dpdata/system.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpdata/system.py b/dpdata/system.py index 3326c5ecf..f7ad7b5f8 100644 --- a/dpdata/system.py +++ b/dpdata/system.py @@ -1532,7 +1532,7 @@ def get_cls_name(cls: object) -> str: str the fully qualified name of a class """ - return ".".join([cls.__module__, cls.__name__]) # type: ignore + return ".".join([cls.__module__, cls.__name__]) def add_format_methods(): @@ -1553,7 +1553,7 @@ def add_format_methods(): for method, formatcls in Format.get_from_methods().items(): - def get_func(ff): # type: ignore + def get_func(ff): # ff is not initized when defining from_format so cannot be polluted def from_format(self, file_name, **kwargs): return self.from_fmt_obj(ff(), file_name, **kwargs) From ba81d66386783a460b2b3d98cddde0358e710d92 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 30 Jan 2023 14:05:37 -0500 Subject: [PATCH 4/6] add methods to plugins --- dpdata/driver.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/dpdata/driver.py b/dpdata/driver.py index 0f9039472..166ac6ebb 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.""" From 1b2d8d25a657d890502f32096d229585d550db65 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 19:05:56 +0000 Subject: [PATCH 5/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dpdata/driver.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dpdata/driver.py b/dpdata/driver.py index 166ac6ebb..2d66ae41c 100644 --- a/dpdata/driver.py +++ b/dpdata/driver.py @@ -67,7 +67,7 @@ def get_driver(key: str) -> "Driver": @staticmethod def get_drivers() -> dict: """Get all driver plugins. - + Returns ------- dict @@ -220,7 +220,7 @@ def get_minimizer(key: str) -> "Minimizer": @staticmethod def get_minimizers() -> dict: """Get all minimizer plugins. - + Returns ------- dict From a7fede68b4f45e081a9df97a5ee88281ffb7a8d2 Mon Sep 17 00:00:00 2001 From: Jinzhe Zeng Date: Mon, 30 Jan 2023 14:23:48 -0500 Subject: [PATCH 6/6] Rename minimizer.rst to minimizers.rst --- docs/{minimizer.rst => minimizers.rst} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/{minimizer.rst => minimizers.rst} (100%) diff --git a/docs/minimizer.rst b/docs/minimizers.rst similarity index 100% rename from docs/minimizer.rst rename to docs/minimizers.rst