@@ -13,7 +13,7 @@ pvlib python generally follows the `PEP 8 -- Style Guide for Python Code
13
13
is 79 characters.
14
14
15
15
pvlib python uses a mix of full and abbreviated variable names. See
16
- :ref: `variables_style_rules `. We could be better about consistency.
16
+ :ref: `nomenclature `.
17
17
Prefer full names for new contributions. This is especially important
18
18
for the API. Abbreviations can be used within a function to improve the
19
19
readability of formulae.
@@ -70,6 +70,81 @@ the ``docs/readthedocs.org:pvlib-python`` link within the checks
70
70
status box at the bottom of the pull request.
71
71
72
72
73
+ .. _reference_style :
74
+
75
+ References
76
+ ----------
77
+ pvlib-python is transitioning to the `IEEE reference style <https://journals.ieeeauthorcenter.ieee.org/wp-content/uploads/sites/7/IEEE_Reference_Guide.pdf >`_,
78
+ which should be used in all new contributions. At minimum, a reference should
79
+ include:
80
+
81
+ * Author list (for more than six authors, list only the first with et al.)
82
+ * Publication title
83
+ * Publisher (journal title, laboratory name, etc.)
84
+ * Year of publication
85
+ * DOI (if available)
86
+
87
+ The recommended citation style for several media types is as follows:
88
+
89
+ **Journal article **:
90
+
91
+ Author initials and surname, "Title of article," abbreviated journal
92
+ title, vol. number, issue number, page numbers, Abbreviated Month Year.
93
+
94
+ **Book **:
95
+
96
+ Author initials. Author Surname, "Chapter title" in Book Title, xth ed.
97
+ City of Publisher, (only U.S. State), Country: Abbrev. of Publisher, year,
98
+ ch. x, sec. x, pp. xxx–xxx.
99
+
100
+ **Technical report **:
101
+
102
+ Author initials. Author Surname, "Report title" Abbrev. publisher name,
103
+ City of publisher, Abbrev. State, Country, Rep. xxx, year
104
+
105
+ The example below shows how to cite material and generate a reference list
106
+ using the IEEE style in a docstring::
107
+
108
+ This is the recommended citation for the pvlib-python project [1]_. There
109
+ are also some conference papers linked to pvlib, for example [2]_.
110
+
111
+ Other types of reference you may find in the pvlib-python documentation
112
+ include books [3]_, technical reports [4]_, and websites [5]_.
113
+
114
+ References
115
+ ----------
116
+ .. [1] K. Anderson, C. Hansen, W. Holmgren, A. Jensen, M. Mikofski,
117
+ and A Driesse. "pvlib python: 2023 project update." J. Open Source
118
+ Softw. vol. 8, no. 92, pp. 5994, Dec 2023,
119
+ :doi:`10.21105/joss.05994`.
120
+
121
+ .. [2] J. S. Stein, "The Photovoltaic Performance Modeling Collaborative
122
+ (PVPMC)," In Proc. 38th IEEE Photovoltaic Specialists Conference
123
+ (PVSC), Austin, TX, USA, 2012, pp. 3048-3052,
124
+ :doi:`10.1109/PVSC.2012.6318225`.
125
+
126
+ .. [3] J. A. Duffie and W. A. Beckman, "Solar Radiation" in Solar
127
+ Engineering of Thermal Processes, 3rd ed, New York, USA, J. Wiley
128
+ and Sons, 2006, ch. 1, sec. 1.5, pp.9-11.
129
+
130
+ .. [4] R. Bird and C. Riordan, "Simple solar spectral model for direct and
131
+ diffuse irradiance on horizontal and tilted planes at the earth’s
132
+ surface for cloudless atmospheres", NREL, Golden, CO, USA, Technical
133
+ Report TR-215-2436, 1984, :doi:`10.2172/5986936`.
134
+
135
+ .. [5] "PVPMC Home." Sandia National Laboratories PV Performance Modeling
136
+ Collaborative. Accessed: Oct. 17, 2024. [Online.] Available:
137
+ <https://pvpmc.sandia.gov/>_
138
+
139
+ Things to note:
140
+
141
+ * In-text numeric citations are a number inside square brackets, followed
142
+ by an underscore, e.g. ``[1]_ ``.
143
+ * To include a DOI, you can use pvlib's custom ``:doi: ``
144
+ `Sphinx role <https://www.sphinx-doc.org/en/master/usage/restructuredtext/roles.html >`_,
145
+ followed by the DOI inside a set of backticks.
146
+
147
+
73
148
.. _building-the-documentation :
74
149
75
150
Building the documentation
@@ -88,7 +163,7 @@ An easy way to do this is with::
88
163
89
164
Note: Anaconda users may have trouble using the above command to update an
90
165
older version of docutils. If that happens, you can update it with ``conda ``
91
- (e.g. ``conda install docutils=0.15.2 ``) and run the above command again.
166
+ (e.g. ``conda install docutils=0.21 ``) and run the above command again.
92
167
93
168
Once the ``doc `` dependencies are installed, navigate to ``/docs/sphinx `` and
94
169
execute::
@@ -107,6 +182,116 @@ Note that Windows users need not have the ``make`` utility installed as pvlib
107
182
includes a ``make.bat `` batch file that emulates its interface.
108
183
109
184
185
+ .. _example-docstring :
186
+
187
+ Example Docstring
188
+ -----------------
189
+
190
+ Here is a template for a function docstring that encapsulates the main
191
+ features that may be used in any docstring. Note that not all sections are
192
+ required for every function.
193
+
194
+ .. code-block :: python
195
+
196
+ def example_function (poa_global , exponents , degree_symbol , time_ref = ' UT' ,
197
+ optional_arg = None ):
198
+ r """
199
+ One-sentence summary of the function (no citations).
200
+
201
+ A longer description of the function. This can include citations
202
+ (references) to literature [1]_, websites [2]_, and other code elements
203
+ such as functions (:py:func:`pvlib.location.lookup_altitude`) and
204
+ classes (:py:class:`pvlib.location.Location`).
205
+
206
+ .. versionadded:: 0.0.1
207
+ There are many more purpose-specific directives, admonitions and such
208
+ available at `this link <admonitions>`_. E.g.: ``.. versionchanged::``,
209
+ ``.. deprecated::``, ``.. note::`` and ``.. warning::``.
210
+
211
+ .. _admonitions: https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html#admonitions-messages-and-warnings
212
+
213
+ Parameters
214
+ ----------
215
+ poa_global : numeric
216
+ Plane-of-array global irradiance, see :term:`poa_global`. [Wm⁻²].
217
+ exponents : array-like
218
+ A list of exponents. [x⁰¹²³⁴⁵⁶⁷⁸⁹⁻].
219
+ degree_symbol : pandas.Series or pandas.DataFrame
220
+ It's different from superscript zero. [°].
221
+ time_ref : ``'UT'`` or ``'TST'``, default: ``'UT'``
222
+ ``'UT'`` (universal time) or ``'TST'`` (True Solar Time).
223
+ optional_arg : integer, optional
224
+ A description of ``optional_arg``. [Unitless].
225
+
226
+ Specify a suitable datatype for each parameter. Other common
227
+ data types include ``str``, ``bool``, ``float``, ``numeric``
228
+ and ``pandas.DatetimeIndex``.
229
+
230
+ Returns
231
+ -------
232
+ name : numeric
233
+ A description of the return value.
234
+
235
+ Raises
236
+ ------
237
+ ValueError
238
+ If ``poa_global`` is negative.
239
+ KeyError
240
+ If ``time_ref`` does not exist.
241
+
242
+ Notes
243
+ -----
244
+ This section can include additional information about the function.
245
+
246
+ For example, an equation using LaTeX markup:
247
+
248
+ .. math::
249
+
250
+ a = \left(\frac{b}{c}\right)^2
251
+
252
+ where :math:`a` is the result of the equation, and :math:`b` and :math:`c`
253
+ are inputs.
254
+
255
+ Or a figure with a caption:
256
+
257
+ .. figure:: ../../_images/pvlib_logo_horiz.png
258
+ :scale: 10%
259
+ :alt: alternate text
260
+ :align: center
261
+
262
+ Figure caption.
263
+
264
+ See Also
265
+ --------
266
+ pvlib.location.lookup_altitude, pvlib.location.Location
267
+
268
+ Examples
269
+ --------
270
+ >>> example_function(1, 1, pd.Series([1]), "TST", 2)
271
+ 'Something'
272
+
273
+ References
274
+ ----------
275
+ A IEEE citation to a relevant reference. You may use an automatic
276
+ citation generator to format the citation correctly.
277
+
278
+ .. [1] Anderson, K., Hansen, C., Holmgren, W., Jensen, A., Mikofski, M.,
279
+ and Driesse, A. "pvlib python: 2023 project update." Journal of Open
280
+ Source Software, 8(92), 5994, (2023). :doi:`10.21105/joss.05994`.
281
+ .. [2] J. Smith and J. Doe. "Obama inaugurated as President." CNN.com.
282
+ Accessed: Feb. 1, 2009. [Online.]
283
+ Available: http://www.cnn.com/POLITICS/01/21/obama_inaugurated/index.html
284
+ """
285
+ a = " Some"
286
+ b = " thing"
287
+ return a + b
288
+
289
+ A preview of how this docstring would render in the documentation can be seen in the
290
+ following file: :download: `Example docstring<../_images/example_function_screenshot.png> `.
291
+
292
+ Remember that to show the docstring in the documentation, you must list
293
+ the function in the appropriate ``.rst `` file in the ``docs/sphinx/source/reference `` folder.
294
+
110
295
.. _example-gallery :
111
296
112
297
Example Gallery
0 commit comments