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):
    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))
示例#3
0
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):
    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))
示例#5
0
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))
示例#6
0
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))
示例#7
0
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,
        ))
示例#8
0
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

    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))
示例#10
0
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
示例#11
0
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
示例#12
0
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,
        ))
示例#13
0
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,
        ))
示例#14
0
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))
示例#15
0
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))
示例#16
0
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))
示例#17
0
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))