```"""
Module containing utilities for radiance calculations

"""

import inspect

import numpy as np

"""
Planck function to convert radiance to temperature or temperature to
radiance given a corresponding wavenumber value.

Constants have been updated to reflect those used on the NOAA site
https://ncc.nesdis.noaa.gov/data/planck.html

Parameters
----------
wnum : float or list or numpy array
Wave number for corresponding radiance or temperature value.
radiance : float or list or numpy array
Radiance value of corresponding wavenumber in W/m^2/sr/cm.
temperature : float or list or numpy array
Temperature value of corresponding wavenumber in degK/cm.
units : string
Units value to use.  Default to cm, other option is m

References
----------
This procedure was created for the AERI vs. IRT comparison from F77 code
orginally written by Jim Liligren and passed to the DQO by the ARM IRT
mentor.

Example
-------
> planck_converter(wnum=1100, temperature=300)
81.49372361846207

299.9974150039702

"""
# h = Plancks's constant
# k = Boltzmann's constant
# c = Speed of light in a vacuum
if units == 'cm':
# C1 = 2 h c^2, [W cm^2]
C1 = 1.191042e-5  # For radiance in units of mW m^-2 sr^-1 /cm^-1
# C2 = h c / k, [K cm]
C2 = 1.4387752
if units == 'm':
# C1 = 2 h c^2, [W m^2]
C1 = 1.191042e-16  # For radiance in units of mW m^-2 sr^-1 /cm^-1
# C2 = h c / k, [K m]
C2 = 1.4387752e-2

func_name = inspect.stack()[0][3]
if wnum is None:
raise ValueError(f'No wnum values provided for {func_name}() function.\n')

if radiance is None and temperature is None:
raise ValueError(
f'No radiance or temperature values provided for {func_name}() function.\n'
)