-
-
Notifications
You must be signed in to change notification settings - Fork 18.6k
Change internal types in individual files to be private. Use TypeAlias
in code where types are declared.
#61504
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
Dr-Irv
wants to merge
2
commits into
pandas-dev:main
Choose a base branch
from
Dr-Irv:use-TypeAlias
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this idea of making these lead with a starting
_
is to they are marked as "private"? Should they instead just be moved to_typing.py
with other defined "private" annotations?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The difference with the annotations in
_typing.py
is that many (but not all) are used in more than one pandas module. For the ones that are marked private in this PR, they are only used locally within that module.I'm also going to be doing an MR to make more of the ones in
_typing.py
public.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We were planning on moving
core
to_core
, but ran into some bikeshedding issues. I think we should still operate under the assumption we will eventually do that (I believe there is consensus that we really want to do it). Assuming that is done, what will we want to do about private variables like this? I think we should strive for consistency, either all with a leading underscore or none.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I still like the idea of having a
TypeAlias
being private within a module. If someone is making a change topandas
and then wants to use that alias in another module, they then have to think about moving it to_typing.py
, which is where it belongs.Let's say that we had already changed
core
to_core
. If you're down deep in the pandas code, e.g., inpandas/_core/arrays/datetimelike.py
, you shouldn't have to remember that your are 2 levels down from_core
. IMHO, anything within that file should be private unless it is meant to be imported from somewhere else.Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This seems to me to be a very large change. I count 2432 functions (not merely callables) at the top level of modules across pandas that do not start with an
_
. Now some are undoubtedly public, but many are not. On the other hand, there are 438 functions at the top level of a module that do start with an_
.Edit: I misread your comment on the first pass. This means that as soon as you want to import something you need to remove the
_
from the name? That will mean constantly changing top-level functions in modules. I'm strongly opposed to this.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, once they put that feature back in, which I argued needed to be removed because it was breaking
pandas-stubs
due to the import of_typing.py
that people do.We could consider the rule temporary until we rename
core
to_core
.We already agree that we are inconsistent with respect to public vs. private, so this PR is just keeping along with that inconsistency.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR is changing the names of identifiers to mark them as private when they already reside in modules that are documented as private. This is code churn with no benefit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Disagree. Right now, someone can do
from pandas.core.apply import ResType
, which is "valid" from a code perspective, invalid from a documentation perspective. If we make the change as I suggested, then wheneverpyright
implements their "disallow private imports" or this ruff rule https://docs.astral.sh/ruff/rules/import-private-name/ comes out of preview, thenfrom pandas.core.apply import _ResType
would get flagged.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the sustainable change to accomplish what you want is
from pandas._core.apply
. Not changing the hundreds of symbols from acrosspandas.core
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK - then I'll change this to just add
TypeAlias
and keep the symbol names the same.