Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Join Pathlike Object to Tree#2094

Merged
Byron merged 3 commits into
gitpython-developers:maingitpython-developers/GitPython:mainfrom
George-Ogden:join-pathlikeCopy head branch name to clipboard
Dec 15, 2025
Merged

Join Pathlike Object to Tree#2094
Byron merged 3 commits into
gitpython-developers:maingitpython-developers/GitPython:mainfrom
George-Ogden:join-pathlikeCopy head branch name to clipboard

Conversation

@George-Ogden

Copy link
Copy Markdown
Contributor

This extends the Tree.join and Tree.__truediv__ API to allow a pathlike object.
For example:

repo = Repo(my_local_repo)
interesting_filepath: Path = Path(folder) / file
blob = repo.tree() / interesting_filepath

This did not work before without explicitly converting the Path to a string, but works now.

@Byron

Byron commented Dec 14, 2025

Copy link
Copy Markdown
Member

Thanks a lot, this looks very good to me!

It's a bit sad that we have some test duplication to validate various types, but I guess it's better than not having them.
I will merge unless Copilot comes up with something more than nits that I can just apply.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR extends the Tree.join and Tree.__truediv__ API to support pathlike objects (such as pathlib.Path), enabling more Pythonic path handling when traversing Git tree objects. Previously, users had to explicitly convert Path objects to strings; now they can use them directly with the / operator.

  • Type annotations updated from str to PathLike for both methods
  • Implementation uses os.fspath() to convert PathLike objects to strings
  • Comprehensive test coverage added for PathLike support with various scenarios

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.

File Description
git/objects/tree.py Updated join() and __truediv__() methods to accept PathLike parameters; added os.fspath() conversion; imported os module
test/test_tree.py Added comprehensive test cases for string and PathLike path lookups covering simple, nested, folder, and invalid path scenarios; imported pytest, Repo, and PathLikeMock

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/test_tree.py Outdated
Comment thread test/test_tree.py Outdated
Comment thread test/test_tree.py

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Rename blob to tree

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@Byron Byron merged commit b8bb60e into gitpython-developers:main Dec 15, 2025
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

Morty Proxy This is a proxified and sanitized view of the page, visit original site.