Pygithub

Latest version: v2.3.0

Safety actively analyzes 619599 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 8

2.3.0

New features
- Support oauth for enterprise EnricoMi (2780)
- Support creation of Dependabot Organization and Repository Secrets thomascrowley (2874)

Improvements
- Create release with optional `name` and `message` when `generate_release_notes` is true heitorpolidoro (2868)
- Add missing attributes to `WorkflowJob` xvega (2921)
- Add `created` and `check_suite_id` filter for Repository Workflow runs treee111 (2891)
- Assert requester argument type in Auth EnricoMi (2912)

Bug Fixes
- Revert having allowed values for `add_to_collaborators` jodelasur (2905)

Maintenance
- Fix imports in authentication docs wurstbrot (2923)
- CI: add docformatter to precommit Borda (2614)
- Add `.swp` fils to `.gitignore` boomanaiden154 (2903)
- Fix instructions building docs in `CONTRIBUTING.md` wakamex (2900)
- Explicitly name the modules built in `pyproject.toml` treee111 (2894)

2.2.0

Breaking Changes

The `github.Comparison.Comparison` instance returned by `Repository.compare` provides a `commits` property that used to return a `list[github.Commit.Commit]`, which has now been changed to `PaginatedList[github.Commit.Commit]`. This breaks user code that assumes a `list`:

python
commits = repo.compare("v0.6", "v0.7").commits
no_of_commits = len(commits) will raise a TypeError


This will raise a `TypeError: object of type 'PaginatedList' has no len()`, as the returned `PaginatedList`
does not support the `len()` method. Use the `totalCount` property instead:

python
commits = repo.compare("v0.6", "v0.7").commits
no_of_commits = commits.totalCount


New features

* Add support to call GraphQL API

Improvements

* Add parent_team_id, maintainers and notification_setting for creating and updating teams. by Cheshirez in https://github.com/PyGithub/PyGithub/pull/2863
* Add support for issue reactions summary by smuzaffar in https://github.com/PyGithub/PyGithub/pull/2866
* Support for DependabotAlert APIs by coopernetes in https://github.com/PyGithub/PyGithub/pull/2879
* Derive GraphQL URL from base_url by EnricoMi in https://github.com/PyGithub/PyGithub/pull/2880
* Make `Repository.compare().commits` return paginated list by EnricoMi in https://github.com/PyGithub/PyGithub/pull/2882
* Add missing branch protection fields by treee111 in https://github.com/PyGithub/PyGithub/pull/2873
* Add `include_all_branches` to `create_repo_from_template` of `AuthenticatedUser` and `Organization` by janssonoskar in https://github.com/PyGithub/PyGithub/pull/2871
* Add and update organisation dependabot secrets by mohy01 in https://github.com/PyGithub/PyGithub/pull/2316
* Add missing params to `Organization.create_repo` by tekumara in https://github.com/PyGithub/PyGithub/pull/2700
* Update allowed values for `Repository` collaborator permissions by flying-sheep in https://github.com/PyGithub/PyGithub/pull/1996
* Support editing PullRequestReview by ColasGael in https://github.com/PyGithub/PyGithub/pull/2851
* Update attributes after calling `PullRequestReview.dismiss` by ColasGael in https://github.com/PyGithub/PyGithub/pull/2854
* Add `request_cve` on `RepositoryAdvisories` by JLLeitschuh in https://github.com/PyGithub/PyGithub/pull/2855
* Filter collaborators of a repository by permissions by notmicaelfilipe in https://github.com/PyGithub/PyGithub/pull/2792
* Set pull request to auto merge via GraphQL API by heitorpolidoro in https://github.com/PyGithub/PyGithub/pull/2816
* Support Environment Variables and Secrets by AndrewJDawes in https://github.com/PyGithub/PyGithub/pull/2848
* Update workflow.get_runs & pullrequest.add_to_assignees function signature by sd-kialo in https://github.com/PyGithub/PyGithub/pull/2799
* Add `GithubObject.last_modified_datetime` to have `last_modified` as a `datetime` by chouetz in https://github.com/PyGithub/PyGithub/pull/2772
* Add support for global advisories and unify some shared logic with repository advisories by crimsonknave in https://github.com/PyGithub/PyGithub/pull/2702
* Add `internal` as valid Repository visibility value by AndrewJDawes in https://github.com/PyGithub/PyGithub/pull/2806
* Add support for issue comments reactions summary by smuzaffar in https://github.com/PyGithub/PyGithub/pull/2813

