# What changed in pygithub

> 38 changes in pygithub 2 from its official release notes, upgrade guides and advisories: 3 breaking, 6 deprecations, 1 security, 15 new APIs and options. Each one cited. Sources checked 2026-10-21. HTML: https://unstale.sh/pypi/pygithub/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## pygithub 2

### Breaking changes

- PyGithub adds support for Python 3.15. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Support for Python 3.9 has been removed because it reached end-of-life. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Support for Python 3.8 has been removed because the Python version reached end-of-life. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)

### Security

- Fixes a duplicated URL; editing now seals the value and uses PUT. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)

### Deprecations

- Issue.assignee is deprecated; use Issue.assignees instead. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- The assignee parameter is deprecated; use assignees instead. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Organization.edit_hook is deprecated; use Organization.get_hook(id).edit(...) instead. A lazy Github instance can avoid fetching the Hook object first. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Reaction.delete is deprecated; use the corresponding delete_reaction method on IssueComment, PullRequestComment, CommitComment, or Issue instead. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Team.add_to_members is deprecated; use Team.add_membership instead. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Team.remove_from_members is deprecated; use Team.remove_membership instead. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)

### New APIs and options

- Allows creating a custom property with the values_editable_by parameter. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- The GitHub API version can now be specified. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Adds max_rate_limit_wait to cap rate limit backoff. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Issue dependency endpoints are now available. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Adds the incomplete_results property to PaginatedList. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Pull request creation now supports head_repo. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Adds Repository.get_workflow_job. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Adds the return_run_details parameter. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Adds WorkflowRun.get_attempt. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Code Scan Alerts support was improved. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- get_issues now supports the type parameter. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Github instances can be created with lazy=True; object retrieval avoids API requests until methods or properties need the data. Lazy mode is off by default. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- An individual per_page value can be specified when retrieving objects with paginated properties or fetching those properties. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Support for Secret Scanning Alerts was added. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- A throw option was added to Workflow.create_dispatch to raise exceptions. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)

### Fixes and other changes

- Fixes a doubled slash in request paths when base_url has a trailing slash. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Boolean query parameters are now encoded as lowercase. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Fixes decoding of bytes data when converting GithubException to a string. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Fixes lazy retrieval of the latest tag name. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Fixes handling of the state and code_verifier parameters. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Fixes a duplicated URL in OrganizationVariable.edit. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Fixes OrganizationVariable.value by using the base class properly. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Parses only the query string when determining totalCount. (2.10.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.10.0)
- Fixed getting a release by tag in lazy mode. (2.9.1) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.1)
- Enterprise base URLs prefixed with api. are now allowed. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- A default type is now used when a known type is unsupported. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Fixed totalCount returning 0 when GitHub deprecation notices are present. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
- Iterating paginated properties now uses the configured per_page setting. (2.9.0) — [release notes](https://github.com/PyGithub/PyGithub/releases/tag/v2.9.0)
