t-bug-catcher 0.6.6__tar.gz → 0.6.7__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 (26) hide show
  1. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/PKG-INFO +1 -1
  2. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/setup.cfg +1 -1
  3. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/setup.py +1 -1
  4. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/__init__.py +1 -1
  5. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/jira.py +6 -4
  6. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/utils/common.py +17 -0
  7. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher.egg-info/PKG-INFO +1 -1
  8. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/MANIFEST.in +0 -0
  9. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/README.rst +0 -0
  10. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/pyproject.toml +0 -0
  11. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/requirements.txt +0 -0
  12. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/bug_catcher.py +0 -0
  13. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/bug_snag.py +0 -0
  14. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/config.py +0 -0
  15. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/exceptions.py +0 -0
  16. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/resources/whispers_config.yml +0 -0
  17. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/stack_saver.py +0 -0
  18. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/utils/__init__.py +0 -0
  19. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/utils/logger.py +0 -0
  20. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher/workitems.py +0 -0
  21. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher.egg-info/SOURCES.txt +0 -0
  22. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher.egg-info/dependency_links.txt +0 -0
  23. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher.egg-info/not-zip-safe +0 -0
  24. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher.egg-info/requires.txt +0 -0
  25. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/t_bug_catcher.egg-info/top_level.txt +0 -0
  26. {t_bug_catcher-0.6.6 → t_bug_catcher-0.6.7}/tests/test_t_bug_catcher.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: t_bug_catcher
3
- Version: 0.6.6
3
+ Version: 0.6.7
4
4
  Summary: Bug catcher
5
5
  Home-page: https://www.thoughtful.ai/
6
6
  Author: Thoughtful
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.6.6
2
+ current_version = 0.6.7
3
3
  commit = True
4
4
  tag = False
5
5
 
@@ -26,7 +26,7 @@ setup(
26
26
  packages=find_packages(include=["t_bug_catcher", "t_bug_catcher.*"]),
27
27
  test_suite="tests",
28
28
  url="https://www.thoughtful.ai/",
29
- version="0.6.6",
29
+ version="0.6.7",
30
30
  zip_safe=False,
31
31
  install_requires=install_requirements,
32
32
  include_package_data=True,
@@ -3,7 +3,7 @@
3
3
  __author__ = """Thoughtful"""
4
4
  __email__ = "support@thoughtful.ai"
5
5
  # fmt: off
6
- __version__ = '0.6.6'
6
+ __version__ = '0.6.7'
7
7
  # fmt: on
8
8
 
9
9
  from .bug_catcher import (
@@ -22,7 +22,7 @@ from retry import retry
22
22
  from .config import CONFIG
23
23
  from .exceptions import BadRequestError
24
24
  from .utils import logger
25
- from .utils.common import Encoder, get_frames, remove_holotree_id, retrieve_build_info
25
+ from .utils.common import Encoder, clean_nested_data, get_frames, remove_holotree_id, retrieve_build_info
26
26
  from .workitems import variables
27
27
 
28
28
 
@@ -856,8 +856,7 @@ class Jira:
856
856
  exc_traceback_info: str = (
857
857
  f"Traceback (most recent call last):\n{''.join(traceback.format_tb(exc_traceback)[-1])}{exc_info}"
858
858
  )
859
-
860
- return {
859
+ description = {
861
860
  "version": 1,
862
861
  "type": "doc",
863
862
  "content": []
@@ -873,6 +872,7 @@ class Jira:
873
872
  + (self.__metadata_markup(metadata) if metadata else [])
874
873
  + self.__error_markup(error_id),
875
874
  }
875
+ return clean_nested_data(description)
876
876
 
877
877
  def __create_warning_description_markup(
878
878
  self,
@@ -1501,7 +1501,9 @@ class Jira:
1501
1501
  return response
1502
1502
  except Exception as ex:
1503
1503
  logger.warning(f"Failed to create Jira issue due to: {type(ex)}: {ex}")
1504
- self.report_internal_error(exception=ex, additional_info="Failed to report unhandled error.")
1504
+ self.report_internal_error(
1505
+ exception=ex, metadata=variables, additional_info="Failed to report unhandled error."
1506
+ )
1505
1507
  return False
1506
1508
 
1507
1509
  def report_internal_error(self, exception: Exception, metadata: dict = None, additional_info: str = None):
@@ -115,6 +115,23 @@ def remove_holotree_id(path: str) -> str:
115
115
  return re.sub(pattern, r"\1", path)
116
116
 
117
117
 
118
+ def clean_nested_data(data):
119
+ """Recursively replaces None values with empty strings in nested dictionaries and lists.
120
+
121
+ Args:
122
+ data: Input data structure (dict, list, or other type)
123
+
124
+ Returns:
125
+ Cleaned data structure with None values replaced by empty strings
126
+ """
127
+ if isinstance(data, dict):
128
+ return {key: clean_nested_data(value) for key, value in data.items()}
129
+ elif isinstance(data, (list, tuple)):
130
+ return [clean_nested_data(item) for item in data]
131
+ else:
132
+ return "" if data is None else data
133
+
134
+
118
135
  def retrieve_build_info():
119
136
  """Logs build information."""
120
137
  if not os.path.exists(CONFIG.BUILD_INFO_FILE):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: t_bug_catcher
3
- Version: 0.6.6
3
+ Version: 0.6.7
4
4
  Summary: Bug catcher
5
5
  Home-page: https://www.thoughtful.ai/
6
6
  Author: Thoughtful
File without changes
File without changes