logtail-python 0.3.0__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. {logtail_python-0.3.0/logtail_python.egg-info → logtail_python-0.3.1}/PKG-INFO +2 -2
  2. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/__init__.py +1 -1
  3. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/frame.py +8 -2
  4. {logtail_python-0.3.0 → logtail_python-0.3.1/logtail_python.egg-info}/PKG-INFO +2 -2
  5. {logtail_python-0.3.0 → logtail_python-0.3.1}/setup.py +1 -1
  6. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/test_flusher.cpython-311.pyc +0 -0
  7. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/test_handler.cpython-311.pyc +0 -0
  8. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/test_uploader.cpython-311.pyc +0 -0
  9. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/test_handler.py +20 -0
  10. {logtail_python-0.3.0 → logtail_python-0.3.1}/LICENSE.md +0 -0
  11. {logtail_python-0.3.0 → logtail_python-0.3.1}/MANIFEST.in +0 -0
  12. {logtail_python-0.3.0 → logtail_python-0.3.1}/README.md +0 -0
  13. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/compat.py +0 -0
  14. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/flusher.py +0 -0
  15. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/formatter.py +0 -0
  16. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/handler.py +0 -0
  17. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/helpers.py +0 -0
  18. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail/uploader.py +0 -0
  19. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail_python.egg-info/SOURCES.txt +0 -0
  20. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail_python.egg-info/dependency_links.txt +0 -0
  21. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail_python.egg-info/requires.txt +0 -0
  22. {logtail_python-0.3.0 → logtail_python-0.3.1}/logtail_python.egg-info/top_level.txt +0 -0
  23. {logtail_python-0.3.0 → logtail_python-0.3.1}/requirements.txt +0 -0
  24. {logtail_python-0.3.0 → logtail_python-0.3.1}/setup.cfg +0 -0
  25. {logtail_python-0.3.0 → logtail_python-0.3.1}/test-requirements.txt +0 -0
  26. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__init__.py +0 -0
  27. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/__init__.cpython-311.pyc +0 -0
  28. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/test_formatter.cpython-311.pyc +0 -0
  29. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/test_frame.cpython-311.pyc +0 -0
  30. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/__pycache__/test_helpers.cpython-311.pyc +0 -0
  31. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/test_flusher.py +0 -0
  32. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/test_formatter.py +0 -0
  33. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/test_frame.py +0 -0
  34. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/test_helpers.py +0 -0
  35. {logtail_python-0.3.0 → logtail_python-0.3.1}/tests/test_uploader.py +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logtail-python
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Logtail.com client library
5
5
  Home-page: https://github.com/logtail/logtail-python
6
- Download-URL: https://github.com/logtail/logtail-python/tarball/0.3.0
6
+ Download-URL: https://github.com/logtail/logtail-python/tarball/0.3.1
7
7
  Author: Logtail
8
8
  Author-email: hello@logtail.com
9
9
  License: ISC
@@ -5,6 +5,6 @@ from .handler import LogtailHandler
5
5
  from .helpers import LogtailContext, DEFAULT_CONTEXT
6
6
  from .formatter import LogtailFormatter
7
7
 
8
- __version__ = '0.3.0'
8
+ __version__ = '0.3.1'
9
9
 
10
10
  context = DEFAULT_CONTEXT
@@ -60,6 +60,9 @@ def _parse_custom_events(record, include_extra_attributes):
60
60
  def _remove_circular_dependencies(obj, memo=None):
61
61
  if memo is None:
62
62
  memo = set()
63
+ # Skip immutable types, which can't contain circular dependencies
64
+ if isinstance(obj, (str, int, float, bool)):
65
+ return obj
63
66
  if id(obj) in memo:
64
67
  return "<omitted circular reference>"
65
68
  memo.add(id(obj))
@@ -69,8 +72,11 @@ def _remove_circular_dependencies(obj, memo=None):
69
72
  new_dict[key] = _remove_circular_dependencies(value, memo)
70
73
  return new_dict
71
74
  elif isinstance(obj, list):
72
- new_list = [_remove_circular_dependencies(item, memo) for item in obj]
73
- return new_list
75
+ return [_remove_circular_dependencies(item, memo) for item in obj]
76
+ elif isinstance(obj, tuple):
77
+ return tuple(_remove_circular_dependencies(item, memo) for item in obj)
78
+ elif isinstance(obj, set):
79
+ return {_remove_circular_dependencies(item, memo) for item in obj}
74
80
  else:
75
81
  return obj
76
82
 
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: logtail-python
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Logtail.com client library
5
5
  Home-page: https://github.com/logtail/logtail-python
6
- Download-URL: https://github.com/logtail/logtail-python/tarball/0.3.0
6
+ Download-URL: https://github.com/logtail/logtail-python/tarball/0.3.1
7
7
  Author: Logtail
8
8
  Author-email: hello@logtail.com
9
9
  License: ISC
@@ -3,7 +3,7 @@ import os
3
3
  from setuptools import setup
4
4
 
5
5
 
6
- VERSION = '0.3.0'
6
+ VERSION = '0.3.1'
7
7
  ROOT_DIR = os.path.dirname(__file__)
8
8
 
9
9
  REQUIREMENTS = [
@@ -203,6 +203,26 @@ class TestLogtailHandler(unittest.TestCase):
203
203
  self.assertEqual(log_entry['data']['egg']['chicken'], "<omitted circular reference>")
204
204
  self.assertTrue(handler.pipe.empty())
205
205
 
206
+ @patch('logtail.handler.FlushWorker')
207
+ def test_can_have_multiple_instance_of_same_string_in_extra_data(self, MockWorker):
208
+ buffer_capacity = 1
209
+ handler = LogtailHandler(
210
+ source_token=self.source_token,
211
+ buffer_capacity=buffer_capacity
212
+ )
213
+
214
+ logger = logging.getLogger(__name__)
215
+ logger.handlers = []
216
+ logger.addHandler(handler)
217
+ test_string = 'this is a test string'
218
+ logger.info('hello', extra={'test1': test_string, 'test2': test_string})
219
+
220
+ log_entry = handler.pipe.get()
221
+
222
+ self.assertEqual(log_entry['message'], 'hello')
223
+ self.assertEqual(log_entry['test1'], 'this is a test string')
224
+ self.assertEqual(log_entry['test2'], 'this is a test string')
225
+ self.assertTrue(handler.pipe.empty())
206
226
 
207
227
  @patch('logtail.handler.FlushWorker')
208
228
  def test_can_send_circular_dependency_in_context(self, MockWorker):
File without changes
File without changes