-
Notifications
You must be signed in to change notification settings - Fork 233
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










