Skip to content

CLN: small cleanups #48836

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

Merged
merged 1 commit into from
Sep 29, 2022
Merged

CLN: small cleanups #48836

merged 1 commit into from
Sep 29, 2022

Conversation

jbrockmendel
Copy link
Member

  • closes #xxxx (Replace xxxx with the Github issue number)
  • Tests added and passed if fixing a bug or adding a new feature
  • All code checks passed.
  • Added type annotations to new arguments/methods/functions.
  • Added an entry in the latest doc/source/whatsnew/vX.X.X.rst file if fixing a bug or adding a new feature.

...


def validate_periods(periods: float | None) -> int | None:
def validate_periods(periods: int | float | None) -> int | None:
Copy link
Member

Choose a reason for hiding this comment

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

@twoertwein so the typing simplification(?) that converted int | float -> float isn't an enforced typing check?

Copy link
Member

Choose a reason for hiding this comment

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

flake8-pyi does that check but only for pyi files not py files.

More generally, we have many Unions that contain redundant classes, for example Scalar contains datetime and pd.Timestamp but I think pd.Timestamp inherits from datetime. That is not a problem (also type checkers might need some more time) but it is not good style.

Copy link
Member Author

Choose a reason for hiding this comment

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

Should I revert this? i find it clearer, but not a big deal.

Copy link
Member

Choose a reason for hiding this comment

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

I wouldn't mind ignoring flake8-pyi's Y041 when we run flake8-pyi: then py and pyi files are more consistent and there is also some push back against it python/mypy#13760 (comment)

Copy link
Member Author

Choose a reason for hiding this comment

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

btw in a world where float is equivalent to int | float, how would i express "specifically a python float object and not an integer object"

Copy link
Member

Choose a reason for hiding this comment

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

In the type checkers world, you can't: https://peps.python.org/pep-0484/#the-numeric-tower

Rather than requiring that users write import numbers and then use numbers.Float etc., this PEP proposes a straightforward shortcut that is almost as effective: when an argument is annotated as having type float, an argument of type int is acceptable; similar, for an argument annotated as having type complex, arguments of type float or int are acceptable. This does not handle classes implementing the corresponding ABCs or the fractions.Fraction class, but we believe those use cases are exceedingly rare.

But I wonder how python and its type system would have evolved if they started together - we hopefully wouldn't have this mess of type checkers/PEPs dictating that int is treated as a subclass of float but the implementation doesn't do that.

Copy link
Member Author

Choose a reason for hiding this comment

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

that seems weird given that int isnt a subclass of float. anyway, shouldnt be relevant for this PR

@mroeschke mroeschke added Clean Non-Nano datetime64/timedelta64 with non-nanosecond resolution labels Sep 29, 2022
@mroeschke mroeschke added this to the 1.6 milestone Sep 29, 2022
@mroeschke mroeschke merged commit f1ed6de into pandas-dev:main Sep 29, 2022
@mroeschke
Copy link
Member

Thanks @jbrockmendel

@jbrockmendel jbrockmendel deleted the nano-small-2 branch September 30, 2022 00:00
@mroeschke mroeschke modified the milestones: 1.6, 2.0 Oct 13, 2022
noatamir pushed a commit to noatamir/pandas that referenced this pull request Nov 9, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Clean Non-Nano datetime64/timedelta64 with non-nanosecond resolution
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants