Skip to content

Add support for Sub-Issues#3258

Merged
EnricoMi merged 20 commits into
PyGithub:mainfrom
e7217:feat/sub-issue
Jul 30, 2025
Merged

Add support for Sub-Issues#3258
EnricoMi merged 20 commits into
PyGithub:mainfrom
e7217:feat/sub-issue

Conversation

@e7217

@e7217 e7217 commented Mar 5, 2025

Copy link
Copy Markdown
Contributor

I have added features to manage sub-issues.

These features are developed by referring to the GitHub API documentation, while making sure to follow the original code style and direction.

The changes included in this PR are as follows:

1. Sub-issue management features

  • Get sub-issues of an issue
    image
## get sub issues
sub_issues = repo.get_issue(1).get_sub_issues()
for i, v in enumerate(sub_issues):
    print(i, v.title)
0 test
1 test-12
  • Add a sub-issue to an issue
issue_a = repo.get_issue(1)
issue_b = repo.create_issue(title="issue_b", body="...")
issue_a.add_sub_issue(sub_issue_id=issue_b.id)
  • Remove a sub-issue from an issue
issue_a = repo.get_issue(1)
sub_issues = issue_a.get_sub_issues()
issue_a.remove_sub_issue(sub_issues[0].id)
  • Change the priority of sub-issues within an issue
issue_a = repo.get_issue(1)
sub_issues = issue_a.get_sub_issues()

d = { i:v.id for i, v in enumerate(sub_issues)}
# 0 2893485819
# 1 2897252593

issue_a.reprioritize_sub_issue(sub_issue_id=d[0], after_id=d[1])

for i, v in enumerate(issue_a.get_sub_issues()):
    print(i, v) 
# 0 2897252593
# 1 2893485819

2. Unit tests to verify sub-issue features

Thank you!

refer

@e7217

e7217 commented Mar 10, 2025

Copy link
Copy Markdown
Contributor Author

cc: @EnricoMi, @sfdye, @adamtheturtle, anyone?

Could you please check this PR?
Thank you!

@EnricoMi EnricoMi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks or the contribution! Minor comments.

Comment thread github/Issue.py Outdated
)
return SubIssue(self._requester, headers, data, completed=True)

def create_reaction(self, reaction_type):

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have changed the typing of this unrelated method.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I have updated it. thank you!

Comment thread github/Issue.py Outdated
# Logic to fetch parent issue information from the API
# Actual implementation may vary depending on GitHub API response
pass
return self.parent_issue

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method should not fall back to property parent_issue. The caller can do that. Calling this method explicitly expects an API call, even if parent_issue is known.

Plus, self._parent_issue might have to be updated with the response to this call.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you're right! But... I can't think of a good idea.
I'm not sure what the best approach is to get an issue with a sub-issue.
Do you have any suggestions?

I hope someone will update this part, or that I come up with a good idea soon.

Comment thread github/Issue.py
Comment thread requirements/test.txt Outdated
pytest-github-actions-annotate-failures <1.0.0
pytest-subtests >=0.11.0
responses
attrs==25.1.0

@EnricoMi EnricoMi Mar 17, 2025

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks like this is unrelated, please move into separate PR

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok, I have reverted this test.txt. Thank you!

Comment thread tests/SubIssue.py Outdated
Comment thread tests/ReplayData/SubIssue.setUp.txt Outdated
Comment thread github/Consts.py Outdated
DEFAULT_SECONDS_BETWEEN_REQUESTS = 0.25
DEFAULT_SECONDS_BETWEEN_WRITES = 1.0

mediaTypeProjectsPreview = "application/vnd.github.inertia-preview+json"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please move these up between line 80 and line 157. The naming is OK.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@EnricoMi EnricoMi changed the title ADD: Add Features for Sub-Issue Management and Update Dependencies Add support for Sub-Issues Mar 17, 2025
@github-actions

github-actions Bot commented Mar 17, 2025

Copy link
Copy Markdown

Test Results

     8 files  ±    0       8 suites  ±0   4m 56s ⏱️ +4s
 1 008 tests +    9   1 008 ✅ +    9  0 💤 ±0  0 ❌ ±0 
11 139 runs  +3 147  11 138 ✅ +3 147  1 💤 ±0  0 ❌ ±0 

Results for commit b97b76c. ± Comparison against base commit b4092b5.

♻️ This comment has been updated with latest results.

@e7217 e7217 requested a review from EnricoMi March 17, 2025 14:07
@KameniAlexNea

Copy link
Copy Markdown

Any progress on this task, please ?

This seems to be blocked by workflow approval

Comment thread github/Issue.py
input=post_parameters,
headers={"Accept": Consts.mediaType},
)
return SubIssue(self._requester, headers, data, completed=True)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For some unknown reason, I keep receiving "Not Found" on this code :

UnknownObjectException: 404 {"message": "Not Found", "documentation_url": "https://docs.github.com/rest/issues/sub-issues#add-sub-issue", "status": "404"}

I'm using the installation version 2.6.1, then I copied the content this method as :

