django-tenants

Shane Ambler FreeBSD at ShaneWare.Biz
Sat Apr 30 02:49:56 UTC 2016


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 "<string>", line 1, in <module>
>
>        File "/tmp/pip-build-814hp86j/django-tenants/setup.py", line 31, in
> <module>
>
>          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 "<stdin>", line 1, in <module>
   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

-------------- next part --------------
# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	py-django-tenants
#	py-django-tenants/files
#	py-django-tenants/files/patch-setup.py
#	py-django-tenants/pkg-descr
#	py-django-tenants/distinfo
#	py-django-tenants/Makefile
#
echo c - py-django-tenants
mkdir -p py-django-tenants > /dev/null 2>&1
echo c - py-django-tenants/files
mkdir -p py-django-tenants/files > /dev/null 2>&1
echo x - py-django-tenants/files/patch-setup.py
sed 's/^X//' >py-django-tenants/files/patch-setup.py << 'b5a9328ec52ed953ec3d4cb8d912c784'
X--- setup.py.orig	2016-04-30 02:37:21 UTC
X+++ setup.py
X@@ -28,7 +28,7 @@ setup(
X     url='https://github.com/tomturner/django-tenants',
X     license='MIT',
X     description='Tenant support for Django using PostgreSQL schemas.',
X-    long_description=open('README.rst').read() if exists("README.rst") else "",
X+    long_description=open('README.rst', encoding='utf-8').read() if exists("README.rst") else "",
X     classifiers=[
X         'Development Status :: 5 - Production/Stable',
X         'Environment :: Web Environment',
b5a9328ec52ed953ec3d4cb8d912c784
echo x - py-django-tenants/pkg-descr
sed 's/^X//' >py-django-tenants/pkg-descr << '1e382cd59afd0dd7f4e62195d6658739'
Xpy-django-tenants enables django powered websites to have multiple
Xtenants by using PostgreSQL schemas.
X
XWWW: https://github.com/tomturner/django-tenants
1e382cd59afd0dd7f4e62195d6658739
echo x - py-django-tenants/distinfo
sed 's/^X//' >py-django-tenants/distinfo << '64febf9fdc0da5179a8f8fb8ac4eb7b3'
XSHA256 (django-tenants-1.1.5.zip) = 5c2f35f1331db2bfd80f0424a5ad14efc18885ca4e6516ef2bec2cc6dec9b053
XSIZE (django-tenants-1.1.5.zip) = 87579
64febf9fdc0da5179a8f8fb8ac4eb7b3
echo x - py-django-tenants/Makefile
sed 's/^X//' >py-django-tenants/Makefile << 'c970339a333087de71dd54e30a5932e5'
X# Created by: me
X# $FreeBSD$
X
XPORTNAME=	django-tenants
XPORTVERSION=	1.1.5
XCATEGORIES=	www python
XMASTER_SITES=	CHEESESHOP
XPKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
X
XMAINTAINER=	someone at somedomain.com
XCOMMENT=	Tenant support for Django using PostgreSQL schemas
X
XRUN_DEPENDS=	${PYTHON_PKGNAMEPREFIX}django18>0:www/py-django18 \
X		${PYTHON_PKGNAMEPREFIX}psycopg2>=2.0.8:databases/py-psycopg2
X
XUSES=		python zip
XUSE_PYTHON=	distutils autoplist
XNO_ARCH=	yes
X
X.include <bsd.port.mk>
c970339a333087de71dd54e30a5932e5
exit



More information about the freebsd-python mailing list