rjmcginness commented on issue #26499:
URL: https://github.com/apache/airflow/issues/26499#issuecomment-1253252069
Hello, I am new here, but I have been wanting to contribute to this
project. I do not want to create a random pull request, so I am showing my
changes here. I did run the pre-commit and unit test shown above. I was not
able to run the DAG above in Docker, however on macOS. My thought on this is
that there may be different instances of NOTSET and, therefore, comparison is
not working. It compares against the object, rather than a value. In order to
solve this, perhaps testing against the class ArgNotSet would be more reliable.
I would create a PR, but I would like to test against the failed use case and
do not want to violate the contribution decorum.
```
class _ZipResult(Sequence):
def __init__(self, values: Sequence[Sequence | dict], *, fillvalue: Any
= NOTSET) -> None:
self.values = values
self.fillvalue = fillvalue
# use the generator here, rather than in __len__ to improve
efficiency
lengths = (len(v) for v in self.values)
self.length = min(lengths) if isinstance(self.fillvalue, ArgNotSet)
else max(lengths)
@staticmethod
def _get_or_fill(container: Sequence | dict, index: Any, fillvalue: Any)
-> Any:
try:
return container[index]
except (IndexError, KeyError):
return fillvalue
def __getitem__(self, index: Any) -> Any:
if index >= len(self):
raise IndexError(index)
return tuple(self._get_or_fill(value, index, self.fillvalue) for
value in self.values)
def __len__(self) -> int:
return self.length
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]