[REF] setup: cleanup and linting of setup.py, reworked MANIFEST, added requirements.txt

This commit is contained in:
Simon Lejeune 2014-09-02 11:29:14 +02:00
parent d9b739e8f6
commit 735924878f
3 changed files with 205 additions and 184 deletions

View File

@ -1,9 +1,20 @@
graft debian recursive-include * *.css
graft doc recursive-include * *.csv
graft setup recursive-include * *.gif
graft openerp recursive-include * *.html
include README.md recursive-include * *.jpeg
include LICENSE recursive-include * *.jpg
include openerp-* recursive-include * *.js
include odoo* recursive-include * *.md
global-exclude *pyc *~ # Exclude possible garbage from previous graft. recursive-include * *.png
recursive-include * *.po
recursive-include * *.rng
recursive-include * *.rst
recursive-include * *.sass
recursive-include * *.sql
recursive-include * *.txt
recursive-include * *.ttf
recursive-include * *.woff
recursive-include * *.xml
recursive-include * *.yml
recursive-exclude * *.py[co]

41
requirements.txt Normal file
View File

@ -0,0 +1,41 @@
Babel==1.3
Jinja2==2.7.3
Mako==1.0.0
MarkupSafe==0.23
Pillow==2.5.1
http://download.gna.org/pychart/PyChart-1.39.tar.gz
PyYAML==3.11
Werkzeug==0.9.6
argparse==1.2.1
decorator==3.4.0
docutils==0.12
feedparser==5.1.3
gdata==2.0.18
gevent==1.0.1
greenlet==0.4.2
lxml==3.3.5
mock==1.0.1
passlib==1.6.2
psutil==2.1.1
psycogreen==1.0
psycopg2==2.5.3
pyPdf==1.13
pydot==1.0.2
pyparsing==1.5.7
pyserial==2.7
python-dateutil==1.5
python-ldap==2.4.15
python-openid==2.2.5
python-stdnum==0.9
pytz==2014.4
pyusb==1.0.0b1
qrcode==5.0.1
reportlab==3.1.8
requests==2.3.0
simplejson==3.5.3
six==1.7.3
unittest2==0.5.1
vatnumber==1.2
vobject==0.6.6
wsgiref==0.1.2
xlwt==0.7.5

319
setup.py
View File

