Пример #1
0
    def save_mesh(self,
                  filename="temp.pmd",
                  sortElements=False,
                  splitPMD=False,
                  testing=False):
        """
        sortElements – elements of the mesh would be sorted in order
            as eyes move when read
        testing – only used during testing (to save time on Displayer)
        """
        if len(self.shape) == 0:
            self.send_message("Фигура пуста, нечего сохранять")
            return

        self.shape.sort(key=lambda prim: (prim.start_x, prim.start_y))

        with Output(filename, sortElements, splitPMD) as output:
            for prim in self.shape:
                prim.save_mesh(output)

        if not testing:
            self.send_message("Фигура сохранена в " + filename)
            self.displayer.load_pmd(filename)
            self.use_displayer = True
            self.parent_clear.emit()
            self.parent_update.emit()
Пример #2
0
Файл: run.py Проект: belgeu/ria
def main():
    logger = logging.getLogger("ria.run")
    fh = logging.FileHandler("ria.log")
    formatter = logging.Formatter(RiaLogger.log_format_info)
    fh.setFormatter(formatter)
    logger.addHandler(fh)

    # Initialize search
    search = Advertisement()
    local_output = Output()

    ria_description = 'Get car advertisements from https://auto.ria.com'
    example = 'EXAMPLE ./run.py -m Ford -M Focus'

    parser = argparse.ArgumentParser(description=ria_description, epilog=example)
    parser.add_argument('-get', choices=search.aux)
    parser.add_argument('-k', '--key', type=str, dest='api_key', metavar='API_KEY',
                        help='Update RIA API key.')
    parser.add_argument('-m', '--make', type=str, dest='marka_id', metavar='MAKE', choices=search.make_names,
                        help='Car make.')
    parser.add_argument('-M', '--model', type=str, dest='model_id', metavar='MODEL',
                        help='Car model.')
    parser.add_argument('-b', '--body', type=str, dest='bodystyle', metavar='BODY', choices=search.bodies,
                        help='Body style.')
    parser.add_argument('-y', '--year-start', type=int, dest='s_yers', metavar='YEAR',
                        help='Car production year lower limit.')
    parser.add_argument('-Y', '--year-end', type=int, dest='po_yers', metavar='YEAR',
                        help='Car production year upper limit.')
    parser.add_argument('-l', '--capacity-from', type=float, dest='engineVolumeFrom', metavar='CAPACITY',
                        help='Engine capacity lower limit.')
    parser.add_argument('-L', '--capacity-to', type=float, dest='engineVolumeTo', metavar='CAPACITY',
                        help='Engine capacity upper limit.')
    parser.add_argument('-g', '--gearbox', type=str, metavar='GEARBOX', choices=search.gearboxes,
                        help='Gearbox type.')
    parser.add_argument('-f', '--fuel', type=str, dest='type', metavar='FUEL',
                        choices=search.fuel_type.keys(),
                        help='Fuel type.')
    parser.add_argument('-c', '--color', type=str, metavar='COLOR', choices=search.colors.keys(),
                        help='Car color.')
    parser.add_argument('-C', '--country', type=str, dest='brandOrigin', metavar='COUNTRY', choices=search.countries,
                        help='Brand origin.')
    parser.add_argument('-O', '--options', type=str, dest='auto_options', metavar='OPTIONS', choices=search.options,
                        help='Car options.')
    parser.add_argument('-p', '--period', type=str, dest='top', metavar='PERIOD', choices=search.period.keys(),
                        help='Period in hours. Also options like "week", "month", "quarter", "today" possible.')
    parser.add_argument('-s', '--sort', type=str, dest='order_by', metavar='SORT', choices=search.sort.keys(),
                        help='Sort search results, default is "price_up".')
    parser.add_argument('-S', '--status', type=str, dest='saledParam', metavar='STATUS',
                        choices=search.status.keys(),
                        help='Sale status: "all", "sold", "sale". Default is "sale".')
    parser.add_argument('-d', '--damage', type=str, dest='damage', metavar='DAMAGE',
                        choices=search.damage.keys(),
                        help='Has damage: "yes", "no", "all". Default is "no".')
    parser.add_argument('-o', '--output', type=str, dest='output', metavar='OUTPUT', choices=['txt', 'csv'],
                        help='Search output. Default is "csv".')
    parser.add_argument('-qm', '--quiet-mode', dest='quiet', help="Quiet mode", action="store_true")
    parser.add_argument("-v", "--verbose", help="Increase output verbosity.", action="store_true")

    opts = parser.parse_args()

    if opts.api_key:
        search.config.store_api_key('config/key.pkl', opts.api_key)
        exit(0)

    if opts.verbose:
        logger.setLevel(logging.DEBUG)
    else:
        logger.setLevel(logging.INFO)

    if opts.quiet:
        search.quiet = True

    # Set 'requests' lib WARN level logger
    logging.getLogger("requests").setLevel(logging.WARN)

    if opts.marka_id:
        search.make_name = opts.marka_id
        search.make_id = opts.marka_id = search.get_car_make_id(search.make_name)
    else:
        if not opts.get:
            RiaLogger.log('Please specify a car make (e.g. --make Ford)', 'error')
            sys.exit(2)

    if opts.model_id:
        if not opts.marka_id:
            RiaLogger.log('Need a car make first (e.g. --make Ford)', 'error')
            sys.exit(2)
        search.models = search.all_models()
        search.model_names = search.extract_key_names(search.models)
        if search.model_is_valid(opts.model_id):
            search.model_name = opts.model_id
            search.model_id = opts.model_id = search.get_car_model_id(search.model_name)

    # Check if 'get' function invoked
    if opts.get:
        if opts.get == 'average-price':
            ap_opts = ['marka_id', 'model_id', 'gearbox', 's_yers', 'type']
            search.set_avg_price_criteria({k: v for (k, v) in vars(opts).items() if v and k in ap_opts})
            search.average_price()
            logger.info('Printed out Ria average prices to stdout')
        sys.exit(0)

    if opts.bodystyle:
        opts.bodystyle = search.bodies[opts.bodystyle]
    if opts.gearbox:
        opts.gearbox = search.gearboxes[opts.gearbox]
    if opts.type:
        opts.type = search.fuel_type[opts.type]
    if opts.color:
        opts.color = search.colors[opts.color]
    if opts.top:
        opts.top = search.period[opts.top]
    if opts.order_by:
        opts.order_by = search.sort[opts.order_by]
    else:
        opts.order_by = search.sort['price-up']
    if opts.saledParam:
        opts.saledParam = search.status[opts.saledParam]
    else:
        opts.saledParam = search.status['sale']
    if opts.damage:
        opts.damage = search.damage[opts.damage]
    else:
        opts.damage = search.damage['no']
    if opts.output:
        local_output.format = opts.output
    if opts.auto_options:
        opts.auto_options = search.options[opts.auto_options]
    if opts.brandOrigin:
        opts.brandOrigin = search.countries[opts.brandOrigin]

    # Convert options into query parameters
    search.criteria = {k: v for (k, v) in vars(opts).items() if v and k not in search.opts_to_remove}

    logger.debug("Searching by following criteria %s" % search.dump_json(
        search.criteria, 1, (',', '='), data_type=dict))

    # Start searching ads
    ads_ids = search.vehicle_ads()

    # Token connection limit warning
    if len(ads_ids) >= 500:
        print('Might go over the token connection limit,')
        ask = 'continue? (y/n)'
        if not search.continue_search(ask):
            logger.info('Search is cancelled by user')
            exit(0)

    logger.debug('Extracting following fields: %s' % search.dump_json(search.config.convert_field.values(),
                                                                      data_type='list'))
    advertisements = [VehicleDetails(adv, search.bodies) for adv in ads_ids]
    for a in tqdm(advertisements, desc='Downloading cars info', unit='cars'):
        a.get()
        if a.failed:
            break

    ads_src_data = [a.csv for a in advertisements if a.code]
    search_runtime_debug = [{"id": a.id, "search_time": a.run_time} for a in advertisements]

    if len(ads_src_data) == 0:
        exit('Search error')
    elif len(ads_src_data) != len(ads_ids):
        logger.warning('Inaccurate search results due to errors, check log for more details')
        search.warn = True

    logger.info("Downloaded details for %s cars" % len(ads_src_data))
    logger.debug('Converted Ria results into source CSV values: %s' % search.dump_json(ads_src_data))

    # Set file name
    local_output.set_path(search.make_name, search.model_name, len(ads_src_data), search.warn)

    # Write to file
    local_output.write(ads_src_data)

    search.end_time = time.time()
    search.runtime = search.end_time - search.start_time
    if search.warn:
        logger.warning("Finished search in %.2f seconds with warnings" % search.runtime)
    else:
        logger.debug("Finished search in %.2f seconds" % search.runtime)
    search.logger.debug("Detailed run times: %s" % search.dump_json(search_runtime_debug))
