[Python-modules-commits] [raven] 01/06: import raven_6.0.0.orig.tar.xz
Vincent Bernat
bernat at moszumanska.debian.org
Tue Feb 28 10:45:58 UTC 2017
This is an automated email from the git hooks/post-receive script.
bernat pushed a commit to branch master
in repository raven.
commit fe509920c25ec8033dd060de3e9c8ba1e493dde4
Author: Vincent Bernat <vincent at bernat.im>
Date: Tue Feb 28 09:36:20 2017 +0100
import raven_6.0.0.orig.tar.xz
---
LICENSE | 12 +
MANIFEST.in | 5 +
PKG-INFO | 30 +
README.rst | 24 +
raven.egg-info/PKG-INFO | 30 +
raven.egg-info/SOURCES.txt | 184 +
raven.egg-info/dependency_links.txt | 1 +
raven.egg-info/entry_points.txt | 6 +
raven.egg-info/not-zip-safe | 1 +
raven.egg-info/requires.txt | 29 +
raven.egg-info/top_level.txt | 1 +
raven/__init__.py | 56 +
raven/base.py | 901 ++++
raven/breadcrumbs.py | 367 ++
raven/conf/__init__.py | 54 +
raven/conf/defaults.py | 50 +
raven/conf/remote.py | 123 +
raven/context.py | 141 +
raven/contrib/__init__.py | 8 +
raven/contrib/async.py | 29 +
raven/contrib/bottle/__init__.py | 91 +
raven/contrib/bottle/utils.py | 39 +
raven/contrib/celery/__init__.py | 94 +
raven/contrib/django/__init__.py | 13 +
raven/contrib/django/apps.py | 9 +
raven/contrib/django/celery/__init__.py | 34 +
raven/contrib/django/celery/models.py | 16 +
raven/contrib/django/celery/tasks.py | 10 +
raven/contrib/django/client.py | 304 ++
raven/contrib/django/handlers.py | 33 +
raven/contrib/django/logging.py | 17 +
raven/contrib/django/management/__init__.py | 1 +
.../contrib/django/management/commands/__init__.py | 8 +
raven/contrib/django/management/commands/raven.py | 64 +
raven/contrib/django/middleware/__init__.py | 119 +
raven/contrib/django/middleware/wsgi.py | 28 +
raven/contrib/django/models.py | 249 +
raven/contrib/django/raven_compat/__init__.py | 11 +
raven/contrib/django/raven_compat/handlers.py | 11 +
.../django/raven_compat/management/__init__.py | 10 +
.../raven_compat/management/commands/__init__.py | 10 +
.../raven_compat/management/commands/raven.py | 10 +
.../django/raven_compat/middleware/__init__.py | 11 +
.../contrib/django/raven_compat/middleware/wsgi.py | 11 +
raven/contrib/django/raven_compat/models.py | 11 +
.../django/raven_compat/templatetags/__init__.py | 11 +
.../django/raven_compat/templatetags/raven.py | 11 +
raven/contrib/django/resolver.py | 89 +
raven/contrib/django/serializers.py | 74 +
raven/contrib/django/templatetags/__init__.py | 8 +
raven/contrib/django/templatetags/raven.py | 19 +
raven/contrib/django/urls.py | 21 +
raven/contrib/django/utils.py | 101 +
raven/contrib/django/views.py | 108 +
raven/contrib/flask.py | 319 ++
raven/contrib/paste.py | 16 +
raven/contrib/pylons/__init__.py | 30 +
raven/contrib/tornado/__init__.py | 247 +
raven/contrib/webpy/__init__.py | 77 +
raven/contrib/webpy/utils.py | 26 +
raven/contrib/zerorpc/__init__.py | 70 +
raven/contrib/zope/__init__.py | 107 +
raven/contrib/zope/component.xml | 25 +
raven/data/cacert.pem | 5307 ++++++++++++++++++++
raven/events.py | 171 +
raven/exceptions.py | 30 +
raven/handlers/__init__.py | 8 +
raven/handlers/logbook.py | 101 +
raven/handlers/logging.py | 180 +
raven/middleware.py | 113 +
raven/processors.py | 150 +
raven/scripts/__init__.py | 8 +
raven/scripts/runner.py | 121 +
raven/transport/__init__.py | 21 +
raven/transport/base.py | 50 +
raven/transport/eventlet.py | 51 +
raven/transport/exceptions.py | 22 +
raven/transport/gevent.py | 53 +
raven/transport/http.py | 58 +
raven/transport/registry.py | 75 +
raven/transport/requests.py | 35 +
raven/transport/threaded.py | 180 +
raven/transport/threaded_requests.py | 34 +
raven/transport/tornado.py | 60 +
raven/transport/twisted.py | 75 +
raven/utils/__init__.py | 191 +
raven/utils/compat.py | 219 +
raven/utils/conf.py | 62 +
raven/utils/encoding.py | 97 +
raven/utils/http.py | 66 +
raven/utils/imports.py | 16 +
raven/utils/json.py | 113 +
raven/utils/serializer/__init__.py | 11 +
raven/utils/serializer/base.py | 189 +
raven/utils/serializer/manager.py | 94 +
raven/utils/ssl_match_hostname.py | 104 +
raven/utils/stacks.py | 312 ++
raven/utils/testutils.py | 33 +
raven/utils/transaction.py | 51 +
raven/utils/urlparse.py | 18 +
raven/utils/wsgi.py | 94 +
raven/versioning.py | 81 +
setup.cfg | 18 +
setup.py | 147 +
tests/__init__.py | 1 +
tests/base/__init__.py | 0
tests/base/tests.py | 605 +++
tests/breadcrumbs/__init__.py | 0
tests/breadcrumbs/tests.py | 155 +
tests/conf/__init__.py | 0
tests/conf/tests.py | 129 +
tests/context/__init__.py | 0
tests/context/tests.py | 72 +
tests/contrib/__init__.py | 0
tests/contrib/async/__init__.py | 0
tests/contrib/async/tests.py | 0
tests/contrib/bottle/__init__.py | 0
tests/contrib/bottle/tests.py | 91 +
tests/contrib/django/__init__.py | 0
tests/contrib/django/api.py | 85 +
tests/contrib/django/management/__init__.py | 0
.../contrib/django/management/commands/__init__.py | 0
.../django/management/commands/test_raven.py | 24 +
tests/contrib/django/middleware.py | 22 +
tests/contrib/django/models.py | 7 +
tests/contrib/django/templates/404.html | 0
tests/contrib/django/templates/__init__.py | 0
tests/contrib/django/templates/error.html | 20 +
tests/contrib/django/test_resolver.py | 42 +
tests/contrib/django/test_tastypie.py | 61 +
tests/contrib/django/tests.py | 848 ++++
tests/contrib/django/urls.py | 50 +
tests/contrib/django/views.py | 49 +
tests/contrib/flask/__init__.py | 0
tests/contrib/flask/tests.py | 287 ++
tests/contrib/pylons/__init__.py | 0
tests/contrib/pylons/tests.py | 17 +
tests/contrib/test_celery.py | 40 +
tests/contrib/tornado/__init__.py | 0
tests/contrib/tornado/tests.py | 271 +
tests/contrib/webpy/__init__.py | 0
tests/contrib/webpy/tests.py | 84 +
tests/contrib/zerorpc/__init__.py | 0
tests/contrib/zerorpc/tests.py | 83 +
tests/events/__init__.py | 0
tests/events/tests.py | 100 +
tests/functional/__init__.py | 0
tests/functional/tests.py | 29 +
tests/handlers/__init__.py | 0
tests/handlers/logbook/__init__.py | 0
tests/handlers/logbook/tests.py | 126 +
tests/handlers/logging/__init__.py | 0
tests/handlers/logging/tests.py | 295 ++
tests/middleware/__init__.py | 0
tests/middleware/tests.py | 176 +
tests/processors/__init__.py | 0
tests/processors/tests.py | 274 +
tests/templates/sentry-tests/error.html | 1 +
tests/transport/__init__.py | 0
tests/transport/gevent/__init__.py | 0
tests/transport/gevent/tests.py | 30 +
tests/transport/requests/__init__.py | 0
tests/transport/requests/test_threaded_requests.py | 52 +
tests/transport/requests/tests.py | 20 +
tests/transport/tests.py | 97 +
tests/transport/threaded/__init__.py | 0
tests/transport/threaded/tests.py | 130 +
tests/transport/tornado/__init__.py | 0
tests/transport/tornado/tests.py | 63 +
tests/utils/__init__.py | 0
tests/utils/encoding/__init__.py | 0
tests/utils/encoding/tests.py | 199 +
tests/utils/json/__init__.py | 0
tests/utils/json/tests.py | 39 +
tests/utils/stacks/__init__.py | 0
tests/utils/stacks/tests.py | 109 +
tests/utils/stacks/utf8_file.txt | 5 +
tests/utils/test_conf.py | 20 +
tests/utils/test_imports.py | 22 +
tests/utils/test_transaction.py | 41 +
tests/utils/tests.py | 16 +
tests/utils/wsgi/__init__.py | 0
tests/utils/wsgi/tests.py | 86 +
tests/versioning/__init__.py | 0
tests/versioning/tests.py | 40 +
185 files changed, 18457 insertions(+)
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..f87028d
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,12 @@
+Copyright (c) 2015 Functional Software, Inc and individual contributors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+ 3. Neither the name of the Raven nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS 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 HOLDER OR CONTRIBUTORS 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 PROF [...]
diff --git a/MANIFEST.in b/MANIFEST.in
new file mode 100644
index 0000000..76ddd09
--- /dev/null
+++ b/MANIFEST.in
@@ -0,0 +1,5 @@
+include setup.py README.rst MANIFEST.in LICENSE *.txt
+recursive-include raven/contrib/zope *.xml
+recursive-include raven/data *
+graft tests
+global-exclude *~
diff --git a/PKG-INFO b/PKG-INFO
new file mode 100644
index 0000000..d14e2db
--- /dev/null
+++ b/PKG-INFO
@@ -0,0 +1,30 @@
+Metadata-Version: 1.1
+Name: raven
+Version: 6.0.0
+Summary: Raven is a client for Sentry (https://getsentry.com)
+Home-page: https://github.com/getsentry/raven-python
+Author: Sentry
+Author-email: hello at getsentry.com
+License: BSD
+Description:
+ Raven
+ =====
+
+ Raven is a Python client for `Sentry <http://getsentry.com/>`_. It provides
+ full out-of-the-box support for many of the popular frameworks, including
+ `Django <djangoproject.com>`_, `Flask <http://flask.pocoo.org/>`_, and `Pylons
+ <http://www.pylonsproject.org/>`_. Raven also includes drop-in support for any
+ `WSGI <https://wsgi.readthedocs.io/>`_-compatible web application.
+
+Platform: UNKNOWN
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python
+Classifier: Topic :: Software Development
diff --git a/README.rst b/README.rst
new file mode 100644
index 0000000..8d5d2bf
--- /dev/null
+++ b/README.rst
@@ -0,0 +1,24 @@
+Raven
+======
+
+.. image:: https://travis-ci.org/getsentry/raven-python.svg?branch=master
+ :target: https://travis-ci.org/getsentry/raven-python
+
+Raven is a Python client for `Sentry <http://getsentry.com/>`_. It provides
+full out-of-the-box support for many of the popular frameworks, including
+Django, and Flask. Raven also includes drop-in support for any WSGI-compatible
+web application.
+
+Your application doesn't live on the web? No problem! Raven is easy to use in
+any Python application.
+
+Resources
+---------
+
+* `Documentation <https://docs.getsentry.com/hosted/clients/python/>`_
+* `Bug Tracker <http://github.com/getsentry/raven-python/issues>`_
+* `Code <http://github.com/getsentry/raven-python>`_
+* `Mailing List <https://groups.google.com/group/getsentry>`_
+* `IRC <irc://irc.freenode.net/sentry>`_ (irc.freenode.net, #sentry)
+* `Travis CI <http://travis-ci.org/getsentry/raven-python>`_
+
diff --git a/raven.egg-info/PKG-INFO b/raven.egg-info/PKG-INFO
new file mode 100644
index 0000000..d14e2db
--- /dev/null
+++ b/raven.egg-info/PKG-INFO
@@ -0,0 +1,30 @@
+Metadata-Version: 1.1
+Name: raven
+Version: 6.0.0
+Summary: Raven is a client for Sentry (https://getsentry.com)
+Home-page: https://github.com/getsentry/raven-python
+Author: Sentry
+Author-email: hello at getsentry.com
+License: BSD
+Description:
+ Raven
+ =====
+
+ Raven is a Python client for `Sentry <http://getsentry.com/>`_. It provides
+ full out-of-the-box support for many of the popular frameworks, including
+ `Django <djangoproject.com>`_, `Flask <http://flask.pocoo.org/>`_, and `Pylons
+ <http://www.pylonsproject.org/>`_. Raven also includes drop-in support for any
+ `WSGI <https://wsgi.readthedocs.io/>`_-compatible web application.
+
+Platform: UNKNOWN
+Classifier: Intended Audience :: Developers
+Classifier: Intended Audience :: System Administrators
+Classifier: Operating System :: OS Independent
+Classifier: Programming Language :: Python :: 2
+Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
+Classifier: Programming Language :: Python
+Classifier: Topic :: Software Development
diff --git a/raven.egg-info/SOURCES.txt b/raven.egg-info/SOURCES.txt
new file mode 100644
index 0000000..2b43023
--- /dev/null
+++ b/raven.egg-info/SOURCES.txt
@@ -0,0 +1,184 @@
+LICENSE
+MANIFEST.in
+README.rst
+setup.cfg
+setup.py
+raven/__init__.py
+raven/base.py
+raven/breadcrumbs.py
+raven/context.py
+raven/events.py
+raven/exceptions.py
+raven/middleware.py
+raven/processors.py
+raven/versioning.py
+raven.egg-info/PKG-INFO
+raven.egg-info/SOURCES.txt
+raven.egg-info/dependency_links.txt
+raven.egg-info/entry_points.txt
+raven.egg-info/not-zip-safe
+raven.egg-info/requires.txt
+raven.egg-info/top_level.txt
+raven/conf/__init__.py
+raven/conf/defaults.py
+raven/conf/remote.py
+raven/contrib/__init__.py
+raven/contrib/async.py
+raven/contrib/flask.py
+raven/contrib/paste.py
+raven/contrib/bottle/__init__.py
+raven/contrib/bottle/utils.py
+raven/contrib/celery/__init__.py
+raven/contrib/django/__init__.py
+raven/contrib/django/apps.py
+raven/contrib/django/client.py
+raven/contrib/django/handlers.py
+raven/contrib/django/logging.py
+raven/contrib/django/models.py
+raven/contrib/django/resolver.py
+raven/contrib/django/serializers.py
+raven/contrib/django/urls.py
+raven/contrib/django/utils.py
+raven/contrib/django/views.py
+raven/contrib/django/celery/__init__.py
+raven/contrib/django/celery/models.py
+raven/contrib/django/celery/tasks.py
+raven/contrib/django/management/__init__.py
+raven/contrib/django/management/commands/__init__.py
+raven/contrib/django/management/commands/raven.py
+raven/contrib/django/middleware/__init__.py
+raven/contrib/django/middleware/wsgi.py
+raven/contrib/django/raven_compat/__init__.py
+raven/contrib/django/raven_compat/handlers.py
+raven/contrib/django/raven_compat/models.py
+raven/contrib/django/raven_compat/management/__init__.py
+raven/contrib/django/raven_compat/management/commands/__init__.py
+raven/contrib/django/raven_compat/management/commands/raven.py
+raven/contrib/django/raven_compat/middleware/__init__.py
+raven/contrib/django/raven_compat/middleware/wsgi.py
+raven/contrib/django/raven_compat/templatetags/__init__.py
+raven/contrib/django/raven_compat/templatetags/raven.py
+raven/contrib/django/templatetags/__init__.py
+raven/contrib/django/templatetags/raven.py
+raven/contrib/pylons/__init__.py
+raven/contrib/tornado/__init__.py
+raven/contrib/webpy/__init__.py
+raven/contrib/webpy/utils.py
+raven/contrib/zerorpc/__init__.py
+raven/contrib/zope/__init__.py
+raven/contrib/zope/component.xml
+raven/data/cacert.pem
+raven/handlers/__init__.py
+raven/handlers/logbook.py
+raven/handlers/logging.py
+raven/scripts/__init__.py
+raven/scripts/runner.py
+raven/transport/__init__.py
+raven/transport/base.py
+raven/transport/eventlet.py
+raven/transport/exceptions.py
+raven/transport/gevent.py
+raven/transport/http.py
+raven/transport/registry.py
+raven/transport/requests.py
+raven/transport/threaded.py
+raven/transport/threaded_requests.py
+raven/transport/tornado.py
+raven/transport/twisted.py
+raven/utils/__init__.py
+raven/utils/compat.py
+raven/utils/conf.py
+raven/utils/encoding.py
+raven/utils/http.py
+raven/utils/imports.py
+raven/utils/json.py
+raven/utils/ssl_match_hostname.py
+raven/utils/stacks.py
+raven/utils/testutils.py
+raven/utils/transaction.py
+raven/utils/urlparse.py
+raven/utils/wsgi.py
+raven/utils/serializer/__init__.py
+raven/utils/serializer/base.py
+raven/utils/serializer/manager.py
+tests/__init__.py
+tests/base/__init__.py
+tests/base/tests.py
+tests/breadcrumbs/__init__.py
+tests/breadcrumbs/tests.py
+tests/conf/__init__.py
+tests/conf/tests.py
+tests/context/__init__.py
+tests/context/tests.py
+tests/contrib/__init__.py
+tests/contrib/test_celery.py
+tests/contrib/async/__init__.py
+tests/contrib/async/tests.py
+tests/contrib/bottle/__init__.py
+tests/contrib/bottle/tests.py
+tests/contrib/django/__init__.py
+tests/contrib/django/api.py
+tests/contrib/django/middleware.py
+tests/contrib/django/models.py
+tests/contrib/django/test_resolver.py
+tests/contrib/django/test_tastypie.py
+tests/contrib/django/tests.py
+tests/contrib/django/urls.py
+tests/contrib/django/views.py
+tests/contrib/django/management/__init__.py
+tests/contrib/django/management/commands/__init__.py
+tests/contrib/django/management/commands/test_raven.py
+tests/contrib/django/templates/404.html
+tests/contrib/django/templates/__init__.py
+tests/contrib/django/templates/error.html
+tests/contrib/flask/__init__.py
+tests/contrib/flask/tests.py
+tests/contrib/pylons/__init__.py
+tests/contrib/pylons/tests.py
+tests/contrib/tornado/__init__.py
+tests/contrib/tornado/tests.py
+tests/contrib/webpy/__init__.py
+tests/contrib/webpy/tests.py
+tests/contrib/zerorpc/__init__.py
+tests/contrib/zerorpc/tests.py
+tests/events/__init__.py
+tests/events/tests.py
+tests/functional/__init__.py
+tests/functional/tests.py
+tests/handlers/__init__.py
+tests/handlers/logbook/__init__.py
+tests/handlers/logbook/tests.py
+tests/handlers/logging/__init__.py
+tests/handlers/logging/tests.py
+tests/middleware/__init__.py
+tests/middleware/tests.py
+tests/processors/__init__.py
+tests/processors/tests.py
+tests/templates/sentry-tests/error.html
+tests/transport/__init__.py
+tests/transport/tests.py
+tests/transport/gevent/__init__.py
+tests/transport/gevent/tests.py
+tests/transport/requests/__init__.py
+tests/transport/requests/test_threaded_requests.py
+tests/transport/requests/tests.py
+tests/transport/threaded/__init__.py
+tests/transport/threaded/tests.py
+tests/transport/tornado/__init__.py
+tests/transport/tornado/tests.py
+tests/utils/__init__.py
+tests/utils/test_conf.py
+tests/utils/test_imports.py
+tests/utils/test_transaction.py
+tests/utils/tests.py
+tests/utils/encoding/__init__.py
+tests/utils/encoding/tests.py
+tests/utils/json/__init__.py
+tests/utils/json/tests.py
+tests/utils/stacks/__init__.py
+tests/utils/stacks/tests.py
+tests/utils/stacks/utf8_file.txt
+tests/utils/wsgi/__init__.py
+tests/utils/wsgi/tests.py
+tests/versioning/__init__.py
+tests/versioning/tests.py
\ No newline at end of file
diff --git a/raven.egg-info/dependency_links.txt b/raven.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/raven.egg-info/dependency_links.txt
@@ -0,0 +1 @@
+
diff --git a/raven.egg-info/entry_points.txt b/raven.egg-info/entry_points.txt
new file mode 100644
index 0000000..4715b0d
--- /dev/null
+++ b/raven.egg-info/entry_points.txt
@@ -0,0 +1,6 @@
+[console_scripts]
+raven = raven.scripts.runner:main
+
+[paste.filter_app_factory]
+raven = raven.contrib.paste:sentry_filter_factory
+
diff --git a/raven.egg-info/not-zip-safe b/raven.egg-info/not-zip-safe
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/raven.egg-info/not-zip-safe
@@ -0,0 +1 @@
+
diff --git a/raven.egg-info/requires.txt b/raven.egg-info/requires.txt
new file mode 100644
index 0000000..2df2934
--- /dev/null
+++ b/raven.egg-info/requires.txt
@@ -0,0 +1,29 @@
+contextlib2
+
+[flask]
+Flask>=0.8
+blinker>=1.1
+
+[tests]
+bottle
+celery>=2.5
+exam>=0.5.2
+flake8>=2.6,<2.7
+logbook
+mock
+nose
+pycodestyle
+pytz
+pytest>=3.0.0,<3.1.0
+pytest-timeout==0.4
+requests
+tornado>=4.1
+webob
+webtest
+anyjson
+Flask>=0.8
+blinker>=1.1
+Flask-Login>=0.2.0
+unittest2
+paste
+web.py
diff --git a/raven.egg-info/top_level.txt b/raven.egg-info/top_level.txt
new file mode 100644
index 0000000..81ca422
--- /dev/null
+++ b/raven.egg-info/top_level.txt
@@ -0,0 +1 @@
+raven
diff --git a/raven/__init__.py b/raven/__init__.py
new file mode 100644
index 0000000..550b8a8
--- /dev/null
+++ b/raven/__init__.py
@@ -0,0 +1,56 @@
+"""
+raven
+~~~~~
+
+:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
+:license: BSD, see LICENSE for more details.
+"""
+from __future__ import absolute_import
+
+import os
+import os.path
+
+__all__ = ('VERSION', 'Client', 'get_version')
+
+VERSION = '6.0.0'
+
+
+def _get_git_revision(path):
+ revision_file = os.path.join(path, 'refs', 'heads', 'master')
+ if not os.path.exists(revision_file):
+ return None
+ fh = open(revision_file, 'r')
+ try:
+ return fh.read().strip()[:7]
+ finally:
+ fh.close()
+
+
+def get_revision():
+ """
+ :returns: Revision number of this branch/checkout, if available. None if
+ no revision number can be determined.
+ """
+ package_dir = os.path.dirname(__file__)
+ checkout_dir = os.path.normpath(os.path.join(package_dir, os.pardir, os.pardir))
+ path = os.path.join(checkout_dir, '.git')
+ if os.path.exists(path):
+ return _get_git_revision(path)
+ return None
+
+
+def get_version():
+ base = VERSION
+ if __build__:
+ base = '%s (%s)' % (base, __build__)
+ return base
+
+
+__build__ = get_revision()
+__docformat__ = 'restructuredtext en'
+
+
+# Declare child imports last to prevent recursion
+from raven.base import * # NOQA
+from raven.conf import * # NOQA
+from raven.versioning import * # NOQA
diff --git a/raven/base.py b/raven/base.py
new file mode 100644
index 0000000..6fadbce
--- /dev/null
+++ b/raven/base.py
@@ -0,0 +1,901 @@
+"""
+raven.base
+~~~~~~~~~~
+
+:copyright: (c) 2010-2012 by the Sentry Team, see AUTHORS for more details.
+:license: BSD, see LICENSE for more details.
+"""
+
+from __future__ import absolute_import
+
+import zlib
+import logging
+import os
+import sys
+import time
+import uuid
+import warnings
+
+from datetime import datetime
+from types import FunctionType
+from threading import local
+
+if sys.version_info >= (3, 2):
+ import contextlib
+else:
+ import contextlib2 as contextlib
+
+try:
+ from thread import get_ident as get_thread_ident
+except ImportError:
+ from _thread import get_ident as get_thread_ident
+
+import raven
+from raven.conf import defaults
+from raven.conf.remote import RemoteConfig
+from raven.exceptions import APIError, RateLimited
+from raven.utils import json, get_versions, get_auth_header, merge_dicts
+from raven.utils.compat import text_type, iteritems
+from raven.utils.encoding import to_unicode
+from raven.utils.serializer import transform
+from raven.utils.stacks import get_stack_info, iter_stack_frames
+from raven.utils.transaction import TransactionStack
+from raven.transport.registry import TransportRegistry, default_transports
+
+# enforce imports to avoid obscure stacktraces with MemoryError
+import raven.events # NOQA
+
+
+__all__ = ('Client',)
+
+__excepthook__ = None
+
+PLATFORM_NAME = 'python'
+
+SDK_VALUE = {
+ 'name': 'raven-python',
+ 'version': raven.VERSION,
+}
+
+# singleton for the client
+Raven = None
+
+
+def get_excepthook_client():
+ hook = sys.excepthook
+ client = getattr(hook, 'raven_client', None)
+ if client is not None:
+ return client
+
+
+class ModuleProxyCache(dict):
+ def __missing__(self, key):
+ module, class_name = key.rsplit('.', 1)
+
+ handler = getattr(__import__(
+ module, {}, {}, [class_name]), class_name)
+
+ self[key] = handler
+
+ return handler
+
+
+class ClientState(object):
+ ONLINE = 1
+ ERROR = 0
+
+ def __init__(self):
+ self.status = self.ONLINE
+ self.last_check = None
+ self.retry_number = 0
+ self.retry_after = 0
+
+ def should_try(self):
+ if self.status == self.ONLINE:
+ return True
+
+ interval = self.retry_after or min(self.retry_number, 6) ** 2
+
+ if time.time() - self.last_check > interval:
+ return True
+
+ return False
+
+ def set_fail(self, retry_after=0):
+ self.status = self.ERROR
+ self.retry_number += 1
+ self.last_check = time.time()
+ self.retry_after = retry_after
+
+ def set_success(self):
+ self.status = self.ONLINE
+ self.last_check = None
+ self.retry_number = 0
+ self.retry_after = 0
+
+ def did_fail(self):
+ return self.status == self.ERROR
+
+
+class Client(object):
+ """
+ The base Raven client.
+
+ Will read default configuration from the environment variable
+ ``SENTRY_DSN`` if available.
+
+ >>> from raven import Client
+
+ >>> # Read configuration from ``os.environ['SENTRY_DSN']``
+ >>> client = Client()
+
+ >>> # Specify a DSN explicitly
+ >>> client = Client(dsn='https://public_key:secret_key@sentry.local/project_id')
+
+ >>> # Record an exception
+ >>> try:
+ >>> 1/0
+ >>> except ZeroDivisionError:
+ >>> ident = client.get_ident(client.captureException())
+ >>> print "Exception caught; reference is %s" % ident
+ """
+ logger = logging.getLogger('raven')
+ protocol_version = '6'
+
+ _registry = TransportRegistry(transports=default_transports)
+
+ def __init__(self, dsn=None, raise_send_errors=False, transport=None,
+ install_sys_hook=True, install_logging_hook=True,
+ hook_libraries=None, enable_breadcrumbs=True, **options):
+ global Raven
+
+ o = options
+
+ self._local_state = local()
+
+ self.raise_send_errors = raise_send_errors
+
+ # configure loggers first
+ cls = self.__class__
+ self.state = ClientState()
+ self.logger = logging.getLogger(
+ '%s.%s' % (cls.__module__, cls.__name__))
+ self.error_logger = logging.getLogger('sentry.errors')
+ self.uncaught_logger = logging.getLogger('sentry.errors.uncaught')
+
+ self._transport_cache = {}
+ self.set_dsn(dsn, transport)
+
+ self.include_paths = set(o.get('include_paths') or [])
+ self.exclude_paths = set(o.get('exclude_paths') or [])
+ self.name = text_type(o.get('name') or o.get('machine') or defaults.NAME)
+ self.auto_log_stacks = bool(
+ o.get('auto_log_stacks') or defaults.AUTO_LOG_STACKS)
+ self.capture_locals = bool(
+ o.get('capture_locals', defaults.CAPTURE_LOCALS))
+ self.string_max_length = int(
+ o.get('string_max_length') or defaults.MAX_LENGTH_STRING)
+ self.list_max_length = int(
+ o.get('list_max_length') or defaults.MAX_LENGTH_LIST)
+ self.site = o.get('site')
+ self.include_versions = o.get('include_versions', True)
+ self.processors = o.get('processors')
+ if self.processors is None:
+ self.processors = defaults.PROCESSORS
+
+ context = o.get('context')
+ if context is None:
+ context = {'sys.argv': getattr(sys, 'argv', [])[:]}
+ self.extra = context
+ self.tags = o.get('tags') or {}
+ self.environment = o.get('environment') or None
+ self.release = o.get('release') or os.environ.get('HEROKU_SLUG_COMMIT')
+ self.repos = self._format_repos(o.get('repos'))
+ self.transaction = TransactionStack()
+
+ self.ignore_exceptions = set(o.get('ignore_exceptions') or ())
+
+ self.module_cache = ModuleProxyCache()
+
+ if not self.is_enabled():
+ self.logger.info(
+ 'Raven is not configured (logging is disabled). Please see the'
+ ' documentation for more information.')
+
+ if Raven is None:
+ Raven = self
+
+ # We want to remember the creating thread id here because this
+ # comes in useful for the context special handling
+ self.main_thread_id = get_thread_ident()
+ self.enable_breadcrumbs = enable_breadcrumbs
+
+ from raven.context import Context
+ self._context = Context(self)
+
+ if install_sys_hook:
+ self.install_sys_hook()
+
+ if install_logging_hook:
+ self.install_logging_hook()
+
+ self.hook_libraries(hook_libraries)
+
+ def _format_repos(self, value):
+ if not value:
+ return {}
+ result = {}
+ for path, config in iteritems(value):
+ if path[0] != '/':
+ # assume its a module
+ path = os.path.abspath(__import__(path).__file__)
+ result[path] = config
+ return result
+
+ def set_dsn(self, dsn=None, transport=None):
+ if not dsn and os.environ.get('SENTRY_DSN'):
+ msg = "Configuring Raven from environment variable 'SENTRY_DSN'"
+ self.logger.debug(msg)
+ dsn = os.environ['SENTRY_DSN']
+
+ if dsn not in self._transport_cache:
+ if not dsn:
+ result = RemoteConfig(transport=transport)
+ else:
+ result = RemoteConfig.from_string(
+ dsn,
+ transport=transport,
+ transport_registry=self._registry,
+ )
+ self._transport_cache[dsn] = result
+ self.remote = result
+ else:
+ self.remote = self._transport_cache[dsn]
+
+ self.logger.debug("Configuring Raven for host: {0}".format(self.remote))
+
+ def install_sys_hook(self):
+ global __excepthook__
+
+ if __excepthook__ is None:
+ __excepthook__ = sys.excepthook
+
+ def handle_exception(*exc_info):
+ self.captureException(exc_info=exc_info, level='fatal')
+ __excepthook__(*exc_info)
+ handle_exception.raven_client = self
+ sys.excepthook = handle_exception
+
+ def install_logging_hook(self):
+ from raven.breadcrumbs import install_logging_hook
+ install_logging_hook()
+
+ def hook_libraries(self, libraries):
+ from raven.breadcrumbs import hook_libraries
+ hook_libraries(libraries)
+
+ @classmethod
+ def register_scheme(cls, scheme, transport_class):
+ cls._registry.register_scheme(scheme, transport_class)
+
+ def get_processors(self):
+ for processor in self.processors:
+ yield self.module_cache[processor](self)
+
+ def get_module_versions(self):
+ if not self.include_versions:
+ return {}
+
+ version_info = sys.version_info
+
+ modules = get_versions(self.include_paths)
+ modules['python'] = '{0}.{1}.{2}'.format(
+ version_info[0], version_info[1], version_info[2],
+ )
+
+ return modules
+
+ def get_ident(self, result):
+ """
+ Returns a searchable string representing a message.
+
+ >>> result = client.capture(**kwargs)
+ >>> ident = client.get_ident(result)
+ """
+ warnings.warn('Client.get_ident is deprecated. The event ID is now '
+ 'returned as the result of capture.',
+ DeprecationWarning)
+ return result
+
+ def get_handler(self, name):
+ return self.module_cache[name](self)
+
+ def get_public_dsn(self, scheme=None):
+ """
+ Returns a public DSN which is consumable by raven-js
+
+ >>> # Return scheme-less DSN
+ >>> print client.get_public_dsn()
+
+ >>> # Specify a scheme to use (http or https)
+ >>> print client.get_public_dsn('https')
+ """
+ if not self.is_enabled():
+ return
+ url = self.remote.get_public_dsn()
+ if not scheme:
+ return url
+ return '%s:%s' % (scheme, url)
+
+ def _get_exception_key(self, exc_info):
+ # On certain celery versions the tb_frame attribute might
+ # not exist or be `None`.
+ code_id = 0
+ last_id = 0
+ try:
+ code_id = id(exc_info[2] and exc_info[2].tb_frame.f_code)
+ last_id = exc_info[2] and exc_info[2].tb_lasti or 0
+ except (AttributeError, IndexError):
+ pass
+ return (
+ exc_info[0],
+ id(exc_info[1]),
+ code_id,
+ id(exc_info[2]),
+ last_id,
+ )
+
+ def skip_error_for_logging(self, exc_info):
+ key = self._get_exception_key(exc_info)
... 18654 lines suppressed ...
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/raven.git
More information about the Python-modules-commits
mailing list