adapapi
Advanced tools
| Metadata-Version: 2.1 | ||
| Name: adapapi | ||
| Version: 0.0.9 | ||
| Version: 0.1.0 | ||
| Summary: A simple Python package using Appen API | ||
@@ -14,2 +14,4 @@ Author: appenps | ||
| Classifier: Programming Language :: Python :: 3.9 | ||
| Classifier: Programming Language :: Python :: 3.10 | ||
| Classifier: Programming Language :: Python :: 3.11 | ||
| Requires-Python: >=3.6, <4 | ||
@@ -16,0 +18,0 @@ Description-Content-Type: text/markdown |
+64
-39
@@ -14,3 +14,4 @@ import requests | ||
| class Appen: | ||
| def __init__(self, api_key): | ||
| def __init__(self, api_key, eu = False): | ||
| self.eu = eu | ||
| self.api_key = api_key | ||
@@ -31,3 +32,5 @@ self.headers={ | ||
| params = {} | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/ping.json', params=params, headers=self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/ping.json', params=params, headers=self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}/ping.json', params=params, headers=self.headers) | ||
| if response.status_code != 200: | ||
@@ -63,6 +66,6 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| if job_id == None: | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/upload.json', data=payload, params=params, headers=headers) | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/upload.json', data=payload, params=params, headers=headers) if not self.eu else requests.post(f'https://api.eu.appen.com/v1/jobs/upload.json', data=payload, params=params, headers=headers) | ||
| job_id = json.loads(response.text)['id'] | ||
| else: | ||
| response = requests.put(f'https://api.appen.com/v1/jobs/{job_id}/upload.json', data=payload, params=params, headers=headers) | ||
| response = requests.put(f'https://api.appen.com/v1/jobs/{job_id}/upload.json', data=payload, params=params, headers=headers) if not self.eu else requests.put(f'https://api.eu.appen.com/v1/jobs/{job_id}/upload.json', data=payload, params=params, headers=headers) | ||
@@ -75,2 +78,4 @@ if response.status_code != 200: | ||
| def split_column(self, job_id, columnname, character): | ||
@@ -86,3 +91,3 @@ """Corresponds to the "Split Column" button in platform UI. This operation will split the contents of a column on a certain character, transforming strings into arrays of strings. | ||
| params = {'on': columnname, 'with': character} | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/units/split', params=params, headers = self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/units/split', params=params, headers = self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}/units/split', params=params, headers = self.headers) | ||
| if response.status_code != 200: | ||
@@ -92,3 +97,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| log.info(json.loads(response.text)) | ||
| def job_json(self, job_id): | ||
@@ -104,3 +109,3 @@ """Get job json | ||
| params = {} | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.json', params=params, headers = self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.json', params=params, headers = self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}.json', params=params, headers = self.headers) | ||
| if response.status_code != 200: | ||
@@ -111,2 +116,21 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| def create_job(self, job_json = None): | ||
| """Create new job. See https://developer.appen.com/#tag/Job-CreateUpdate | ||
| Args: job_json (dict): Job JSON | ||
| """ | ||
| headers = {'content-type': 'application/json'} | ||
| headers.update(self.headers) | ||
| payload = { | ||
| 'job': job_json | ||
| } | ||
| response = requests.post(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.post(f'https://api.eu.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
| log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| else: | ||
| log.info(json.loads(response.text)) | ||
| return json.loads(response.text)['id'] | ||
| def duplicate_job(self, job_id, include_uploaded_rows=False, include_tq=False): | ||
@@ -124,7 +148,7 @@ """Duplicate ADAP job | ||
| params = {'all_units': str(include_uploaded_rows).lower(), 'gold': str(include_tq).lower()} | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/copy.json', params=params, headers = self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/copy.json', params=params, headers = self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}/copy.json', params=params, headers = self.headers) | ||
| if response.status_code != 200: | ||
| log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| else: | ||
| return json.loads(response.text)['id'] | ||
| return json.loads(response.text) | ||
@@ -142,4 +166,5 @@ def update_job_json(self, job_id, indict): | ||
| payload.update({'job': indict}) | ||
| response = requests.put(f'https://api.appen.com/v1/jobs/{job_id}.json', data=json.dumps(payload), headers=headers) | ||
| payload.update({'ignore_overlapping_names': 'true'}) | ||
| response = requests.put(f'https://api.appen.com/v1/jobs/{job_id}.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.put(f'https://api.eu.appen.com/v1/jobs/{job_id}.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -150,6 +175,6 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| try: | ||
| updated_stuff = {k: read_response[k] for k, v in payload['job'].items()} | ||
| updated_stuff = [k for k, v in payload['job'].items()] | ||
| except: | ||
| updated_stuff = read_response | ||
| log.info(f'---- Status code: {response.status_code} \n---- Updated:\n{updated_stuff}') | ||
| log.info(f'---- Updated:{job_id}\n{updated_stuff}\n---- Status code: {response.status_code}') | ||
@@ -168,3 +193,3 @@ def tag_get(self, job_id): | ||
| payload = {} | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -188,3 +213,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| } | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) if not self.eu else requests.post(f'https://api.eu.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -208,3 +233,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| } | ||
| response = requests.put(f'https://api.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) | ||
| response = requests.put(f'https://api.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) if not self.eu else requests.put(f'https://api.eu.appen.com/v1/jobs/{job_id}/tags', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -215,3 +240,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| def get_all_jobs(self): | ||
| def get_all_jobs(self, team_id = None): | ||
| """Retrieves list of all job IDs. | ||
@@ -231,3 +256,5 @@ More information https://developer.appen.com/#tag/Account-Info/paths/~1jobs.json/get | ||
| } | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| if team_id: | ||
| payload.update({'team_id': team_id}) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -264,3 +291,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| } | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -297,3 +324,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| } | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -332,3 +359,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| } | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -369,3 +396,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/regenerate', params=params, headers = self.headers) | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/regenerate', params=params, headers = self.headers) if not self.eu else requests.post(f'https://api.eu.appen.com/v1/jobs/{job_id}/regenerate', params=params, headers = self.headers) | ||
| if response.status_code != 200: | ||
@@ -403,3 +430,3 @@ log.error(f'---- Status code: {response.status_code} -- {response.text}') | ||
| while True: | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) | ||
| counter += 1 | ||
@@ -411,6 +438,6 @@ log.info(f"-- Response: {response.status_code} -- Count:{counter}") | ||
| time.sleep(30) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) | ||
| while not response.ok: | ||
| log.error(f"Download Failed: Attempting re-download {params['type'].upper()} report {job_id}") | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}.csv', params=params, headers = self.headers) | ||
| time.sleep(30) | ||
@@ -475,3 +502,3 @@ | ||
| while True: | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) | ||
| counter += 1 | ||
@@ -483,6 +510,6 @@ log.info(f"-- Response: {response.status_code} -- Count:{counter}") | ||
| time.sleep(30) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) | ||
| while not response.ok: | ||
| log.error(f"Download Failed: Attempting re-download {params['type'].upper()} report {jid}") | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{jid}.csv', params=params, headers=self.headers) | ||
| time.sleep(30) | ||
@@ -544,3 +571,3 @@ | ||
| payload = {'amount': bonus_chunk} | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/workers/{worker_id}/bonus.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/workers/{worker_id}/bonus.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.post(f'https://api.eu.appen.com/v1/jobs/{job_id}/workers/{worker_id}/bonus.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -566,3 +593,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| params = {} | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', params=params, headers=headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', params=params, headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', params=params, headers=headers) | ||
| if response.status_code != 200: | ||
@@ -604,4 +631,3 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| try: | ||
| response = requests.get( | ||
| f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.get(f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.get(f'https://api.eu.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -633,3 +659,3 @@ msg = f'For unit_id {unit_id} -- Status code: {response.status_code} \n {response.text}' | ||
| response = requests.put( | ||
| f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) | ||
| f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.put(f'https://api.eu.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -652,3 +678,3 @@ log.error(f'-- Unit ID {unit_id} -- Status code: {response.status_code} -- {response.text}') | ||
| } | ||
| response = requests.delete(f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.delete(f'https://api.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.delete(f'https://api.eu.appen.com/v1/jobs/{job_id}/units/{unit_id}.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
@@ -668,3 +694,3 @@ log.error(f'-- Unit ID {unit_id} -- Status code: {response.status_code} \n {response.text}') | ||
| params = {} | ||
| response = requests.delete(f'https://api.appen.com/v1/jobs/{job_id}.json', params=params, headers=headers) | ||
| response = requests.delete(f'https://api.appen.com/v1/jobs/{job_id}.json', params=params, headers=headers) if not self.eu else requests.delete(f'https://api.eu.appen.com/v1/jobs/{job_id}.json', params=params, headers=headers) | ||
| if response.status_code != 200: | ||
@@ -679,3 +705,2 @@ log.error(f'---- Status code: {response.status_code} \n {response.text}') | ||
| """Launching job internally | ||
| Args: | ||
@@ -697,8 +722,8 @@ job_id (int): ADAP Job ID | ||
| } | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/orders.json', data=json.dumps(payload), headers=headers) | ||
| response = requests.post(f'https://api.appen.com/v1/jobs/{job_id}/orders.json', data=json.dumps(payload), headers=headers) if not self.eu else requests.post(f'https://api.eu.appen.com/v1/jobs/{job_id}/orders.json', data=json.dumps(payload), headers=headers) | ||
| if response.status_code != 200: | ||
| log.error(f'---- Status code: {response.status_code}\n{response.text}') | ||
| log.error(f'{job_id}---- Status code: {response.status_code}\n{response.text}') | ||
| else: | ||
| response_text = json.loads(response.text) | ||
| log.info(f'---- Status code: {response.status_code} \n {response_text}') | ||
| log.info(f'{job_id}---- Status code: {response.status_code} \n {response_text}') | ||
| return response_text['nuggeted_units_count'] |
+3
-1
| Metadata-Version: 2.1 | ||
| Name: adapapi | ||
| Version: 0.0.9 | ||
| Version: 0.1.0 | ||
| Summary: A simple Python package using Appen API | ||
@@ -14,2 +14,4 @@ Author: appenps | ||
| Classifier: Programming Language :: Python :: 3.9 | ||
| Classifier: Programming Language :: Python :: 3.10 | ||
| Classifier: Programming Language :: Python :: 3.11 | ||
| Requires-Python: >=3.6, <4 | ||
@@ -16,0 +18,0 @@ Description-Content-Type: text/markdown |
+3
-1
@@ -9,3 +9,3 @@ from setuptools import setup, find_packages | ||
| name='adapapi', | ||
| version='0.0.9', | ||
| version='0.1.0', | ||
| description='A simple Python package using Appen API', | ||
@@ -24,2 +24,4 @@ long_description=long_description, | ||
| 'Programming Language :: Python :: 3.9', | ||
| 'Programming Language :: Python :: 3.10', | ||
| 'Programming Language :: Python :: 3.11', | ||
| ], | ||
@@ -26,0 +28,0 @@ packages=find_packages(), |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
60670
8.76%659
3.62%