From 212146fece5326d08d0d9324e0be063b6fddd4ed Mon Sep 17 00:00:00 2001 From: Karthikeyan Singaravelan Date: Sun, 9 Feb 2020 17:24:27 +0530 Subject: [PATCH] Import ABC from collections.abc instead of collections for Python 3.9 compatibility. --- ffmpeg/_run.py | 7 +++++-- ffmpeg/_utils.py | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index c9cbb7c..ca8783b 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -3,7 +3,6 @@ from .dag import get_outgoing_edges, topo_sort from ._utils import basestring, convert_kwargs_to_cmd_line_args from builtins import str from functools import reduce -import collections import copy import operator import subprocess @@ -18,6 +17,10 @@ from .nodes import ( output_operator, ) +try: + from collections.abc import Iterable +except ImportError: + from collections import Iterable class Error(Exception): def __init__(self, cmd, stdout, stderr): @@ -137,7 +140,7 @@ def _get_output_args(node, stream_name_map): if 'video_size' in kwargs: video_size = kwargs.pop('video_size') if not isinstance(video_size, basestring) and isinstance( - video_size, collections.Iterable + video_size, Iterable ): video_size = '{}x{}'.format(video_size[0], video_size[1]) args += ['-video_size', video_size] diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index 92d7611..8fb84d9 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -3,13 +3,17 @@ from builtins import str from past.builtins import basestring import hashlib import sys -import collections if sys.version_info.major == 2: # noinspection PyUnresolvedReferences,PyShadowingBuiltins str = str +try: + from collections.abc import Iterable +except ImportError: + from collections import Iterable + # `past.builtins.basestring` module can't be imported on Python3 in some environments (Ubuntu). # This code is copy-pasted from it to avoid crashes. @@ -93,7 +97,7 @@ def convert_kwargs_to_cmd_line_args(kwargs): args = [] for k in sorted(kwargs.keys()): v = kwargs[k] - if isinstance(v, collections.Iterable) and not isinstance(v, str): + if isinstance(v, Iterable) and not isinstance(v, str): for value in v: args.append('-{}'.format(k)) if value is not None: