Hello community,
here is the log from the commit of package python-daiquiri for
openSUSE:Leap:15.2 checked in at 2020-04-08 12:48:54
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:15.2/python-daiquiri (Old)
and /work/SRC/openSUSE:Leap:15.2/.python-daiquiri.new.3248 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-daiquiri"
Wed Apr 8 12:48:54 2020 rev:12 rq:790949 version:2.1.1
Changes:
--------
--- /work/SRC/openSUSE:Leap:15.2/python-daiquiri/python-daiquiri.changes
2020-03-09 18:04:25.744789622 +0100
+++
/work/SRC/openSUSE:Leap:15.2/.python-daiquiri.new.3248/python-daiquiri.changes
2020-04-08 12:49:23.334373681 +0200
@@ -1,0 +2,10 @@
+Thu Apr 2 09:11:34 UTC 2020 - Marketa Calabkova <[email protected]>
+
+- Update to 2.1.1
+ * Add missing Python 3.8 to setup, tox and Mergify
+ * build(setup): replace pbr by setuptools_scm
+ * Parameterizes overwriting `sys.excepthook` to allow it to be turned
+ off in environments where a different excepthook is needed.
+ * fix(journal): handle extra keys correctly
+
+-------------------------------------------------------------------
Old:
----
daiquiri-1.6.0.tar.gz
New:
----
daiquiri-2.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-daiquiri.spec ++++++
--- /var/tmp/diff_new_pack.4DQ9Nh/_old 2020-04-08 12:49:23.826373938 +0200
+++ /var/tmp/diff_new_pack.4DQ9Nh/_new 2020-04-08 12:49:23.830373939 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-daiquiri
#
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,16 +18,17 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-daiquiri
-Version: 1.6.0
+Version: 2.1.1
Release: 0
Summary: Library to configure Python logging
License: Apache-2.0
Group: Development/Languages/Python
URL: https://github.com/jd/daiquiri
Source:
https://files.pythonhosted.org/packages/source/d/daiquiri/daiquiri-%{version}.tar.gz
-BuildRequires: %{python_module pbr}
+BuildRequires: %{python_module mock}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module python-json-logger}
+BuildRequires: %{python_module setuptools_scm}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module six}
BuildRequires: fdupes
@@ -55,7 +56,7 @@
%files %{python_files}
%license LICENSE
-%doc AUTHORS ChangeLog README.rst
+%doc README.rst
%{python_sitelib}/*
%changelog
++++++ daiquiri-1.6.0.tar.gz -> daiquiri-2.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/.circleci/config.yml
new/daiquiri-2.1.1/.circleci/config.yml
--- old/daiquiri-1.6.0/.circleci/config.yml 2019-08-06 18:42:24.000000000
+0200
+++ new/daiquiri-2.1.1/.circleci/config.yml 2019-12-16 09:30:18.000000000
+0100
@@ -1,51 +1,48 @@
-version: 2
+version: 2.1
-jobs:
- pep8:
- docker:
- - image: circleci/python:3.7
+commands:
+ tox:
+ parameters:
+ target:
+ type: string
steps:
- checkout
- run:
command: |
sudo pip install tox
- tox -e pep8
+ tox -e << parameters.target >>
+
+jobs:
+ pep8:
+ docker:
+ - image: circleci/python:3.8
+ steps:
+ - tox: {target: pep8}
docs:
docker:
- - image: circleci/python:3.7
+ - image: circleci/python:3.8
steps:
- - checkout
- - run:
- command: |
- sudo pip install tox
- tox -e docs
+ - tox: {target: docs}
py27:
docker:
- image: circleci/python:2.7
steps:
- - checkout
- - run:
- command: |
- sudo pip install tox
- tox -e py27
+ - tox: {target: py27}
py36:
docker:
- image: circleci/python:3.6
steps:
- - checkout
- - run:
- command: |
- sudo pip install tox
- tox -e py36
+ - tox: {target: py36}
py37:
docker:
- image: circleci/python:3.7
steps:
- - checkout
- - run:
- command: |
- sudo pip install tox
- tox -e py37
+ - tox: {target: py37}
+ py38:
+ docker:
+ - image: circleci/python:3.8
+ steps:
+ - tox: {target: py38}
workflows:
@@ -57,3 +54,5 @@
- py27
- py36
- py37
+ - py38
+ - docs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/.gitignore
new/daiquiri-2.1.1/.gitignore
--- old/daiquiri-1.6.0/.gitignore 1970-01-01 01:00:00.000000000 +0100
+++ new/daiquiri-2.1.1/.gitignore 2020-02-27 10:41:05.000000000 +0100
@@ -0,0 +1,8 @@
+*.py[cod]
+# Packages
+*.egg*
+*.egg-info
+dist
+.tox
+doc/build
+build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/.mergify.yml
new/daiquiri-2.1.1/.mergify.yml
--- old/daiquiri-1.6.0/.mergify.yml 2019-08-06 18:42:24.000000000 +0200
+++ new/daiquiri-2.1.1/.mergify.yml 2019-12-16 09:33:55.000000000 +0100
@@ -7,6 +7,7 @@
- "status-success=ci/circleci: py27"
- "status-success=ci/circleci: py36"
- "status-success=ci/circleci: py37"
+ - "status-success=ci/circleci: py38"
- "#approved-reviews-by>=1"
- label!=work-in-progress
actions:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/AUTHORS new/daiquiri-2.1.1/AUTHORS
--- old/daiquiri-1.6.0/AUTHORS 2019-08-06 19:18:33.000000000 +0200
+++ new/daiquiri-2.1.1/AUTHORS 1970-01-01 01:00:00.000000000 +0100
@@ -1,11 +0,0 @@
-Blake VandeMerwe <[email protected]>
-Chris Lamb <[email protected]>
-Dave Brochu <[email protected]>
-Fridolin Pokorny <[email protected]>
-John Still <[email protected]>
-Julien Danjou <[email protected]>
-Kurt Wheeler <[email protected]>
-Martín Gaitán <[email protected]>
-Tristan Cacqueray <[email protected]>
-davebrochu <[email protected]>
-mergify[bot] <mergify[bot]@users.noreply.github.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/ChangeLog new/daiquiri-2.1.1/ChangeLog
--- old/daiquiri-1.6.0/ChangeLog 2019-08-06 19:18:33.000000000 +0200
+++ new/daiquiri-2.1.1/ChangeLog 1970-01-01 01:00:00.000000000 +0100
@@ -1,128 +0,0 @@
-CHANGES
-=======
-
-1.6.0
------
-
-* Fix getLogger when called twice and passing different extras
-* Replace Travis by CircleCI
-* Add documentation for the ExtrasFormatter class
-* Move to Mergify v2
-
-1.5.0
------
-
-* formatter: enable extra keywords by default
-
-1.4.0
------
-
-* Fix JSON encoding with extra keys
-* Support Python 3.7
-* Add build to .gitignore
-* Fix Mergify conf
-* Enable Mergify
-* Switch to pytest
-
-1.3.0
------
-
-* Add tests for color and extras formatters
-* Add formatter.ExtrasFormatter and formatter.ColorExtrasFormatter
-* Add KeywordArgumentAdapter.setLevel method for Python 2
-* Fix example flake8
-* Remove useless ignore in flake8
-* Use flake8-import-order
-* Ignore eggs directory
-* Remove hacking as a pep8 dependency
-
-1.2.2
------
-
-* Use Travis to push source and wheel on tag on PyPI
-* Remove doc path hack
-* doc: add missing import
-* doc: add rootdir to sys.path
-* Document JournalHandler
-* Document outputs
-* Use autodoc do publish documentation
-
-1.2.1
------
-
-* Fix wrong constructor call
-
-1.2.0
------
-
-* string configuration shortcuts (#18)
-
-1.1.0
------
-
-* Add RotatingFile and TimedRotatingFile output classes (#14)
-* Add missing dot
-* fixing gramatical errors and typos for readthedocs
-* changing logging level explicitly for examples (#11)
-* Update index.rst
-* Mention flavor
-* Clarify that the JSON formatter requires the python-json-logger package
-* Indent levelname by default
-
-1.0.1
------
-
-* Make sure Stream is usable even if \`isatty\` is not exposed
-* Fix tests in Python 3
-
-1.0.0
------
-
-* Doc update
-* Add warning capture support
-* Keep using adapter variable
-* Simplify log setup
-
-0.1.1
------
-
-* Compute program\_logger before the closure
-
-0.1.0
------
-
-* Make default excepthook log the full traceback
-
-0.0.4
------
-
-* Fix test
-
-0.0.3
------
-
-* Set default log level to WARNING
-* Revert "Allow to specify log level for the app and root"
-
-0.0.2
------
-
-* Allow to specify log level for the app and root
-
-0.0.1
------
-
-* output: set the debug level to None by default
-* Improve documentation
-* Fix extra example
-* Add utility function to set default log levels
-* Rework output so color hints are not logged
-* Change program name handling
-* Improve README
-* Make JSON optional
-* Fix Python 2.7 test with StringIO
-* Rename target to output
-* Add a test for JSON formatter
-* Add daiquiri target to manage log target+formatter+level
-* Allow to log to any stream
-* Import
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/PKG-INFO new/daiquiri-2.1.1/PKG-INFO
--- old/daiquiri-1.6.0/PKG-INFO 2019-08-06 19:18:35.000000000 +0200
+++ new/daiquiri-2.1.1/PKG-INFO 2020-03-09 10:12:39.477614400 +0100
@@ -1,11 +1,11 @@
Metadata-Version: 2.1
Name: daiquiri
-Version: 1.6.0
+Version: 2.1.1
Summary: Library to configure Python logging easily
Home-page: https://github.com/jd/daiquiri
Author: Julien Danjou
Author-email: [email protected]
-License: UNKNOWN
+License: Apache 2.0
Description: =======================================
daiquiri -- Python logging setup helper
=======================================
@@ -25,7 +25,6 @@
* Free software: Apache license
* Source: https://github.com/jd/daiquiri
-
Platform: UNKNOWN
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
@@ -37,6 +36,6 @@
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Provides-Extra: test
Provides-Extra: systemd
-Provides-Extra: json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri/__init__.py
new/daiquiri-2.1.1/daiquiri/__init__.py
--- old/daiquiri-1.6.0/daiquiri/__init__.py 2019-08-06 19:17:54.000000000
+0200
+++ new/daiquiri-2.1.1/daiquiri/__init__.py 2020-02-27 10:43:46.000000000
+0100
@@ -68,7 +68,7 @@
def setup(level=logging.WARNING, outputs=[output.STDERR], program_name=None,
- capture_warnings=True):
+ capture_warnings=True, set_excepthook=True):
"""Setup Python logging.
This will setup basic handlers for Python logging.
@@ -94,13 +94,14 @@
root_logger.setLevel(level)
- program_logger = logging.getLogger(program_name)
+ if set_excepthook:
+ program_logger = logging.getLogger(program_name)
- def logging_excepthook(exc_type, value, tb):
- program_logger.critical(
- "".join(traceback.format_exception(exc_type, value, tb)))
+ def logging_excepthook(exc_type, value, tb):
+ program_logger.critical(
+ "".join(traceback.format_exception(exc_type, value, tb)))
- sys.excepthook = logging_excepthook
+ sys.excepthook = logging_excepthook
if capture_warnings:
logging.captureWarnings(True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri/formatter.py
new/daiquiri-2.1.1/daiquiri/formatter.py
--- old/daiquiri-1.6.0/daiquiri/formatter.py 2018-07-18 17:30:54.000000000
+0200
+++ new/daiquiri-2.1.1/daiquiri/formatter.py 2020-01-16 11:05:47.000000000
+0100
@@ -11,10 +11,7 @@
# under the License.
import logging
-try:
- from pythonjsonlogger import jsonlogger
-except ImportError:
- jsonlogger = None
+from pythonjsonlogger import jsonlogger
DEFAULT_FORMAT = (
@@ -143,6 +140,28 @@
return s
+class DatadogFormatter(jsonlogger.JsonFormatter):
+ def __init__(self):
+ super(DatadogFormatter, self).__init__(timestamp=True)
+
+ def add_fields(self, log_record, record, message_dict):
+ super(DatadogFormatter, self).add_fields(
+ log_record, record, message_dict
+ )
+ log_record["status"] = record.levelname.lower()
+ log_record["logger"] = {
+ "name": record.name,
+ }
+ if record.exc_info:
+ log_record["error"] = {
+ "kind": record.exc_info[0].__name__,
+ "stack": message_dict.get("stack_info"),
+ "message": message_dict.get("exc_info"),
+ }
+ log_record.pop("exc_info", None)
+ log_record.pop("stack_info", None)
+
+
TEXT_FORMATTER = ColorExtrasFormatter(fmt=DEFAULT_EXTRAS_FORMAT)
-if jsonlogger:
- JSON_FORMATTER = jsonlogger.JsonFormatter()
+JSON_FORMATTER = jsonlogger.JsonFormatter()
+DATADOG_FORMATTER = DatadogFormatter()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri/handlers.py
new/daiquiri-2.1.1/daiquiri/handlers.py
--- old/daiquiri-1.6.0/daiquiri/handlers.py 2018-07-16 19:28:28.000000000
+0200
+++ new/daiquiri-2.1.1/daiquiri/handlers.py 2020-03-09 10:10:46.000000000
+0100
@@ -89,7 +89,7 @@
extras['EXCEPTION_INFO'] = record.exc_info
if hasattr(record, "_daiquiri_extra_keys"):
- for k, v in record._daiquiri_extra_keys:
+ for k in record._daiquiri_extra_keys:
if k != "_daiquiri_extra_keys":
extras[k.upper()] = getattr(record, k)
@@ -101,9 +101,24 @@
def format(self, record):
if hasattr(self.stream, "isatty"):
- record._stream_is_a_tty = self.stream.isatty()
+ try:
+ record._stream_is_a_tty = self.stream.isatty()
+ except ValueError:
+ # Stream has been closed, usually during interpretor shutdown
+ record._stream_is_a_tty = False
else:
record._stream_is_a_tty = False
s = super(TTYDetectorStreamHandler, self).format(record)
del record._stream_is_a_tty
return s
+
+
+class PlainTextSocketHandler(logging.handlers.SocketHandler):
+ """Socket handler that uses format and encode the record."""
+
+ def __init__(self, hostname, port, encoding="utf-8"):
+ self.encoding = encoding
+ super(PlainTextSocketHandler, self).__init__(hostname, port)
+
+ def makePickle(self, record):
+ return self.format(record).encode(self.encoding) + b"\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri/output.py
new/daiquiri-2.1.1/daiquiri/output.py
--- old/daiquiri-1.6.0/daiquiri/output.py 2017-08-15 10:42:54.000000000
+0200
+++ new/daiquiri-2.1.1/daiquiri/output.py 2020-01-16 11:05:47.000000000
+0100
@@ -228,6 +228,15 @@
return getattr(syslog, facility)
+class Datadog(Output):
+ def __init__(self, hostname="127.0.0.1", port=10518,
+ formatter=formatter.DATADOG_FORMATTER, level=None):
+ super(Datadog, self).__init__(
+ handlers.PlainTextSocketHandler(hostname, port),
+ formatter=formatter, level=level,
+ )
+
+
preconfigured = {
'stderr': STDERR,
'stdout': STDOUT,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri/tests/test_output.py
new/daiquiri-2.1.1/daiquiri/tests/test_output.py
--- old/daiquiri-1.6.0/daiquiri/tests/test_output.py 2018-03-08
18:17:19.000000000 +0100
+++ new/daiquiri-2.1.1/daiquiri/tests/test_output.py 2020-01-16
11:05:47.000000000 +0100
@@ -9,13 +9,31 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
+import json
+import logging
import syslog
import unittest
from datetime import timedelta
+import mock
+
+import daiquiri
from daiquiri import output
+class DatadogMatcher(object):
+ def __init__(self, expected):
+ self.expected = expected
+
+ def __eq__(self, other):
+ return json.loads(other.decode()[:-1]) == self.expected
+
+ def __repr__(self):
+ return "b'" + json.dumps(
+ self.expected, default=lambda x: "unserializable"
+ ) + "\\n'"
+
+
class TestOutput(unittest.TestCase):
def test_find_facility(self):
self.assertEqual(syslog.LOG_USER,
@@ -70,3 +88,36 @@
]
for t in error_cases:
self.assertRaises(AttributeError, fn, t)
+
+ def test_datadog(self):
+ with mock.patch('socket.socket') as mock_socket:
+ socket_instance = mock_socket.return_value
+ daiquiri.setup(outputs=(daiquiri.output.Datadog(),),
+ level=logging.DEBUG)
+ logger = daiquiri.getLogger()
+ logger.error("foo", bar=1)
+ logger.info("bar")
+ try:
+ 1 / 0
+ except ZeroDivisionError:
+ logger = daiquiri.getLogger("saymyname")
+ logger.error("backtrace", exc_info=True)
+ socket_instance.connect.assert_called_once_with(
+ ("127.0.0.1", 10518)
+ )
+ socket_instance.sendall.assert_has_calls([
+ mock.call(DatadogMatcher({
+ "status": "error", "message": "foo", "bar": 1,
+ "logger": {"name": "root"}, "timestamp": mock.ANY,
+ })),
+ mock.call(DatadogMatcher({
+ "status": "info", "message": "bar",
+ "logger": {"name": "root"}, "timestamp": mock.ANY,
+ })),
+ mock.call(DatadogMatcher({
+ "status": "error", "message": "backtrace",
+ "logger": {"name": "saymyname"}, "timestamp": mock.ANY,
+ "error": {"kind": "ZeroDivisionError", "stack": None,
+ "message": mock.ANY}
+ })),
+ ])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri.egg-info/PKG-INFO
new/daiquiri-2.1.1/daiquiri.egg-info/PKG-INFO
--- old/daiquiri-1.6.0/daiquiri.egg-info/PKG-INFO 2019-08-06
19:18:33.000000000 +0200
+++ new/daiquiri-2.1.1/daiquiri.egg-info/PKG-INFO 2020-03-09
10:12:39.000000000 +0100
@@ -1,11 +1,11 @@
Metadata-Version: 2.1
Name: daiquiri
-Version: 1.6.0
+Version: 2.1.1
Summary: Library to configure Python logging easily
Home-page: https://github.com/jd/daiquiri
Author: Julien Danjou
Author-email: [email protected]
-License: UNKNOWN
+License: Apache 2.0
Description: =======================================
daiquiri -- Python logging setup helper
=======================================
@@ -25,7 +25,6 @@
* Free software: Apache license
* Source: https://github.com/jd/daiquiri
-
Platform: UNKNOWN
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: System Administrators
@@ -37,6 +36,6 @@
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
Provides-Extra: test
Provides-Extra: systemd
-Provides-Extra: json
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri.egg-info/SOURCES.txt
new/daiquiri-2.1.1/daiquiri.egg-info/SOURCES.txt
--- old/daiquiri-1.6.0/daiquiri.egg-info/SOURCES.txt 2019-08-06
19:18:34.000000000 +0200
+++ new/daiquiri-2.1.1/daiquiri.egg-info/SOURCES.txt 2020-03-09
10:12:39.000000000 +0100
@@ -1,7 +1,6 @@
+.gitignore
.mergify.yml
.testr.conf
-AUTHORS
-ChangeLog
LICENSE
README.rst
setup.cfg
@@ -15,7 +14,6 @@
daiquiri.egg-info/PKG-INFO
daiquiri.egg-info/SOURCES.txt
daiquiri.egg-info/dependency_links.txt
-daiquiri.egg-info/not-zip-safe
daiquiri.egg-info/pbr.json
daiquiri.egg-info/requires.txt
daiquiri.egg-info/top_level.txt
@@ -27,6 +25,7 @@
doc/source/index.rst
examples/advanced_extra.py
examples/basic.py
+examples/excepthook.py
examples/extra.py
examples/files.py
examples/formatter.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri.egg-info/not-zip-safe
new/daiquiri-2.1.1/daiquiri.egg-info/not-zip-safe
--- old/daiquiri-1.6.0/daiquiri.egg-info/not-zip-safe 2017-09-29
14:39:02.000000000 +0200
+++ new/daiquiri-2.1.1/daiquiri.egg-info/not-zip-safe 1970-01-01
01:00:00.000000000 +0100
@@ -1 +0,0 @@
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri.egg-info/pbr.json
new/daiquiri-2.1.1/daiquiri.egg-info/pbr.json
--- old/daiquiri-1.6.0/daiquiri.egg-info/pbr.json 2019-08-06
19:18:33.000000000 +0200
+++ new/daiquiri-2.1.1/daiquiri.egg-info/pbr.json 2020-01-16
11:06:41.000000000 +0100
@@ -1 +1 @@
-{"git_version": "d73e387", "is_release": true}
\ No newline at end of file
+{"git_version": "66933d7", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/daiquiri.egg-info/requires.txt
new/daiquiri-2.1.1/daiquiri.egg-info/requires.txt
--- old/daiquiri-1.6.0/daiquiri.egg-info/requires.txt 2019-08-06
19:18:33.000000000 +0200
+++ new/daiquiri-2.1.1/daiquiri.egg-info/requires.txt 2020-03-09
10:12:39.000000000 +0100
@@ -1,5 +1,3 @@
-
-[json]
python-json-logger
[systemd]
@@ -8,3 +6,4 @@
[test]
pytest
six
+mock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/doc/source/index.rst
new/daiquiri-2.1.1/doc/source/index.rst
--- old/daiquiri-1.6.0/doc/source/index.rst 2019-08-06 18:42:24.000000000
+0200
+++ new/daiquiri-2.1.1/doc/source/index.rst 2020-02-27 10:43:46.000000000
+0100
@@ -20,11 +20,6 @@
pip install daiquiri
-If you want to enable support of JSON output, you must also install the `json`
-flavor::
-
- pip install daiquiri[json]
-
If you want to enable systemd support, you must install the `systemd` flavor::
pip install daiquiri[systemd]
@@ -129,6 +124,18 @@
.. literalinclude:: ../../examples/files.py
+
+Excepthook Integration
+----------------------
+
+The `daiquiri.setup` method accepts an optional `set_excepthook` keyword
argument
+(defaults to `True`) which controls whether or not Daiquiri will override the
+global `sys.excepthook`. Disabling this can be useful when using Daiquiri
alongside
+another library which requires setting the excepthook, e.g. an error reporting
+library.
+
+.. literalinclude:: ../../examples/excepthook.py
+
API
===
.. automodule:: daiquiri
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/examples/excepthook.py
new/daiquiri-2.1.1/examples/excepthook.py
--- old/daiquiri-1.6.0/examples/excepthook.py 1970-01-01 01:00:00.000000000
+0100
+++ new/daiquiri-2.1.1/examples/excepthook.py 2020-02-27 10:43:46.000000000
+0100
@@ -0,0 +1,7 @@
+import daiquiri
+
+daiquiri.setup(set_excepthook=False)
+logger = daiquiri.getLogger(__name__)
+
+# This exception will not pass through Daiquiri:
+raise Exception("Something went wrong")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/setup.cfg new/daiquiri-2.1.1/setup.cfg
--- old/daiquiri-1.6.0/setup.cfg 2019-08-06 19:18:35.000000000 +0200
+++ new/daiquiri-2.1.1/setup.cfg 2020-03-09 10:12:39.478208500 +0100
@@ -1,8 +1,8 @@
[metadata]
name = daiquiri
+license = Apache 2.0
summary = Library to configure Python logging easily
-description-file =
- README.rst
+long_description = file:README.rst
author = Julien Danjou
author-email = [email protected]
home-page = https://github.com/jd/daiquiri
@@ -17,25 +17,22 @@
Programming Language :: Python :: 3
Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7
+ Programming Language :: Python :: 3.8
-[files]
+[options]
+install_requires =
+ python-json-logger
packages =
daiquiri
-[extras]
+[options.extras_require]
test =
pytest
six
-json =
- python-json-logger
+ mock
systemd =
systemd-python>=234
-[build_sphinx]
-all_files = 1
-build-dir = doc/build
-source-dir = doc/source
-
[wheel]
universal = 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/setup.py new/daiquiri-2.1.1/setup.py
--- old/daiquiri-1.6.0/setup.py 2017-09-29 14:38:54.000000000 +0200
+++ new/daiquiri-2.1.1/setup.py 2020-02-27 10:41:05.000000000 +0100
@@ -1,5 +1,7 @@
+#!/usr/bin/env python
import setuptools
setuptools.setup(
- setup_requires=['pbr'],
- pbr=True)
+ setup_requires=['setuptools_scm'],
+ use_scm_version=True,
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/daiquiri-1.6.0/tox.ini new/daiquiri-2.1.1/tox.ini
--- old/daiquiri-1.6.0/tox.ini 2019-08-06 18:42:24.000000000 +0200
+++ new/daiquiri-2.1.1/tox.ini 2020-02-27 10:41:05.000000000 +0100
@@ -1,11 +1,11 @@
[tox]
-envlist = py36,py35,py27,pep8,docs
+envlist = py27,py36,py37,py38,pep8,docs
[testenv]
whitelist_externals = sh
-deps = -e.[test,json]
+deps = -e.[test]
commands =
- pytest daiquiri
+ pytest {posargs}
sh -c "for example in examples/*.py; do python $example; done"
sh -c "rm errors.log everything.log"