Пример #3
0
    # otherwise find the order with lowest deliverable weight
    o_other.sort(key = lambda x: x[2])
    o, o_deliverable_items, a, b = o_other[0]

    # and limit the number of items based on max payload
    deliver_items = []
    deliver_weight = 0
    for item in o_deliverable_items:
        pt_weight = world.pt_weights[item.pt_id]
        if (deliver_weight + pt_weight) <= world.d_max_payload:
            deliver_items.append(item)
            deliver_weight += pt_weight

    return (w, o, deliver_items)

output = Output(sys.argv[2])
state = copy.deepcopy(initial_state)
for turn in range(world.turns):
    print("-- starting turn " + str(turn))

    idle_drones = [d for d in state.drones if d.turns_to_pos == 0]

    for d in idle_drones:
        # find action to do
        action = find_drone_action(state, d)

        if action == None:
            continue

        w, o, items_to_deliver = action
Пример #4
0
        if len(chunks_of_w) > 0:
            chunks_of_w = sorted(chunks_of_w, key = lambda ch: ch.min_routes_per_order)
            chunk = chunks_of_w[0]
            chunked_routes.remove(chunk)
            return chunk

    return None


##########################################################
# here follows the actual simulation

state = copy.deepcopy(initial_state)
routes = prepare_routes(world, state)
chunked_routes = chunk_routes(world, routes)
output = Output(sys.argv[2])

