本文整理匯總了Python中singer.Transformer方法的典型用法代碼示例。如果您正苦於以下問題:Python singer.Transformer方法的具體用法?Python singer.Transformer怎麽用?Python singer.Transformer使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類singer
的用法示例。
在下文中一共展示了singer.Transformer方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: get_all_team_members
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_team_members(team_slug, schemas, repo_path, state, mdata):
org = repo_path.split('/')[0]
with metrics.record_counter('team_members') as counter:
for response in authed_get_all_pages(
'team_members',
'https://api.github.com/orgs/{}/teams/{}/members?sort=created_at&direction=desc'.format(org, team_slug)
):
team_members = response.json()
for r in team_members:
r['_sdc_repository'] = repo_path
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
counter.increment()
yield rec
return state
示例2: get_all_team_memberships
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_team_memberships(team_slug, schemas, repo_path, state, mdata):
org = repo_path.split('/')[0]
for response in authed_get_all_pages(
'team_members',
'https://api.github.com/orgs/{}/teams/{}/members?sort=created_at&direction=desc'.format(org, team_slug)
):
team_members = response.json()
with metrics.record_counter('team_memberships') as counter:
for r in team_members:
username = r['login']
for res in authed_get_all_pages(
'memberships',
'https://api.github.com/orgs/{}/teams/{}/memberships/{}'.format(org, team_slug, username)
):
team_membership = res.json()
team_membership['_sdc_repository'] = repo_path
with singer.Transformer() as transformer:
rec = transformer.transform(team_membership, schemas, metadata=metadata.to_map(mdata))
counter.increment()
yield rec
return state
示例3: get_all_releases
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_releases(schemas, repo_path, state, mdata):
# Releases doesn't seem to have an `updated_at` property, yet can be edited.
# For this reason and since the volume of release can safely be considered low,
# bookmarks were ignored for releases.
with metrics.record_counter('releases') as counter:
for response in authed_get_all_pages(
'releases',
'https://api.github.com/repos/{}/releases?sort=created_at&direction=desc'.format(repo_path)
):
releases = response.json()
extraction_time = singer.utils.now()
for r in releases:
r['_sdc_repository'] = repo_path
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
singer.write_record('releases', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'releases', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
return state
示例4: get_commits_for_pr
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_commits_for_pr(pr_number, pr_id, schema, repo_path, state, mdata):
for response in authed_get_all_pages(
'pr_commits',
'https://api.github.com/repos/{}/pulls/{}/commits'.format(repo_path,pr_number)
):
commit_data = response.json()
extraction_time = singer.utils.now()
for commit in commit_data:
commit['_sdc_repository'] = repo_path
commit['pr_number'] = pr_number
commit['pr_id'] = pr_id
commit['id'] = '{}-{}'.format(pr_id, commit['sha'])
with singer.Transformer() as transformer:
rec = transformer.transform(commit, schema, metadata=metadata.to_map(mdata))
yield rec
return state
示例5: get_all_assignees
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_assignees(schema, repo_path, state, mdata):
'''
https://developer.github.com/v3/issues/assignees/#list-assignees
'''
with metrics.record_counter('assignees') as counter:
for response in authed_get_all_pages(
'assignees',
'https://api.github.com/repos/{}/assignees'.format(repo_path)
):
assignees = response.json()
extraction_time = singer.utils.now()
for assignee in assignees:
assignee['_sdc_repository'] = repo_path
with singer.Transformer() as transformer:
rec = transformer.transform(assignee, schema, metadata=metadata.to_map(mdata))
singer.write_record('assignees', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'assignees', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
return state
示例6: get_all_collaborators
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_collaborators(schema, repo_path, state, mdata):
'''
https://developer.github.com/v3/repos/collaborators/#list-collaborators
'''
with metrics.record_counter('collaborators') as counter:
for response in authed_get_all_pages(
'collaborators',
'https://api.github.com/repos/{}/collaborators'.format(repo_path)
):
collaborators = response.json()
extraction_time = singer.utils.now()
for collaborator in collaborators:
collaborator['_sdc_repository'] = repo_path
with singer.Transformer() as transformer:
rec = transformer.transform(collaborator, schema, metadata=metadata.to_map(mdata))
singer.write_record('collaborators', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'collaborator', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
return state
示例7: write_page
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def write_page(self, page):
stream = Context.get_catalog_entry(self.tap_stream_id)
stream_metadata = metadata.to_map(stream.metadata)
extraction_time = singer.utils.now()
for rec in page:
with Transformer() as transformer:
rec = transformer.transform(rec, stream.schema.to_dict(), stream_metadata)
singer.write_record(self.tap_stream_id, rec, time_extracted=extraction_time)
with metrics.record_counter(self.tap_stream_id) as counter:
counter.increment(len(page))
示例8: sync_table_file
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def sync_table_file(config, s3_path, table_spec, stream):
LOGGER.info('Syncing file "%s".', s3_path)
bucket = config['bucket']
table_name = table_spec['table_name']
s3_file_handle = s3.get_file_handle(config, s3_path)
# We observed data who's field size exceeded the default maximum of
# 131072. We believe the primary consequence of the following setting
# is that a malformed, wide CSV would potentially parse into a single
# large field rather than giving this error, but we also think the
# chances of that are very small and at any rate the source data would
# need to be fixed. The other consequence of this could be larger
# memory consumption but that's acceptable as well.
csv.field_size_limit(sys.maxsize)
iterator = singer_encodings_csv.get_row_iterator(
s3_file_handle._raw_stream, table_spec) #pylint:disable=protected-access
records_synced = 0
for row in iterator:
custom_columns = {
s3.SDC_SOURCE_BUCKET_COLUMN: bucket,
s3.SDC_SOURCE_FILE_COLUMN: s3_path,
# index zero, +1 for header row
s3.SDC_SOURCE_LINENO_COLUMN: records_synced + 2
}
rec = {**row, **custom_columns}
with Transformer() as transformer:
to_write = transformer.transform(rec, stream['schema'], metadata.to_map(stream['metadata']))
singer.write_record(table_name, to_write)
records_synced += 1
return records_synced
示例9: get_all_teams
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_teams(schemas, repo_path, state, mdata):
org = repo_path.split('/')[0]
with metrics.record_counter('teams') as counter:
for response in authed_get_all_pages(
'teams',
'https://api.github.com/orgs/{}/teams?sort=created_at&direction=desc'.format(org)
):
teams = response.json()
extraction_time = singer.utils.now()
for r in teams:
r['_sdc_repository'] = repo_path
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
singer.write_record('teams', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'teams', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
if schemas.get('team_members'):
team_slug = r['slug']
for team_members_rec in get_all_team_members(team_slug, schemas['team_members'], repo_path, state, mdata):
singer.write_record('team_members', team_members_rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'team_members', {'since': singer.utils.strftime(extraction_time)})
if schemas.get('team_memberships'):
team_slug = r['slug']
for team_memberships_rec in get_all_team_memberships(team_slug, schemas['team_memberships'], repo_path, state, mdata):
singer.write_record('team_memberships', team_memberships_rec, time_extracted=extraction_time)
return state
示例10: get_all_events
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_events(schemas, repo_path, state, mdata):
# Incremental sync off `created_at`
# https://developer.github.com/v3/issues/events/#list-events-for-a-repository
# 'https://api.github.com/repos/{}/issues/events?sort=created_at&direction=desc'.format(repo_path)
bookmark_value = get_bookmark(state, repo_path, "events", "since")
if bookmark_value:
bookmark_time = singer.utils.strptime_to_utc(bookmark_value)
else:
bookmark_time = 0
with metrics.record_counter('events') as counter:
for response in authed_get_all_pages(
'events',
'https://api.github.com/repos/{}/events?sort=created_at&direction=desc'.format(repo_path)
):
events = response.json()
extraction_time = singer.utils.now()
for r in events:
r['_sdc_repository'] = repo_path
# skip records that haven't been updated since the last run
# the GitHub API doesn't currently allow a ?since param for pulls
# once we find the first piece of old data we can return, thanks to
# the sorting
updated_at = r.get('created_at') if r.get('updated_at') is None else r.get('updated_at')
if bookmark_time and singer.utils.strptime_to_utc(updated_at) < bookmark_time:
return state
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
singer.write_record('events', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'events', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
return state
示例11: get_all_issue_milestones
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_issue_milestones(schemas, repo_path, state, mdata):
# Incremental sync off `due on` ??? confirm.
# https://developer.github.com/v3/issues/milestones/#list-milestones-for-a-repository
# 'https://api.github.com/repos/{}/milestones?sort=created_at&direction=desc'.format(repo_path)
bookmark_value = get_bookmark(state, repo_path, "issue_milestones", "since")
if bookmark_value:
bookmark_time = singer.utils.strptime_to_utc(bookmark_value)
else:
bookmark_time = 0
with metrics.record_counter('issue_milestones') as counter:
for response in authed_get_all_pages(
'milestones',
'https://api.github.com/repos/{}/milestones?direction=desc'.format(repo_path)
):
milestones = response.json()
extraction_time = singer.utils.now()
for r in milestones:
r['_sdc_repository'] = repo_path
# skip records that haven't been updated since the last run
# the GitHub API doesn't currently allow a ?since param for pulls
# once we find the first piece of old data we can return, thanks to
# the sorting
if bookmark_time and singer.utils.strptime_to_utc(r.get('due_on')) < bookmark_time:
return state
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
singer.write_record('issue_milestones', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'issue_milestones', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
return state
示例12: get_all_commit_comments
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_commit_comments(schemas, repo_path, state, mdata):
# https://developer.github.com/v3/repos/comments/
# updated_at? incremental
# 'https://api.github.com/repos/{}/comments?sort=created_at&direction=desc'.format(repo_path)
bookmark_value = get_bookmark(state, repo_path, "commit_comments", "since")
if bookmark_value:
bookmark_time = singer.utils.strptime_to_utc(bookmark_value)
else:
bookmark_time = 0
with metrics.record_counter('commit_comments') as counter:
for response in authed_get_all_pages(
'commit_comments',
'https://api.github.com/repos/{}/comments?sort=created_at&direction=desc'.format(repo_path)
):
commit_comments = response.json()
extraction_time = singer.utils.now()
for r in commit_comments:
r['_sdc_repository'] = repo_path
# skip records that haven't been updated since the last run
# the GitHub API doesn't currently allow a ?since param for pulls
# once we find the first piece of old data we can return, thanks to
# the sorting
if bookmark_time and singer.utils.strptime_to_utc(r.get('updated_at')) < bookmark_time:
return state
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
singer.write_record('commit_comments', rec, time_extracted=extraction_time)
singer.write_bookmark(state, repo_path, 'commit_comments', {'since': singer.utils.strftime(extraction_time)})
counter.increment()
return state
示例13: get_all_project_cards
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_project_cards(project_id, schemas, repo_path, state, mdata):
bookmark_value = get_bookmark(state, repo_path, "project_cards", "since")
if bookmark_value:
bookmark_time = singer.utils.strptime_to_utc(bookmark_value)
else:
bookmark_time = 0
with metrics.record_counter('project_cards') as counter:
for response in authed_get_all_pages(
'project_cards',
'https://api.github.com/projects/{}/columns?sort=created_at&direction=desc'.format(project_id)
):
project_cards = response.json()
for r in project_cards:
r['_sdc_repository'] = repo_path
# skip records that haven't been updated since the last run
# the GitHub API doesn't currently allow a ?since param for pulls
# once we find the first piece of old data we can return, thanks to
# the sorting
if bookmark_time and singer.utils.strptime_to_utc(r.get('updated_at')) < bookmark_time:
return state
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
# counter.increment()
yield rec
return state
示例14: get_all_project_columns
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_all_project_columns(project_id, schemas, repo_path, state, mdata):
bookmark_value = get_bookmark(state, repo_path, "project_columns", "since")
if bookmark_value:
bookmark_time = singer.utils.strptime_to_utc(bookmark_value)
else:
bookmark_time = 0
with metrics.record_counter('project_columns') as counter:
for response in authed_get_all_pages(
'project_columns',
'https://api.github.com/projects/{}/columns?sort=created_at&direction=desc'.format(project_id)
):
project_columns = response.json()
for r in project_columns:
r['_sdc_repository'] = repo_path
# skip records that haven't been updated since the last run
# the GitHub API doesn't currently allow a ?since param for pulls
# once we find the first piece of old data we can return, thanks to
# the sorting
if bookmark_time and singer.utils.strptime_to_utc(r.get('updated_at')) < bookmark_time:
return state
# transform and write release record
with singer.Transformer() as transformer:
rec = transformer.transform(r, schemas, metadata=metadata.to_map(mdata))
# counter.increment()
yield rec
return state
示例15: get_review_comments_for_pr
# 需要導入模塊: import singer [as 別名]
# 或者: from singer import Transformer [as 別名]
def get_review_comments_for_pr(pr_number, schema, repo_path, state, mdata):
for response in authed_get_all_pages(
'comments',
'https://api.github.com/repos/{}/pulls/{}/comments'.format(repo_path,pr_number)
):
review_comments = response.json()
extraction_time = singer.utils.now()
for comment in review_comments:
comment['_sdc_repository'] = repo_path
with singer.Transformer() as transformer:
rec = transformer.transform(comment, schema, metadata=metadata.to_map(mdata))
yield rec
return state