Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/drivers.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Supported Drivers
=================

dpdata supports the following drivers:

.. csv-table:: Supported Drivers
:file: drivers.csv
:header-rows: 1
2 changes: 2 additions & 0 deletions docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Welcome to dpdata's documentation!
Overview <self>
cli
formats
drivers
minimizers
api/api
credits

Expand Down
51 changes: 51 additions & 0 deletions docs/make_format.py
Original file line number Diff line number Diff line change
@@ -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


Expand All @@ -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

Expand Down Expand Up @@ -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)),
}
)
8 changes: 8 additions & 0 deletions docs/minimizers.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Supported Minimizers
====================

dpdata supports the following minimizers:

.. csv-table:: Supported Minimizers
:file: minimizers.csv
:header-rows: 1
22 changes: 22 additions & 0 deletions dpdata/driver.py
Original file line number Diff line number Diff line change
Expand Up @@ -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."""

Expand Down Expand Up @@ -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."""

Expand Down