Ejemplo n.º 1
0
def accept_qualification_request(request_id, value=None, mturk_client=None):
    mturk_client = mturk_client if mturk_client else client
    params = utils.map_parameters(locals(), {
        'request_id': 'QualificationRequestId',
        'value': 'IntegerValue'
    })
    mturk_client.accept_qualification_request(**params)
Ejemplo n.º 2
0
def create_qualification_type(name,
                              description,
                              keywords=None,
                              status='Active',
                              retry_delay=None,
                              test=None,
                              test_duration=None,
                              answer_key=None,
                              auto_granted=False,
                              auto_granted_value=None,
                              mturk_client=None):
    if mturk_client is None:
        mturk_client = client
    params = utils.map_parameters(
        locals(), {
            'name': 'Name',
            'keywords': 'Keywords',
            'description': 'Description',
            'status': 'QualificationTypeStatus',
            'retry_delay': 'RetryDelayInSeconds',
            'test': 'Test',
            'answer_key': 'AnswerKey',
            'test_duration': 'TestDurationInSeconds',
            'auto_granted': 'AutoGranted',
            'auto_granted_value': 'AutoGrantedValue'
        })
    response = mturk_client.create_qualification_type(**params)
    return response['QualificationType']['QualificationTypeId']
Ejemplo n.º 3
0
def assign_qualification(qualification,
                         worker_id,
                         value=None,
                         send_notification=None,
                         mturk_client=None):
    mturk_client = mturk_client if mturk_client else client
    qualification_type_id = qualification['QualificationTypeId'] if hasattr(
        qualification, 'QualificationTypeId') else qualification

    if isinstance(worker_id, Iterable):
        if isinstance(value, Iterable):
            for worker, val in zip(worker_id, value):
                assign_qualification(qualification_type_id, worker, val,
                                     send_notification, mturk_client)
        else:
            for worker in worker_id:
                assign_qualification(qualification_type_id, worker, value,
                                     send_notification, mturk_client)
    else:
        params = utils.map_parameters(
            locals(), {
                'worker_id': 'WorkerId',
                'value': 'IntegerValue',
                'send_notification': 'SendNotification'
            })
        mturk_client.associate_qualification_with_worker(
            QualificationTypeId=qualification_type_id, **params)
Ejemplo n.º 4
0
 def _approve_assignment(_assignment_id, _feedback, _override_rejection):
     params = utils.map_parameters(locals(), {
         '_assignment_id': 'AssignmentId',
         '_feedback': 'RequesterFeedback',
         '_override_rejection': 'OverrideRejection'
     })
     mturk_client.approve_assignment(**params)
Ejemplo n.º 5
0
def invoke(name,
           payload=None,
           invoke_type=INVOKE_TYPE_REQUEST_RESPONSE,
           logs=False,
           context=None):
    """
    Invokes a Lambda function.
    :param name: The name or ARN of the function
    :param payload: A dict or JSON string that you want to provide to the Lambda function
    :param invoke_type: The invocation type
    :param logs: Set to true to include the execution log in the response
    :param context: Up to 3583 bytes of base64-encoded data about the invoking client to pass to the
    function in the context object.
    :return: The response payload, also the logs if requested
    """
    params = utils.map_parameters(
        locals(), {
            'context': 'ClientContext ',
            'invoke_type': 'InvocationType',
            'name': 'FunctionName'
        })
    if payload:
        if isinstance(payload, (Mapping, list)):
            params['Payload'] = json.dumps(payload, cls=utils.JSONEncoder)
        else:
            params['Payload'] = payload
    if logs:
        params['LogType'] = 'Tail'
        resp = client.invoke(**params)
        return resp['Payload'], base64.b64decode(
            resp['LogResult']).decode('utf-8').split('\n')
    else:
        resp = client.invoke(**params)
        return resp['Payload']
