@@ -13,7 +13,7 @@ pvlib python generally follows the `PEP 8 -- Style Guide for Python Code
1313is 79 characters.
1414
1515pvlib 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 `.
1717Prefer full names for new contributions. This is especially important
1818for the API. Abbreviations can be used within a function to improve the
1919readability of formulae.
@@ -70,6 +70,81 @@ the ``docs/readthedocs.org:pvlib-python`` link within the checks
7070status box at the bottom of the pull request.
7171
7272
73+ .. _references :
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+
73148.. _building-the-documentation :
74149
75150Building the documentation
@@ -88,7 +163,7 @@ An easy way to do this is with::
88163
89164Note: Anaconda users may have trouble using the above command to update an
90165older 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.
92167
93168Once the ``doc `` dependencies are installed, navigate to ``/docs/sphinx `` and
94169execute::
@@ -107,6 +182,116 @@ Note that Windows users need not have the ``make`` utility installed as pvlib
107182includes a ``make.bat `` batch file that emulates its interface.
108183
109184
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+
110295.. _example-gallery :
111296
112297Example Gallery
0 commit comments