-
Notifications
You must be signed in to change notification settings - Fork 525
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support generating JSON schema for integration with VSCode (#3849)
Doc: ![image](https://github.com/deepmodeling/deepmd-kit/assets/9496702/b313616d-4f98-4978-931b-b135208f42ac) Validation of type: ![image](https://github.com/deepmodeling/deepmd-kit/assets/9496702/c54b912d-9440-4dd2-94be-5c5392f492c8) Validation of required keys: ![image](https://github.com/deepmodeling/deepmd-kit/assets/9496702/bf6c6469-d6a1-4d89-9015-b845ddddc921) Auto-completion: ![image](https://github.com/deepmodeling/deepmd-kit/assets/9496702/c1aea3ef-0c93-4a50-85e4-7070c40460dd) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Added support for generating JSON schema documentation. - Updated `--out-type` argument choices to include "json_schema". - **Documentation** - Added instructions for using Visual Studio Code to handle JSON files and generate JSON schema. - **Tests** - Introduced unit tests for the `doc_train_input` function to ensure proper handling of different output types. - **Chores** - Updated the version constraint for the `dargs` dependency to `>= 0.4.6`. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Jinzhe Zeng <[email protected]>
- Loading branch information
Showing
6 changed files
with
92 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,8 +1,42 @@ | ||
Training Parameters | ||
====================================== | ||
.. note:: | ||
One can load, modify, and export the input file by using our effective web-based tool `DP-GUI <https://deepmodeling.com/dpgui/input/deepmd-kit-2.0>`_ online or hosted using the :ref:`command line interface <cli>` :code:`dp gui`. All training parameters below can be set in DP-GUI. By clicking "SAVE JSON", one can download the input file for furthur training. | ||
One can load, modify, and export the input file by using our effective web-based tool `DP-GUI <https://deepmodeling.com/dpgui/input/deepmd-kit-2.0>`_ online or hosted using the :ref:`command line interface <cli>` :code:`dp gui`. All training parameters below can be set in DP-GUI. By clicking "SAVE JSON", one can download the input file for further training. | ||
|
||
.. note:: | ||
One can benefit from IntelliSense and validation when | ||
:ref:`writing JSON files using Visual Studio Code <json_vscode>`. | ||
See :ref:`here <json_vscode>` to learn how to configure. | ||
|
||
.. dargs:: | ||
:module: deepmd.tf.utils.argcheck | ||
:module: deepmd.utils.argcheck | ||
:func: gen_args | ||
|
||
.. _json_vscode: | ||
|
||
Writing JSON files using Visual Studio Code | ||
------------------------------------------- | ||
|
||
When writing JSON files using `Visual Studio Code <https://code.visualstudio.com/>`_, one can benefit from IntelliSense and | ||
validation by adding a `JSON schema <https://json-schema.org/>`_. | ||
To do so, in a VS Code workspace, one can generate a JSON schema file for the input file by running the following command: | ||
|
||
.. code-block:: bash | ||
dp doc-train-input --out-type json_schema > deepmd.json | ||
Then one can `map the schema <https://code.visualstudio.com/docs/languages/json#_mapping-to-a-schema-in-the-workspace>`_ | ||
by updating the workspace settings in the `.vscode/settings.json` file as follows: | ||
|
||
.. code-block:: json | ||
{ | ||
"json.schemas": [ | ||
{ | ||
"fileMatch": [ | ||
"/**/*.json" | ||
], | ||
"url": "./deepmd.json" | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
# SPDX-License-Identifier: LGPL-3.0-or-later | ||
import io | ||
import json | ||
import unittest | ||
from contextlib import ( | ||
redirect_stdout, | ||
) | ||
|
||
from deepmd.entrypoints.doc import ( | ||
doc_train_input, | ||
) | ||
|
||
|
||
class TestDocTrainInput(unittest.TestCase): | ||
def test_rst(self): | ||
f = io.StringIO() | ||
with redirect_stdout(f): | ||
doc_train_input(out_type="rst") | ||
self.assertNotEqual(f.getvalue(), "") | ||
|
||
def test_json(self): | ||
f = io.StringIO() | ||
with redirect_stdout(f): | ||
doc_train_input(out_type="json") | ||
# validate json | ||
json.loads(f.getvalue()) | ||
|
||
def test_json_schema(self): | ||
f = io.StringIO() | ||
with redirect_stdout(f): | ||
doc_train_input(out_type="json_schema") | ||
# validate json | ||
json.loads(f.getvalue()) |