From cd3d3715b8ed3d11290bd700822e8b37d8b9e873 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Tue, 13 Jun 2017 19:37:14 -0600 Subject: [PATCH] Support python3 --- .gitignore | 2 +- ffmpeg/__init__.py | 1 + ffmpeg/_ffmpeg.py | 1 + ffmpeg/_filters.py | 1 + ffmpeg/_run.py | 4 ++++ ffmpeg/nodes.py | 10 ++++++++-- ffmpeg/tests/test_ffmpeg.py | 6 +++--- 7 files changed, 19 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index af3cbac..567ce92 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ .cache dist/ ffmpeg/tests/sample_data/dummy2.mp4 -venv +venv* diff --git a/ffmpeg/__init__.py b/ffmpeg/__init__.py index ff5c064..1953609 100644 --- a/ffmpeg/__init__.py +++ b/ffmpeg/__init__.py @@ -1,3 +1,4 @@ +from __future__ import unicode_literals from . import _filters, _ffmpeg, _run from ._filters import * from ._ffmpeg import * diff --git a/ffmpeg/_ffmpeg.py b/ffmpeg/_ffmpeg.py index c9c7f19..0d0a549 100644 --- a/ffmpeg/_ffmpeg.py +++ b/ffmpeg/_ffmpeg.py @@ -1,3 +1,4 @@ +from __future__ import unicode_literals from .nodes import ( FilterNode, GlobalNode, diff --git a/ffmpeg/_filters.py b/ffmpeg/_filters.py index 9794e2c..6329648 100644 --- a/ffmpeg/_filters.py +++ b/ffmpeg/_filters.py @@ -1,3 +1,4 @@ +from __future__ import unicode_literals from .nodes import ( FilterNode, operator, diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 28a3e46..d57b286 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -1,3 +1,6 @@ +from __future__ import unicode_literals + +from past.builtins import basestring import operator as _operator import subprocess as _subprocess @@ -13,6 +16,7 @@ from .nodes import ( operator, OutputNode, ) +from functools import reduce def _get_stream_name(name): return '[{}]'.format(name) diff --git a/ffmpeg/nodes.py b/ffmpeg/nodes.py index 61c9ff0..c6359e2 100644 --- a/ffmpeg/nodes.py +++ b/ffmpeg/nodes.py @@ -1,3 +1,6 @@ +from __future__ import unicode_literals + +from builtins import object import hashlib import json @@ -18,15 +21,18 @@ class Node(object): formatted_props += ['{}={!r}'.format(key, self._kwargs[key]) for key in sorted(self._kwargs)] return '{}({})'.format(self._name, ','.join(formatted_props)) + def __hash__(self): + return int(self._hash, base=16) + def __eq__(self, other): return self._hash == other._hash def _update_hash(self): props = {'args': self._args, 'kwargs': self._kwargs} - my_hash = hashlib.md5(json.dumps(props, sort_keys=True)).hexdigest() + my_hash = hashlib.md5(json.dumps(props, sort_keys=True).encode('utf-8')).hexdigest() parent_hashes = [parent._hash for parent in self._parents] hashes = parent_hashes + [my_hash] - self._hash = hashlib.md5(','.join(hashes)).hexdigest() + self._hash = hashlib.md5(','.join(hashes).encode('utf-8')).hexdigest() class InputNode(Node): diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 7e38521..b8e983d 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -1,4 +1,4 @@ -from ffmpeg.nodes import operator, FilterNode +from __future__ import unicode_literals import ffmpeg import os import pytest @@ -72,12 +72,12 @@ def test_repr(): trim3 = ffmpeg.trim(in_file, start_frame=50, end_frame=60) concatted = ffmpeg.concat(trim1, trim2, trim3) output = ffmpeg.output(concatted, 'dummy2.mp4') - assert repr(in_file) == "input(filename='dummy.mp4')" + assert repr(in_file) == "input(filename={!r})".format('dummy.mp4') assert repr(trim1) == "trim(end_frame=20,start_frame=10)" assert repr(trim2) == "trim(end_frame=40,start_frame=30)" assert repr(trim3) == "trim(end_frame=60,start_frame=50)" assert repr(concatted) == "concat(n=3)" - assert repr(output) == "output(filename='dummy2.mp4')" + assert repr(output) == "output(filename={!r})".format('dummy2.mp4') def test_get_args_simple():