def render(results, cmdenv, tdb): longest = max(results.rows, key=lambda row: len(row.item.name())) longestLen = len(longest.item.name()) longestDmd = max(results.rows, key=lambda row: len(row.demand)).demand longestSup = max(results.rows, key=lambda row: len(row.supply)).supply dmdLen = max(len(longestDmd), len("Demand")) supLen = max(len(longestSup), len("Supply")) showCategories = (cmdenv.detail > 0) rowFmt = RowFormat() if showCategories: rowFmt.prefix = ' ' sellPred = lambda row: row.sellCr != 0 and row.demand != '-' buyPred = lambda row: row.buyCr != 0 and row.demand != '-' rowFmt.addColumn('Item', '<', longestLen, key=lambda row: row.item.name()) if not cmdenv.selling: rowFmt.addColumn('Buying', '>', 7, 'n', key=lambda row: row.buyCr, pred=buyPred) if cmdenv.detail: rowFmt.addColumn('Avg', '>', 7, 'n', key=lambda row: row.avgBuy, pred=buyPred) if cmdenv.detail > 1: rowFmt.addColumn('Demand', '>', dmdLen, key=lambda row: row.demand, pred=buyPred) if not cmdenv.buying: rowFmt.addColumn('Selling', '>', 7, 'n', key=lambda row: row.sellCr, pred=sellPred) if cmdenv.detail: rowFmt.addColumn('Avg', '>', 7, 'n', key=lambda row: row.avgSell, pred=sellPred) rowFmt.addColumn('Supply', '>', supLen, key=lambda row: row.supply, pred=sellPred) if cmdenv.detail: rowFmt.addColumn('Age/Days', '>', 7, '.2f', key=lambda row: row.age, pred=buyPred) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') lastCat = None for row in results.rows: if showCategories and row.item.category is not lastCat: print("+{}".format(row.item.category.name())) lastCat = row.item.category print(rowFmt.format(row))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat, max_len longestNameLen = max_len(results.rows, key=lambda row: row.item.name(cmdenv.detail)) rowFmt = RowFormat() rowFmt.addColumn('Item', '<', longestNameLen, key=lambda row: row.item.name(cmdenv.detail)) rowFmt.addColumn('Profit', '>', 10, 'n', key=lambda row: row.gainCr) rowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.costCr) if cmdenv.detail > 1: rowFmt.addColumn('AvgCost', '>', 10, key=lambda row: tdb.avgSelling.get(row.item.ID, 0)) rowFmt.addColumn('Buying', '>', 10, key=lambda row: row.costCr + row.gainCr) rowFmt.addColumn('AvgBuy', '>', 10, key=lambda row: tdb.avgBuying.get(row.item.ID, 0)) if cmdenv.detail: rowFmt.addColumn('Supply', '>', 10, key=lambda row: '{:n}'.format(row.supply) if row.supply >= 0 else '?') rowFmt.addColumn('Demand', '>', 10, key=lambda row: '{:n}'.format(row.demand) if row.demand >= 0 else '?') rowFmt.addColumn('SrcAge', '>', 8, '.2f', key=lambda row: (row.srcAge / 86400)) rowFmt.addColumn('DstAge', '>', 8, '.2f', key=lambda row: (row.dstAge / 86400)) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): mode = results.summary.mode singleMode = len(results.summary.queries) == 1 maxStnLen = max_len(results.rows, key=lambda row: row.station.name()) stnRowFmt = RowFormat() stnRowFmt.addColumn('Station', '<', maxStnLen, key=lambda row: row.station.name()) if not singleMode: maxItmLen = max_len(results.rows, key=lambda row: row.item.name()) stnRowFmt.addColumn(results.summary.mode, '<', maxItmLen, key=lambda row: row.item.name() ) if mode is not SHIP_MODE or not singleMode: stnRowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.price) if mode is not SHIP_MODE: stnRowFmt.addColumn('Units', '>', 10, key=lambda row: '{:n}'.format(row.units) if row.units >= 0 else '?') if cmdenv.nearSystem: stnRowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) if mode is not SHIP_MODE: stnRowFmt.addColumn('Age/days', '>', 7, key=lambda row: row.age) stnRowFmt.addColumn("StnLs", '>', 10, key=lambda row: row.station.distFromStar()) stnRowFmt.addColumn('B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.station.blackMarket]) stnRowFmt.addColumn("Pad", '>', '3', key=lambda row: TradeDB.padSizes[row.station.maxPadSize]) if not cmdenv.quiet: heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(stnRowFmt.format(row)) if singleMode and cmdenv.detail: print("{:{lnl}} {:>10n}".format( "-- Ship Cost" if mode is SHIP_MODE else "-- Average", results.summary.avg, lnl=maxStnLen, ))
def render(results, cmdenv, tdb): """ If the "run" command returned a result set and we are running from the command line, this function will be called to generate the output of the command. """ if not results.rows: raise CommandLineError("No items found.") # Calculate the longest station name in our list. longestStnName = max(results.rows, key=lambda result: len(result.rare.station.name())).rare.station longestStnNameLen = len(longestStnName.name()) longestRareName = max(results.rows, key=lambda result: len(result.rare.dbname)).rare longestRareNameLen = len(longestRareName.dbname) # Use the formatting system to describe what our # output rows are going to look at (see formatting.py) rowFmt = RowFormat() rowFmt.addColumn('Station', '<', longestStnNameLen, key=lambda row: row.rare.station.name()) rowFmt.addColumn('Rare', '<', longestRareNameLen, key=lambda row: row.rare.name()) rowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.rare.costCr) rowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) rowFmt.addColumn('Alloc', '>', 6, 'n', key=lambda row: row.rare.maxAlloc) rowFmt.addColumn('B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.rare.illegal]) rowFmt.addColumn("StnLs", '>', 10, key=lambda row: row.rare.station.distFromStar()) rowFmt.addColumn('B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.rare.station.blackMarket]) rowFmt.addColumn("Pad", '>', '3', key=lambda row: TradeDB.padSizes[row.rare.station.maxPadSize]) # Print a heading summary if the user didn't use '-q' if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') # Print out our results. for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat longestNamed = max(results.rows, key=lambda result: len(result.station.name())) longestNameLen = len(longestNamed.station.name()) stnRowFmt = RowFormat() stnRowFmt.addColumn('Station', '<', longestNameLen, key=lambda row: row.station.name()) stnRowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.price) if cmdenv.detail: stnRowFmt.addColumn('Demand', '>', 10, key=lambda row: '{:n}'.format(row.demand) if row.demand >= 0 else '?') if cmdenv.nearSystem: stnRowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) stnRowFmt.addColumn('Age/days', '>', 7, key=lambda row: row.age) stnRowFmt.addColumn('StnLs', '>', 10, key=lambda row: row.station.distFromStar()) stnRowFmt.addColumn('B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.station.blackMarket]) stnRowFmt.addColumn("Pad", '>', '3', key=lambda row: TradeDB.padSizes[row.station.maxPadSize]) stnRowFmt.addColumn("Plt", '>', '3', key=lambda row: TradeDB.planetStates[row.station.planetary]) if not cmdenv.quiet: heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(stnRowFmt.format(row)) if cmdenv.detail: print("{:{lnl}} {:>10n}".format( "-- Average", results.summary.avg, lnl=longestNameLen, ))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat longestNamed = max(results.rows, key=lambda result: len(result.item.dbname)) longestNameLen = len(longestNamed.item.dbname) rowFmt = RowFormat() rowFmt.addColumn('Item', '<', longestNameLen, key=lambda row: row.item.dbname) rowFmt.addColumn('Profit', '>', 10, 'n', key=lambda row: row.gainCr) rowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.costCr) if cmdenv.detail > 1: rowFmt.addColumn('AvgCost', '>', 10, key=lambda row: tdb.avgSelling.get(row.item.ID, 0) ) rowFmt.addColumn('Buying', '>', 10, key=lambda row: row.costCr + row.gainCr ) rowFmt.addColumn('AvgBuy', '>', 10, key=lambda row: tdb.avgBuying.get(row.item.ID, 0) ) if cmdenv.detail: rowFmt.addColumn('Supply', '>', 10, key=lambda row: '{:n}'.format(row.supply) if row.supply >= 0 else '?') rowFmt.addColumn('Demand', '>', 10, key=lambda row: '{:n}'.format(row.demand) if row.demand >= 0 else '?') rowFmt.addColumn('SrcAge', '>', 8, '.2f', key=lambda row: (row.srcAge / 86400)) rowFmt.addColumn('DstAge', '>', 8, '.2f', key=lambda row: (row.dstAge / 86400)) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat longestNamed = max(results.rows, key=lambda result: len(result.station.name())) longestNameLen = len(longestNamed.station.name()) stnRowFmt = RowFormat() stnRowFmt.addColumn('Station', '<', longestNameLen, key=lambda row: row.station.name()) stnRowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.price) if cmdenv.detail: stnRowFmt.addColumn('Demand', '>', 10, key=lambda row: '{:n}'.format(row.demand) if row.demand >= 0 else '?') if cmdenv.nearSystem: stnRowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) stnRowFmt.addColumn('Age/days', '>', 7, key=lambda row: row.age) stnRowFmt.addColumn('StnLs', '>', 10, key=lambda row: row.station.distFromStar()) stnRowFmt.addColumn('B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.station.blackMarket]) stnRowFmt.addColumn("Pad", '>', '3', key=lambda row: TradeDB.padSizes[row.station.maxPadSize]) if not cmdenv.quiet: heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(stnRowFmt.format(row)) if cmdenv.detail: print("{:{lnl}} {:>10n}".format( "-- Average", results.summary.avg, lnl=longestNameLen, ))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat if not results or not results.rows: raise TradeException("No data found") # Compare system names so we can tell longestNamed = max(results.rows, key=lambda row: len(row.station.name())) longestNameLen = len(longestNamed.station.name()) rowFmt = RowFormat().append( ColumnFormat("Station", '<', longestNameLen, key=lambda row: row.station.name()) ) if cmdenv.quiet < 2: if cmdenv.nearSystem: rowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist ) rowFmt.append( ColumnFormat("Age/days", '>', '8', '.2f', key=lambda row: row.age) ).append( ColumnFormat("StnLs", '>', '10', key=lambda row: row.station.distFromStar()) ).append( ColumnFormat("Pad", '>', '3', key=lambda row: \ TradeDB.padSizes[row.station.maxPadSize]) ) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): if not results or not results.rows: raise CommandLineError("No ships available at {}".format( results.summary.station.name())) maxShipLen = max_len(results.rows, key=lambda row: row.ship.name()) rowFmt = RowFormat().append( ColumnFormat("Ship", '<', maxShipLen, key=lambda row: row.ship.name())).append( ColumnFormat("Cost", '>', 12, 'n', key=lambda row: row.ship.cost)) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat if not results or not results.rows: raise TradeException("No data found") # Compare system names so we can tell longestNamed = max(results.rows, key=lambda row: len(row.station.name())) longestNameLen = len(longestNamed.station.name()) rowFmt = RowFormat().append( ColumnFormat("Station", '<', longestNameLen, key=lambda row: row.station.name())) if cmdenv.quiet < 2: if cmdenv.nearSystem: rowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) rowFmt.append( ColumnFormat("Age/days", '>', '8', '.2f', key=lambda row: row.age) ).append( ColumnFormat("StnLs", '>', '10', key=lambda row: row.station.distFromStar()) ).append( ColumnFormat("Pad", '>', '3', key=lambda row: \ TradeDB.padSizes[row.station.maxPadSize]) ) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): if not results or not results.rows: raise CommandLineError( "No ships available at {}" .format(results.summary.station.name()) ) maxShipLen = max_len(results.rows, key=lambda row: row.ship.name()) rowFmt = RowFormat().append( ColumnFormat("Ship", '<', maxShipLen, key=lambda row: row.ship.name()) ).append( ColumnFormat("Cost", '>', 12, 'n', key=lambda row: row.ship.cost) ) if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): mode = results.summary.mode singleMode = len(results.summary.queries) == 1 maxStnLen = max_len(results.rows, key=lambda row: row.station.name()) stnRowFmt = RowFormat() stnRowFmt.addColumn('Station', '<', maxStnLen, key=lambda row: row.station.name()) if not singleMode: maxItmLen = max_len(results.rows, key=lambda row: row.item.name(cmdenv.detail)) stnRowFmt.addColumn(results.summary.mode, '<', maxItmLen, key=lambda row: row.item.name(cmdenv.detail)) if mode is not SHIP_MODE or not singleMode: stnRowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.price) if mode is not SHIP_MODE: stnRowFmt.addColumn('Units', '>', 10, key=lambda row: '{:n}'.format(row.units) if row.units >= 0 else '?') if cmdenv.nearSystem: stnRowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) if mode is not SHIP_MODE: stnRowFmt.addColumn('Age/days', '>', 7, key=lambda row: row.age) stnRowFmt.addColumn("StnLs", '>', 10, key=lambda row: row.station.distFromStar()) stnRowFmt.addColumn( 'B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.station.blackMarket]) stnRowFmt.addColumn( "Pad", '>', '3', key=lambda row: TradeDB.padSizes[row.station.maxPadSize]) stnRowFmt.addColumn( "Plt", '>', '3', key=lambda row: TradeDB.planetStates[row.station.planetary]) if not cmdenv.quiet: heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(stnRowFmt.format(row)) if singleMode and cmdenv.detail: print("{:{lnl}} {:>10n}".format( "-- Ship Cost" if mode is SHIP_MODE else "-- Average", results.summary.avg, lnl=maxStnLen, ))
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat if cmdenv.quiet > 1: print(','.join(row.system.name() for row in results.rows)) return longestNamed = max(results.rows, key=lambda row: len(row.system.name())) longestNameLen = len(longestNamed.system.name()) rowFmt = RowFormat() if cmdenv.detail: rowFmt.addColumn("Action", '<', 6, key=lambda row: row.action) rowFmt.addColumn("System", '<', longestNameLen, key=lambda row: row.system.name()) rowFmt.addColumn("JumpLy", '>', '7', '.2f', key=lambda row: row.jumpLy) if cmdenv.detail: rowFmt.addColumn("Stations", '>', 2, key=lambda row: len(row.system.stations)) if cmdenv.detail: rowFmt.addColumn("DistLy", '>', '7', '.2f', key=lambda row: row.totalLy) if cmdenv.detail > 1: rowFmt.addColumn("DirLy", '>', 7, '.2f', key=lambda row: row.dirLy) showStations = cmdenv.stations if showStations: stnRowFmt = RowFormat(prefix=' / ').append( ColumnFormat("Station", '<', 32, key=lambda row: row.station.str()) ).append( ColumnFormat("StnLs", '>', '10', key=lambda row: row.station.distFromStar()) ).append( ColumnFormat("Age/days", '>', 7, key=lambda row: row.age) ).append( ColumnFormat('Mkt', '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.market]) ).append( ColumnFormat("BMk", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.blackMarket]) ).append( ColumnFormat("Shp", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.shipyard]) ).append( ColumnFormat("Out", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.outfitting]) ).append( ColumnFormat("Arm", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.rearm]) ).append( ColumnFormat("Ref", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.refuel]) ).append( ColumnFormat("Rep", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.repair]) ).append( ColumnFormat("Pad", '>', '3', key=lambda row: \ TradeDB.padSizes[row.station.maxPadSize]) ) if cmdenv.detail > 1: stnRowFmt.append( ColumnFormat("Itms", ">", 4, key=lambda row: row.station.itemCount) ) if not cmdenv.quiet: heading, underline = rowFmt.heading() if showStations: print(heading) heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row)) for stnRow in row.stations: print(stnRowFmt.format(stnRow)) return results
def render(results, cmdenv, tdb): from formatting import RowFormat, ColumnFormat if cmdenv.quiet > 1: print(','.join(row.system.name() for row in results.rows)) return longestNamed = max(results.rows, key=lambda row: len(row.system.name())) longestNameLen = len(longestNamed.system.name()) rowFmt = RowFormat() if cmdenv.detail: rowFmt.addColumn("Action", '<', 6, key=lambda row: row.action) rowFmt.addColumn("System", '<', longestNameLen, key=lambda row: row.system.name()) rowFmt.addColumn("JumpLy", '>', '7', '.2f', key=lambda row: row.jumpLy) if cmdenv.detail: rowFmt.addColumn("Stations", '>', 2, key=lambda row: len(row.system.stations)) if cmdenv.detail: rowFmt.addColumn("DistLy", '>', '7', '.2f', key=lambda row: row.totalLy) if cmdenv.detail > 1: rowFmt.addColumn("DirLy", '>', 7, '.2f', key=lambda row: row.dirLy) showStations = cmdenv.stations if showStations: stnRowFmt = RowFormat(prefix=' / ').append( ColumnFormat("Station", '<', 32, key=lambda row: row.station.str()) ).append( ColumnFormat("StnLs", '>', '10', key=lambda row: row.station.distFromStar()) ).append( ColumnFormat("Age/days", '>', 7, key=lambda row: row.age) ).append( ColumnFormat('Mkt', '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.market]) ).append( ColumnFormat("BMk", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.blackMarket]) ).append( ColumnFormat("Shp", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.shipyard]) ).append( ColumnFormat("Out", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.outfitting]) ).append( ColumnFormat("Arm", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.rearm]) ).append( ColumnFormat("Ref", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.refuel]) ).append( ColumnFormat("Rep", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.repair]) ).append( ColumnFormat("Pad", '>', '3', key=lambda row: \ TradeDB.padSizes[row.station.maxPadSize]) ).append( ColumnFormat("Plt", '>', '3', key=lambda row: \ TradeDB.planetStates[row.station.planetary]) ) if cmdenv.detail > 1: stnRowFmt.append( ColumnFormat("Itms", ">", 4, key=lambda row: row.station.itemCount)) if not cmdenv.quiet: heading, underline = rowFmt.heading() if showStations: print(heading) heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(rowFmt.format(row)) for stnRow in row.stations: print(stnRowFmt.format(stnRow)) return results
def render(results, cmdenv, tdb): """ If the "run" command returned a result set and we are running from the command line, this function will be called to generate the output of the command. """ if not results.rows: raise CommandLineError("No items found.") # Calculate the longest station and rareitem name in our list. longestStnNameLen = max_len(results.rows, key=lambda row: row.rare.station.name()) longestRareNameLen = max_len(results.rows, key=lambda row: row.rare.name(cmdenv.detail)) # Use the formatting system to describe what our # output rows are going to look at (see formatting.py) rowFmt = RowFormat() rowFmt.addColumn('Station', '<', longestStnNameLen, key=lambda row: row.rare.station.name()) rowFmt.addColumn('Rare', '<', longestRareNameLen, key=lambda row: row.rare.name(cmdenv.detail)) rowFmt.addColumn('Cost', '>', 10, 'n', key=lambda row: row.rare.costCr) rowFmt.addColumn('DistLy', '>', 6, '.2f', key=lambda row: row.dist) rowFmt.addColumn('Alloc', '>', 6, 'n', key=lambda row: row.rare.maxAlloc) rowFmt.addColumn('B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.rare.illegal]) rowFmt.addColumn("StnLs", '>', 10, key=lambda row: row.rare.station.distFromStar()) rowFmt.addColumn( 'B/mkt', '>', 4, key=lambda row: TradeDB.marketStates[row.rare.station.blackMarket]) rowFmt.addColumn( "Pad", '>', '3', key=lambda row: TradeDB.padSizes[row.rare.station.maxPadSize]) rowFmt.addColumn( "Plt", '>', '3', key=lambda row: TradeDB.planetStates[row.rare.station.planetary]) # Print a heading summary if the user didn't use '-q' if not cmdenv.quiet: heading, underline = rowFmt.heading() print(heading, underline, sep='\n') # Print out our results. for row in results.rows: print(rowFmt.format(row))
def render(results, cmdenv, tdb): if not results or not results.rows: raise TradeException("No systems found within {}ly of {}.".format( results.summary.ly, results.summary.near.name())) # Compare system names so we can tell maxSysLen = max_len(results.rows, key=lambda row: row.system.name()) sysRowFmt = RowFormat().append( ColumnFormat("System", '<', maxSysLen, key=lambda row: row.system.name())).append( ColumnFormat("Dist", '>', '7', '.2f', key=lambda row: row.dist)) showStations = cmdenv.detail if showStations: maxStnLen = max_len(chain.from_iterable(row.stations for row in results.rows), key=lambda row: row.station.dbname) maxLsLen = max_len(chain.from_iterable(row.stations for row in results.rows), key=lambda row: row.station.distFromStar()) maxLsLen = max(maxLsLen, 5) stnRowFmt = RowFormat(prefix=' / ').append( ColumnFormat("Station", '.<', maxStnLen + 2, key=lambda row: row.station.dbname) ).append( ColumnFormat("StnLs", '>', maxLsLen, key=lambda row: row.station.distFromStar()) ).append( ColumnFormat("Age/days", '>', 7, key=lambda row: row.age) ).append( ColumnFormat("Mkt", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.market]) ).append( ColumnFormat("BMk", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.blackMarket]) ).append( ColumnFormat("Shp", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.shipyard]) ).append( ColumnFormat("Out", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.outfitting]) ).append( ColumnFormat("Arm", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.rearm]) ).append( ColumnFormat("Ref", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.refuel]) ).append( ColumnFormat("Rep", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.repair]) ).append( ColumnFormat("Pad", '>', '3', key=lambda row: \ TradeDB.padSizes[row.station.maxPadSize]) ).append( ColumnFormat("Plt", '>', '3', key=lambda row: \ TradeDB.planetStates[row.station.planetary]) ) if cmdenv.detail > 1: stnRowFmt.append( ColumnFormat("Itms", ">", 4, key=lambda row: row.station.itemCount)) cmdenv.DEBUG0( "Systems within {ly:<5.2f}ly of {sys}.\n", sys=results.summary.near.name(), ly=results.summary.ly, ) if not cmdenv.quiet: heading, underline = sysRowFmt.heading() if showStations: print(heading) heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(sysRowFmt.format(row)) for stnRow in row.stations: print(stnRowFmt.format(stnRow))
def render(results, cmdenv, tdb): if not results or not results.rows: raise TradeException( "No systems found within {}ly of {}." .format(results.summary.ly, results.summary.near.name()) ) # Compare system names so we can tell maxSysLen = max_len(results.rows, key=lambda row: row.system.name()) sysRowFmt = RowFormat().append( ColumnFormat("System", '<', maxSysLen, key=lambda row: row.system.name()) ).append( ColumnFormat("Dist", '>', '7', '.2f', key=lambda row: row.dist) ) showStations = cmdenv.detail if showStations: maxStnLen = max_len( chain.from_iterable(row.stations for row in results.rows), key=lambda row: row.station.dbname ) maxLsLen = max_len( chain.from_iterable(row.stations for row in results.rows), key=lambda row: row.station.distFromStar() ) maxLsLen = max(maxLsLen, 5) stnRowFmt = RowFormat(prefix=' / ').append( ColumnFormat("Station", '.<', maxStnLen + 2, key=lambda row: row.station.dbname) ).append( ColumnFormat("StnLs", '>', maxLsLen, key=lambda row: row.station.distFromStar()) ).append( ColumnFormat("Age/days", '>', 7, key=lambda row: row.age) ).append( ColumnFormat("Mkt", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.market]) ).append( ColumnFormat("BMk", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.blackMarket]) ).append( ColumnFormat("Shp", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.shipyard]) ).append( ColumnFormat("Out", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.outfitting]) ).append( ColumnFormat("Arm", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.rearm]) ).append( ColumnFormat("Ref", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.refuel]) ).append( ColumnFormat("Rep", '>', '3', key=lambda row: \ TradeDB.marketStates[row.station.repair]) ).append( ColumnFormat("Pad", '>', '3', key=lambda row: \ TradeDB.padSizes[row.station.maxPadSize]) ) if cmdenv.detail > 1: stnRowFmt.append( ColumnFormat("Itms", ">", 4, key=lambda row: row.station.itemCount) ) cmdenv.DEBUG0( "Systems within {ly:<5.2f}ly of {sys}.\n", sys=results.summary.near.name(), ly=results.summary.ly, ) if not cmdenv.quiet: heading, underline = sysRowFmt.heading() if showStations: print(heading) heading, underline = stnRowFmt.heading() print(heading, underline, sep='\n') for row in results.rows: print(sysRowFmt.format(row)) for stnRow in row.stations: print(stnRowFmt.format(stnRow))