wylark
/
munter.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Change prefix cb_ to rb_ for accuracy
[munter.git]
/
munter
/
munter.py
diff --git
a/munter/munter.py
b/munter/munter.py
index 234ec9bb5027a6ce2052db5bf60d91bc0df68f8d..bfc286bff043c997176e0ebef31cf749a4c9cde2 100644
(file)
--- a/
munter/munter.py
+++ b/
munter/munter.py
@@
-22,10
+22,18
@@
rates = {
'bushwhacking': { 'rate': 2, 'direction': '↹' },
}
'bushwhacking': { 'rate': 2, 'direction': '↹' },
}
+fitnesses = {
+ 'slow': 1.2,
+ 'average': 1,
+ 'fast': .7,
+}
+
unit_choices = ['metric', 'imperial']
travel_mode_choices = rates.keys()
unit_choices = ['metric', 'imperial']
travel_mode_choices = rates.keys()
+fitness_choices = fitnesses.keys()
-def time_calc(distance, elevation, rate='uphill', units='imperial'):
+def time_calc(distance, elevation, fitness='average', rate='uphill',
+ units='imperial'):
retval = {}
if units not in unit_choices:
retval = {}
if units not in unit_choices:
@@
-41,6
+49,8
@@
def time_calc(distance, elevation, rate='uphill', units='imperial'):
unit_count = distance + (elevation / 100.0)
retval['time'] = (distance + (elevation / 100.0)) / rates[rate]['rate']
unit_count = distance + (elevation / 100.0)
retval['time'] = (distance + (elevation / 100.0)) / rates[rate]['rate']
+ retval['time'] = retval['time'] * fitnesses[fitness]
+
retval['unit_count'] = unit_count
retval['direction'] = rates[rate]['direction']
retval['pace'] = rates[rate]['rate']
retval['unit_count'] = unit_count
retval['direction'] = rates[rate]['direction']
retval['pace'] = rates[rate]['rate']
@@
-83,16
+93,19
@@
def get_parser():
parser = argparse.ArgumentParser(description='Implementation of '
'the Munter time calculation')
parser = argparse.ArgumentParser(description='Implementation of '
'the Munter time calculation')
+ # No required args anymore, since -g overrides any requirement
parser.add_argument('--distance',
'-d',
parser.add_argument('--distance',
'-d',
+ default=0.0,
type=float,
type=float,
- required=
Tru
e,
+ required=
Fals
e,
help='Distance (in km, by default)')
parser.add_argument('--elevation',
'-e',
help='Distance (in km, by default)')
parser.add_argument('--elevation',
'-e',
+ default=0.0,
type=float,
type=float,
- required=
Tru
e,
+ required=
Fals
e,
help='Elevation change (in m, by default)')
parser.add_argument('--travel-mode',
help='Elevation change (in m, by default)')
parser.add_argument('--travel-mode',
@@
-102,6
+115,13
@@
def get_parser():
choices=travel_mode_choices, required=False,
help='Travel mode (uphill, by default)')
choices=travel_mode_choices, required=False,
help='Travel mode (uphill, by default)')
+ parser.add_argument('--fitness',
+ '-f',
+ type=str,
+ default='average',
+ choices=fitness_choices, required=False,
+ help='Fitness modifier (average, by default)')
+
parser.add_argument('--units',
'-u',
type=str,
parser.add_argument('--units',
'-u',
type=str,
@@
-117,6
+137,13
@@
def get_parser():
required=False,
help="Make output pretty");
required=False,
help="Make output pretty");
+ parser.add_argument('--gui',
+ '-g',
+ action='store_true',
+ default=False,
+ required=False,
+ help='Launch GUI mode (overrides --pretty)')
+
return parser
def main():
return parser
def main():
@@
-125,16
+152,23
@@
def main():
distance = opts.distance
elevation = opts.elevation
distance = opts.distance
elevation = opts.elevation
+ fitness = opts.fitness
units = opts.units
travel_mode = opts.travel_mode
units = opts.units
travel_mode = opts.travel_mode
+ pretty = opts.pretty
+ gui = opts.gui
time_estimate = time_calc(distance=distance, elevation=elevation,
time_estimate = time_calc(distance=distance, elevation=elevation,
- rate=travel_mode, units=units)
+
fitness=fitness,
rate=travel_mode, units=units)
- if opts.pretty:
- print_pretty_estimate(time_estimate)
+ if gui:
+ from . import gui
+ gui.startup()
else:
else:
- print_ugly_estimate(time_estimate)
+ if pretty:
+ print_pretty_estimate(time_estimate)
+ else:
+ print_ugly_estimate(time_estimate)
return 0
return 0