@ -1,200 +1,169 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import glob, os, re, setuptools, sys import os
from os.path import join import re
from glob import glob
from setuptools import find_packages, setup
from os.path import join, dirname
execfile(join(dirname(__file__), 'openerp', 'release.py')) # Load release variables
lib_name = 'openerp'
def py2exe_datafiles():
data_files = {}
data_files['Microsoft.VC90.CRT'] = glob('C:\Microsoft.VC90.CRT\*.*')
# List all data files
def data():
r = {}
for root, dirnames, filenames in os.walk('openerp'): for root, dirnames, filenames in os.walk('openerp'):
for filename in filenames: for filename in filenames:
if not re.match(r'.*(\.pyc|\.pyo|\~)$', filename): if not re.match(r'.*(\.pyc|\.pyo|\~)$', filename):
r.setdefault(root, []).append(os.path.join(root, filename)) data_files.setdefault(root, []).append(join(root, filename))
if os.name == 'nt': import babel
r["Microsoft.VC90.CRT"] = glob.glob('C:\Microsoft.VC90.CRT\*.*') data_files['babel/localedata'] = glob(join(dirname(babel.__file__), 'localedata', '*'))
others = ['global.dat', 'numbers.py', 'support.py', 'plural.py']
data_files['babel'] = map(lambda f: join(dirname(babel.__file__), f), others)
others = ['frontend.py', 'mofile.py']
data_files['babel/messages'] = map(lambda f: join(dirname(babel.__file__), 'messages', f), others)
import babel import pytz
# Add data, but also some .py files py2exe won't include automatically. tzdir = dirname(pytz.__file__)
# TODO This should probably go under `packages`, instead of `data`, for root, _, filenames in os.walk(join(tzdir, 'zoneinfo')):
# but this will work fine (especially since we don't use the ZIP file base = join('pytz', root[len(tzdir) + 1:])
# approach). data_files[base] = [join(root, f) for f in filenames]
r["babel/localedata"] = glob.glob(os.path.join(os.path.dirname(babel.__file__), "localedata", '*'))
others = ['global.dat', 'numbers.py', 'support.py', 'plural.py']
r["babel"] = map(lambda f: os.path.join(os.path.dirname(babel.__file__), f), others)
others = ['frontend.py', 'mofile.py']
r["babel/messages"] = map(lambda f: os.path.join(os.path.dirname(babel.__file__), "messages", f), others)
import pytz import docutils
tzdir = os.path.dirname(pytz.__file__) dudir = dirname(docutils.__file__)
for root, _, filenames in os.walk(os.path.join(tzdir, "zoneinfo")): for root, _, filenames in os.walk(dudir):
base = os.path.join('pytz', root[len(tzdir) + 1:]) base = join('docutils', root[len(dudir) + 1:])
r[base] = [os.path.join(root, f) for f in filenames] data_files[base] = [join(root, f) for f in filenames if not f.endswith(('.py', '.pyc', '.pyo'))]
import docutils return data_files.items()
dudir = os.path.dirname(docutils.__file__)
for root, _, filenames in os.walk(dudir):
base = os.path.join('docutils', root[len(dudir) + 1:])
r[base] = [os.path.join(root, f) for f in filenames if not f.endswith(('.py', '.pyc', '.pyo'))]
return r.items()
def gen_manifest():
file_list="\n".join(data())
open('MANIFEST','w').write(file_list)
if os.name == 'nt':
sys.path.append("C:\Microsoft.VC90.CRT")
def py2exe_options(): def py2exe_options():
if os.name == 'nt': if os.name == 'nt':
import py2exe import py2exe
return { return {
"console" : [ { "script": "openerp-server", "icon_resources": [(1, join("install","openerp-icon.ico"))], }, 'console': [
{ "script": "openerp-gevent" }, {'script': 'odoo.py'},
{ "script": "odoo.py" }, {'script': 'openerp-gevent'},
{'script': 'openerp-server', 'icon_resources': [
(1, join('setup', 'win32', 'static', 'pixmaps', 'openerp-icon.ico'))
]},
], ],
'options' : { 'options': {
"py2exe": { 'py2exe': {
"skip_archive": 1, 'skip_archive': 1,
"optimize": 0, # keep the assert running, because the integrated tests rely on them. 'optimize': 0, # Keep the assert running as the integrated tests rely on them.
"dist_dir": 'dist', 'dist_dir': 'dist',
"packages": [ 'packages': [
"HTMLParser", 'asynchat', 'asyncore',
"PIL", 'commands',
"asynchat", "asyncore", 'dateutil',
"commands", 'decimal',
"dateutil", 'decorator',
"decimal", 'docutils',
"decorator", 'email',
"docutils", 'encodings',
"email", 'HTMLParser',
"encodings", 'imaplib',
"imaplib", 'jinja2',
"jinja2", 'lxml', 'lxml._elementpath', 'lxml.builder', 'lxml.etree', 'lxml.objectify',
"lxml", "lxml._elementpath", "lxml.builder", "lxml.etree", "lxml.objectify", 'mako',
"mako", 'markupsafe',
"markupsafe", # dependence of jinja2 and mako 'mock',
"mock", 'openerp',
"openerp", 'openid',
"passlib", 'PIL',
"poplib", 'poplib',
"psutil", 'psutil',
"pychart", 'pychart',
"pydot", 'pydot',
"pyparsing", 'pyparsing',
"pytz", 'pyPdf',
"reportlab", 'pytz',
"requests", 'reportlab',
"select", 'requests',
"simplejson", 'select',
"smtplib", 'simplejson',
"uuid", 'smtplib',
"vatnumber", 'uuid',
"vobject", 'vatnumber',
"win32service", "win32serviceutil", 'vobject',
"xlwt", 'win32service', 'win32serviceutil',
"xml", "xml.dom", 'xlwt',
"yaml", 'xml', 'xml.dom',
'yaml',
], ],
"excludes" : ["Tkconstants","Tkinter","tcl"], 'excludes': ['Tkconstants', 'Tkinter', 'tcl'],
} }
} },
'data_files': py2exe_datafiles()
} }
else: else:
return {} return {}
execfile(join(os.path.dirname(__file__), 'openerp', 'release.py'))
# Notes for OpenERP developer on windows: setup(
# name='openerp',
# To setup a windows developer evironement install python2.7 then pip and use version=version,
# "pip install <depencey>" for every dependency listed below. description=description,
# long_description=long_desc,
# Dependecies that requires DLLs are not installable with pip install, for url=url,
# them we added comments with links where you can find the installers. author=author,
# author_email=author_email,
# OpenERP on windows also require the pywin32, the binary can be found at classifiers=filter(None, classifiers.split('\n')),
# http://pywin32.sf.net license=license,
# scripts=['openerp-server', 'openerp-gevent', 'odoo.py'],
# Both python2.7 32bits and 64bits are known to work. packages=find_packages(),
package_dir={'%s' % lib_name: 'openerp'},
setuptools.setup( include_package_data=True,
name = 'openerp', dependency_links=['http://download.gna.org/pychart/'],
version = version, install_requires=[
description = description, 'babel >= 1.0',
long_description = long_desc, 'decorator',
url = url, 'docutils',
author = author, 'feedparser',
author_email = author_email, 'gevent',
classifiers = filter(None, classifiers.split("\n")), 'Jinja2',
license = license, 'lxml', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/
scripts = ['openerp-server', 'openerp-gevent', 'odoo.py'], 'mako',
data_files = data(), 'mock',
packages = setuptools.find_packages(), 'passlib',
dependency_links = ['http://download.gna.org/pychart/'], 'pillow', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/
#include_package_data = True, 'psutil', # windows binary code.google.com/p/psutil/downloads/list
install_requires = [ 'psycogreen',
'pychart', # not on pypi, use: pip install http://download.gna.org/pychart/PyChart-1.39.tar.gz 'psycopg2 >= 2.2',
'babel >= 1.0', 'pychart', # not on pypi, use: pip install http://download.gna.org/pychart/PyChart-1.39.tar.gz
'decorator', 'pydot',
'docutils', 'pyparsing < 2',
'feedparser', 'pypdf',
'gdata', 'pyserial',
'gevent', 'python-dateutil',
'psycogreen', 'python-ldap', # optional
'Jinja2', 'python-openid',
'lxml', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ 'pytz',
'mako', 'pyusb >= 1.0.0b1',
'mock', 'pyyaml',
'passlib', 'qrcode',
'pillow', # windows binary http://www.lfd.uci.edu/~gohlke/pythonlibs/ 'reportlab', # windows binary pypi.python.org/pypi/reportlab
'psutil', # windows binary code.google.com/p/psutil/downloads/list 'requests',
'psycopg2 >= 2.2', 'simplejson',
'pydot', 'unittest2',
'pyparsing < 2', 'vatnumber',
'pyserial', 'vobject',
'python-dateutil < 2', 'werkzeug',
'python-ldap', # optional 'xlwt',
'python-openid', ],
'pytz', extras_require={
'pyusb >= 1.0.0b1', 'SSL': ['pyopenssl'],
'pyyaml', },
'qrcode', tests_require=[
'reportlab', # windows binary pypi.python.org/pypi/reportlab 'unittest2',
'requests', 'mock',
'simplejson', ],
'unittest2', **py2exe_options()
'vatnumber',
'vobject',
'werkzeug',
'xlwt',
],
extras_require = {
'SSL' : ['pyopenssl'],
},
tests_require = ['unittest2', 'mock'],
**py2exe_options()
) )
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: