lib/pycall/conversion.rb in pycall-0.1.0.alpha.20170419 vs lib/pycall/conversion.rb in pycall-0.1.0.alpha.20170426

- old
+ new

@@ -100,16 +100,14 @@ when Integer LibPython.PyInt_FromSsize_t(obj) when Float LibPython.PyFloat_FromDouble(obj) when String - case obj.encoding - when Encoding::US_ASCII, Encoding::BINARY - LibPython.PyString_FromStringAndSize(obj, obj.bytesize) - else - obj = obj.encode(Encoding::UTF_8) - LibPython.PyUnicode_DecodeUTF8(obj, obj.bytesize, nil) + if obj.encoding != Encoding::BINARY && (PyCall.unicode_literals? || !obj.ascii_only?) + obj = obj.encode(Encoding::UTF_8) if obj.encoding != Encoding::UTF_8 + return LibPython.PyUnicode_DecodeUTF8(obj, obj.bytesize, nil) end + LibPython.PyString_FromStringAndSize(obj, obj.bytesize) when Symbol from_ruby(obj.to_s) when Array PyCall::List.new(obj).__pyobj__ when Hash