code: def _pluck_pull_request_info(pull_request_url: str) -> PullRequestInfo:
      
      match = re.search(
          r'github\.com/(?P<owner>[\w-]+)/(?P<repo>[\w-]+)/pull/(?P<number>\d+)',
          pull_request_url
      )
  
      if not match:
          raise GithubPrError(f'Couldnt parse url: {pull_request_url}')
  
      return PullRequestInfo(
          owner=match.group('owner'),
          repo=match.group('repo'),
          number=int(match.group('number'))
      )
docs: # Plucks a PullRequestInfo from  a valid
      >>> _pluck_pull_request_info('https://github.com/zhammer/morning-cd/pull/17')
      PullRequestInfo(owner='zhammer', repo='morning-cd', number=17)
  
      # Raises a GithubPrError on bad urls
      >>> _pluck_pull_request_info('bad url')
      Traceback (most recent call last):
          ...
      faaspact_verifier.delivery.github_prs.GithubPrError: ...