From 8c8826176d4562dce9558d121a955ed71509315a Mon Sep 17 00:00:00 2001
From: Yen Chi Hsuan <yan12125@gmail.com>
Date: Thu, 23 Apr 2015 13:49:06 +0800
Subject: [PATCH] [xattr] Add version detection for python-pyxattr

For more information, see #5498 and changes to convertObj() in
iustin/pyxattr@cc84e466f63906d32ec1bf4a4fcae6a7bce9a4c8
---
 youtube_dl/postprocessor/xattrpp.py | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/youtube_dl/postprocessor/xattrpp.py b/youtube_dl/postprocessor/xattrpp.py
index 0cba99fc3..b74adff43 100644
--- a/youtube_dl/postprocessor/xattrpp.py
+++ b/youtube_dl/postprocessor/xattrpp.py
@@ -11,6 +11,7 @@ from ..compat import (
 from ..utils import (
     check_executable,
     hyphenate_date,
+    version_tuple,
 )
 
 
@@ -36,6 +37,19 @@ class XAttrMetadataPP(PostProcessor):
             # try the pyxattr module...
             import xattr
 
+            # Unicode arguments are not supported in python-pyxattr until
+            # version 0.5.0
+            # See https://github.com/rg3/youtube-dl/issues/5498
+            pyxattr_required_version = '0.5.0'
+            if version_tuple(xattr.__version__) < version_tuple(pyxattr_required_version):
+                self._downloader.report_warning(
+                    'python-pyxattr is detected but is too old. '
+                    'yourube-dl requires %s or above while your version is %s. '
+                    'Falling back to other xattr implementations' % (
+                        pyxattr_required_version, xattr.__version__))
+
+                raise ImportError
+
             def write_xattr(path, key, value):
                 return xattr.setxattr(path, key, value)