def add_sub_issue(issue: Issue, sub_issue_id: int) -> Issue:
    """
    :calls: `POST /repos/{owner}/{repo}/issues/{number}/sub_issues <https://docs.github.com/en/rest/issues/sub-issues>`_
    :param sub_issue_id: int
    :rtype: :class:`github.Issue.SubIssue`
    """
    assert isinstance(issue.number, int), issue.number
    post_parameters: dict[str, Any] = {
        "sub_issue_id": sub_issue_id,
    }
    print(issue.url)
    headers, data = issue._requester.requestJsonAndCheck(
        "POST",
        f"{issue.url}/sub_issues",
        input=post_parameters,
        headers={"Accept": mediaType},
    )
    return SubIssue(issue._requester, headers, data, completed=True)

According to git-changes, there's no major changes on Issue class. Can you help please ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for your comment. I have just verified the issue based on your feedback and will fix it shortly. It may have been caused by the changes in the previous commit

@e7217 e7217 Mar 18, 2025

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm... I am receiving the same message despite sending the add request using cURL(https://docs.github.com/en/rest/issues/sub-issues?apiVersion=2022-11-28#remove-sub-issuehttps://docs.github.com/en/rest/issues/sub-issues#remove-sub-issue). I haven't been able to pinpoint the exact cause yet. Even when I tried reverting to previous commits, I am now receiving a 'Not Found' response, unlike during the last test. I will need to check further.

@e7217 e7217 Mar 18, 2025

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Haha, I have found why this happened. It's because you used the sub-issue.number to add or remove the sub-issue, instead of using the sub-issus.id. I also got stuck on that when I first developed the sub-issue feature, and I got confused by it again this time.😂😂

print("----------before remove a sub issue----------")
subs = issue.get_sub_issues()
for sub in subs:
    print( f"id : {sub.id}, number : {sub.number}, title : {sub.title}" )

print("----------remove a sub issue----------")
issue.remove_sub_issue(subs[-1].id)

print("----------after remove a sub issue----------")
subs = issue.get_sub_issues()
for sub in subs:
    print( f"id : {sub.id}, number : {sub.number}, title : {sub.title}" )

result

----------before remove a sub issue----------
id : 2891869980, number : 1, title : bug: mssing include member
id : 2928732717, number : 26, title : remove
----------remove a sub issue----------
----------after remove a sub issue----------
id : 2891869980, number : 1, title : bug: mssing include member

@KameniAlexNea KameniAlexNea Mar 18, 2025

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ohhhhh my bad, sorrrrrrryyyyy
Thanks for update, it works now...

Maybe it's time to update this document : PyGitHub Docs

It's still using .number and can create confusion

@e7217

e7217 commented Mar 18, 2025

Copy link
Copy Markdown
Contributor Author

@EnricoMi Could you check this PR again? Thank you!

@rutuparn-lm

Copy link
Copy Markdown

@e7217 Thank you!

@e7217

e7217 commented Apr 28, 2025

Copy link
Copy Markdown
Contributor Author

@EnricoMi Could you check this PR? Thank you!

@pohlt

pohlt commented Jul 15, 2025

Copy link
Copy Markdown

Could someone please check this PR? Thank you! I'm desperately waiting for this functionality.

Comment thread github/Issue.py Outdated
Comment thread github/Issue.py Outdated
Comment thread tests/SubIssue.py Outdated
Comment thread tests/SubIssue.py Outdated
Comment thread tests/SubIssue.py Outdated
Comment thread tests/SubIssue.py
Comment thread tests/SubIssue.py Outdated
@e7217 e7217 requested a review from EnricoMi July 16, 2025 14:07
@e7217

e7217 commented Jul 16, 2025

Copy link
Copy Markdown
Contributor Author

@EnricoMi Thanks. I have updated it. 😀

@pohlt

pohlt commented Jul 28, 2025

Copy link
Copy Markdown

Thanks, @e7217 for the PR and @EnricoMi for getting the PR into main!

@EnricoMi EnricoMi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@EnricoMi EnricoMi enabled auto-merge July 30, 2025 17:42
@EnricoMi EnricoMi added this pull request to the merge queue Jul 30, 2025
Merged via the queue into PyGithub:main with commit c7858c8 Jul 30, 2025
22 checks passed
@e7217 e7217 deleted the feat/sub-issue branch July 31, 2025 00:24
jmertic pushed a commit to jmertic/contrib_check that referenced this pull request Aug 4, 2025
Bumps the all group with 3 updates:
[coverage](https://github.com/nedbat/coveragepy),
[gitpython](https://github.com/gitpython-developers/GitPython) and
[pygithub](https://github.com/pygithub/pygithub).

Updates `coverage` from 7.6.1 to 7.10.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst">coverage's
changelog</a>.</em></p>
<blockquote>
<h2>Version 7.10.2 — 2025-08-03</h2>
<ul>
<li>Fix: some code with NOP bytecodes could report missing branches that
are
actually executed. This is now fixed, closing <code>issue 1999</code>_.
Python 3.9
still shows the problem.</li>
</ul>
<p>.. _issue 1999: <a
href="https://redirect.github.com/nedbat/coveragepy/issues/1999">nedbat/coveragepy#1999</a></p>
<p>.. _changes_7-10-1:</p>
<h2>Version 7.10.1 — 2025-07-27</h2>
<ul>
<li>
<p>Fix: the exclusion for <code>if TYPE_CHECKING:</code> was wrong: it
marked the branch
as partial, but it should have been a line exclusion so the entire
clause
would be excluded. Improves <code>issue 831</code>_.</p>
</li>
<li>
<p>Fix: changed where .pth files are written for <code>patch =
subprocess</code>, closing
<code>issue 2006</code>_.</p>
</li>
</ul>
<p>.. _issue 2006: <a
href="https://redirect.github.com/nedbat/coveragepy/issues/2006">nedbat/coveragepy#2006</a></p>
<p>.. _changes_7-10-0:</p>
<h2>Version 7.10.0 — 2025-07-24</h2>
<ul>
<li>
<p>A new configuration option:
&quot;:ref:<code>config_run_patch</code>&quot; specifies named patches
to work around some limitations in coverage measurement. These patches
are
available:</p>
<ul>
<li>
<p><code>patch = _exit</code> lets coverage save its data even when
:func:<code>os._exit() &lt;python:os._exit&gt;</code> is used to
abruptly end the process. This closes
long-standing <code>issue 310</code>_ as well as its duplicates:
<code>issue 312</code><em>, <code>issue 1673</code></em>, <code>issue
1845</code><em>, and <code>issue 1941</code></em>.</p>
</li>
<li>
<p><code>patch = subprocess</code> measures coverage in Python
subprocesses created
with :mod:<code>subprocess</code>, :func:<code>os.system</code>, or one
of the :func:<code>execv &lt;python:os.execl&gt;</code> or
:func:<code>spawnv &lt;python:os.spawnl&gt;</code> family of
functions. Closes old <code>issue 367</code>_ and duplicate <code>issue
378</code>_.</p>
</li>
<li>
<p><code>patch = execv</code> adjusts the :func:<code>execv
&lt;python:os.execl&gt;</code> family of
functions to save coverage data before ending the current program and
starting the next. Not available on Windows. Closes <code>issue
43</code>_ after 15
years!</p>
</li>
</ul>
</li>
<li>
<p>The HTML report now dimly colors subsequent lines in multi-line
statements.</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/nedbat/coveragepy/commit/a8678528d235acb494ba7a2cace5db445a75a85f"><code>a867852</code></a>
docs: sample HTML for 7.10.2</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/e7bfabe1c4d70a3c5d7a5326f43addaa7d3782c3"><code>e7bfabe</code></a>
docs: prep for 7.10.2</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/5dbd736002e1cfe3c69d10435998d0621d629ffb"><code>5dbd736</code></a>
test: this test often borks metacov, retry it</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/b7430fa56d8960646a6fa0269f15df1400b7dd22"><code>b7430fa</code></a>
debug: more convenient run_trace.py</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/e2039d0df6992e14f28079849b206d65a21d43e6"><code>e2039d0</code></a>
refactor: less redundancy in branch_trails</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/c177731d969fec03b0e125aa1e91d9bb2b7f950b"><code>c177731</code></a>
fix: see through nop bytecodes to get the right arcs. <a
href="https://redirect.github.com/nedbat/coveragepy/issues/1999">#1999</a></li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/7a83ab0b9bba903aab56f01f209620ecd190d160"><code>7a83ab0</code></a>
test: don't try to make pth files when invoked from pth <a
href="https://redirect.github.com/nedbat/coveragepy/issues/2011">#2011</a></li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/6d8b091ee7900dc0050f77fa792de0651e0cc6df"><code>6d8b091</code></a>
refactor: remove a commented-out line</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/fc507ad92ea7d779e7213d4103f15152dbe4e4d8"><code>fc507ad</code></a>
test: add a case for an extension-less Python file parse error</li>
<li><a
href="https://github.com/nedbat/coveragepy/commit/05a6e8d0d5d5ea616519be432d4be9c4301a6a76"><code>05a6e8d</code></a>
test: no need for skip, we already skip windows</li>
<li>Additional commits viewable in <a
href="https://github.com/nedbat/coveragepy/compare/7.6.1...7.10.2">compare
view</a></li>
</ul>
</details>
<br />

Updates `gitpython` from 3.1.44 to 3.1.45
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/gitpython-developers/GitPython/releases">gitpython's
releases</a>.</em></p>
<blockquote>
<h2>3.1.45</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix various version-related CI breakages by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1987">gitpython-developers/GitPython#1987</a></li>
<li>Do some CI cleanup to make reports clearer and future changes easier
by <a href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a>
in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1989">gitpython-developers/GitPython#1989</a></li>
<li>Affirm that gitdb and smmap advisories can also be created by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1991">gitpython-developers/GitPython#1991</a></li>
<li>Fix links to gitdb and smmap <code>SECURITY.md</code> files by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1992">gitpython-developers/GitPython#1992</a></li>
<li>Test Python 3.13 regularly on Ubuntu and macOS on CI by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1990">gitpython-developers/GitPython#1990</a></li>
<li>Repo.rev_parse: Handle <!-- raw HTML omitted -->^{commit} correctly
by <a
href="https://github.com/flichtenheld"><code>@​flichtenheld</code></a>
in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1996">gitpython-developers/GitPython#1996</a></li>
<li>Fuzzing: Fix Broken Fuzz Test for Git Submodule Handling by <a
href="https://github.com/DaveLak"><code>@​DaveLak</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1997">gitpython-developers/GitPython#1997</a></li>
<li>Work around Cygwin CI failure <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2004">#2004</a>,
except for <code>test_installation</code> by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2007">gitpython-developers/GitPython#2007</a></li>
<li>Mark <code>test_installation</code> xfail on Cygwin CI by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2009">gitpython-developers/GitPython#2009</a></li>
<li><code>IndexFile._to_relative_path</code> - fix case where absolute
path gets stripped of trailing slash by <a
href="https://github.com/kamilkozik7"><code>@​kamilkozik7</code></a> in
<a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2012">gitpython-developers/GitPython#2012</a></li>
<li>Use WSL1 on CI by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2010">gitpython-developers/GitPython#2010</a></li>
<li>Test free-threaded Python (but only on Linux) by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2011">gitpython-developers/GitPython#2011</a></li>
<li>Use property decorator to support typing by <a
href="https://github.com/Andrej730"><code>@​Andrej730</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2015">gitpython-developers/GitPython#2015</a></li>
<li>Fix some incorrect sphinx markups in the docstrings by <a
href="https://github.com/koyuki7w"><code>@​koyuki7w</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2018">gitpython-developers/GitPython#2018</a></li>
<li>replace quansight-labs/setup-python with actions/setup-python by <a
href="https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2019">gitpython-developers/GitPython#2019</a></li>
<li>remove type assertions from util.py by <a
href="https://github.com/gcmarx"><code>@​gcmarx</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2028">gitpython-developers/GitPython#2028</a></li>
<li>correctly handle <code>uname-cmd</code> that doesn't point to an
executable file by <a
href="https://github.com/gcmarx"><code>@​gcmarx</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2026">gitpython-developers/GitPython#2026</a></li>
<li>Use newer ruff style by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2031">gitpython-developers/GitPython#2031</a></li>
<li>Have CodeQL scan GitHub Actions workflows as well as Python code by
<a href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in
<a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2032">gitpython-developers/GitPython#2032</a></li>
<li>Specify explicit <code>contents: read</code> workflow permissions by
<a href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in
<a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2033">gitpython-developers/GitPython#2033</a></li>
<li>Fix GitConfigParser not removing quotes from values by <a
href="https://github.com/betaboon"><code>@​betaboon</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2035">gitpython-developers/GitPython#2035</a></li>
<li>Preserve quoted leading and trailing single-line config var
whitespace by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2036">gitpython-developers/GitPython#2036</a></li>
<li>Refactor Git.{AutoInterrupt,CatFileContentStream} nesting by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2037">gitpython-developers/GitPython#2037</a></li>
<li>Fix Git.{AutoInterrupt,CatFileContentStream} static typing by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2039">gitpython-developers/GitPython#2039</a></li>
<li>Fix CI <code>mypy</code> command on free-threaded Python by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2040">gitpython-developers/GitPython#2040</a></li>
<li>Split Cygwin CI into non-<code>performance</code> and
<code>performance</code> test jobs by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2042">gitpython-developers/GitPython#2042</a></li>
<li>Express conditional <code>setuptools</code> requirement statically
by <a href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a>
in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2043">gitpython-developers/GitPython#2043</a></li>
<li>Fix ambiguous <code>_safer_popen_windows</code> comment by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2044">gitpython-developers/GitPython#2044</a></li>
<li>Clarify <code>USE_SHELL</code> warning helper signature by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2045">gitpython-developers/GitPython#2045</a></li>
<li>Test <code>ConfigParser</code> with whitespace outside the value by
<a href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in
<a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2046">gitpython-developers/GitPython#2046</a></li>
<li>Remove explicit empty <code>&quot;&quot;</code> handling in
ConfigParser by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2047">gitpython-developers/GitPython#2047</a></li>
<li>Various style improvements by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2049">gitpython-developers/GitPython#2049</a></li>
<li>Don't remove quotes if <code>\</code> or <code>&quot;</code> are
present inside by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2048">gitpython-developers/GitPython#2048</a></li>
<li>fix updating submodules with relative urls by <a
href="https://github.com/david0"><code>@​david0</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2051">gitpython-developers/GitPython#2051</a></li>
<li>Run <code>cat_file.py</code> fixture without site customizations by
<a href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in
<a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2052">gitpython-developers/GitPython#2052</a></li>
<li>Fix Cygwin installation on CI for <code>pip</code> by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2053">gitpython-developers/GitPython#2053</a></li>
<li>Fail <code>test_installation</code> on warnings, and remove
deprecated license classifier by <a
href="https://github.com/EliahKagan"><code>@​EliahKagan</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2054">gitpython-developers/GitPython#2054</a></li>
<li>Add clearer error version for unsupported index error by <a
href="https://github.com/tombedor"><code>@​tombedor</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2055">gitpython-developers/GitPython#2055</a></li>
<li>Fix name collision by <a
href="https://github.com/NMertsch"><code>@​NMertsch</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2060">gitpython-developers/GitPython#2060</a></li>
<li>Allow relative path url in submodules for submodule_update by <a
href="https://github.com/t-webber"><code>@​t-webber</code></a> in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2062">gitpython-developers/GitPython#2062</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/flichtenheld"><code>@​flichtenheld</code></a>
made their first contribution in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/1996">gitpython-developers/GitPython#1996</a></li>
<li><a
href="https://github.com/kamilkozik7"><code>@​kamilkozik7</code></a>
made their first contribution in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2012">gitpython-developers/GitPython#2012</a></li>
<li><a href="https://github.com/koyuki7w"><code>@​koyuki7w</code></a>
made their first contribution in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2018">gitpython-developers/GitPython#2018</a></li>
<li><a href="https://github.com/ngoldbaum"><code>@​ngoldbaum</code></a>
made their first contribution in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2019">gitpython-developers/GitPython#2019</a></li>
<li><a href="https://github.com/gcmarx"><code>@​gcmarx</code></a> made
their first contribution in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2028">gitpython-developers/GitPython#2028</a></li>
<li><a href="https://github.com/betaboon"><code>@​betaboon</code></a>
made their first contribution in <a
href="https://redirect.github.com/gitpython-developers/GitPython/pull/2035">gitpython-developers/GitPython#2035</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/6ba2c0a2f9ee7feffd7e079621c4845820180c9a"><code>6ba2c0a</code></a>
Prepare a new release</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/bbb3d00ac431dc7966f9715fb813792d234eca81"><code>bbb3d00</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2062">#2062</a>
from t-webber/relative_path_submodules</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/1ee1e781929074afd66bff1eae007bbee41d117e"><code>1ee1e78</code></a>
Add test case for cloning submodules with relative path</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/ec2e2c8b894512e7a2364774d77cdd9db73f0566"><code>ec2e2c8</code></a>
Allow relative path url in submodules for submodule_update</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/4d529b71905edae12e4699170f7d9e0a665801b5"><code>4d529b7</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2060">#2060</a>
from NMertsch/2023-fix-gitconfigparser-autodoc</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/80fd2c16211738156e65258381a17cdc429ddd08"><code>80fd2c1</code></a>
Don't treat sphinx warnings as errors</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/a4aadb0c04bd13af824c14dcc39f88345aa5c440"><code>a4aadb0</code></a>
Fix name collision</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/4c7778a93134364cfff7b1597f9eda00a88323af"><code>4c7778a</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2057">#2057</a>
from gitpython-developers/dependabot/github_actions/...</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/5033c3ffd8917d835658c22e84bd86103a2ae52d"><code>5033c3f</code></a>
Merge pull request <a
href="https://redirect.github.com/gitpython-developers/GitPython/issues/2056">#2056</a>
from gitpython-developers/dependabot/github_actions/...</li>
<li><a
href="https://github.com/gitpython-developers/GitPython/commit/496392b9bf781904421cbd171c0c5395a6fe330c"><code>496392b</code></a>
Bump cygwin/cygwin-install-action from 5 to 6</li>
<li>Additional commits viewable in <a
href="https://github.com/gitpython-developers/GitPython/compare/3.1.44...3.1.45">compare
view</a></li>
</ul>
</details>
<br />

Updates `pygithub` from 2.6.1 to 2.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pygithub/pygithub/releases">pygithub's
releases</a>.</em></p>
<blockquote>
<h2>v2.7.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Method <code>Github.get_rate_limit()</code> now returns
<code>RateLimitOverview</code> rather than <code>RateLimit</code> (<a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3205">PyGithub/PyGithub#3205</a>).</li>
</ul>
<p>Code like</p>
<pre lang="python"><code>gh.get_rate_limit().core.remaining
</code></pre>
<p>should be replaced with</p>
<pre lang="python"><code>gh.get_rate_limit().resources.core.remaining
</code></pre>
<ul>
<li>Method <code>GitTag.verification</code> now returns
<code>GitCommitVerification</code> rather than <code>dict[str,
Any]</code> (<a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3226">PyGithub/PyGithub#3226</a>).</li>
</ul>
<p>Code like</p>
<pre lang="python"><code>tag.verification[&quot;reason&quot;]
tag.verification.get(&quot;reason&quot;)
</code></pre>
<p>should be replaced with</p>
<pre lang="python"><code>tag.verification.reason
</code></pre>
<h3>New Features</h3>
<ul>
<li>Add getting list of self-hosted runners of organization by <a
href="https://github.com/climbfuji"><code>@​climbfuji</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3190">PyGithub/PyGithub#3190</a></li>
<li>Apply OpenAPI spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3317">PyGithub/PyGithub#3317</a></li>
<li>Add support for Sub-Issues by <a
href="https://github.com/e7217"><code>@​e7217</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3258">PyGithub/PyGithub#3258</a></li>
</ul>
<h3>Improvement</h3>
<ul>
<li>Refactor search results into separate classes by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3204">PyGithub/PyGithub#3204</a></li>
<li>Add <code>OrganizationInvitation</code> by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3207">PyGithub/PyGithub#3207</a></li>
<li>Add and apply missing schemas by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3209">PyGithub/PyGithub#3209</a></li>
<li>Sync <code>RepositoryAdvisory</code> tests with OpenAPI spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3215">PyGithub/PyGithub#3215</a></li>
<li>Sync <code>ProjectColumn</code> and <code>ProjectCard</code> tests
with OpenAPI spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3216">PyGithub/PyGithub#3216</a></li>
<li>Sync <code>CopilotSeat</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3232">PyGithub/PyGithub#3232</a></li>
<li>Sync <code>HookDeliverySummary</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3233">PyGithub/PyGithub#3233</a></li>
<li>Sync <code>RequiredPullRequestReviews</code> class with API spec by
<a href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3234">PyGithub/PyGithub#3234</a></li>
<li>Sync <code>RequiredStatusChecks</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3236">PyGithub/PyGithub#3236</a></li>
<li>Sync <code>Team</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3237">PyGithub/PyGithub#3237</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PyGithub/PyGithub/blob/main/doc/changes.rst">pygithub's
changelog</a>.</em></p>
<blockquote>
<h2>Version 2.7.0 (July 31, 2025)</h2>
<p>Breaking Changes
^^^^^^^^^^^^^^^^</p>
<ul>
<li>
<p>Method <code>Github.get_rate_limit()</code> now returns
<code>RateLimitOverview</code> rather than <code>RateLimit</code>
(<code>[#3205](PyGithub/PyGithub#3205)
&lt;https://github.com/PyGithub/PyGithub/pull/3205&gt;</code><em>)
(<code>56ee057a
&lt;https://github.com/PyGithub/PyGithub/commit/56ee057a&gt;</code></em>).</p>
<p>Code like</p>
<p>.. code-block:: python</p>
<p>gh.get_rate_limit().core.remaining</p>
<p>should be replaced with</p>
<p>.. code-block:: python</p>
<p>gh.get_rate_limit().resources.core.remaining</p>
</li>
<li>
<p>Method <code>GitTag.verification</code> now returns
<code>GitCommitVerification</code> rather than <code>dict[str,
Any]</code>
(<code>[#3226](PyGithub/PyGithub#3226)
&lt;https://github.com/PyGithub/PyGithub/pull/3226&gt;</code><em>)
(<code>850932cc
&lt;https://github.com/PyGithub/PyGithub/commit/850932cc&gt;</code></em>).</p>
<p>Code like</p>
<p>.. code-block:: python</p>
<p>tag.verification[&quot;reason&quot;]
tag.verification.get(&quot;reason&quot;)</p>
<p>should be replaced with</p>
<p>.. code-block:: python</p>
<p>tag.verification.reason</p>
</li>
</ul>
<p>Deprecations
^^^^^^^^^^^^</p>
<ul>
<li>Methods <code>dismissal_users</code> and
<code>dismissal_teams</code> of <code>RequiredPullRequestReviews</code>
are deprecated,
use <code>dismissal_restrictions.users</code> and
<code>dismissal_restrictions.teams</code> instead.</li>
</ul>
<p>New Features
^^^^^^^^^^^^</p>
<ul>
<li>Add getting list of self-hosted runners of organization
(<code>[#3190](PyGithub/PyGithub#3190)
&lt;https://github.com/PyGithub/PyGithub/pull/3190&gt;</code><em>)
(<code>b4092b5d
&lt;https://github.com/PyGithub/PyGithub/commit/b4092b5d&gt;</code></em>)</li>
<li>Apply OpenAPI spec
(<code>[#3317](PyGithub/PyGithub#3317)
&lt;https://github.com/PyGithub/PyGithub/pull/3317&gt;</code><em>)
(<code>858b9e5b
&lt;https://github.com/PyGithub/PyGithub/commit/858b9e5b&gt;</code></em>)</li>
<li>Add support for Sub-Issues
(<code>[#3258](PyGithub/PyGithub#3258)
&lt;https://github.com/PyGithub/PyGithub/pull/3258&gt;</code><em>)
(<code>c7858c85
&lt;https://github.com/PyGithub/PyGithub/commit/c7858c85&gt;</code></em>)</li>
</ul>
<p>Improvement
^^^^^^^^^^^</p>
<ul>
<li>Refactor search results into separate classes
(<code>[#3204](PyGithub/PyGithub#3204)
&lt;https://github.com/PyGithub/PyGithub/pull/3204&gt;</code><em>)
(<code>938f80b1
&lt;https://github.com/PyGithub/PyGithub/commit/938f80b1&gt;</code></em>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/bccc5aa1b02dc2135196c993e795bcb7795d9c72"><code>bccc5aa</code></a>
Release 2.7.0 (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3323">#3323</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/cb4281510da5a9c924b916ec6b50edc52b1fae34"><code>cb42815</code></a>
Add <code>delete_self_hosted_runner</code> to <code>Organization</code>
(<a
href="https://redirect.github.com/pygithub/pygithub/issues/3306">#3306</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/01196d67452e726a1ef6a26312e50e428b6a705d"><code>01196d6</code></a>
Normalize App ID to String &amp; Enhance JWT Issuer Verification (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3272">#3272</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/c7858c85a1f1912e668f60f0f8de6ab2e75220bc"><code>c7858c8</code></a>
Add support for Sub-Issues (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3258">#3258</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/131949b3c12a89534874526bb812acdcd75c9db7"><code>131949b</code></a>
Make <code>TimingData.run_duration_ms</code> optional (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3268">#3268</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/0378cceedd9cd6f16514d7e1117d1b15d9e32824"><code>0378cce</code></a>
Fix side-effect when removing Authorization key from headers (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3313">#3313</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/da73fc8ac3d73341c971f881c773275ad19ba2ee"><code>da73fc8</code></a>
Fix url encoding of strings with slashes in URLs (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3263">#3263</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/f51a3f487e2e6493a29101a29908d8805fddc674"><code>f51a3f4</code></a>
Adds <code>multi_select</code> and <code>true_false</code> options to
<code>CustomProperty.value_type</code> (...</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/e7110bf41038ba0433bc04a048c73a8ecd26a32f"><code>e7110bf</code></a>
Relax 404 condition in <code>Requester</code> exception handling (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3299">#3299</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/95f015c8b46e62a853051ae98c1bff843765aa1f"><code>95f015c</code></a>
Support built-in <code>reversed()</code> on <code>PaginatedList</code>
(<a
href="https://redirect.github.com/pygithub/pygithub/issues/3260">#3260</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pygithub/pygithub/compare/v2.6.1...v2.7.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
jmertic pushed a commit to jmertic/lfx-landscape-tools that referenced this pull request Aug 11, 2025
Bumps the all group with 1 update:
[pygithub](https://github.com/pygithub/pygithub).

Updates `pygithub` from 2.6.1 to 2.7.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pygithub/pygithub/releases">pygithub's
releases</a>.</em></p>
<blockquote>
<h2>v2.7.0</h2>
<h2>What's Changed</h2>
<h3>Breaking Changes</h3>
<ul>
<li>Method <code>Github.get_rate_limit()</code> now returns
<code>RateLimitOverview</code> rather than <code>RateLimit</code> (<a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3205">PyGithub/PyGithub#3205</a>).</li>
</ul>
<p>Code like</p>
<pre lang="python"><code>gh.get_rate_limit().core.remaining
</code></pre>
<p>should be replaced with</p>
<pre lang="python"><code>gh.get_rate_limit().resources.core.remaining
</code></pre>
<ul>
<li>Method <code>GitTag.verification</code> now returns
<code>GitCommitVerification</code> rather than <code>dict[str,
Any]</code> (<a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3226">PyGithub/PyGithub#3226</a>).</li>
</ul>
<p>Code like</p>
<pre lang="python"><code>tag.verification[&quot;reason&quot;]
tag.verification.get(&quot;reason&quot;)
</code></pre>
<p>should be replaced with</p>
<pre lang="python"><code>tag.verification.reason
</code></pre>
<h3>New Features</h3>
<ul>
<li>Add getting list of self-hosted runners of organization by <a
href="https://github.com/climbfuji"><code>@​climbfuji</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3190">PyGithub/PyGithub#3190</a></li>
<li>Apply OpenAPI spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3317">PyGithub/PyGithub#3317</a></li>
<li>Add support for Sub-Issues by <a
href="https://github.com/e7217"><code>@​e7217</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3258">PyGithub/PyGithub#3258</a></li>
</ul>
<h3>Improvement</h3>
<ul>
<li>Refactor search results into separate classes by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3204">PyGithub/PyGithub#3204</a></li>
<li>Add <code>OrganizationInvitation</code> by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3207">PyGithub/PyGithub#3207</a></li>
<li>Add and apply missing schemas by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3209">PyGithub/PyGithub#3209</a></li>
<li>Sync <code>RepositoryAdvisory</code> tests with OpenAPI spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3215">PyGithub/PyGithub#3215</a></li>
<li>Sync <code>ProjectColumn</code> and <code>ProjectCard</code> tests
with OpenAPI spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3216">PyGithub/PyGithub#3216</a></li>
<li>Sync <code>CopilotSeat</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3232">PyGithub/PyGithub#3232</a></li>
<li>Sync <code>HookDeliverySummary</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3233">PyGithub/PyGithub#3233</a></li>
<li>Sync <code>RequiredPullRequestReviews</code> class with API spec by
<a href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3234">PyGithub/PyGithub#3234</a></li>
<li>Sync <code>RequiredStatusChecks</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3236">PyGithub/PyGithub#3236</a></li>
<li>Sync <code>Team</code> class with API spec by <a
href="https://github.com/EnricoMi"><code>@​EnricoMi</code></a> in <a
href="https://redirect.github.com/PyGithub/PyGithub/pull/3237">PyGithub/PyGithub#3237</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/PyGithub/PyGithub/blob/main/doc/changes.rst">pygithub's
changelog</a>.</em></p>
<blockquote>
<h2>Version 2.7.0 (July 31, 2025)</h2>
<p>Breaking Changes
^^^^^^^^^^^^^^^^</p>
<ul>
<li>
<p>Method <code>Github.get_rate_limit()</code> now returns
<code>RateLimitOverview</code> rather than <code>RateLimit</code>
(<code>[#3205](PyGithub/PyGithub#3205)
&lt;https://github.com/PyGithub/PyGithub/pull/3205&gt;</code><em>)
(<code>56ee057a
&lt;https://github.com/PyGithub/PyGithub/commit/56ee057a&gt;</code></em>).</p>
<p>Code like</p>
<p>.. code-block:: python</p>
<p>gh.get_rate_limit().core.remaining</p>
<p>should be replaced with</p>
<p>.. code-block:: python</p>
<p>gh.get_rate_limit().resources.core.remaining</p>
</li>
<li>
<p>Method <code>GitTag.verification</code> now returns
<code>GitCommitVerification</code> rather than <code>dict[str,
Any]</code>
(<code>[#3226](PyGithub/PyGithub#3226)
&lt;https://github.com/PyGithub/PyGithub/pull/3226&gt;</code><em>)
(<code>850932cc
&lt;https://github.com/PyGithub/PyGithub/commit/850932cc&gt;</code></em>).</p>
<p>Code like</p>
<p>.. code-block:: python</p>
<p>tag.verification[&quot;reason&quot;]
tag.verification.get(&quot;reason&quot;)</p>
<p>should be replaced with</p>
<p>.. code-block:: python</p>
<p>tag.verification.reason</p>
</li>
</ul>
<p>Deprecations
^^^^^^^^^^^^</p>
<ul>
<li>Methods <code>dismissal_users</code> and
<code>dismissal_teams</code> of <code>RequiredPullRequestReviews</code>
are deprecated,
use <code>dismissal_restrictions.users</code> and
<code>dismissal_restrictions.teams</code> instead.</li>
</ul>
<p>New Features
^^^^^^^^^^^^</p>
<ul>
<li>Add getting list of self-hosted runners of organization
(<code>[#3190](PyGithub/PyGithub#3190)
&lt;https://github.com/PyGithub/PyGithub/pull/3190&gt;</code><em>)
(<code>b4092b5d
&lt;https://github.com/PyGithub/PyGithub/commit/b4092b5d&gt;</code></em>)</li>
<li>Apply OpenAPI spec
(<code>[#3317](PyGithub/PyGithub#3317)
&lt;https://github.com/PyGithub/PyGithub/pull/3317&gt;</code><em>)
(<code>858b9e5b
&lt;https://github.com/PyGithub/PyGithub/commit/858b9e5b&gt;</code></em>)</li>
<li>Add support for Sub-Issues
(<code>[#3258](PyGithub/PyGithub#3258)
&lt;https://github.com/PyGithub/PyGithub/pull/3258&gt;</code><em>)
(<code>c7858c85
&lt;https://github.com/PyGithub/PyGithub/commit/c7858c85&gt;</code></em>)</li>
</ul>
<p>Improvement
^^^^^^^^^^^</p>
<ul>
<li>Refactor search results into separate classes
(<code>[#3204](PyGithub/PyGithub#3204)
&lt;https://github.com/PyGithub/PyGithub/pull/3204&gt;</code><em>)
(<code>938f80b1
&lt;https://github.com/PyGithub/PyGithub/commit/938f80b1&gt;</code></em>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/bccc5aa1b02dc2135196c993e795bcb7795d9c72"><code>bccc5aa</code></a>
Release 2.7.0 (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3323">#3323</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/cb4281510da5a9c924b916ec6b50edc52b1fae34"><code>cb42815</code></a>
Add <code>delete_self_hosted_runner</code> to <code>Organization</code>
(<a
href="https://redirect.github.com/pygithub/pygithub/issues/3306">#3306</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/01196d67452e726a1ef6a26312e50e428b6a705d"><code>01196d6</code></a>
Normalize App ID to String &amp; Enhance JWT Issuer Verification (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3272">#3272</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/c7858c85a1f1912e668f60f0f8de6ab2e75220bc"><code>c7858c8</code></a>
Add support for Sub-Issues (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3258">#3258</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/131949b3c12a89534874526bb812acdcd75c9db7"><code>131949b</code></a>
Make <code>TimingData.run_duration_ms</code> optional (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3268">#3268</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/0378cceedd9cd6f16514d7e1117d1b15d9e32824"><code>0378cce</code></a>
Fix side-effect when removing Authorization key from headers (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3313">#3313</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/da73fc8ac3d73341c971f881c773275ad19ba2ee"><code>da73fc8</code></a>
Fix url encoding of strings with slashes in URLs (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3263">#3263</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/f51a3f487e2e6493a29101a29908d8805fddc674"><code>f51a3f4</code></a>
Adds <code>multi_select</code> and <code>true_false</code> options to
<code>CustomProperty.value_type</code> (...</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/e7110bf41038ba0433bc04a048c73a8ecd26a32f"><code>e7110bf</code></a>
Relax 404 condition in <code>Requester</code> exception handling (<a
href="https://redirect.github.com/pygithub/pygithub/issues/3299">#3299</a>)</li>
<li><a
href="https://github.com/PyGithub/PyGithub/commit/95f015c8b46e62a853051ae98c1bff843765aa1f"><code>95f015c</code></a>
Support built-in <code>reversed()</code> on <code>PaginatedList</code>
(<a
href="https://redirect.github.com/pygithub/pygithub/issues/3260">#3260</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pygithub/pygithub/compare/v2.6.1...v2.7.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pygithub&package-manager=pip&previous-version=2.6.1&new-version=2.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants