@@ -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+ .. _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+ 
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