Skip to content

Conversation

@amoghrajesh
Copy link
Contributor

Mypy 1.19 started complaining of:

  providers/google/src/airflow/providers/google/cloud/hooks/vertex_ai/ray.py:56: error: Argument 1 to "asdict" has incompatible type "DataclassInstance | type[DataclassInstance]"; expected
  "DataclassInstance"  [arg-type]
                      return dataclasses.asdict(value)
                                                ^~~~~
  Found 1 error in 1 file (checked 4046 source files)

  Error 1 returned
  You are running mypy with the folders selected. If you want to reproduce it locally, you need to run the following command:

The error is because mypy is stricter about this now. The issue is that dataclass.isdataclass returns True for both classes and instances: https://docs.python.org/3/library/dataclasses.html#dataclasses.is_dataclass and this causes a runtime error because dataclass.asdict can only be used on instances.

To ensure that fix doesnt break functionality, this is what I checked:

Python 3.13.3 (main, Apr  8 2025, 13:54:08) [Clang 17.0.0 (clang-1700.0.13.3)] on darwin
import dataclasses
@dataclasses.dataclass
class Example:
    name: str
instance = Example(name="test")
class_type = Example
dataclasses.is_dataclass(instance)
Out[3]: True
dataclasses.is_dataclass(class_type)
Out[4]: True
dataclasses.is_dataclass(instance) and not isinstance(instance, type)
Out[5]: True
dataclasses.is_dataclass(class_type) and not isinstance(class_type, type)
Out[6]: False
    
if dataclasses.is_dataclass(class_type) and not isinstance(class_type, type):
    print("I am here")
    print(dataclasses.asdict(class_type))
    
if dataclasses.is_dataclass(instance) and not isinstance(instance, type):
    print(dataclasses.asdict(instance))
    
{'name': 'test'}

^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named {pr_number}.significant.rst or {issue_number}.significant.rst, in airflow-core/newsfragments.

@boring-cyborg boring-cyborg bot added area:providers provider:google Google (including GCP) related issues labels Nov 29, 2025
@amoghrajesh amoghrajesh changed the title Only serialize dataclass instances and not classes in RayHook Fix mypy errors for RayHook Nov 29, 2025
@shahar1 shahar1 merged commit f5d6a7c into apache:main Nov 29, 2025
84 checks passed
RoyLee1224 pushed a commit to RoyLee1224/airflow that referenced this pull request Dec 3, 2025
Copilot AI pushed a commit to jason810496/airflow that referenced this pull request Dec 5, 2025
itayweb pushed a commit to itayweb/airflow that referenced this pull request Dec 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:providers provider:google Google (including GCP) related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants