#Copyright 2009 Brian Jaress
#brian_jaress@gna.org
#This file is part of Jest.
#
#Jest is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 3 of the License, or
#(at your option) any later version.
#
#Jest is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
#GNU General Public License for more details.
#
#You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>.
"""Convert between time units.
The answers are not the same as what you would get using a date and time
package, because the conversions are based on how much people typically
work in a given time period. So, for example, the number of hours in a
week is 38, not 7 * 24.
COCOMO II uses months natively, and is based on an assumption of 152
hours of work per person per month.
"""
__all__ = ['TIME_UNIT_LIST', 'convert']
CONVERSION_TABLE = {
'months': 1,
'years': 1./12,
'weeks': 4.,
'days': 20.,
'hours': 152.,
}
TIME_UNIT_LIST = sorted(CONVERSION_TABLE.keys())
def convert(time, from_time_units='months', to_time_units='months'):
"""Convert an amount of time from one unit to another."""
return (
time
/ CONVERSION_TABLE[from_time_units]
* CONVERSION_TABLE[to_time_units]
)
|