-
Notifications
You must be signed in to change notification settings - Fork 225
Description
API 文档补全
以下是待补全 docstring 的 API 列表(共 109 个)
序号 | API 名称 | 认领人/状态/PR号 |
---|---|---|
1 | ppsci.data.process.transform.CropData | @Liyulingyue |
2 | ppsci.data.process.transform.FunctionalTransform | @Liyulingyue |
3 | ppsci.data.process.transform.Log1p | @Liyulingyue |
4 | ppsci.data.process.transform.Normalize | @Liyulingyue |
5 | ppsci.data.process.transform.Scale | @Liyulingyue |
6 | ppsci.data.process.transform.SqueezeData | @Liyulingyue |
7 | ppsci.data.process.transform.Translate | @Liyulingyue |
8 | ppsci.data.dataset.ERA5SampledDataset | @Liyulingyue |
9 | ppsci.data.dataset.VtuDataset | @Liyulingyue |
10 | ppsci.data.dataset.MeshAirfoilDataset | @MayYouBeProsperous |
11 | ppsci.data.dataset.MeshCylinderDataset | @MayYouBeProsperous |
12 | ppsci.arch.Arch.concat_to_tensor | @megemini |
13 | ppsci.arch.Arch.register_input_transform | @megemini |
14 | ppsci.arch.Arch.register_output_transform | @megemini |
15 | ppsci.arch.Arch.split_to_dict | @megemini |
16 | ppsci.arch.Arch.freeze | @megemini |
17 | ppsci.arch.Arch.unfreeze | @megemini |
18 | ppsci.arch.MLP | @MayYouBeProsperous |
19 | ppsci.arch.DeepONet | @MayYouBeProsperous |
20 | ppsci.arch.DeepPhyLSTM | @megemini |
21 | ppsci.arch.LorenzEmbedding | @Turingg |
22 | ppsci.arch.RosslerEmbedding | @Turingg |
23 | ppsci.arch.CylinderEmbedding | @1want2sleep |
24 | ppsci.arch.Generator | @Turingg |
25 | ppsci.arch.Discriminator | @1want2sleep |
26 | ppsci.arch.PhysformerGPT2 | @1want2sleep |
27 | ppsci.arch.ModelList | @1want2sleep |
28 | ppsci.arch.AFNONet | @1want2sleep |
29 | ppsci.arch.PrecipNet | @1want2sleep |
30 | ppsci.arch.UNetEx | @MayYouBeProsperous |
31 | ppsci.arch.NowcastNet | @1want2sleep |
32 | ppsci.autodiff.Jacobians.__call__ | @1want2sleep |
33 | ppsci.autodiff.Hessians .__call__ | @1want2sleep |
34 | ppsci.autodiff.clear | @1want2sleep |
35 | ppsci.equation.PDE.add_equation | @WoWYoYLoL |
36 | ppsci.equation.PDE.create_function | @WoWYoYLoL |
37 | ppsci.equation.PDE.create_symbols | @WoWYoYLoL |
38 | ppsci.equation.PDE.parameters | @1want2sleep |
39 | ppsci.equation.PDE.set_state_dict | @1want2sleep |
40 | ppsci.equation.PDE.state_dict | @1want2sleep |
41 | ppsci.geometry.Geometry.__and__ | @wufei2 |
42 | ppsci.geometry.Geometry.__or__ | @wufei2 |
43 | ppsci.geometry.Geometry.__sub__ | @wufei2 |
44 | ppsci.geometry.Geometry.__str__ | @wufei2 |
45 | ppsci.geometry.Geometry.difference | @wufei2 |
46 | ppsci.geometry.Geometry.intersection | @wufei2 |
47 | ppsci.geometry.Geometry.is_inside | @wufei2 |
48 | ppsci.geometry.Geometry.on_boundary | @wufei2 |
49 | ppsci.geometry.Geometry.periodic_point | @wufei2 |
50 | ppsci.geometry.Geometry.random_boundary_points | @wufei2 |
51 | ppsci.geometry.Geometry.random_points | @wufei2 |
52 | ppsci.geometry.Geometry.sample_boundary | @wufei2 |
53 | ppsci.geometry.Geometry.sample_interior | @wufei2 |
54 | ppsci.geometry.Geometry.sdf_derivatives | @wufei2 |
55 | ppsci.geometry.Geometry.uniform_boundary_points | @wufei2 |
56 | ppsci.geometry.Geometry.uniform_points | @wufei2 |
57 | ppsci.geometry.Geometry.union | @wufei2 |
58 | ppsci.geometry.Mesh.from_pymesh | @smallpoxscattered |
59 | ppsci.geometry.Mesh.scale | @smallpoxscattered |
60 | ppsci.geometry.Mesh.translate | @smallpoxscattered |
61 | ppsci.geometry.PointCloud.translate | @wufei2 |
62 | ppsci.geometry.PointCloud.scale | @wufei2 |
63 | ppsci.geometry.PointCloud.random_boundary_points | @wufei2 |
64 | ppsci.geometry.PointCloud.random_points | @wufei2 |
65 | ppsci.geometry.PointCloud.uniform_points | @wufei2 |
66 | ppsci.geometry.TimeDomain.on_initial | @1want2sleep |
67 | ppsci.geometry.TimeXGeometry.uniform_points | @1want2sleep |
68 | ppsci.geometry.TimeXGeometry.random_points | @1want2sleep |
69 | ppsci.geometry.TimeXGeometry.uniform_boundary_points | @1want2sleep |
70 | ppsci.geometry.TimeXGeometry.random_boundary_points | @1want2sleep |
71 | ppsci.geometry.TimeXGeometry.uniform_initial_points | @1want2sleep |
72 | ppsci.geometry.TimeXGeometry.random_initial_points | @1want2sleep |
73 | ppsci.geometry.TimeXGeometry.periodic_point | @1want2sleep |
74 | ppsci.geometry.TimeXGeometry.sample_initial_interior | @1want2sleep |
75 | ppsci.loss.FunctionalLoss | @NKNaN |
76 | ppsci.loss.L1Loss | @NKNaN |
77 | ppsci.loss.L2Loss | @NKNaN |
78 | ppsci.loss.L2RelLoss | @NKNaN |
79 | ppsci.loss.MAELoss | @NKNaN |
80 | ppsci.loss.MSELoss | @NKNaN |
81 | ppsci.loss.MSELossWithL2Decay | @NKNaN |
82 | ppsci.loss.IntegralLoss | @NKNaN |
83 | ppsci.loss.PeriodicL1Loss | @NKNaN |
84 | ppsci.loss.PeriodicL2Loss | @NKNaN |
85 | ppsci.loss.PeriodicMSELoss | @NKNaN |
86 | ppsci.metric.FunctionalMetric | @NKNaN |
87 | ppsci.metric.MAE | @NKNaN |
88 | ppsci.metric.MSE | @NKNaN |
89 | ppsci.metric.RMSE | @NKNaN |
90 | ppsci.metric.L2Rel | @NKNaN |
91 | ppsci.metric.MeanL2Rel | @NKNaN |
92 | ppsci.solver.Solver.predict | @NKNaN |
93 | ppsci.utils.initializer.linear_init_ | @NKNaN |
94 | ppsci.utils.initializer.conv_init_ | @NKNaN |
95 | ppsci.utils.misc.PrettyOrderedDict | @NKNaN |
96 | ppsci.utils.misc.Prettydefaultdict | @NKNaN |
97 | ppsci.utils.misc.all_gather | @1want2sleep |
98 | ppsci.utils.misc.concat_dict_list | @NKNaN |
99 | ppsci.utils.misc.convert_to_array | @NKNaN |
100 | ppsci.utils.misc.convert_to_dict | @NKNaN |
101 | ppsci.utils.misc.stack_dict_list | @NKNaN |
102 | ppsci.utils.misc.combine_array_with_time | @NKNaN |
103 | ppsci.utils.misc.run_at_rank0 | @ooooo-create |
104 | ppsci.utils.save_load.save_checkpoint | @ooooo-create |
105 | ppsci.utils.save_load.load_pretrain | @ooooo-create |
106 | ppsci.visualize.save_vtu_from_dict | @ooooo-create |
107 | ppsci.visualize.save_vtu_to_mesh | @ooooo-create |
108 | ppsci.visualize.save_plot_from_1d_dict | @ooooo-create |
109 | ppsci.visualize.save_plot_from_3d_dict | @ooooo-create |
认领方式
请大家以 comment 的形式认领任务,如:
【报名】:1、3、12-13
多个任务之间需要使用中文顿号分隔,报名多个连续任务可用横线表示,如 2-5
PR 提交格式:在 PR 的标题中以 【PPSCI Doc No.xxx】 开头,注明任务编号
看板信息
任务方向 | 任务数量 | 提交作品 / 任务认领 | 提交率 | 完成 | 完成率 |
---|---|---|---|---|---|
快乐开源 | 109 | 109 / 109 | 100.0% | 109 | 100.0% |
统计信息
排名不分先后 @Liyulingyue (9) @MayYouBeProsperous (5) @megemini (7) @Turingg (3) @1want2sleep (23) @WoWYoYLoL (3) @wufei2 (22) @smallpoxscattered (3) @NKNaN (27) @ooooo-create (7)
1. 背景
PaddleScience 目前有许多公开 API,通过 docstring 的方式给用户指示 API 功能简要描述,以及调用时涉及参数个数/类型、输出个数/类型,帮助用户更好地理解一个 API 的具体用法和使用场景。
具体地,一个好的 docstring 应该至少包含四个部分(按顺序排列,以 ppsci.utils.misc.cartesian_product
为例):
文档最终在网页端的渲染效果如下:
但目前在 PaddleScience 中,有少量公开 API 的文档是缺少以上要素的,具体分为几种情况
因此当用户在使用上述这些 API 时,可能无法快速、正确地知道它们能做什么以及在什么场景下使用,尤其是一部分实现较为复杂的 API,其理解成本会更高。最终导致开发的 API 因为无法被用户知悉而不被使用,既浪费了 API 开发的人力,也增加了用户自己实现的成本。
2. 收益
-
对于 PaddleScience 来说,完善 API 文档能显著减少用户的使用难度,增加 API 实际使用率,帮助用户更快地实现所需的功能。
-
对于参加本活动的开发者来说,可以学习以下三个方面的内容
- 如何编写一个好的 API 文档。
- 如何使用 doctest 插件对样例代码进行测试,让样例代码不仅能看,还能用于测试,保证 API 基本运行能力。
- 如何将 API 文档在项目文档中进行渲染,提升项目的规范性和可阅读性
3. 待完善的 API 文档
参考文档开头的表格
4. 开发流程
4.1. 撰写
-
文档要素缺失的情况具体该如何补全呢?
- 缺少参数、返回值类型的,补全参数和返回值类型;
- 缺少样例代码的,补全具有代表性的样例代码;
- 格式不正确的,修正格式;
-
样例代码如何撰写?
- 样例代码撰写方法与 python 交互式命令相同,以
>>>
的一行代码会直接执行,以...
开头的代码与>>>
区分,并不会马上执行,而是会等到下一个>>>
或者代码块结束,与中间遇到的所有代码组成完整的代码再执行,一般用于带缩进的代码结构,如 for、while、函数调用等完整代码块超过一行的情况。
- 样例代码撰写方法与 python 交互式命令相同,以
-
有的 API 样例代码并不会产生任何输出,该如何进行检查?
4.2. doctest 测试
首先安装 doctest,执行:pip install pydoctest==0.1.22
然后运行 doctest并测试指定文件,执行:python -m doctest xxxx.py
,如测试未通过则需要重新修改案例代码直至通过。此处 xxx.py
是你修改后的 docstring 所在的代码文件路径(建议使用绝对路径)。
4.3. 文档渲染
文档渲染基本原理:项目文档渲染依赖于 mkdocs、mkdocs-material,而其中的 API 文档涉及到代码引用(避免维护python和文档两份代码,而是直接从 python 文件中抽取对应位置的代码展示在网页前端)功能,依赖于 mkdocstrings 插件(可以在 PaddleScience/mkdocs.yml
中找到相关配置)。
- 安装文档依赖:
pip install docs/requirements.txt
- 在
PaddleScience/
目录下执行:mkdocs serve -a 127.0.0.1:8687
。等待终端渲染完毕,打印出预览地址,在网页端打开并进入 【API 文档】中找到自己修改的内容,即可预览修改效果。如下所示
4.4. 代码提交
Important
PR 标题模板:【PPSCI Doc No.{id}】
,如 【PPSCI Doc No.66】
代码内容提交请参考:https://paddlescience-docs.readthedocs.io/zh/latest/zh/development/#4 【整理代码并提交】章节
5. 参考资料
Metadata
Metadata
Assignees
Labels
Type
Projects
Status