From 1b260624aa186b6ce3157128d6583ab6b0243b18 Mon Sep 17 00:00:00 2001 From: hvelarde Date: Fri, 4 Mar 2016 11:30:38 -0300 Subject: [PATCH 1/5] Update bootstrap.py --- bootstrap.py | 303 ++++++++++++++++++++------------------------------- 1 file changed, 118 insertions(+), 185 deletions(-) diff --git a/bootstrap.py b/bootstrap.py index 1cce2ce..a459921 100644 --- a/bootstrap.py +++ b/bootstrap.py @@ -18,75 +18,17 @@ use the -c option to specify an alternate configuration file. """ -import os, shutil, sys, tempfile, urllib, urllib2, subprocess +import os +import shutil +import sys +import tempfile + from optparse import OptionParser -if sys.platform == 'win32': - def quote(c): - if ' ' in c: - return '"%s"' % c # work around spawn lamosity on windows - else: - return c -else: - quote = str - -# See zc.buildout.easy_install._has_broken_dash_S for motivation and comments. -stdout, stderr = subprocess.Popen( - [sys.executable, '-Sc', - 'try:\n' - ' import ConfigParser\n' - 'except ImportError:\n' - ' print 1\n' - 'else:\n' - ' print 0\n'], - stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() -has_broken_dash_S = bool(int(stdout.strip())) - -# In order to be more robust in the face of system Pythons, we want to -# run without site-packages loaded. This is somewhat tricky, in -# particular because Python 2.6's distutils imports site, so starting -# with the -S flag is not sufficient. However, we'll start with that: -if not has_broken_dash_S and 'site' in sys.modules: - # We will restart with python -S. - args = sys.argv[:] - args[0:0] = [sys.executable, '-S'] - args = map(quote, args) - os.execv(sys.executable, args) -# Now we are running with -S. We'll get the clean sys.path, import site -# because distutils will do it later, and then reset the path and clean -# out any namespace packages from site-packages that might have been -# loaded by .pth files. -clean_path = sys.path[:] -import site # imported because of its side effects -sys.path[:] = clean_path -for k, v in sys.modules.items(): - if k in ('setuptools', 'pkg_resources') or ( - hasattr(v, '__path__') and - len(v.__path__) == 1 and - not os.path.exists(os.path.join(v.__path__[0], '__init__.py'))): - # This is a namespace package. Remove it. - sys.modules.pop(k) - -is_jython = sys.platform.startswith('java') - -setuptools_source = 'http://peak.telecommunity.com/dist/ez_setup.py' -distribute_source = 'http://python-distribute.org/distribute_setup.py' - - -# parsing arguments -def normalize_to_url(option, opt_str, value, parser): - if value: - if '://' not in value: # It doesn't smell like a URL. - value = 'file://%s' % ( - urllib.pathname2url( - os.path.abspath(os.path.expanduser(value))),) - if opt_str == '--download-base' and not value.endswith('/'): - # Download base needs a trailing slash to make the world happy. - value += '/' - else: - value = None - name = opt_str[2:].replace('-', '_') - setattr(parser.values, name, value) +__version__ = '2015-07-01' +# See zc.buildout's changelog if this version is up to date. + +tmpeggs = tempfile.mkdtemp(prefix='bootstrap-') usage = '''\ [DESIRED PYTHON FOR BUILDOUT] bootstrap.py [options] @@ -96,31 +38,14 @@ def normalize_to_url(option, opt_str, value, parser): Simply run this script in a directory containing a buildout.cfg, using the Python that you want bin/buildout to use. -Note that by using --setup-source and --download-base to point to -local resources, you can keep this script from going over the network. +Note that by using --find-links to point to local resources, you can keep +this script from going over the network. ''' parser = OptionParser(usage=usage) -parser.add_option("-v", "--version", dest="version", - help="use a specific zc.buildout version") -parser.add_option("-d", "--distribute", - action="store_true", dest="use_distribute", default=False, - help="Use Distribute rather than Setuptools.") -parser.add_option("--setup-source", action="callback", dest="setup_source", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or file location for the setup file. " - "If you use Setuptools, this will default to " + - setuptools_source + "; if you use Distribute, this " - "will default to " + distribute_source + ".")) -parser.add_option("--download-base", action="callback", dest="download_base", - callback=normalize_to_url, nargs=1, type="string", - help=("Specify a URL or directory for downloading " - "zc.buildout and either Setuptools or Distribute. " - "Defaults to PyPI.")) -parser.add_option("--eggs", - help=("Specify a directory for storing eggs. Defaults to " - "a temporary directory that is deleted when the " - "bootstrap script completes.")) +parser.add_option("--version", + action="store_true", default=False, + help=("Return bootstrap.py version.")) parser.add_option("-t", "--accept-buildout-test-releases", dest='accept_buildout_test_releases', action="store_true", default=False, @@ -130,95 +55,117 @@ def normalize_to_url(option, opt_str, value, parser): "extensions for you. If you use this flag, " "bootstrap and buildout will get the newest releases " "even if they are alphas or betas.")) -parser.add_option("-c", None, action="store", dest="config_file", - help=("Specify the path to the buildout configuration " - "file to be used.")) +parser.add_option("-c", "--config-file", + help=("Specify the path to the buildout configuration " + "file to be used.")) +parser.add_option("-f", "--find-links", + help=("Specify a URL to search for buildout releases")) +parser.add_option("--allow-site-packages", + action="store_true", default=False, + help=("Let bootstrap.py use existing site packages")) +parser.add_option("--buildout-version", + help="Use a specific zc.buildout version") +parser.add_option("--setuptools-version", + help="Use a specific setuptools version") +parser.add_option("--setuptools-to-dir", + help=("Allow for re-use of existing directory of " + "setuptools versions")) options, args = parser.parse_args() +if options.version: + print("bootstrap.py version %s" % __version__) + sys.exit(0) -if options.eggs: - eggs_dir = os.path.abspath(os.path.expanduser(options.eggs)) -else: - eggs_dir = tempfile.mkdtemp() - -if options.setup_source is None: - if options.use_distribute: - options.setup_source = distribute_source - else: - options.setup_source = setuptools_source -if options.accept_buildout_test_releases: - args.insert(0, 'buildout:accept-buildout-test-releases=true') +###################################################################### +# load/install setuptools try: - import pkg_resources - import setuptools # A flag. Sometimes pkg_resources is installed alone. - if not hasattr(pkg_resources, '_distribute'): - raise ImportError + from urllib.request import urlopen except ImportError: - ez_code = urllib2.urlopen( - options.setup_source).read().replace('\r\n', '\n') - ez = {} - exec ez_code in ez - setup_args = dict(to_dir=eggs_dir, download_delay=0) - if options.download_base: - setup_args['download_base'] = options.download_base - if options.use_distribute: - setup_args['no_fake'] = True - if sys.version_info[:2] == (2, 4): - setup_args['version'] = '0.6.32' - ez['use_setuptools'](**setup_args) - if 'pkg_resources' in sys.modules: - reload(sys.modules['pkg_resources']) - import pkg_resources - # This does not (always?) update the default working set. We will - # do it. - for path in sys.path: - if path not in pkg_resources.working_set.entries: - pkg_resources.working_set.add_entry(path) - -cmd = [quote(sys.executable), - '-c', - quote('from setuptools.command.easy_install import main; main()'), - '-mqNxd', - quote(eggs_dir)] - -if not has_broken_dash_S: - cmd.insert(1, '-S') - -find_links = options.download_base -if not find_links: - find_links = os.environ.get('bootstrap-testing-find-links') -if not find_links and options.accept_buildout_test_releases: - find_links = 'http://downloads.buildout.org/' -if find_links: - cmd.extend(['-f', quote(find_links)]) + from urllib2 import urlopen -if options.use_distribute: - setup_requirement = 'distribute' +ez = {} +if os.path.exists('ez_setup.py'): + exec(open('ez_setup.py').read(), ez) else: - setup_requirement = 'setuptools' + exec(urlopen('https://bootstrap.pypa.io/ez_setup.py').read(), ez) + +if not options.allow_site_packages: + # ez_setup imports site, which adds site packages + # this will remove them from the path to ensure that incompatible versions + # of setuptools are not in the path + import site + # inside a virtualenv, there is no 'getsitepackages'. + # We can't remove these reliably + if hasattr(site, 'getsitepackages'): + for sitepackage_path in site.getsitepackages(): + # Strip all site-packages directories from sys.path that + # are not sys.prefix; this is because on Windows + # sys.prefix is a site-package directory. + if sitepackage_path != sys.prefix: + sys.path[:] = [x for x in sys.path + if sitepackage_path not in x] + +setup_args = dict(to_dir=tmpeggs, download_delay=0) + +if options.setuptools_version is not None: + setup_args['version'] = options.setuptools_version +if options.setuptools_to_dir is not None: + setup_args['to_dir'] = options.setuptools_to_dir + +ez['use_setuptools'](**setup_args) +import setuptools +import pkg_resources + +# This does not (always?) update the default working set. We will +# do it. +for path in sys.path: + if path not in pkg_resources.working_set.entries: + pkg_resources.working_set.add_entry(path) + +###################################################################### +# Install buildout + ws = pkg_resources.working_set -setup_requirement_path = ws.find( - pkg_resources.Requirement.parse(setup_requirement)).location -env = dict( - os.environ, - PYTHONPATH=setup_requirement_path) + +setuptools_path = ws.find( + pkg_resources.Requirement.parse('setuptools')).location + +# Fix sys.path here as easy_install.pth added before PYTHONPATH +cmd = [sys.executable, '-c', + 'import sys; sys.path[0:0] = [%r]; ' % setuptools_path + + 'from setuptools.command.easy_install import main; main()', + '-mZqNxd', tmpeggs] + +find_links = os.environ.get( + 'bootstrap-testing-find-links', + options.find_links or + ('http://downloads.buildout.org/' + if options.accept_buildout_test_releases else None) + ) +if find_links: + cmd.extend(['-f', find_links]) requirement = 'zc.buildout' -version = options.version +version = options.buildout_version if version is None and not options.accept_buildout_test_releases: # Figure out the most recent final version of zc.buildout. import setuptools.package_index _final_parts = '*final-', '*final' def _final_version(parsed_version): - for part in parsed_version: - if (part[:1] == '*') and (part not in _final_parts): - return False - return True + try: + return not parsed_version.is_prerelease + except AttributeError: + # Older setuptools + for part in parsed_version: + if (part[:1] == '*') and (part not in _final_parts): + return False + return True + index = setuptools.package_index.PackageIndex( - search_path=[setup_requirement_path]) + search_path=[setuptools_path]) if find_links: index.add_find_links((find_links,)) req = pkg_resources.Requirement.parse(requirement) @@ -227,8 +174,6 @@ def _final_version(parsed_version): bestv = None for dist in index[req.project_name]: distv = dist.parsed_version - if distv >= pkg_resources.parse_version('2dev'): - continue if _final_version(distv): if bestv is None or distv > bestv: best = [dist] @@ -238,40 +183,28 @@ def _final_version(parsed_version): if best: best.sort() version = best[-1].version - if version: - requirement += '=='+version -else: - requirement += '<2dev' - + requirement = '=='.join((requirement, version)) cmd.append(requirement) -if is_jython: - import subprocess - exitcode = subprocess.Popen(cmd, env=env).wait() -else: # Windows prefers this, apparently; otherwise we would prefer subprocess - exitcode = os.spawnle(*([os.P_WAIT, sys.executable] + cmd + [env])) -if exitcode != 0: - sys.stdout.flush() - sys.stderr.flush() - print ("An error occurred when trying to install zc.buildout. " - "Look above this message for any errors that " - "were output by easy_install.") - sys.exit(exitcode) - -ws.add_entry(eggs_dir) +import subprocess +if subprocess.call(cmd) != 0: + raise Exception( + "Failed to execute command:\n%s" % repr(cmd)[1:-1]) + +###################################################################### +# Import and run buildout + +ws.add_entry(tmpeggs) ws.require(requirement) import zc.buildout.buildout -# If there isn't already a command in the args, add bootstrap if not [a for a in args if '=' not in a]: args.append('bootstrap') - -# if -c was provided, we push it back into args for buildout's main function +# if -c was provided, we push it back into args for buildout' main function if options.config_file is not None: args[0:0] = ['-c', options.config_file] zc.buildout.buildout.main(args) -if not options.eggs: # clean up temporary egg directory - shutil.rmtree(eggs_dir) +shutil.rmtree(tmpeggs) From 3723d131b36b59c168fd6cb8e1bdd0aa7bb442f6 Mon Sep 17 00:00:00 2001 From: hvelarde Date: Fri, 4 Mar 2016 11:31:56 -0300 Subject: [PATCH 2/5] Update code analysis part --- buildout.cfg | 23 +++++++++++++---------- setup.cfg | 7 +++++++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/buildout.cfg b/buildout.cfg index f47e869..75edcb2 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -18,18 +18,14 @@ parts += precompile [code-analysis] -recipe = plone.recipe.codeanalysis +recipe = plone.recipe.codeanalysis[recommended] directory = ${buildout:directory}/src/brasil/gov/agenda -pre-commit-hook = True -flake8-ignore = E501 clean-lines = True -csslint = True -csslint-bin = bin/csslint -deprecated-aliases = True -imports = True -prefer-single-quotes = True -return-status-codes = True -utf8-header = True +multiprocessing = True +pre-commit-hook = True +return-status-codes = False +flake8 = True +flake8-ignore = E501,I001,P001,T000 [i18ndude] recipe = zc.recipe.egg @@ -43,6 +39,13 @@ eggs = ${test:eggs} plone.app.contenttypes = 1.0 plone.dexterity = 2.2.3 zope.configuration = 3.8.0 + +# use latest version of coverage and setuptools +coverage = +setuptools = +# XXX: https://github.com/zheller/flake8-quotes/issues/23 +flake8-quotes = 0.1.2 + # FIXME: Pinagem para não quebrar o build. Necessária enquanto relato # https://github.com/collective/collective.cover/issues/492 não for resolvido. # Versão 3.3.1 de collective.js.bootstrap passa a pedir como dependência diff --git a/setup.cfg b/setup.cfg index 6aea515..6998089 100644 --- a/setup.cfg +++ b/setup.cfg @@ -9,3 +9,10 @@ ignore = Makefile bootstrap.py *.cfg + +[isort] +force_alphabetical_sort = True +force_single_line = True +lines_after_imports = 2 +line_length = 200 +not_skip = __init__.py From 99a576dc504a4727d5a44f82ffc97965f7e56fff Mon Sep 17 00:00:00 2001 From: hvelarde Date: Fri, 4 Mar 2016 12:51:17 -0300 Subject: [PATCH 3/5] Reduce the level of magic in the package - Explicitly register dependencies' ZCML - Remove Grok from content types factories --- src/brasil/gov/agenda/configure.zcml | 4 +++- src/brasil/gov/agenda/content/agenda.py | 5 ++--- src/brasil/gov/agenda/content/agendadiaria.py | 5 ++--- src/brasil/gov/agenda/content/compromisso.py | 5 ++--- 4 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/brasil/gov/agenda/configure.zcml b/src/brasil/gov/agenda/configure.zcml index b508d6f..f34da2d 100644 --- a/src/brasil/gov/agenda/configure.zcml +++ b/src/brasil/gov/agenda/configure.zcml @@ -7,8 +7,10 @@ i18n_domain="brasil.gov.agenda"> + + + - diff --git a/src/brasil/gov/agenda/content/agenda.py b/src/brasil/gov/agenda/content/agenda.py index 099fff3..d74fb5f 100644 --- a/src/brasil/gov/agenda/content/agenda.py +++ b/src/brasil/gov/agenda/content/agenda.py @@ -1,15 +1,14 @@ # -*- coding: utf-8 -*- from brasil.gov.agenda.interfaces import IAgenda -from five import grok from plone.dexterity.content import Container from plone.indexer.decorator import indexer +from zope.interface import implementer +@implementer(IAgenda) class Agenda(Container): """Agenda de um membro do Governo Brasileiro""" - grok.implements(IAgenda) - @indexer(IAgenda) def tags(obj): diff --git a/src/brasil/gov/agenda/content/agendadiaria.py b/src/brasil/gov/agenda/content/agendadiaria.py index b6cbaee..431f985 100644 --- a/src/brasil/gov/agenda/content/agendadiaria.py +++ b/src/brasil/gov/agenda/content/agendadiaria.py @@ -9,7 +9,6 @@ from brasil.gov.agenda.interfaces import IAgendaDiaria from brasil.gov.agenda.interfaces import ICompromisso -from five import grok from plone import api from plone.dexterity.content import Container from plone.indexer.decorator import indexer @@ -18,16 +17,16 @@ from z3c.form.validator import SimpleFieldValidator from zope.component import getMultiAdapter from zope.i18nmessageid import Message +from zope.interface import implementer from zope.interface import Invalid from zope.interface import provider from zope.schema.interfaces import IContextAwareDefaultFactory +@implementer(IAgendaDiaria) class AgendaDiaria(Container): """Agenda Diaria.""" - grok.implements(IAgendaDiaria) - def Title(self): """ Retorna titulo calculado com autoridade e data """ diff --git a/src/brasil/gov/agenda/content/compromisso.py b/src/brasil/gov/agenda/content/compromisso.py index 32b567f..2b5c823 100644 --- a/src/brasil/gov/agenda/content/compromisso.py +++ b/src/brasil/gov/agenda/content/compromisso.py @@ -4,20 +4,19 @@ from brasil.gov.agenda.interfaces import IAgendaDiaria from brasil.gov.agenda.interfaces import ICompromisso -from five import grok from plone.dexterity.content import Container from plone.indexer.decorator import indexer +from zope.interface import implementer from zope.interface import provider from zope.schema.interfaces import IContextAwareDefaultFactory import datetime +@implementer(ICompromisso) class Compromisso(Container): """Compromisso.""" - grok.implements(ICompromisso) - def exclude_from_nav(self): """ Compromisso nao eh visivel na navegacao do portal """ From 82268bda201402e77ee027afde03330b7a2e02a8 Mon Sep 17 00:00:00 2001 From: hvelarde Date: Fri, 4 Mar 2016 12:55:32 -0300 Subject: [PATCH 4/5] Remove version restrictions Package is now compatible with plone.dexterity >= 2.2.4 and Plone > 4.3.3. We have to deal with an issue with IContextAwareDefaultFactory in tests. For more information, see https://stackoverflow.com/q/35799092/644075 --- CHANGES.rst | 5 ++++- buildout.cfg | 1 - setup.py | 7 +++---- src/brasil/gov/agenda/content/agendadiaria.py | 10 ++++++++++ src/brasil/gov/agenda/content/compromisso.py | 10 ++++++++++ 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 07c72a3..e6f2eb9 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,7 +4,9 @@ Alterações 1.1 (unreleased) ^^^^^^^^^^^^^^^^ -- Nothing changed yet. +- Corrige problema de compatibilidade com o plone.dexterity > 2.2.3; + o pacote agora é compatível com o Plone > 4.3.3 (closes `#32`_). + [hvelarde] 1.0 (2015-09-03) @@ -172,4 +174,5 @@ Alterações .. _`#12`: https://github.com/plonegovbr/brasil.gov.agenda/issues/12 .. _`#18`: https://github.com/plonegovbr/brasil.gov.agenda/issues/18 .. _`#23`: https://github.com/plonegovbr/brasil.gov.agenda/issues/23 +.. _`#32`: https://github.com/plonegovbr/brasil.gov.agenda/issues/32 .. _`#37`: https://github.com/plonegovbr/brasil.gov.agenda/issues/37 diff --git a/buildout.cfg b/buildout.cfg index 75edcb2..e885676 100644 --- a/buildout.cfg +++ b/buildout.cfg @@ -37,7 +37,6 @@ eggs = ${test:eggs} [versions] plone.app.contenttypes = 1.0 -plone.dexterity = 2.2.3 zope.configuration = 3.8.0 # use latest version of coverage and setuptools diff --git a/setup.py b/setup.py index 3bf70dc..d96de0f 100644 --- a/setup.py +++ b/setup.py @@ -51,11 +51,10 @@ 'plone.app.versioningbehavior', 'plone.app.vocabularies', 'plone.behavior', - # FIXME: https://github.com/plonegovbr/brasil.gov.agenda/issues/32 - 'plone.dexterity<2.2.4', + 'plone.dexterity', 'plone.directives.form', 'plone.portlets', - 'plone.supermodel >=1.2.3', + 'plone.supermodel', 'plone.uuid', 'Products.CMFCore', 'Products.CMFPlone >=4.3', @@ -68,7 +67,7 @@ extras_require={ 'test': [ 'plone.app.robotframework', - 'plone.app.testing [robot] >=4.2.2', + 'plone.app.testing [robot]', 'plone.browserlayer', 'plone.testing', ], diff --git a/src/brasil/gov/agenda/content/agendadiaria.py b/src/brasil/gov/agenda/content/agendadiaria.py index 431f985..65fede7 100644 --- a/src/brasil/gov/agenda/content/agendadiaria.py +++ b/src/brasil/gov/agenda/content/agendadiaria.py @@ -13,6 +13,7 @@ from plone.dexterity.content import Container from plone.indexer.decorator import indexer from plone.supermodel.interfaces import IDefaultFactory +from Products.CMFPlone.utils import safe_hasattr from z3c.form.validator import SimpleFieldValidator from zope.component import getMultiAdapter @@ -74,16 +75,25 @@ def default_autoridade(context): """ Por padrao utilizamos a autoridade definida no objeto pai """ + # XXX: deal with testing issues https://stackoverflow.com/q/35799092/644075 + if not safe_hasattr(context, 'aq_parent'): + return u'' return getattr(context, 'autoridade', u'') @provider(IContextAwareDefaultFactory) def default_location(context): + # XXX: deal with testing issues https://stackoverflow.com/q/35799092/644075 + if not safe_hasattr(context, 'aq_parent'): + return u'' return getattr(context, 'location', u'') @provider(IContextAwareDefaultFactory) def default_subjects(context): + # XXX: deal with testing issues https://stackoverflow.com/q/35799092/644075 + if not safe_hasattr(context, 'aq_parent'): + return () return getattr(context, 'subjects', ()) diff --git a/src/brasil/gov/agenda/content/compromisso.py b/src/brasil/gov/agenda/content/compromisso.py index 2b5c823..2d5d4c7 100644 --- a/src/brasil/gov/agenda/content/compromisso.py +++ b/src/brasil/gov/agenda/content/compromisso.py @@ -6,6 +6,7 @@ from plone.dexterity.content import Container from plone.indexer.decorator import indexer +from Products.CMFPlone.utils import safe_hasattr from zope.interface import implementer from zope.interface import provider from zope.schema.interfaces import IContextAwareDefaultFactory @@ -25,16 +26,25 @@ def exclude_from_nav(self): @provider(IContextAwareDefaultFactory) def default_autoridade(context): + # XXX: deal with testing issues https://stackoverflow.com/q/35799092/644075 + if not safe_hasattr(context, 'aq_parent'): + return u'' return getattr(context, 'autoridade', u'') @provider(IContextAwareDefaultFactory) def default_location(context): + # XXX: deal with testing issues https://stackoverflow.com/q/35799092/644075 + if not safe_hasattr(context, 'aq_parent'): + return u'' return getattr(context, 'location', u'') @provider(IContextAwareDefaultFactory) def default_subjects(context): + # XXX: deal with testing issues https://stackoverflow.com/q/35799092/644075 + if not safe_hasattr(context, 'aq_parent'): + return () return getattr(context, 'subjects', ()) From a82f00157dd58dbe383199fc826ab91b54d49aa3 Mon Sep 17 00:00:00 2001 From: hvelarde Date: Fri, 4 Mar 2016 13:12:54 -0300 Subject: [PATCH 5/5] Update package dependencies --- CHANGES.rst | 3 +++ setup.py | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index e6f2eb9..32c7e1f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -4,6 +4,9 @@ Alterações 1.1 (unreleased) ^^^^^^^^^^^^^^^^ +- A lista de dependências do pacote foi atualizada. + [hvelarde] + - Corrige problema de compatibilidade com o plone.dexterity > 2.2.3; o pacote agora é compatível com o Plone > 4.3.3 (closes `#32`_). [hvelarde] diff --git a/setup.py b/setup.py index d96de0f..174e08a 100644 --- a/setup.py +++ b/setup.py @@ -39,7 +39,8 @@ include_package_data=True, zip_safe=False, install_requires=[ - 'brasil.gov.tiles', + 'Acquisition', + 'collective.cover', 'collective.portlet.calendar', 'plone.api', 'plone.app.content', @@ -47,21 +48,32 @@ 'plone.app.dexterity [grok]', 'plone.app.portlets', 'plone.app.referenceablebehavior', + 'plone.app.textfield', 'plone.app.upgrade', + 'plone.app.uuid', 'plone.app.versioningbehavior', 'plone.app.vocabularies', 'plone.behavior', 'plone.dexterity', 'plone.directives.form', + 'plone.indexer', + 'plone.memoize', 'plone.portlets', 'plone.supermodel', 'plone.uuid', + 'Products.ATContentTypes', 'Products.CMFCore', 'Products.CMFPlone >=4.3', + 'Products.CMFQuickInstallerTool', 'Products.GenericSetup', 'setuptools', 'zope.component', + 'zope.container', + 'zope.event', + 'zope.i18nmessageid', 'zope.interface', + 'zope.lifecycleevent', + 'zope.publisher', 'zope.schema', ], extras_require={ @@ -69,7 +81,11 @@ 'plone.app.robotframework', 'plone.app.testing [robot]', 'plone.browserlayer', + 'plone.namedfile', 'plone.testing', + 'robotsuite', + 'transaction', + 'zope.site', ], }, entry_points='''