Bug Fixes

* Add a bunch of missing urllib.parse.quote calls by ExplodingCabbage in https://github.com/PyGithub/PyGithub/pull/1976
* Fix Variable and Secret url bugs by AndrewJDawes in https://github.com/PyGithub/PyGithub/pull/2835

Maintenance

* Update the class name for NetrcAuth in the examples by vinnybod in https://github.com/PyGithub/PyGithub/pull/2860
* Move build to PEP517 by trim21 in https://github.com/PyGithub/PyGithub/pull/2800
* Use new type assert functions in `Repository` by trim21 in https://github.com/PyGithub/PyGithub/pull/2798
* PyTest: Move config to pyproject.toml by Borda in https://github.com/PyGithub/PyGithub/pull/2859
* codespell: ignore-words-list by Borda in https://github.com/PyGithub/PyGithub/pull/2858
* Improve fix-headers.py script by EnricoMi in https://github.com/PyGithub/PyGithub/pull/2728
* Remove dependency on python-dateutil by lazka in https://github.com/PyGithub/PyGithub/pull/2804
* CI: update precommit & apply by Borda in https://github.com/PyGithub/PyGithub/pull/2600
* Docs: Fix parameter order according to Version 2.1.0 by nad182 in https://github.com/PyGithub/PyGithub/pull/2786
* Add missing GitHub classes to docs by EnricoMi in https://github.com/PyGithub/PyGithub/pull/2783
* CI: Fix mypy error by ignoring override by EnricoMi in https://github.com/PyGithub/PyGithub/pull/2779

**Full Changelog**: https://github.com/PyGithub/PyGithub/compare/v2.1.1...v2.2.0

2.1.1

Bug Fixes

* Require urllib 1.26.0 or greater (2774) (001c0852)

Maintenance

* Fix pypi-release workflow, allow for manual run (2771) (035c88f1)

2.1.0.post0

Important

Request throttling

This release introduces a default throttling mechanism to mitigate secondary rate limit errors and comply with Github's best practices:
https://docs.github.com/en/rest/guides/best-practices-for-integrators?apiVersion=2022-11-28#dealing-with-secondary-rate-limits

The default throttling of 1 second between writes and 0.25 second between any requests can be configured
for `github.Github` and `github.GithubIntegration`:

python
g = github.Github(seconds_between_requests=0.25, seconds_between_writes=1)


Set these parameters to `None` to disable throttling and restore earlier behavior.

Request retry

This release introduces a default retry mechanism to retry retry-able 403 responses (primary and secondary rate limit errors only) and any 5xx response.

Class `github.GithubRetry` implements this behavior, and can be configured via the `retry` argument of `github.Github` and `github.GithubIntegration`.
Retry behavior is configured similar to `urllib3.Retry`: https://urllib3.readthedocs.io/en/stable/reference/urllib3.util.html

python
g = github.Github(retry=github.GithubRetry())


Set this parameter to `None` to disable retry mechanism and restore earlier behaviour.

Breaking Changes

Timestamps

Any timestamps returned by this library are `datetime` with timezone information, usually UTC.
Before this release, timestamps used to be naive `datetime` instances without timezone.
Comparing (other than `==`) these timestamps with naive `datetime` instances used to work but will now break.
Add a timezone information to your `datetime` instances before comparison:

python
if g.get_repo("PyGithub/PyGithub").created_at < datetime(2012, 2, 26, tzinfo=timezone.utc):
...


Netrc authentication

A Netrc file (e.g. `~/.netrc`) does not override PyGithub authentication, anymore.
If you require authentication through Netrc, then this is a breaking change.
Use a `github.Auth.NetrcAuth` instance to use Netrc credentials:

python
>>> auth = Auth.NetrcAuth()
>>> g = Github(auth=auth)
>>> g.get_user().login
'login'


Repository.create_pull

Merged overloaded `create_pull` methods

python
def create_pull(self, issue, base, head)
def create_pull(self, title, body, base, head, maintainer_can_modify=NotSet, draft=False)


into

python
def create_pull(self, base, head, *, title=NotSet, body=NotSet, maintainer_can_modify=NotSet, draft=NotSet, issue=NotSet)


Please update your usage of `Repository.create_pull` accordingly.

