def __new__( cls, category_id: str, target_group_id: str, text: str, reference_type: ReferenceType, reference_id: str, user_login: str, source_repo: str, cn_current_repo: ComponentName, ): if reference_id: check_type(reference_id, str) reference = Reference(type=reference_type, identifier=reference_id) cn_source_repo = ComponentName(name=source_repo) is_current_repo = cn_current_repo == cn_source_repo from_same_github_instance = cn_current_repo.github_host() == cn_source_repo.github_host() self = super().__new__( cls, category_id, target_group_id, text, reference, user_login, is_current_repo, from_same_github_instance, cn_source_repo ) return self
def release_note_block(code_block: dict, reference_type: ReferenceType, user_login: str, cn_current_repo: ComponentName, reference_id: str = None) -> ReleaseNoteBlock: text = _.trim(code_block.get('text')) if not text or 'none' == text.lower(): return None category = code_block.get('category') target_group = code_block.get('target_group') source_repo = code_block.get('source_repo') if source_repo: reference_type = reference_type_for_type_identifier( code_block.get('reference_type')) reference_id = code_block.get('reference_id') user_login = code_block.get('user') else: source_repo = cn_current_repo.name() reference_type = reference_type reference_id = reference_id return ReleaseNoteBlock(category_id=category, target_group_id=target_group, text=text, reference_type=reference_type, reference_id=reference_id, user_login=user_login, source_repo=source_repo, cn_current_repo=cn_current_repo)
def _rls_note_objs(github_helper: GitHubRepositoryHelper, git_helper: GitHelper, repository_branch: str = None, commit_range: str = None) -> [ReleaseNote]: cn_current_repo = ComponentName.from_github_repo_url( github_helper.repository.html_url) if not commit_range: commit_range = calculate_range(repository_branch, git_helper, github_helper) info('Fetching release notes from revision range: {range}'.format( range=commit_range)) commits = commits_in_range(git_helper.repo, commit_range, repository_branch) pr_numbers = fetch_pr_numbers_from_commits(commits) verbose( 'Merged pull request numbers in range {range}: {pr_numbers}'.format( range=commit_range, pr_numbers=pr_numbers)) release_note_objs = fetch_release_notes_from_prs(github_helper, pr_numbers, cn_current_repo) release_note_objs.extend( fetch_release_notes_from_commits(commits, cn_current_repo)) return release_note_objs
ReleaseNote, extract_release_notes, ) from github.release_notes.model import ( ReleaseNoteBlock, ReferenceType, REF_TYPE_PULL_REQUEST, ) from github.release_notes.renderer import ( CATEGORY_IMPROVEMENT_ID, TARGET_GROUP_USER_ID, ) from product.model import ComponentName CURRENT_REPO_NAME = 'github.com/madeup/current-repo' CURRENT_REPO = ComponentName(CURRENT_REPO_NAME) DEFAULT_CATEGORY = CATEGORY_IMPROVEMENT_ID DEFAULT_TARGET_GROUP = TARGET_GROUP_USER_ID DEFAULT_RELEASE_NOTE_TEXT = 'default release note text' DEFAULT_USER = '******' DEFAULT_REFERENCE_ID = '42' DEFAULT_REFERENCE_TYPE = REF_TYPE_PULL_REQUEST DEFAULT_REPO = CURRENT_REPO def release_note_block_with_defaults( category_id: str = DEFAULT_CATEGORY, target_group_id: str = DEFAULT_TARGET_GROUP, text: str = DEFAULT_RELEASE_NOTE_TEXT, reference_type: ReferenceType = DEFAULT_REFERENCE_TYPE,