def _analemma_suns(self):
        """Calculate times that should be used for drawing analemma_curves.

        Returns:
            A list of list of analemma suns.
        """
        for h in xrange(0, 24):
            if self._analemma_position(h) < 0:
                continue
            elif self._analemma_position(h) == 0:
                chours = []
                # this is an hour that not all the hours are day or night
                prevhour = self.latitude <= 0
                num_of_days = 8760 if not self.is_leap_year else 8760 + 24
                for hoy in xrange(h, num_of_days, 24):
                    thishour = self.calculate_sun_from_hoy(hoy).is_during_day
                    if thishour != prevhour:
                        if not thishour:
                            hoy -= 24
                        dt = DateTime.from_hoy(hoy, self.is_leap_year)
                        chours.append((dt.month, dt.day, dt.hour))
                    prevhour = thishour
                tt = []
                for hcount in range(int(len(chours) / 2)):
                    st = chours[2 * hcount]
                    en = chours[2 * hcount + 1]
                    if self.latitude >= 0:
                        tt = [self.calculate_sun(*st)] + \
                            [self.calculate_sun(st[0], d, h)
                             for d in xrange(st[1] + 1, 29, 7)] + \
                            [self.calculate_sun(m, d, h)
                             for m in xrange(st[0] + 1, en[0])
                             for d in xrange(3, 29, 7)] + \
                            [self.calculate_sun(en[0], d, h)
                             for d in xrange(3, en[1], 7)] + \
                            [self.calculate_sun(*en)]
                    else:
                        tt = [self.calculate_sun(*en)] + \
                            [self.calculate_sun(en[0], d, h)
                             for d in xrange(en[1] + 1, 29, 7)] + \
                            [self.calculate_sun(m, d, h) for m in xrange(en[0] +
                                                                         1, 13)
                             for d in xrange(3, 29, 7)] + \
                            [self.calculate_sun(m, d, h) for m in xrange(1, st[0])
                             for d in xrange(3, 29, 7)] + \
                            [self.calculate_sun(st[0], d, h)
                             for d in xrange(3, st[1], 7)] + \
                            [self.calculate_sun(*st)]
                    yield tt
            else:
                yield tuple(self.calculate_sun((m % 12) + 1, d, h)
                            for m in xrange(0, 13) for d in (7, 14, 21))[:-2]
def _analemma_suns ( self ) : for h in xrange ( 0 , 24 ) : if self . _analemma_position ( h ) < 0 : continue elif self . _analemma_position ( h ) == 0 : chours = [ ] prevhour = self . latitude <= 0 num_of_days = 8760 if not self . is_leap_year else 8760 + 24 for hoy in xrange ( h , num_of_days , 24 ) : thishour = self . calculate_sun_from_hoy ( hoy ) . is_during_day if thishour != prevhour : if not thishour : hoy -= 24 dt = DateTime . from_hoy ( hoy , self . is_leap_year ) chours . append ( ( dt . month , dt . day , dt . hour ) ) prevhour = thishour tt = [ ] for hcount in range ( int ( len ( chours ) / 2 ) ) : st = chours [ 2 * hcount ] en = chours [ 2 * hcount + 1 ] if self . latitude >= 0 : tt = [ self . calculate_sun ( * st ) ] + [ self . calculate_sun ( st [ 0 ] , d , h ) for d in xrange ( st [ 1 ] + 1 , 29 , 7 ) ] + [ self . calculate_sun ( m , d , h ) for m in xrange ( st [ 0 ] + 1 , en [ 0 ] ) for d in xrange ( 3 , 29 , 7 ) ] + [ self . calculate_sun ( en [ 0 ] , d , h ) for d in xrange ( 3 , en [ 1 ] , 7 ) ] + [ self . calculate_sun ( * en ) ] else : tt = [ self . calculate_sun ( * en ) ] + [ self . calculate_sun ( en [ 0 ] , d , h ) for d in xrange ( en [ 1 ] + 1 , 29 , 7 ) ] + [ self . calculate_sun ( m , d , h ) for m in xrange ( en [ 0 ] + 1 , 13 ) for d in xrange ( 3 , 29 , 7 ) ] + [ self . calculate_sun ( m , d , h ) for m in xrange ( 1 , st [ 0 ] ) for d in xrange ( 3 , 29 , 7 ) ] + [ self . calculate_sun ( st [ 0 ] , d , h ) for d in xrange ( 3 , st [ 1 ] , 7 ) ] + [ self . calculate_sun ( * st ) ] yield tt else : yield tuple ( self . calculate_sun ( ( m % 12 ) + 1 , d , h ) for m in xrange ( 0 , 13 ) for d in ( 7 , 14 , 21 ) ) [ : - 2 ]
Calculate times that should be used for drawing analemma_curves.

        Returns:
            A list of list of analemma suns.