.. highlight:: rest

.. _configobj: http://configobj.readthedocs.io/en/latest/

.. _pypeitpar:

================
PypeIt Parameters
================

PypeIt allows you to customize its execution without having to change the
code directly.

Although not ubiquitous, most optional arguments of PypeIt's
algorithms are contained within the :class:`pypeit.par.pypeitpar.PypeItPar`
superset.  See the `Current PypeItPar Parameter Hierarchy`_ below for the
current structure of a :class:`pypeit.par.pypeitpar.PypeItPar` instance.

More importantly, each instrument served provides its own default values
for :class:`pypeit.par.pypeitpar.PypeItPar` as defined by its
`default_pypeit_par` method; e.g.,
:func:`pypeit.spectrographs.shane_kast.ShaneKastSpectrograph.default_pypeit_par`.
Users can alter these parameters via the PypeIt file, see
:ref:`pypeit_file`.  Only those parameters that the user wishes to be
different from the default *used for their specified instrument* need to
be includes in the PypeIt file.

PypeIt uses the `configobj`_ class to parse the user supplied arguments.
The syntax is important and the nesting of the parameter changes must
match the `Current PypeItPar Parameter Hierarchy`_.  Examples of `How to
change parameters using the PypeIt file`_ are given below.

