Skip to content

Comments

[red-knot] Add support for @classmethods#16305

Merged
sharkdp merged 7 commits intomainfrom
david/classmethods
Feb 24, 2025
Merged

[red-knot] Add support for @classmethods#16305
sharkdp merged 7 commits intomainfrom
david/classmethods

Conversation

@sharkdp
Copy link
Contributor

@sharkdp sharkdp commented Feb 21, 2025

Summary

Add support for @classmethods.

class C:
    @classmethod
    def f(cls, x: int) -> str:
        return "a"

reveal_type(C.f(1))  # revealed: str

Test Plan

New Markdown tests

@sharkdp sharkdp added the ty Multi-file analysis & type inference label Feb 21, 2025
@sharkdp sharkdp changed the title David/classmethods [red-knot] Add support for @classmethods Feb 21, 2025
Copy link
Contributor

@carljm carljm left a comment

Choose a reason for hiding this comment

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

Looks great!

@sharkdp sharkdp merged commit 141ba25 into main Feb 24, 2025
21 checks passed
@sharkdp sharkdp deleted the david/classmethods branch February 24, 2025 08:55
dcreager added a commit that referenced this pull request Feb 25, 2025
* main: (38 commits)
  [red-knot] Use arena-allocated association lists for narrowing constraints (#16306)
  [red-knot] Rewrite `Type::try_iterate()` to improve type inference and diagnostic messages (#16321)
  Add issue templates (#16213)
  Normalize inconsistent markdown headings in docstrings (#16364)
  [red-knot] Better diagnostics for method calls (#16362)
  [red-knot] Add argfile and windows glob path support (#16353)
  [red-knot] Handle pipe-errors gracefully (#16354)
  Rename `venv-path` to `python` (#16347)
  [red-knot] Fixup some formatting in `infer.rs` (#16348)
  [red-knot] Restrict visibility of more things in `class.rs` (#16346)
  [red-knot] Add diagnostic for class-object access to pure instance variables (#16036)
  Add `per-file-target-version` option (#16257)
  [PLW1507] Mark fix unsafe (#16343)
  [red-knot] Add a test to ensure that `KnownClass::try_from_file_and_name()` is kept up to date (#16326)
  Extract class and instance types (#16337)
  Re-order changelog entries for 0.9.7 (#16344)
  [red-knot] Add support for `@classmethod`s (#16305)
  Update Salsa (#16338)
  Update Salsa part 1 (#16340)
  Upgrade Rust toolchain to 1.85.0 (#16339)
  ...
sharkdp pushed a commit that referenced this pull request Jun 20, 2025
## Summary

Add support for `@staticmethod`s. Overall, the changes are very similar
to #16305.

#18587 will be dependent on this PR for a potential fix of
astral-sh/ty#207.

mypy_primer will look bad since the new code allows ty to check more
code.

## Test Plan

Added new markdown tests. Please comment if there's any missing tests
that I should add in, thank you.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ty Multi-file analysis & type inference

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants