def ra_decimal_to_sexegesimal(<EOL>self,<EOL>ra,<EOL>delimiter="<STR_LIT::>"):
self.log.info('<STR_LIT>')<EOL>try:<EOL><INDENT>self.log.debug("<STR_LIT>")<EOL>ra = float(ra)<EOL><DEDENT>except Exception as e:<EOL><INDENT>self.log.error(<EOL>"<STR_LIT>" % (str(e),))<EOL>return -<NUM_LIT:1><EOL><DEDENT>if ra > <NUM_LIT:0.> and ra < <NUM_LIT>:<EOL><INDENT>pass<EOL><DEDENT>elif ra < <NUM_LIT:0> and ra > -<NUM_LIT>:<EOL><INDENT>ra = <NUM_LIT> + ra<EOL><DEDENT>else:<EOL><INDENT>self.log.error(<EOL>"<STR_LIT>")<EOL>return -<NUM_LIT:1><EOL><DEDENT>decimalLen = len(repr(ra).split("<STR_LIT:.>")[-<NUM_LIT:1>])<EOL>precision = decimalLen - <NUM_LIT:5><EOL>import math<EOL>ra_hh = int(ra / <NUM_LIT:15>)<EOL>ra_mm = int((ra / <NUM_LIT:15> - ra_hh) * <NUM_LIT>)<EOL>ra_ss = int(((ra / <NUM_LIT:15> - ra_hh) * <NUM_LIT> - ra_mm) * <NUM_LIT>)<EOL>ra_ff = ((ra / <NUM_LIT:15> - ra_hh) * <NUM_LIT> - ra_mm) * <NUM_LIT> - ra_ss<EOL>ra_ff = repr(ra_ff)[<NUM_LIT:2>:]<EOL>ra_ff = ra_ff[:precision]<EOL>if len(ra_ff):<EOL><INDENT>ra_ff = "<STR_LIT:.>" + ra_ff<EOL><DEDENT>if precision < <NUM_LIT:0>:<EOL><INDENT>ra_ff = "<STR_LIT>"<EOL><DEDENT>sexegesimal = '<STR_LIT>' % ra_hh + delimiter + '<STR_LIT>' % ra_mm +delimiter + '<STR_LIT>' % ra_ss + ra_ff<EOL>self.log.info('<STR_LIT>')<EOL>return sexegesimal<EOL>
*Convert a right-ascension between decimal degrees and sexegesimal.*

Precision should be respected.

**Key Arguments:**
    - ``ra`` -- RA in decimal degrees. Will try and convert to float before performing calculation.
    - ``delimiter`` -- how to delimit the RA units. Default *:*

**Return:**
    - ``sexegesimal`` -- ra in sexegesimal units

**Usage:**
    ..  todo::

        - replace ra_to_sex from dryxPython in all code

    .. code-block:: python 

        from astrocalc.coords import unit_conversion
        converter = unit_conversion(
            log=log
        )
        ra = converter.ra_decimal_to_sexegesimal(
            ra="-23.454676456",
            delimiter=":"
        )
        print ra

        # OUT: 22:26:10.87