Ejemplo n.º 6
0
def update_config(name,
                  handler=None,
                  role=None,
                  runtime='python3.8',
                  timeout=None,
                  memory_size=None):
    """
    Modify the version-specific settings of a Lambda function.
    :param name: The name of the Lambda function.
    :param handler: The name of the method within your code that Lambda calls to execute your function.
    :param role: The Amazon Resource Name (ARN) of the function's execution role.
    :param runtime: The identifier for the runtime to use.
    :param timeout: The amount of time that Lambda allows a function to run before stopping it.
    The default is 3 seconds. The maximum allowed value is 900 seconds.
    :param memory_size:  The amount of memory that your function has access to. Increasing the function's memory also
    increases its CPU allocation. The default value is 128 MB. The value must be a multiple of 64 MB.
    :return: An object representing the configuration of the Lambda
    """
    config_params = utils.map_parameters(
        locals(), {
            'name': 'FunctionName',
            'handler': 'Handler',
            'role': 'Role',
            'runtime': 'Runtime',
            'timeout': 'Timeout',
            'memory_size': 'MemorySize'
        })
    return Lambda.from_create(
        client.update_function_configuration(**config_params))
Ejemplo n.º 7
0
def update_code(name, package, publish=True, dry_run=False):
    """
    Updates a Lambda code with the provided code.
    :param name: The name of the Lambda function.
    :param package: A zip package or S3 uri containing the package
    :param publish: Set to true to publish a new version of the function after updating the code.
    :param dry_run: Set to true to validate the request parameters and access permissions without modifying the
    function code.
    :return: An object representing the configuration of the Lambda
    """
    params = utils.map_parameters(locals(), {
        'publish': 'Publish',
        'dry_run': 'DryRun',
        'name': 'FunctionName'
    })

    # If the package is an S3 URI use that, else treat it as a zipfile
    (bucket, key) = decompose_uri(package)
    if bucket is None or key is None:
        params['ZipFile'] = package
    else:
        params['S3Bucket'] = bucket
        params['S3Key'] = key

    return Lambda.from_create(client.update_function_code(**params))
Ejemplo n.º 8
0
def add_assignments(hit_id, additional_assignments, request_token=None, mturk_client=None):
    mturk_client = mturk_client if mturk_client else client
    params = utils.map_parameters(locals(), {
        'hit_id': 'HITId',
        'additional_assignments': 'NumberOfAdditionalAssignments',
        'request_token': 'UniqueRequestToken'
    })
    mturk_client.create_additional_assignments_for_hit(**params)
Ejemplo n.º 9
0
def remove_qualification(qualification_type_id, worker_id, reason=None, mturk_client=None):
    if mturk_client is None:
        mturk_client = client
    params = utils.map_parameters(locals(), {
        'qualification_type_id': 'QualificationTypeId',
        'worker_id': 'WorkerId',
        'reason': 'Reason'
    })
    return mturk_client.disassociate_qualification_from_worker(**params)
Ejemplo n.º 10
0
def assign_qualification(qualification_type_id, worker_id, value=None, send_notification=False, mturk_client=None):
    if mturk_client is None:
        mturk_client = client
    params = utils.map_parameters(locals(), {
        'qualification_type_id': 'QualificationTypeId',
        'worker_id': 'WorkerId',
        'send_notification': 'SendNotification',
    })
    if value:
        params['IntegerValue'] = value
    return mturk_client.associate_qualification_with_worker(**params)
Ejemplo n.º 11
0
def create_hit(title,
               description,
               reward=None,
               reward_cents=None,
               lifetime=86400,
               assignment_duration=3600,
               max_assignments=None,
               auto_approval_delay=None,
               keywords=None,
               question=None,
               annotation=None,
               qualification_requirements=None,
               request_token=None,
               assignment_review_policy=None,
               hit_review_policy=None,
               hit_layout_id=None,
               hit_layout_parameters=None,
               mturk_client=None):
    mturk_client = mturk_client if mturk_client else client
    params = utils.map_parameters(
        locals(), {
            'title': 'Title',
            'description': 'Description',
            'reward': 'Reward',
            'lifetime': 'LifetimeInSeconds',
            'assignment_duration': 'AssignmentDurationInSeconds',
            'max_assignments': 'MaxAssignments',
            'auto_approval_delay': 'AutoApprovalDelayInSeconds',
            'keywords': 'Keywords',
            'question': 'Question',
            'annotation': 'RequesterAnnotation',
            'qualification_requirements': 'QualificationRequirements',
            'request_token': 'UniqueRequestToken',
            'assignment_review_policy': 'AssignmentReviewPolicy',
            'hit_review_policy': 'HITReviewPolicy',
            'hit_layout_id': 'HITLayoutId',
            'hit_layout_parameters': 'HITLayoutParameters'
        })
    if reward_cents:
        params['reward'] = str(reward_cents / 100)
    return HIT(mturk_client.create_hit(**params).get('HIT'),
               mturk_client=mturk_client,
               production=mturk_client_environment(mturk_client))
