Skip to content

Commit 6d4fdb0

Browse files
committed
BUG/TST: Py2 unicode handling in clipboard on linux/osx
1 parent bb6b5e5 commit 6d4fdb0

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

pandas/io/tests/test_clipboard.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
raise nose.SkipTest("no clipboard found")
1919

2020

21-
@disabled
2221
class TestClipboard(tm.TestCase):
2322

2423
@classmethod

pandas/util/clipboard.py

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@
5151
import os
5252
from subprocess import call, Popen, PIPE
5353

54-
PY2 = '2' == platform.python_version_tuple()[0]
55-
text_type = unicode if PY2 else str
54+
from pandas.compat import bytes_to_str, str_to_bytes, text_type
5655

5756

5857
class NoClipboardProgramError(OSError):
@@ -117,13 +116,13 @@ def _copyCygwin(text):
117116

118117
def _copyOSX(text):
119118
p = Popen(['pbcopy', 'w'], stdin=PIPE, close_fds=True)
120-
p.communicate(input=text.encode('utf-8'))
119+
p.communicate(input=str_to_bytes(text, 'utf-8'))
121120

122121

123122
def _pasteOSX():
124123
p = Popen(['pbpaste', 'r'], stdout=PIPE, close_fds=True)
125124
stdout, stderr = p.communicate()
126-
return stdout.decode('utf-8')
125+
return bytes_to_str(stdout, 'utf-8')
127126

128127

129128
def _pasteGtk():
@@ -147,29 +146,29 @@ def _copyQt(text):
147146

148147
def _copyXclip(text):
149148
p = Popen(['xclip', '-selection', 'c'], stdin=PIPE, close_fds=True)
150-
p.communicate(input=text.encode('utf-8'))
149+
p.communicate(input=str_to_bytes(text, 'utf-8'))
151150

152151

153152
def _pasteXclip():
154153
p = Popen(['xclip', '-selection', 'c', '-o'], stdout=PIPE, close_fds=True)
155154
stdout, stderr = p.communicate()
156-
return stdout.decode('utf-8')
155+
return bytes_to_str(stdout, 'utf-8')
157156

158157

159158
def _copyXsel(text):
160159
p = Popen(['xsel', '-b', '-i'], stdin=PIPE, close_fds=True)
161-
p.communicate(input=text.encode('utf-8'))
160+
p.communicate(input=str_to_bytes(text, 'utf-8'))
162161

163162

164163
def _pasteXsel():
165164
p = Popen(['xsel', '-b', '-o'], stdout=PIPE, close_fds=True)
166165
stdout, stderr = p.communicate()
167-
return stdout.decode('utf-8')
166+
return bytes_to_str(stdout, 'utf-8')
168167

169168

170169
def _copyKlipper(text):
171170
p = Popen(['qdbus', 'org.kde.klipper', '/klipper',
172-
'setClipboardContents', text.encode('utf-8')],
171+
'setClipboardContents', str_to_bytes(text, 'utf-8')],
173172
stdin=PIPE, close_fds=True)
174173
p.communicate(input=None)
175174

@@ -178,7 +177,7 @@ def _pasteKlipper():
178177
p = Popen(['qdbus', 'org.kde.klipper', '/klipper',
179178
'getClipboardContents'], stdout=PIPE, close_fds=True)
180179
stdout, stderr = p.communicate()
181-
return stdout.decode('utf-8')
180+
return bytes_to_str(stdout, 'utf-8')
182181

183182

184183
# Determine the OS/platform and set the copy() and paste() functions

0 commit comments

Comments
 (0)