Azure / Azure/azure-functions-python-worker

[FeatureRequest] Support Python 3.9 style hinting using standard collections per PEP 585

Đang mở
#1,034 1 bình luận 0 reaction 1 người được giao Được @YunchuWang nhận Xem trên GitHub
area:python-functions investigating new feature
Ngôn ngữ chính
Python
Star
357
Fork
116
Merge trung bình
32 phút
Pull request đã merge (30 ngày)
1

Mô tả

The worker supports Python 3.9, however does not work with type hinting using standard collections as specified in [PEP 585](https://peps.python.org/pep-0585/) and [introduced in Python 3.9](https://docs.python.org/3/whatsnew/3.9.html#type-hinting-generics-in-standard-collections).

Pre-PEP 585 style typing, which works:

```python
from typing import List

# `func host start` is happy with this style of type hinting.
def main(events: List[func.EventHubEvent]) -> None:
...
```

New PEP 585 style typing, which doesn't work:

```python
# `func host start` produces error here.
def main(events: list[func.EventHubEvent]) -> None:
...
```

The error produced is:

```python
Worker failed to load function: 'my_function_name' with function id: '12345678-9012-3456-7890-abcdef123456'.
[2022-05-17T08:58:41.245Z] Result: Failure
[2022-05-17T08:58:41.245Z] Exception: TypeError: issubclass() arg 1 must be a class
[2022-05-17T08:58:41.245Z] Stack: File "/opt/homebrew/Cellar/azure-functions-core-tools@4/4.0.4483/workers/python/3.9/OSX/X64/azure_functions_worker/dispatcher.py", line 311, in _handle__function_load_request
[2022-05-17T08:58:41.245Z] self._functions.add_function(
[2022-05-17T08:58:41.245Z] File "/opt/homebrew/Cellar/azure-functions-core-tools@4/4.0.4483/workers/python/3.9/OSX/X64/azure_functions_worker/functions.py", line 204, in add_function
[2022-05-17T08:58:41.245Z] checks_out = bindings.check_input_type_annotation(
[2022-05-17T08:58:41.245Z] File "/opt/homebrew/Cellar/azure-functions-core-tools@4/4.0.4483/workers/python/3.9/OSX/X64/azure_functions_worker/bindings/meta.py", line 44, in check_input_type_annotation
[2022-05-17T08:58:41.245Z] return binding.check_input_type_annotation(pytype)
[2022-05-17T08:58:41.245Z] File "/opt/homebrew/Cellar/azure-functions-core-tools@4/4.0.4483/workers/python/3.9/OSX/X64/azure/functions/eventhub.py", line 20, in check_input_type_annotation
[2022-05-17T08:58:41.245Z] or (isinstance(pytype, type) and issubclass(pytype, valid_types))
[2022-05-17T08:58:41.245Z] File "/opt/homebrew/Cellar/python@3.9/3.9.12/Frameworks/Python.framework/Versions/3.9/lib/python3.9/abc.py", line 123, in __subclasscheck__
[2022-05-17T08:58:41.245Z] return _abc_subclasscheck(cls, subclass)
```

System info, in case it's relevant:

- **OS** - macOS Monterey 12.3.1
- **`func --version`** - 4.0.4483
- **`python --version`** - Python 3.9.12

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.