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)
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']
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)
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)
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']
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))
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))
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)
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)
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)
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))
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')
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))