airbyte-source-github 2.1.9.dev202602042146__tar.gz → 2.1.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/PKG-INFO +1 -1
  2. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/pyproject.toml +1 -1
  3. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/errors_handlers.py +0 -20
  4. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/streams.py +0 -61
  5. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/README.md +0 -0
  6. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/__init__.py +0 -0
  7. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/backoff_strategies.py +0 -0
  8. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/config_migrations.py +0 -0
  9. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/constants.py +0 -0
  10. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/github_schema.py +0 -0
  11. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/graphql.py +0 -0
  12. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/run.py +0 -0
  13. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/assignees.json +0 -0
  14. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/branches.json +0 -0
  15. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/collaborators.json +0 -0
  16. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/comments.json +0 -0
  17. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/commit_comment_reactions.json +0 -0
  18. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/commit_comments.json +0 -0
  19. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/commits.json +0 -0
  20. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/contributor_activity.json +0 -0
  21. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/deployments.json +0 -0
  22. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/events.json +0 -0
  23. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issue_comment_reactions.json +0 -0
  24. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issue_events.json +0 -0
  25. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issue_labels.json +0 -0
  26. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issue_milestones.json +0 -0
  27. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issue_reactions.json +0 -0
  28. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issue_timeline_events.json +0 -0
  29. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/issues.json +0 -0
  30. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/organizations.json +0 -0
  31. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/project_cards.json +0 -0
  32. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/project_columns.json +0 -0
  33. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/projects.json +0 -0
  34. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/projects_v2.json +0 -0
  35. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/pull_request_comment_reactions.json +0 -0
  36. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/pull_request_commits.json +0 -0
  37. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/pull_request_stats.json +0 -0
  38. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/pull_requests.json +0 -0
  39. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/releases.json +0 -0
  40. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/repositories.json +0 -0
  41. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/review_comments.json +0 -0
  42. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/reviews.json +0 -0
  43. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/events/comment.json +0 -0
  44. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/events/commented.json +0 -0
  45. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/events/committed.json +0 -0
  46. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/events/cross_referenced.json +0 -0
  47. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/events/reviewed.json +0 -0
  48. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/reaction.json +0 -0
  49. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/reactions.json +0 -0
  50. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/user.json +0 -0
  51. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/shared/user_graphql.json +0 -0
  52. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/stargazers.json +0 -0
  53. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/tags.json +0 -0
  54. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/team_members.json +0 -0
  55. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/team_memberships.json +0 -0
  56. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/teams.json +0 -0
  57. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/users.json +0 -0
  58. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/workflow_jobs.json +0 -0
  59. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/workflow_runs.json +0 -0
  60. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/schemas/workflows.json +0 -0
  61. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/source.py +0 -0
  62. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/spec.json +0 -0
  63. {airbyte_source_github-2.1.9.dev202602042146 → airbyte_source_github-2.1.10}/source_github/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-source-github
3
- Version: 2.1.9.dev202602042146
3
+ Version: 2.1.10
4
4
  Summary: Source implementation for GitHub.
5
5
  Home-page: https://airbyte.com
6
6
  License: ELv2
@@ -3,7 +3,7 @@ requires = [ "poetry-core>=1.0.0",]
3
3
  build-backend = "poetry.core.masonry.api"
4
4
 
5
5
  [tool.poetry]
6
- version = "2.1.9.dev.202602042146"
6
+ version = "2.1.10"
7
7
  name = "airbyte-source-github"
8
8
  description = "Source implementation for GitHub."
9
9
  authors = [ "Airbyte <contact@airbyte.io>",]
@@ -103,26 +103,6 @@ class GithubStreamABCErrorHandler(HttpStatusErrorHandler):
103
103
  error_message=log_message,
104
104
  )
105
105
 
