From e0287beae4381ac82334a6c3859884bcbadfb285 Mon Sep 17 00:00:00 2001 From: Brett Smith Date: Fri, 14 Apr 2023 13:55:54 -0400 Subject: [PATCH] 18799: Add Python 3.7 compatibility for TypedDict Arvados-DCO-1.1-Signed-off-by: Brett Smith --- sdk/python/discovery2pydoc.py | 13 +++++++++++-- sdk/python/setup.py | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/sdk/python/discovery2pydoc.py b/sdk/python/discovery2pydoc.py index ad7606145a..29502ace1e 100755 --- a/sdk/python/discovery2pydoc.py +++ b/sdk/python/discovery2pydoc.py @@ -93,6 +93,15 @@ Refer to the API documentation for details about how to retrieve specific keys if you need them. ''' +_MODULE_PRELUDE = ''' +import sys +if sys.version_info < (3, 8): + from typing import Any + from typing_extensions import TypedDict +else: + from typing import Any, TypedDict +''' + _TYPE_MAP = { # Map the API's JavaScript-based type names to Python annotations. # Some of these may disappear after Arvados issue #19795 is fixed. @@ -327,8 +336,8 @@ def main(arglist: Optional[Sequence[str]]=None) -> int: discovery_document = json.load(discovery_file) print( to_docstring(_MODULE_PYDOC, indent=0), - '''from typing import Any, TypedDict''', - sep='\n\n', end='\n\n', file=args.out_file, + _MODULE_PRELUDE, + sep='\n', file=args.out_file, ) schemas = sorted(discovery_document['schemas'].items()) diff --git a/sdk/python/setup.py b/sdk/python/setup.py index f6d6a43c78..910757817e 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -126,6 +126,7 @@ setup(name='arvados-python-client', 'pycurl >=7.19.5.1, <7.45.0', 'ruamel.yaml >=0.15.54, <0.17.22', 'setuptools>=40.3.0', + 'typing_extensions; python_version<"3.8"', 'ws4py >=0.4.2', 'protobuf<4.0.0dev', 'pyparsing<3', -- 2.30.2