Welcome, guest | Sign In | My Account | Store | Cart
```'''Module for Aens time conversions.

This module provides several functions that allow
conversion from earth seconds to Aens time units.'''

__version__ = '1.0'

import sys as _sys
import time as _time

################################################################################

EPOCH_CORRECTION = 946684800
MILLE_PER_DAY = 1000000
KHILIOI_PER_DAY = 1000
DAYS_PER_WEEK = 7
WEEKS_PER_MONTH = 4
MONTHS_PER_SEASON = 3
SEASONS_PER_YEAR = 4
SECONDS_PER_DAY = 86400
SECONDS_PER_WEEK = SECONDS_PER_DAY * DAYS_PER_WEEK
SECONDS_PER_MONTH = SECONDS_PER_WEEK * WEEKS_PER_MONTH
SECONDS_PER_SEASON = SECONDS_PER_MONTH * MONTHS_PER_SEASON
SECONDS_PER_YEAR = SECONDS_PER_SEASON * SEASONS_PER_YEAR

################################################################################

def seconds():
'Return seconds since the epoch.'
return _time.time() - EPOCH_CORRECTION

def mille(seconds):
'Convert from seconds to mille.'
return int(seconds % SECONDS_PER_DAY * MILLE_PER_DAY / SECONDS_PER_DAY % KHILIOI_PER_DAY)

def khilioi(seconds):
'Convert from seconds to khilioi.'
return int(seconds % SECONDS_PER_DAY * KHILIOI_PER_DAY / SECONDS_PER_DAY)

def day(seconds):
'Convert from seconds to day.'
return int(seconds) / SECONDS_PER_DAY % DAYS_PER_WEEK + 1

def week(seconds):
'Convert from seconds to week.'
return int(seconds) / SECONDS_PER_WEEK % WEEKS_PER_MONTH + 1

def month(seconds):
'Convert from seconds to month.'
return int(seconds) / SECONDS_PER_MONTH % MONTHS_PER_SEASON + 1

def season(seconds):
'Convert from seconds to season.'
return int(seconds) / SECONDS_PER_SEASON % SEASONS_PER_YEAR + 1

def year(seconds):
'Convert from seconds to year.'
return int(seconds) / SECONDS_PER_YEAR + 1

################################################################################

UNITS = year, season, month, week, day, khilioi, mille

def format(seconds, format='%u.%u.%u.%u.%u.%03u.%03u', units=UNITS):
'Convert from seconds to string.'
return format % tuple(function(seconds) for function in units)

################################################################################

class Mille_Timer:

'Mille_Timer(function, *args, **kwargs) -> Mille Timer'

def __init__(self, function, *args, **kwargs):
'Initialize the Mille_Timer object.'
self.__function = function
self.__args = args
self.__kwargs = kwargs
self.__status = False

def start(self):
'Start the Mille_Timer object.'
self.__lock.acquire()
self.__status = True
self.__lock.release()

def stop(self):
'Stop the Mille_Timer object.'
self.__lock.acquire()
self.__status = False
self.__lock.release()

def __run(self):
'Private class method.'
start, next = _time.time(), 0
while True:
next += 1
sleep = start + next * 0.0864 - _time.time()
assert sleep >= 0, 'Function Was Too Slow'
_time.sleep(sleep)
self.__lock.acquire()
if not self.__status:
break
self.__lock.release()
self.__function(*self.__args, **self.__kwargs)
self.__lock.release()

################################################################################

if __name__ == '__main__':
_sys.stdout.write('Content-Type: text/plain\n\n')