106
- # Handle GitHub API 10,000 result limit error
107
- # https://docs.github.com/en/rest/releases/releases#list-releases
108
- if response_or_exception.status_code == 422:
109
- try:
110
- response_json = response_or_exception.json()
111
- error_message = response_json.get("message", "")
112
- if "10000" in error_message:
113
- return ErrorResolution(
114
- response_action=ResponseAction.FAIL,
115
- failure_type=FailureType.system_error,
116
- error_message=(
117
- f"GitHub API limit reached: {error_message}. "
118
- "This repository has more releases than GitHub's API limit of 10,000 results. "
119
- "The connector has synced the maximum available releases. "
120
- "Consider disabling the 'releases' stream if this causes sync failures."
121
- ),
122
- )
123
- except Exception:
124
- pass # Fall through to default handling if JSON parsing fails
125
-
126
106
  return super().interpret_response(response_or_exception)
127
107
 
128
108
 
@@ -509,67 +509,6 @@ class Releases(SemiIncrementalMixin, GithubStream):
509
509
 
510
510
  cursor_field = "created_at"
511
511
 
512
- # GitHub API limits pagination to 10,000 results maximum
513
- # With 100 results per page (default), this means max 100 pages
514
- # https://docs.github.com/en/rest/releases/releases#list-releases
515
- MAX_PAGE_NUMBER = 100
516
-
517
- def __init__(self, **kwargs):
518
- super().__init__(**kwargs)
519
- self._pagination_limit_reached = False
520
-
521
- def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, Any]]:
522
- """
523
- Override to stop pagination at page 100 (10,000 results) to avoid GitHub API 422 error.
524
- GitHub's REST API has a hard limit of 10,000 results for list endpoints.
525
- """
526
- token = super().next_page_token(response)
527
- if token:
528
- page = int(token.get("page", 0))
529
- if page > self.MAX_PAGE_NUMBER:
530
- self._pagination_limit_reached = True
531
- self.logger.warning(
532
- f"Stopping pagination at page {self.MAX_PAGE_NUMBER} due to GitHub API limit of 10,000 results. "
533
- "Some releases may not be synced."
534
- )
535
- return None
536
- return token
537
-
538
- def read_records(
539
- self,
540
- sync_mode: SyncMode,
541
- cursor_field: List[str] = None,
542
- stream_slice: Mapping[str, Any] = None,
543
- stream_state: Mapping[str, Any] = None,
544
- ) -> Iterable[Mapping[str, Any]]:
545
- """
546
- Override to fail the sync after loading records when pagination limit is reached.
547
- This ensures users are explicitly notified that not all releases were synced due to GitHub API limitations,
548
- while still loading the first 10,000 releases to the destination.
549
- """
550
- # Reset the flag for each slice
551
- self._pagination_limit_reached = False
552
-
553
- # Yield all records from parent
554
- yield from super().read_records(
555
- sync_mode=sync_mode, cursor_field=cursor_field, stream_slice=stream_slice, stream_state=stream_state
556
- )
557
-
558
- # After all records are yielded, fail the sync if we hit the pagination limit
559
- # This ensures the 10,000 records are loaded but the user is explicitly notified
560
- if self._pagination_limit_reached:
561
- repository = stream_slice.get("repository", "unknown") if stream_slice else "unknown"
562
- raise AirbyteTracedException(
563
- message=(
564
- f"GitHub API pagination limit reached for repository '{repository}'. "
565
- f"Only the first 10,000 releases (sorted by creation date, newest first) were synced to the destination. "
566
- f"This repository has more releases than GitHub's API limit allows. "
567
- f"See: https://docs.github.com/en/rest/releases/releases#list-releases"
568
- ),
569
- internal_message=f"GitHub API 10,000 result limit reached for repository '{repository}'",
570
- failure_type=FailureType.system_error,
571
- )
572
-
573
512
  def transform(self, record: MutableMapping[str, Any], stream_slice: Mapping[str, Any]) -> MutableMapping[str, Any]:
574
513
  record = super().transform(record=record, stream_slice=stream_slice)
575
514