zope.error-3.7.2/ 0000755 0001750 0001750 00000000000 11463034135 011704 5 ustar adi adi zope.error-3.7.2/bootstrap.py 0000644 0001750 0001750 00000003302 11463034130 014264 0 ustar adi adi ##############################################################################
#
# 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.cfg 0000644 0001750 0001750 00000000073 11463034135 013525 0 ustar adi adi [egg_info]
tag_build =
tag_date = 0
tag_svn_revision = 0
zope.error-3.7.2/buildout.cfg 0000644 0001750 0001750 00000000152 11463034130 014205 0 ustar adi adi [buildout]
develop = .
parts = test
[test]
recipe = zc.recipe.testrunner
eggs = zope.error [test]
zope.error-3.7.2/README.txt 0000644 0001750 0001750 00000000120 11463034130 013366 0 ustar adi adi This package provides an error reporting utility which is able to store errors.
zope.error-3.7.2/COPYRIGHT.txt 0000644 0001750 0001750 00000000040 11463034130 014002 0 ustar adi adi Zope Foundation and Contributors zope.error-3.7.2/setup.py 0000644 0001750 0001750 00000004626 11463034130 013421 0 ustar adi adi ##############################################################################
#
# 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-INFO 0000644 0001750 0001750 00000005313 11463034135 013003 0 ustar adi adi Metadata-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.txt 0000644 0001750 0001750 00000004026 11463034130 013524 0 ustar adi adi Zope 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/ 0000755 0001750 0001750 00000000000 11463034135 012473 5 ustar adi adi zope.error-3.7.2/src/zope/ 0000755 0001750 0001750 00000000000 11463034135 013450 5 ustar adi adi zope.error-3.7.2/src/zope/error/ 0000755 0001750 0001750 00000000000 11463034135 014601 5 ustar adi adi zope.error-3.7.2/src/zope/error/tests.py 0000644 0001750 0001750 00000011643 11463034130 016315 0 ustar adi adi ##############################################################################
#
# 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.zcml 0000644 0001750 0001750 00000001664 11463034130 017453 0 ustar adi adi
zope.error-3.7.2/src/zope/error/interfaces.py 0000644 0001750 0001750 00000003047 11463034130 017275 0 ustar adi adi ##############################################################################
#
# 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__.py 0000644 0001750 0001750 00000000016 11463034130 016702 0 ustar adi adi # import this
zope.error-3.7.2/src/zope/error/error.py 0000644 0001750 0001750 00000022336 11463034130 016305 0 ustar adi adi ##############################################################################
#
# 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__.py 0000644 0001750 0001750 00000000070 11463034130 015551 0 ustar adi adi __import__('pkg_resources').declare_namespace(__name__)
zope.error-3.7.2/src/zope.error.egg-info/ 0000755 0001750 0001750 00000000000 11463034135 016272 5 ustar adi adi zope.error-3.7.2/src/zope.error.egg-info/top_level.txt 0000644 0001750 0001750 00000000005 11463034134 021016 0 ustar adi adi zope
zope.error-3.7.2/src/zope.error.egg-info/dependency_links.txt 0000644 0001750 0001750 00000000001 11463034134 022337 0 ustar adi adi
zope.error-3.7.2/src/zope.error.egg-info/PKG-INFO 0000644 0001750 0001750 00000005313 11463034134 017370 0 ustar adi adi Metadata-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.txt 0000644 0001750 0001750 00000000122 11463034134 020664 0 ustar adi adi setuptools
zope.exceptions
zope.interface
zope.location
ZODB3
[test]
zope.testing zope.error-3.7.2/src/zope.error.egg-info/SOURCES.txt 0000644 0001750 0001750 00000000777 11463034134 020170 0 ustar adi adi CHANGES.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.py zope.error-3.7.2/src/zope.error.egg-info/not-zip-safe 0000644 0001750 0001750 00000000001 11463034130 020513 0 ustar adi adi
zope.error-3.7.2/src/zope.error.egg-info/namespace_packages.txt 0000644 0001750 0001750 00000000005 11463034134 022617 0 ustar adi adi zope
zope.error-3.7.2/CHANGES.txt 0000644 0001750 0001750 00000002716 11463034130 013516 0 ustar adi adi =======
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.