Ejemplo n.º 12
0
def create_hit_type(title,
                    description,
                    reward=None,
                    reward_cents=None,
                    assignment_duration=None,
                    auto_approval_delay=None,
                    keywords=None,
                    qualification_requirements=None,
                    mturk_client=None):
    mturk_client = mturk_client if mturk_client else client
    params = utils.map_parameters(locals(), {
        'title': 'Title',
        'description': 'Description',
        'reward': 'Reward',
        'assignment_duration': 'AssignmentDurationInSeconds',
        'auto_approval_delay': 'AutoApprovalDelayInSeconds',
        'keywords': 'Keywords',
        'qualification_requirements': 'QualificationRequirements'
    })
    if reward_cents:
        params['Reward'] = str(reward_cents / 100)
    return mturk_client.create_hit_type(**params).get('HITTypeId')
Ejemplo n.º 13
0
def create_hit(title=None,
               description=None,
               reward=None,
               reward_cents=None,
               lifetime=86400,
               assignment_duration=3600,
               max_assignments=None,
               auto_approval_delay=None,
               keywords=None,
               hit_type_id=None,
               question=None,
               html_question=None,
               external_question=None,
               question_template=None,
               question_template_uri=None,
               template_context=None,
               annotation=None,
               qualification_requirements=None,
               request_token=None,
               assignment_review_policy=None,
               hit_review_policy=None,
               hit_layout_id=None,
               hit_layout_parameters=None,
               mturk_client=None):
    mturk_client = mturk_client if mturk_client else client
    if hit_type_id:
        params = utils.map_parameters(locals(), {
            'hit_type_id': 'HITTypeId',
            'lifetime': 'LifetimeInSeconds',
            'max_assignments': 'MaxAssignments',
            'question': 'Question',
            'request_token': 'UniqueRequestToken',
            'assignment_review_policy': 'AssignmentReviewPolicy',
            'hit_review_policy': 'HITReviewPolicy',
            'hit_layout_id': 'HITLayoutId',
            'hit_layout_parameters': 'HITLayoutParameters'
        })
    else:
        params = utils.map_parameters(locals(), {
            'title': 'Title',
            'description': 'Description',
            'reward': 'Reward',
            'lifetime': 'LifetimeInSeconds',
            'assignment_duration': 'AssignmentDurationInSeconds',
            'max_assignments': 'MaxAssignments',
            'auto_approval_delay': 'AutoApprovalDelayInSeconds',
            'keywords': 'Keywords',
            'question': 'Question',
            'qualification_requirements': 'QualificationRequirements',
            'request_token': 'UniqueRequestToken',
            'assignment_review_policy': 'AssignmentReviewPolicy',
            'hit_review_policy': 'HITReviewPolicy',
            'hit_layout_id': 'HITLayoutId',
            'hit_layout_parameters': 'HITLayoutParameters'
        })
        if reward_cents:
            params['Reward'] = str(reward_cents / 100)

    if html_question:
        params['Question'] = render_html_question(html_question)
    if external_question:
        params['Question'] = render_external_question(external_question)
    if annotation:
        params['RequesterAnnotation'] = prepare_requester_annotation(annotation)
    if question_template:
        params['Question'] = render_jinja_template_question(template_context, template=question_template)
    if question_template_uri:
        params['Question'] = render_jinja_template_question(template_context, template_uri=question_template_uri)

    if hit_type_id:
        return HIT(mturk_client.create_hit_with_hit_type(**params).get('HIT'),
                   mturk_client=mturk_client,
                   production=mturk_client_environment(mturk_client))
    else:
        return HIT(mturk_client.create_hit(**params).get('HIT'),
                   mturk_client=mturk_client,
                   production=mturk_client_environment(mturk_client))