[英]Finding the minimum supported Python version for a package
我刚刚制作了一个 Python package 并帮助我管理它,我在 Python 中使用了一些相对较新的功能来进行打字。 鉴于这只是打字,我的 package 是否适用于较低版本?
这是 package 的示例:
from __future__ import annotations
from typing import List, TypeVar, Callable, Union, overload, Optional, Any
from .another_module import SomeClass
T = TypeVar("T")
class ExampleClass:
def __init__(self, arr: List[T] = ()):
self.arr = arr
@overload
def find(self, predicate: Callable[[T, Optional[int], Optional[List[T]]], bool]) -> T | None:
...
@overload
def find(self, predicate: SomeClass) -> T | None:
...
def find(self, predicate: Union[SomeClass, Callable[[T, Optional[int], Optional[List[T]]], bool]]) -> T | None:
# code goes here
def chainable(self) -> ExampleClass:
return modified(self)
据我了解,将chainable
设置为ExampleClass
的返回类型是 3.11 版的内容。 还有一些其他的输入内容,我不是 100% 确定它们被添加到哪个版本中,但我认为使用 3.6 版的人不会访问它。
考虑到这些只是输入这些,我可以包含版本 >=3.6 还是我必须删除所有输入?
在PEP 563的 Python 3.7 中的__future__
中引入了annotations
。
PEP 563 推迟了类型注释的评估,因此它们不会在定义期间发生。 这反过来又允许在早期的 python 版本上进行后续注释。
所以你只需要强制执行python >= 3.7
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.