New features

* Throttle requests to mitigate RateLimitExceededExceptions (2145) (99155806)
* Retry retryable 403 (rate limit) (2387) (0bb72ca0)
* Close connections after use (2724) (73236e23)

Improvements

* Make datetime objects timezone-aware (2565) (0177f7c5)
* Make `Branch.edit_*` functions return objects (2748) (8dee53a8)
* Add `license` attribute to `Repository` (2721) (26d353e7)
* Add missing attributes to `Repository` (2742) (65cfeb1b)
* Add `is_alphanumeric` attribute to `Autolink` and `Repository.create_autolink` (2630) (b6a28a26)
* Suppress `requests` fallback to netrc, provide `github.Auth.Netrc` (2739) (ac36f6a9)
* Pass Requester arguments to `AppInstallationAuth.__integration` (2695) (8bf542ae)
* Adding feature for enterprise consumed license (2626) (a7bfdf2d)
* Search Workflows by Name (2711) (eadc241e)
* Add `Secret` and `Variable` classes (2623) (bcca758d)
* Add Autolink API link (2632) (aedfa0b9)
* Add `required_linear_history` attribute to `BranchProtection` (2643) (7a80fad9)
* Add retry issue to `GithubException`, don't log it (2611) (de80ff4b)
* Add `message` property to `GithubException` (2591) (f087cad3)
* Add support for repo and org level actions variables (2580) (91b3f40f)
* Add missing arguments to `Workflow.get_runs()` (2346) (766df993)
* Add `github.Rate.used` field (2531) (c4c2e527)

Bug Fixes

* Fix `Branch.bypass_pull_request_allowances` failing with "nil is not an object" (2535) (c5542a6a)
* Fix `required_conversation_resolution` assertion (2715) (54f22267)
* Fix assertion creating pull request review comment (2641) (2fa568b6)
* Safely coerce `responseHeaders` to `int` (2697) (adbfce92)
* Fix assertion for `subject_type` in creating pull request review comment (2642) (4933459e)
* Use timezone-aware reset datetime in `GithubRetry.py` (2610) (950a6949)
* Fix `Branch.bypass_pull_request_allowances` failing with "nil is not an object" (2535) (c5542a6a)

Maintenance

* Epic mass-merge `.pyi` type stubs back to `.py` sources (2636)
* Move to main default branch (2566) (e66c163a)
* Force Unix EOL (2573) (094538e1)
* Close replay test data file silently when test is failing already (2747) (6d871d56)
* CI: Make CI support merge queue (2644) (a91debf1)
* CI: Run CI on release branches (2708) (9a88b6b1)
* CI: remove conflict label workflow (2669) (95d8b83c)
* Fix pip install command in README.md (2731) (2cc1ba2c)
* Update `add_attribute.py` to latest conding style (2631) (e735972e)
* CI: Improve ruff DX (2667) (48d2009c)
* CI: Increase wait and retries of labels action (2670) (ff0f31c2)
* Replace `flake8` with `ruff` (2617) (42c3b47c)
* CI: update labels action name and version (2654) (c5c83eb5)
* CI: label PRs that have conflicts (2622) (1d637e4b)
* Unify requirements files location & source in setup.py (2598) (2edc0f8f)
* Enable mypy `disallow_untyped_defs` (2609) (294c0cc9)
* Enable mypy `check_untyped_defs` (2607) (8816889a)
* Set line length to 120 characters (2599) (13e178a3)
* CI: Build and check package before release (2593) (3c880e76)
* Use `typing_extensions` for `TypedDict` (2592) (5fcb0c7d)
* CI: Update action actions/setup-python (2382) (2e5cd31e)
* Add more methods and attributes to Repository.pyi (2581) (72840de4)
* CI: Make pytest color logs (2597) (73241102)
* precommit: move `flake8` as last (2595) (11bb6bd7)
* Test on Windows and macOS, don't fail fast (2590) (5c600894)
* Remove symlinks from test data (2588) (8d3b9057)

2.0.1preview

Bug Fixes

- Safely coerce responseHeaders to int (2697) (64705bfd)

2.0.0preview.1

Bug Fixes

* Add retry issue to GithubException, don't log it (2611) (3f0c1a6b)
* Use timezone-aware reset datetime in GithubRetry.py (2610) (0a7b7bac)

Page 1 of 8

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.