for turn in range(world.turns):
    print("-- starting turn " + str(turn))

    idle_drones = [d for d in state.drones if d.turns_to_pos == 0]

    for d in idle_drones:
        # find action to do
        chunk = get_chunk_for_drone(state, chunked_routes, d)

        if chunk == None:
            continue

        w = chunk.w
Пример #5
0
def start():
    '''Start the Application'''

    log = configure_log()
    log.info('Starting Cloud Worker Node Agent')
    log.info('--------------------------')

    args = parse_args()

    settings = {'base_url': args.server,
                'secret': args.secret,
                'client_id': C.CLIENT_ID,
                'client_secret': C.CLIENT_SECRET,
                'username': C.USERNAME,
                'password': C.PASSWORD}

    server = Server(settings)

    node = Node(server)

    #Send the hostname, ip etc to the server
    node.send_info()

    #Update the node status to ready
    node.update_node_status(C.STATUS_READY)

    #Get Config
    config = Config(server, node)

    actions = Action(server, node)
    processor = Processor()
    workers = Worker(server, node, processor)
    output = Output(server, node)

    finished = False

    #Loop forever (kind of)
    while not finished:
        log.info('Looping')
        log.info('--------------------------')

        #Update last seen date
        node.update_node_date()

        #Get config
        config.refresh()

        #Get actions
        num_pending = actions.get_pending()

        #Respond to actions
        if actions.has_pending():
            message = 'Responding to %d Actions ...' % num_pending
            output.send(message)

            actions.respond_to_pending()


        #Get workers/commands
        workers.refresh()
        workers.process_workers()

        #TODO
        #Respond to/run commands
        #Send output to server


        log.info('Sleeping for %d seconds ...', 
                 config.get(C.CONFIG_POLL_PERIOD))
        time.sleep(config.get(C.CONFIG_POLL_PERIOD))
Пример #6
0
"""
|**********************************************************************;
* Project           : VYPcode compiler 2019
* Authors           : Michal Horky (xhorky23), Matus Mucka (xmucka03)
|**********************************************************************;
"""

import sys
import ply.lex as lex
import ply.yacc as yacc

from src.output import Output
from src.tokens import *
from src.parser.program import *

lexer = lex.lex()
parser = yacc.yacc(outputdir="generated",
                   start="program",
                   errorlog=yacc.NullLogger())

if __name__ == '__main__':
    with open(sys.argv[1], 'r') as content_file:
        parser.parse(content_file.read())
    Output.print()