From owner-freebsd-python@freebsd.org Sat Apr 30 02:49:56 2016 Return-Path: Delivered-To: freebsd-python@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 918A4B20A19 for ; Sat, 30 Apr 2016 02:49:56 +0000 (UTC) (envelope-from FreeBSD@shaneware.biz) Received: from mailman.ysv.freebsd.org (unknown [127.0.1.3]) by mx1.freebsd.org (Postfix) with ESMTP id 7F16818E7 for ; Sat, 30 Apr 2016 02:49:56 +0000 (UTC) (envelope-from FreeBSD@shaneware.biz) Received: by mailman.ysv.freebsd.org (Postfix) id 7ACBEB20A18; Sat, 30 Apr 2016 02:49:56 +0000 (UTC) Delivered-To: python@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 7A721B20A17 for ; Sat, 30 Apr 2016 02:49:56 +0000 (UTC) (envelope-from FreeBSD@shaneware.biz) Received: from ipmail05.adl6.internode.on.net (ipmail05.adl6.internode.on.net [150.101.137.143]) by mx1.freebsd.org (Postfix) with ESMTP id ACDEA18E4 for ; Sat, 30 Apr 2016 02:49:55 +0000 (UTC) (envelope-from FreeBSD@shaneware.biz) Received: from ppp118-210-182-127.lns20.adl6.internode.on.net (HELO leader.local) ([118.210.182.127]) by ipmail05.adl6.internode.on.net with ESMTP; 30 Apr 2016 12:19:53 +0930 Subject: Re: django-tenants To: Bartlomiej Mika , python@FreeBSD.org References: From: Shane Ambler Message-ID: <57241D50.1050106@ShaneWare.Biz> Date: Sat, 30 Apr 2016 12:19:52 +0930 User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:38.0) Gecko/20100101 Thunderbird/38.7.1 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------040203090204000609050907" X-BeenThere: freebsd-python@freebsd.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: FreeBSD-specific Python issues List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 30 Apr 2016 02:49:56 -0000 This is a multi-part message in MIME format. --------------040203090204000609050907 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 29/04/2016 23:39, Bartlomiej Mika wrote: > Salutations! > > I have the following python installed: python34-3.4.4_2 > > I am also using *pip 8.1.1* > > I am trying to install *django-tenants* using these two things and python > gives me this error: > > % pip install django-tenants > > > Collecting django-tenants > > Using cached django-tenants-1.1.5.zip > > Complete output from command python setup.py egg_info: > > Traceback (most recent call last): > > File "", line 1, in > > File "/tmp/pip-build-814hp86j/django-tenants/setup.py", line 31, in > > > long_description=open('README.rst').read() if exists("README.rst") > else "", > > File > "/usr/home/django/py-bizmula/env/lib/python3.4/encodings/ascii.py", line > 26, in decode > > return codecs.ascii_decode(input, self.errors)[0] > > UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position > 604: ordinal not in range(128) The file README.rst has non-ascii characters in it but python is trying to read it as an ascii file Specifically it uses the "right single quotation mark" instead of a "modifier letter apostrophe" or a simple ascii apostrophe https://tedclancy.wordpress.com/2015/06/03/which-unicode-character-should-represent-the-english-apostrophe-and-why-the-unicode-committee-is-very-wrong/ This would be an automatic thing from the text editor used. One solution is to patch django-tenants - that could be done in a port not(?) when using pip directly. You could patch README.rst to have only ascii chars or patch setup.py to use - long_description=open('README.rst', encoding='utf-8').read() if exists("README.rst") else "", A quick solution for you is to set your locale Currently you would see the following - % python3.4 ... >>> import locale >>> locale.getpreferredencoding() 'US-ASCII' >>> t = open('README.rst').read() Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.5/encodings/ascii.py", line 26, in decode return codecs.ascii_decode(input, self.errors)[0] UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 604: ordinal not in range(128) If you set your locale to use utf-8 then you won't get this error. using tcsh - % setenv LC_ALL en_US.UTF-8 using sh - % LC_ALL=en_US.UTF-8;export LC_ALL % python3.4 ... >>> import locale >>> locale.getpreferredencoding() 'UTF-8' >>> t = open('README.rst').read() >>> Oddly python2.7 recognises that the file is utf-8 even when the locale is ascii but python 3.4 and 3.5 don't. I don't expect to use django-tenants but it is a simple port - if you want to add yourself as the maintainer you could submit the following as a new port to https://bugs.freebsd.org -- FreeBSD - the place to B...Software Developing Shane Ambler --------------040203090204000609050907 Content-Type: text/plain; charset=UTF-8; name="py-django-tenants.shar.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="py-django-tenants.shar.txt" IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUg YW55dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50 ZXJpbmcgInNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBm aWxlcyBhbmQgZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBk ZWZhdWx0IHBlcm1pc3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJcHkt ZGphbmdvLXRlbmFudHMKIwlweS1kamFuZ28tdGVuYW50cy9maWxlcwojCXB5LWRqYW5nby10 ZW5hbnRzL2ZpbGVzL3BhdGNoLXNldHVwLnB5CiMJcHktZGphbmdvLXRlbmFudHMvcGtnLWRl c2NyCiMJcHktZGphbmdvLXRlbmFudHMvZGlzdGluZm8KIwlweS1kamFuZ28tdGVuYW50cy9N YWtlZmlsZQojCmVjaG8gYyAtIHB5LWRqYW5nby10ZW5hbnRzCm1rZGlyIC1wIHB5LWRqYW5n by10ZW5hbnRzID4gL2Rldi9udWxsIDI+JjEKZWNobyBjIC0gcHktZGphbmdvLXRlbmFudHMv ZmlsZXMKbWtkaXIgLXAgcHktZGphbmdvLXRlbmFudHMvZmlsZXMgPiAvZGV2L251bGwgMj4m MQplY2hvIHggLSBweS1kamFuZ28tdGVuYW50cy9maWxlcy9wYXRjaC1zZXR1cC5weQpzZWQg J3MvXlgvLycgPnB5LWRqYW5nby10ZW5hbnRzL2ZpbGVzL3BhdGNoLXNldHVwLnB5IDw8ICdi NWE5MzI4ZWM1MmVkOTUzZWMzZDRjYjhkOTEyYzc4NCcKWC0tLSBzZXR1cC5weS5vcmlnCTIw MTYtMDQtMzAgMDI6Mzc6MjEgVVRDClgrKysgc2V0dXAucHkKWEBAIC0yOCw3ICsyOCw3IEBA IHNldHVwKA0KWCAgICAgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vdG9tdHVybmVyL2RqYW5n by10ZW5hbnRzJywNClggICAgIGxpY2Vuc2U9J01JVCcsDQpYICAgICBkZXNjcmlwdGlvbj0n VGVuYW50IHN1cHBvcnQgZm9yIERqYW5nbyB1c2luZyBQb3N0Z3JlU1FMIHNjaGVtYXMuJywN ClgtICAgIGxvbmdfZGVzY3JpcHRpb249b3BlbignUkVBRE1FLnJzdCcpLnJlYWQoKSBpZiBl eGlzdHMoIlJFQURNRS5yc3QiKSBlbHNlICIiLA0KWCsgICAgbG9uZ19kZXNjcmlwdGlvbj1v cGVuKCdSRUFETUUucnN0JywgZW5jb2Rpbmc9J3V0Zi04JykucmVhZCgpIGlmIGV4aXN0cygi UkVBRE1FLnJzdCIpIGVsc2UgIiIsDQpYICAgICBjbGFzc2lmaWVycz1bDQpYICAgICAgICAg J0RldmVsb3BtZW50IFN0YXR1cyA6OiA1IC0gUHJvZHVjdGlvbi9TdGFibGUnLA0KWCAgICAg ICAgICdFbnZpcm9ubWVudCA6OiBXZWIgRW52aXJvbm1lbnQnLA0KYjVhOTMyOGVjNTJlZDk1 M2VjM2Q0Y2I4ZDkxMmM3ODQKZWNobyB4IC0gcHktZGphbmdvLXRlbmFudHMvcGtnLWRlc2Ny CnNlZCAncy9eWC8vJyA+cHktZGphbmdvLXRlbmFudHMvcGtnLWRlc2NyIDw8ICcxZTM4MmNk NTlhZmQwZGQ3ZjRlNjIxOTVkNjY1ODczOScKWHB5LWRqYW5nby10ZW5hbnRzIGVuYWJsZXMg ZGphbmdvIHBvd2VyZWQgd2Vic2l0ZXMgdG8gaGF2ZSBtdWx0aXBsZQpYdGVuYW50cyBieSB1 c2luZyBQb3N0Z3JlU1FMIHNjaGVtYXMuClgKWFdXVzogaHR0cHM6Ly9naXRodWIuY29tL3Rv bXR1cm5lci9kamFuZ28tdGVuYW50cwoxZTM4MmNkNTlhZmQwZGQ3ZjRlNjIxOTVkNjY1ODcz OQplY2hvIHggLSBweS1kamFuZ28tdGVuYW50cy9kaXN0aW5mbwpzZWQgJ3MvXlgvLycgPnB5 LWRqYW5nby10ZW5hbnRzL2Rpc3RpbmZvIDw8ICc2NGZlYmY5ZmRjMGRhNTE3OWE4ZjhmYjhh YzRlYjdiMycKWFNIQTI1NiAoZGphbmdvLXRlbmFudHMtMS4xLjUuemlwKSA9IDVjMmYzNWYx MzMxZGIyYmZkODBmMDQyNGE1YWQxNGVmYzE4ODg1Y2E0ZTY1MTZlZjJiZWMyY2M2ZGVjOWIw NTMKWFNJWkUgKGRqYW5nby10ZW5hbnRzLTEuMS41LnppcCkgPSA4NzU3OQo2NGZlYmY5ZmRj MGRhNTE3OWE4ZjhmYjhhYzRlYjdiMwplY2hvIHggLSBweS1kamFuZ28tdGVuYW50cy9NYWtl ZmlsZQpzZWQgJ3MvXlgvLycgPnB5LWRqYW5nby10ZW5hbnRzL01ha2VmaWxlIDw8ICdjOTcw MzM5YTMzMzA4N2RlNzFkZDU0ZTMwYTU5MzJlNScKWCMgQ3JlYXRlZCBieTogbWUKWCMgJEZy ZWVCU0QkClgKWFBPUlROQU1FPQlkamFuZ28tdGVuYW50cwpYUE9SVFZFUlNJT049CTEuMS41 ClhDQVRFR09SSUVTPQl3d3cgcHl0aG9uClhNQVNURVJfU0lURVM9CUNIRUVTRVNIT1AKWFBL R05BTUVQUkVGSVg9CSR7UFlUSE9OX1BLR05BTUVQUkVGSVh9ClgKWE1BSU5UQUlORVI9CXNv bWVvbmVAc29tZWRvbWFpbi5jb20KWENPTU1FTlQ9CVRlbmFudCBzdXBwb3J0IGZvciBEamFu Z28gdXNpbmcgUG9zdGdyZVNRTCBzY2hlbWFzClgKWFJVTl9ERVBFTkRTPQkke1BZVEhPTl9Q S0dOQU1FUFJFRklYfWRqYW5nbzE4PjA6d3d3L3B5LWRqYW5nbzE4IFwKWAkJJHtQWVRIT05f UEtHTkFNRVBSRUZJWH1wc3ljb3BnMj49Mi4wLjg6ZGF0YWJhc2VzL3B5LXBzeWNvcGcyClgK WFVTRVM9CQlweXRob24gemlwClhVU0VfUFlUSE9OPQlkaXN0dXRpbHMgYXV0b3BsaXN0ClhO T19BUkNIPQl5ZXMKWApYLmluY2x1ZGUgPGJzZC5wb3J0Lm1rPgpjOTcwMzM5YTMzMzA4N2Rl NzFkZDU0ZTMwYTU5MzJlNQpleGl0Cgo= --------------040203090204000609050907--