pvlib-python icon indicating copy to clipboard operation
pvlib-python copied to clipboard

Document internal module-level constants

Open echedey-ls opened this issue 1 year ago • 5 comments

Is your feature request related to a problem? Please describe. A lot of times constants are referenced in the documentation, but the only way to access them is either by visual inspection of the code or importing the object that contains it programmatically.

Describe the solution you'd like Include constants in a toctree and add their respective documentation.

Describe alternatives you've considered A toctree dedicated exclusively to all pvlib constants.

Additional context https://stackoverflow.com/questions/40748886/how-can-i-document-a-constant-module-level-variable-with-sphinx-docstring-wit https://stackoverflow.com/questions/50831070/how-to-document-linkable-constants-with-sphinx

echedey-ls avatar Jun 17 '24 21:06 echedey-ls

To my knowledge, the current sphinx docs document only one module-level variable; see the bottom of this page: https://pvlib-python.readthedocs.io/en/stable/reference/pv_modeling/temperature.html

I think documenting the variables near the functions they are related to makes sense. I don't think a toctree for all variables makes sense.

kandersolar avatar Jun 18 '24 16:06 kandersolar

Agree with Kevin that they should be documented near where they belong. I am overall very supportive of documenting them! For example, the SURFACE_ALBEDOS comes from a publication and that would be nice to know.

AdamRJensen avatar Jun 18 '24 17:06 AdamRJensen

Should we consider properties for constants. Although highly unlikely, constants could be accidentally overwritten and currently nothing in pvlib would alert you to this. Although clumsy a property is read only and cannot be changed without a set method

mikofski avatar Jun 18 '24 18:06 mikofski

Although highly unlikely, constants could be accidentally overwritten and currently nothing in pvlib would alert you to this

I'm only in favour about marking their type as Final. It would alert linters. The same way we almost never check input values to models because we expect the user-base to know what they are doing, I would not try to over-complicate providing some handy values.

echedey-ls avatar Jun 18 '24 20:06 echedey-ls

Agreed, I only mention it here for posterity in case this becomes an issue again in the future. The documentation of TEMPERATURE was previously an issue, & I had suggested making it a class which allows it & its members to be documented. This was a drop in replacement, although admittedly unnecessarily overcomplicated

mikofski avatar Jun 19 '24 17:06 mikofski