zope.error-3.7.2/0000755000175000017500000000000011463034135011704 5ustar adiadizope.error-3.7.2/bootstrap.py0000644000175000017500000000330211463034130014264 0ustar adiadi############################################################################## # # Copyright (c) 2006 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Bootstrap a buildout-based project Simply run this script in a directory containing a buildout.cfg. The script accepts buildout command-line options, so you can use the -c option to specify an alternate configuration file. """ import os, shutil, sys, tempfile, urllib2 tmpeggs = tempfile.mkdtemp() ez = {} exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py' ).read() in ez ez['use_setuptools'](to_dir=tmpeggs, download_delay=0) import pkg_resources cmd = 'from setuptools.command.easy_install import main; main()' if sys.platform == 'win32': cmd = '"%s"' % cmd # work around spawn lamosity on windows ws = pkg_resources.working_set assert os.spawnle( os.P_WAIT, sys.executable, sys.executable, '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout', dict(os.environ, PYTHONPATH= ws.find(pkg_resources.Requirement.parse('setuptools')).location ), ) == 0 ws.add_entry(tmpeggs) ws.require('zc.buildout') import zc.buildout.buildout zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap']) shutil.rmtree(tmpeggs) zope.error-3.7.2/setup.cfg0000644000175000017500000000007311463034135013525 0ustar adiadi[egg_info] tag_build = tag_date = 0 tag_svn_revision = 0 zope.error-3.7.2/buildout.cfg0000644000175000017500000000015211463034130014205 0ustar adiadi[buildout] develop = . parts = test [test] recipe = zc.recipe.testrunner eggs = zope.error [test] zope.error-3.7.2/README.txt0000644000175000017500000000012011463034130013366 0ustar adiadiThis package provides an error reporting utility which is able to store errors. zope.error-3.7.2/COPYRIGHT.txt0000644000175000017500000000004011463034130014002 0ustar adiadiZope Foundation and Contributorszope.error-3.7.2/setup.py0000644000175000017500000000462611463034130013421 0ustar adiadi############################################################################## # # Copyright (c) 2006 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## # This package is developed by the Zope Toolkit project, documented here: # http://docs.zope.org/zopetoolkit # When developing and releasing this package, please follow the documented # Zope Toolkit policies as described by this documentation. ############################################################################## """Setup for zope.error package """ import os from setuptools import setup, find_packages def read(*rnames): return open(os.path.join(os.path.dirname(__file__), *rnames)).read() setup(name='zope.error', version='3.7.2', author='Zope Foundation and Contributors', author_email='zope-dev@zope.org', description = "An error reporting utility for Zope3", long_description=( read('README.txt') + '\n\n' + read('CHANGES.txt') ), license='ZPL 2.1', keywords = "zope3 error", classifiers = [ 'Development Status :: 5 - Production/Stable', 'Environment :: Web Environment', 'Intended Audience :: Developers', 'License :: OSI Approved :: Zope Public License', 'Programming Language :: Python', 'Natural Language :: English', 'Operating System :: OS Independent', 'Topic :: Internet :: WWW/HTTP', 'Framework :: Zope3'], url='http://pypi.python.org/pypi/zope.error', packages=find_packages('src'), package_dir = {'': 'src'}, namespace_packages=['zope',], install_requires=['setuptools', 'zope.exceptions', 'zope.interface', 'zope.location', 'ZODB3', # error.py imports from persistent ], extras_require=dict( test=[ 'zope.testing', ]), include_package_data = True, zip_safe = False, ) zope.error-3.7.2/PKG-INFO0000644000175000017500000000531311463034135013003 0ustar adiadiMetadata-Version: 1.0 Name: zope.error Version: 3.7.2 Summary: An error reporting utility for Zope3 Home-page: http://pypi.python.org/pypi/zope.error Author: Zope Foundation and Contributors Author-email: zope-dev@zope.org License: ZPL 2.1 Description: This package provides an error reporting utility which is able to store errors. ======= CHANGES ======= 3.7.2 (2010-10-30) ------------------ - Set ``copy_to_zlog`` by default to 1/True. Having it turned off is a small problem, because fatal (startup) errors will not get logged anywhere. 3.7.1 (2010-09-25) ------------------ - Added test extra to declare test dependency on ``zope.testing``. 3.7.0 (2009-09-29) ------------------ - Cleaned up dependencies. Droped all testing dependencies as we only need zope.testing now. - Fixed ImportError when zope.testing is not available for some reason. - Removed zcml slug and old zpkg-related files. - Removed word "version" from changelog entries. - Changed package's mailing list address to zope-dev at zope.org as zope3-dev at zope.org is now retired. Also changed `cheeseshop` to `pypi` in the package's homepage url. - Added dependency on ZODB3 as we use Persistent. - Used a mock request for testing. Dropped the dependency on zope.publisher which was really only a testing dependency. - Reduced the dependency on zope.container to one on zope.location by no longer using the Contained mix-in class. 3.6.0 (2009-01-31) ------------------ - Use zope.container instead of zope.app.container - Move error log bootstrapping logic (which was untested) to ``zope.app.appsetup``, to which we added a test. 3.5.1 (2007-09-27) ------------------ - rebumped to replace faulty egg 3.5.0 ----- - Initial documented release - Moved core components from ``zope.app.error`` to this package. Keywords: zope3 error Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Topic :: Internet :: WWW/HTTP Classifier: Framework :: Zope3 zope.error-3.7.2/LICENSE.txt0000644000175000017500000000402611463034130013524 0ustar adiadiZope Public License (ZPL) Version 2.1 A copyright notice accompanies this license document that identifies the copyright holders. This license has been certified as open source. It has also been designated as GPL compatible by the Free Software Foundation (FSF). Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions in source code must retain the accompanying copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the accompanying copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Names of the copyright holders must not be used to endorse or promote products derived from this software without prior written permission from the copyright holders. 4. The right to distribute this software or to use it for any purpose does not give you the right to use Servicemarks (sm) or Trademarks (tm) of the copyright holders. Use of them is covered by separate agreement with the copyright holders. 5. If any files are modified, you must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. Disclaimer THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. zope.error-3.7.2/src/0000755000175000017500000000000011463034135012473 5ustar adiadizope.error-3.7.2/src/zope/0000755000175000017500000000000011463034135013450 5ustar adiadizope.error-3.7.2/src/zope/error/0000755000175000017500000000000011463034135014601 5ustar adiadizope.error-3.7.2/src/zope/error/tests.py0000644000175000017500000001164311463034130016315 0ustar adiadi############################################################################## # # Copyright (c) 2001, 2002 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Error Reporting Utility Tests """ import sys import unittest from zope.exceptions.exceptionformatter import format_exception from zope.testing import cleanup from zope.error.error import ErrorReportingUtility, getFormattedException class Error(Exception): def __init__(self, value): self.value = value def __str__(self): return self.value def getAnErrorInfo(value=""): try: raise Error(value) except: return sys.exc_info() class TestRequest(object): """Mock request that mimics the zope.publisher request.""" def __init__(self, environ=None): self._environ = environ or {} def setPrincipal(self, principal): self.principal = principal def items(self): return [] class ErrorReportingUtilityTests(cleanup.CleanUp, unittest.TestCase): def test_checkForEmptyLog(self): # Test Check Empty Log errUtility = ErrorReportingUtility() getProp = errUtility.getLogEntries() self.failIf(getProp) def test_checkProperties(self): # Test Properties test errUtility = ErrorReportingUtility() setProp = { 'keep_entries':10, 'copy_to_zlog':1, 'ignored_exceptions':() } errUtility.setProperties(**setProp) getProp = errUtility.getProperties() self.assertEqual(setProp, getProp) def test_ErrorLog(self): # Test for Logging Error. Create one error and check whether its # logged or not. errUtility = ErrorReportingUtility() exc_info = getAnErrorInfo() errUtility.raising(exc_info) getErrLog = errUtility.getLogEntries() self.assertEquals(1, len(getErrLog)) tb_text = ''.join(format_exception(as_html=0, *exc_info)) err_id = getErrLog[0]['id'] self.assertEquals(tb_text, errUtility.getLogEntryById(err_id)['tb_text']) def test_ErrorLog_unicode(self): # Emulate a unicode url, it gets encoded to utf-8 before it's passed # to the request. Also add some unicode field to the request's # environment and make the principal's title unicode. request = TestRequest(environ={'PATH_INFO': '/\xd1\x82', 'SOME_UNICODE': u'\u0441'}) class PrincipalStub(object): id = u'\u0441' title = u'\u0441' description = u'\u0441' request.setPrincipal(PrincipalStub()) errUtility = ErrorReportingUtility() exc_info = getAnErrorInfo(u"Error (\u0441)") errUtility.raising(exc_info, request=request) getErrLog = errUtility.getLogEntries() self.assertEquals(1, len(getErrLog)) tb_text = ''.join(format_exception(as_html=0, *exc_info)) err_id = getErrLog[0]['id'] self.assertEquals(tb_text, errUtility.getLogEntryById(err_id)['tb_text']) username = getErrLog[0]['username'] self.assertEquals(username, u'unauthenticated, \u0441, \u0441, \u0441') def test_ErrorLog_nonascii(self): # Emulate a unicode url, it gets encoded to utf-8 before it's passed # to the request. Also add some unicode field to the request's # environment and make the principal's title unicode. request = TestRequest(environ={'PATH_INFO': '/\xd1\x82', 'SOME_NONASCII': '\xe1'}) class PrincipalStub(object): id = '\xe1' title = '\xe1' description = '\xe1' request.setPrincipal(PrincipalStub()) errUtility = ErrorReportingUtility() exc_info = getAnErrorInfo("Error (\xe1)") errUtility.raising(exc_info, request=request) getErrLog = errUtility.getLogEntries() self.assertEquals(1, len(getErrLog)) tb_text = getFormattedException(exc_info) err_id = getErrLog[0]['id'] self.assertEquals(tb_text, errUtility.getLogEntryById(err_id)['tb_text']) username = getErrLog[0]['username'] self.assertEquals(username, r"unauthenticated, \xe1, \xe1, \xe1") def test_suite(): return unittest.TestSuite(( unittest.makeSuite(ErrorReportingUtilityTests), )) if __name__ == '__main__': unittest.main(defaultTest='test_suite') zope.error-3.7.2/src/zope/error/configure.zcml0000644000175000017500000000166411463034130017453 0ustar adiadi zope.error-3.7.2/src/zope/error/interfaces.py0000644000175000017500000000304711463034130017275 0ustar adiadi############################################################################## # # Copyright (c) 2001, 2002 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Error Reporting Utility interfaces """ __docformat__ = 'restructuredtext' from zope.interface import Interface class IErrorReportingUtility(Interface): """Error Reporting Utility""" def raising(info, request=None): """Logs an exception.""" class ILocalErrorReportingUtility(Interface): """Local Error Reporting Utility This interface contains additional management functions. """ def getProperties(): """Gets the properties as dictionary. keep_entries, copy_to_logfile, ignored_exceptions """ def setProperties(keep_entries, copy_to_zlog=1, ignored_exceptions=(), RESPONSE=None): """Sets the properties keep_entries, copy_to_logfile, ignored_exceptions """ def getLogEntries(): """Returns the entries in the log, most recent first.""" def getLogEntryById(id): """Return LogEntry by ID""" zope.error-3.7.2/src/zope/error/__init__.py0000644000175000017500000000001611463034130016702 0ustar adiadi# import this zope.error-3.7.2/src/zope/error/error.py0000644000175000017500000002233611463034130016305 0ustar adiadi############################################################################## # # Copyright (c) 2001, 2002 Zope Foundation and Contributors. # All Rights Reserved. # # This software is subject to the provisions of the Zope Public License, # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS # FOR A PARTICULAR PURPOSE. # ############################################################################## """Error Reporting Utility This is a port of the Zope 2 error reporting object """ __docformat__ = 'restructuredtext' import time import logging import codecs from persistent import Persistent from random import random from threading import Lock from zope.exceptions.exceptionformatter import format_exception from zope.interface import implements from zope.error.interfaces import IErrorReportingUtility from zope.error.interfaces import ILocalErrorReportingUtility import zope.location.interfaces #Restrict the rate at which errors are sent to the Event Log _rate_restrict_pool = {} # The number of seconds that must elapse on average between sending two # exceptions of the same name into the the Event Log. one per minute. _rate_restrict_period = 60 # The number of exceptions to allow in a burst before the above limit # kicks in. We allow five exceptions, before limiting them to one per # minute. _rate_restrict_burst = 5 # _temp_logs holds the logs. _temp_logs = {} # { oid -> [ traceback string ] } cleanup_lock = Lock() logger = logging.getLogger('SiteError') def printedreplace(error): symbols = (ur"\x%02x" % ord(s) for s in error.object[error.start:error.end]) return u"".join(symbols), error.end codecs.register_error("zope.error.printedreplace", printedreplace) def getPrintable(value): if not isinstance(value, unicode): if not isinstance(value, str): # A call to str(obj) could raise anything at all. # We'll ignore these errors, and print something # useful instead, but also log the error. try: value = str(value) except: logger.exception( "Error in ErrorReportingUtility while getting a str" " representation of an object") return u"" % type(value).__name__ value = unicode(value, errors="zope.error.printedreplace") return value def getFormattedException(info, as_html=False): lines = [] for line in format_exception(as_html=as_html, *info): line = getPrintable(line) if not line.endswith("\n"): if not as_html: line += "\n" else: line += "
\n" lines.append(line) return u"".join(lines) class ErrorReportingUtility(Persistent): """Error Reporting Utility""" implements(IErrorReportingUtility, ILocalErrorReportingUtility, zope.location.interfaces.IContained) __parent__ = __name__ = None keep_entries = 20 copy_to_zlog = 1 _ignored_exceptions = ('Unauthorized',) def _getLog(self): """Returns the log for this object. Careful, the log is shared between threads. """ log = _temp_logs.get(self._p_oid, None) if log is None: log = [] _temp_logs[self._p_oid] = log return log def _getUsername(self, request): username = None principal = getattr(request, "principal", None) if principal is None: return username # UnauthenticatedPrincipal does not have getLogin() getLogin = getattr(principal, "getLogin", None) if getLogin is None: login = "unauthenticated" else: try: login = getLogin() except: logger.exception("Error in ErrorReportingUtility while" " getting login of the principal") login = u"" parts = [] for part in [ login, getattr(principal, "id", u""), getattr(principal, "title", u""), getattr(principal, "description", u"") ]: part = getPrintable(part) parts.append(part) username = u", ".join(parts) return username def _getRequestAsHTML(self, request): lines = [] for key, value in request.items(): lines.append(u"%s: %s
\n" % ( getPrintable(key), getPrintable(value))) return u"".join(lines) # Exceptions that happen all the time, so we dont need # to log them. Eventually this should be configured # through-the-web. def raising(self, info, request=None): """Log an exception. Called by ZopePublication.handleException method. """ now = time.time() try: strtype = unicode(getattr(info[0], '__name__', info[0])) if strtype in self._ignored_exceptions: return tb_text = None tb_html = None if not isinstance(info[2], basestring): tb_text = getFormattedException(info) tb_html = getFormattedException(info, True) else: tb_text = getPrintable(info[2]) url = None username = None req_html = None if request: # TODO: Temporary fix, which Steve should undo. URL is # just too HTTPRequest-specific. if hasattr(request, 'URL'): url = request.URL username = self._getUsername(request) req_html = self._getRequestAsHTML(request) strv = getPrintable(info[1]) log = self._getLog() entry_id = str(now) + str(random()) # Low chance of collision log.append({ 'type': strtype, 'value': strv, 'time': time.ctime(now), 'id': entry_id, 'tb_text': tb_text, 'tb_html': tb_html, 'username': username, 'url': url, 'req_html': req_html, }) cleanup_lock.acquire() try: if len(log) >= self.keep_entries: del log[:-self.keep_entries] finally: cleanup_lock.release() if self.copy_to_zlog: self._do_copy_to_zlog(now, strtype, str(url), info) finally: info = None def _do_copy_to_zlog(self, now, strtype, url, info): # info is unused; logging.exception() will call sys.exc_info() # work around this with an evil hack when = _rate_restrict_pool.get(strtype,0) if now > when: next_when = max(when, now - _rate_restrict_burst * _rate_restrict_period) next_when += _rate_restrict_period _rate_restrict_pool[strtype] = next_when try: raise info[0], info[1], info[2] except: logger.exception(str(url)) def getProperties(self): return { 'keep_entries': self.keep_entries, 'copy_to_zlog': self.copy_to_zlog, 'ignored_exceptions': self._ignored_exceptions, } def setProperties(self, keep_entries, copy_to_zlog=1, ignored_exceptions=()): """Sets the properties of this site error log. """ self.keep_entries = int(keep_entries) self.copy_to_zlog = bool(copy_to_zlog) self._ignored_exceptions = tuple( [unicode(e) for e in ignored_exceptions if e] ) def getLogEntries(self): """Returns the entries in the log, most recent first. Makes a copy to prevent changes. """ res = [entry.copy() for entry in self._getLog()] res.reverse() return res def getLogEntryById(self, id): """Returns the specified log entry. Makes a copy to prevent changes. Returns None if not found. """ for entry in self._getLog(): if entry['id'] == id: return entry.copy() return None class RootErrorReportingUtility(ErrorReportingUtility): rootId = 'root' def _getLog(self): """Returns the log for this object. Careful, the log is shared between threads. """ log = _temp_logs.get(self.rootId, None) if log is None: log = [] _temp_logs[self.rootId] = log return log globalErrorReportingUtility = RootErrorReportingUtility() def _cleanup_temp_log(): _temp_logs.clear() _clear = _cleanup_temp_log # Register our cleanup with Testing.CleanUp to make writing unit tests simpler. try: from zope.testing.cleanup import addCleanUp addCleanUp(_clear) del addCleanUp except ImportError: pass zope.error-3.7.2/src/zope/__init__.py0000644000175000017500000000007011463034130015551 0ustar adiadi__import__('pkg_resources').declare_namespace(__name__) zope.error-3.7.2/src/zope.error.egg-info/0000755000175000017500000000000011463034135016272 5ustar adiadizope.error-3.7.2/src/zope.error.egg-info/top_level.txt0000644000175000017500000000000511463034134021016 0ustar adiadizope zope.error-3.7.2/src/zope.error.egg-info/dependency_links.txt0000644000175000017500000000000111463034134022337 0ustar adiadi zope.error-3.7.2/src/zope.error.egg-info/PKG-INFO0000644000175000017500000000531311463034134017370 0ustar adiadiMetadata-Version: 1.0 Name: zope.error Version: 3.7.2 Summary: An error reporting utility for Zope3 Home-page: http://pypi.python.org/pypi/zope.error Author: Zope Foundation and Contributors Author-email: zope-dev@zope.org License: ZPL 2.1 Description: This package provides an error reporting utility which is able to store errors. ======= CHANGES ======= 3.7.2 (2010-10-30) ------------------ - Set ``copy_to_zlog`` by default to 1/True. Having it turned off is a small problem, because fatal (startup) errors will not get logged anywhere. 3.7.1 (2010-09-25) ------------------ - Added test extra to declare test dependency on ``zope.testing``. 3.7.0 (2009-09-29) ------------------ - Cleaned up dependencies. Droped all testing dependencies as we only need zope.testing now. - Fixed ImportError when zope.testing is not available for some reason. - Removed zcml slug and old zpkg-related files. - Removed word "version" from changelog entries. - Changed package's mailing list address to zope-dev at zope.org as zope3-dev at zope.org is now retired. Also changed `cheeseshop` to `pypi` in the package's homepage url. - Added dependency on ZODB3 as we use Persistent. - Used a mock request for testing. Dropped the dependency on zope.publisher which was really only a testing dependency. - Reduced the dependency on zope.container to one on zope.location by no longer using the Contained mix-in class. 3.6.0 (2009-01-31) ------------------ - Use zope.container instead of zope.app.container - Move error log bootstrapping logic (which was untested) to ``zope.app.appsetup``, to which we added a test. 3.5.1 (2007-09-27) ------------------ - rebumped to replace faulty egg 3.5.0 ----- - Initial documented release - Moved core components from ``zope.app.error`` to this package. Keywords: zope3 error Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Topic :: Internet :: WWW/HTTP Classifier: Framework :: Zope3 zope.error-3.7.2/src/zope.error.egg-info/requires.txt0000644000175000017500000000012211463034134020664 0ustar adiadisetuptools zope.exceptions zope.interface zope.location ZODB3 [test] zope.testingzope.error-3.7.2/src/zope.error.egg-info/SOURCES.txt0000644000175000017500000000077711463034134020170 0ustar adiadiCHANGES.txt COPYRIGHT.txt LICENSE.txt README.txt bootstrap.py buildout.cfg setup.py src/zope/__init__.py src/zope.error.egg-info/PKG-INFO src/zope.error.egg-info/SOURCES.txt src/zope.error.egg-info/dependency_links.txt src/zope.error.egg-info/namespace_packages.txt src/zope.error.egg-info/not-zip-safe src/zope.error.egg-info/requires.txt src/zope.error.egg-info/top_level.txt src/zope/error/__init__.py src/zope/error/configure.zcml src/zope/error/error.py src/zope/error/interfaces.py src/zope/error/tests.pyzope.error-3.7.2/src/zope.error.egg-info/not-zip-safe0000644000175000017500000000000111463034130020513 0ustar adiadi zope.error-3.7.2/src/zope.error.egg-info/namespace_packages.txt0000644000175000017500000000000511463034134022617 0ustar adiadizope zope.error-3.7.2/CHANGES.txt0000644000175000017500000000271611463034130013516 0ustar adiadi======= CHANGES ======= 3.7.2 (2010-10-30) ------------------ - Set ``copy_to_zlog`` by default to 1/True. Having it turned off is a small problem, because fatal (startup) errors will not get logged anywhere. 3.7.1 (2010-09-25) ------------------ - Added test extra to declare test dependency on ``zope.testing``. 3.7.0 (2009-09-29) ------------------ - Cleaned up dependencies. Droped all testing dependencies as we only need zope.testing now. - Fixed ImportError when zope.testing is not available for some reason. - Removed zcml slug and old zpkg-related files. - Removed word "version" from changelog entries. - Changed package's mailing list address to zope-dev at zope.org as zope3-dev at zope.org is now retired. Also changed `cheeseshop` to `pypi` in the package's homepage url. - Added dependency on ZODB3 as we use Persistent. - Used a mock request for testing. Dropped the dependency on zope.publisher which was really only a testing dependency. - Reduced the dependency on zope.container to one on zope.location by no longer using the Contained mix-in class. 3.6.0 (2009-01-31) ------------------ - Use zope.container instead of zope.app.container - Move error log bootstrapping logic (which was untested) to ``zope.app.appsetup``, to which we added a test. 3.5.1 (2007-09-27) ------------------ - rebumped to replace faulty egg 3.5.0 ----- - Initial documented release - Moved core components from ``zope.app.error`` to this package.