html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/pull/7368#issuecomment-1464927490,https://api.github.com/repos/pydata/xarray/issues/7368,1464927490,IC_kwDOAMm_X85XUQUC,43316012,2023-03-11T14:50:02Z,2023-03-11T14:50:24Z,COLLABORATOR,"> DataAlignable = TypeVar(""DataAlignable"", bound=DataWithCoords | Coordinates) -> doesn't work since we cannot mix DataWithCoords and Coordinates when aligning each object (input type = output type)
I think thats exactly correct.
The whold idea of using a TypeVar for the inputs means that all inputs must have the same type.
Consider the following example:
```python
class A: ...
class B(A): ...
class C: ...
T = TypeVar(""T"", bound=Union[A, C])
def f(*x: T) -> T: ...
f(A(), A()) # OK
f(A(), B()) # OK
f(C(), C()) # OK
f(A(), C()) # not ok, because the common type of A and C is object
```
Also: sorry for the late reply.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1485037066