extract-msg 0.48.2__tar.gz → 0.48.4__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 (103) hide show
  1. {extract_msg-0.48.2 → extract_msg-0.48.4}/CHANGELOG.md +7 -0
  2. {extract_msg-0.48.2 → extract_msg-0.48.4}/PKG-INFO +3 -3
  3. {extract_msg-0.48.2 → extract_msg-0.48.4}/README.rst +2 -2
  4. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/__init__.py +2 -2
  5. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/__main__.py +1 -1
  6. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/attachment_base.py +1 -1
  7. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/signed_att.py +42 -0
  8. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg.egg-info/PKG-INFO +3 -3
  9. {extract_msg-0.48.2 → extract_msg-0.48.4}/LICENSE.txt +0 -0
  10. {extract_msg-0.48.2 → extract_msg-0.48.4}/MANIFEST.in +0 -0
  11. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/_rtf/__init__.py +0 -0
  12. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/_rtf/create_doc.py +0 -0
  13. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/_rtf/inject_rtf.py +0 -0
  14. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/_rtf/token.py +0 -0
  15. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/_rtf/tokenize_rtf.py +0 -0
  16. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/__init__.py +0 -0
  17. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/attachment.py +0 -0
  18. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/broken_att.py +0 -0
  19. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/custom_att.py +0 -0
  20. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/custom_att_handler/__init__.py +0 -0
  21. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/custom_att_handler/custom_handler.py +0 -0
  22. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/custom_att_handler/lnk_obj_att.py +0 -0
  23. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/custom_att_handler/outlook_image_dib.py +0 -0
  24. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/emb_msg_att.py +0 -0
  25. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/unsupported_att.py +0 -0
  26. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/attachments/web_att.py +0 -0
  27. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/constants/__init__.py +0 -0
  28. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/constants/ps.py +0 -0
  29. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/constants/re.py +0 -0
  30. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/constants/st.py +0 -0
  31. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/data/logging-config/logging-nt.json +0 -0
  32. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/data/logging-config/logging-posix.json +0 -0
  33. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/__init__.py +0 -0
  34. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/__init__.py +0 -0
  35. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_mac_ce.py +0 -0
  36. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_mac_cyrillic.py +0 -0
  37. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_mac_greek.py +0 -0
  38. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_mac_iceland.py +0 -0
  39. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_mac_turkish.py +0 -0
  40. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_win874_dec.py +0 -0
  41. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/_dt/_win950_dec.py +0 -0
  42. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/encoding/utils.py +0 -0
  43. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/enums.py +0 -0
  44. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/exceptions.py +0 -0
  45. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/__init__.py +0 -0
  46. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/appointment.py +0 -0
  47. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/calendar.py +0 -0
  48. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/calendar_base.py +0 -0
  49. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/contact.py +0 -0
  50. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/journal.py +0 -0
  51. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/meeting_cancellation.py +0 -0
  52. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/meeting_exception.py +0 -0
  53. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/meeting_forward.py +0 -0
  54. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/meeting_related.py +0 -0
  55. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/meeting_request.py +0 -0
  56. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/meeting_response.py +0 -0
  57. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/message.py +0 -0
  58. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/message_base.py +0 -0
  59. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/message_signed.py +0 -0
  60. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/message_signed_base.py +0 -0
  61. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/msg.py +0 -0
  62. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/post.py +0 -0
  63. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/sticky_note.py +0 -0
  64. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/task.py +0 -0
  65. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/msg_classes/task_request.py +0 -0
  66. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/null_date.py +0 -0
  67. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/ole_writer.py +0 -0
  68. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/open_msg.py +0 -0
  69. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/properties/__init__.py +0 -0
  70. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/properties/named.py +0 -0
  71. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/properties/prop.py +0 -0
  72. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/properties/properties_store.py +0 -0
  73. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/py.typed +0 -0
  74. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/recipient.py +0 -0
  75. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/__init__.py +0 -0
  76. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/_helpers.py +0 -0
  77. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/business_card.py +0 -0
  78. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/cfoas.py +0 -0
  79. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/contact_link_entry.py +0 -0
  80. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/dev_mode_a.py +0 -0
  81. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/dv_target_device.py +0 -0
  82. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/entry_id.py +0 -0
  83. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/misc_id.py +0 -0
  84. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/mon_stream.py +0 -0
  85. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/odt.py +0 -0
  86. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/ole_pres.py +0 -0
  87. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/ole_stream_struct.py +0 -0
  88. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/recurrence_pattern.py +0 -0
  89. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/report_tag.py +0 -0
  90. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/system_time.py +0 -0
  91. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/time_zone_definition.py +0 -0
  92. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/time_zone_struct.py +0 -0
  93. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/toc_entry.py +0 -0
  94. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/structures/tz_rule.py +0 -0
  95. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg/utils.py +0 -0
  96. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg.egg-info/SOURCES.txt +0 -0
  97. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg.egg-info/dependency_links.txt +0 -0
  98. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg.egg-info/entry_points.txt +0 -0
  99. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg.egg-info/requires.txt +0 -0
  100. {extract_msg-0.48.2 → extract_msg-0.48.4}/extract_msg.egg-info/top_level.txt +0 -0
  101. {extract_msg-0.48.2 → extract_msg-0.48.4}/requirements.txt +0 -0
  102. {extract_msg-0.48.2 → extract_msg-0.48.4}/setup.cfg +0 -0
  103. {extract_msg-0.48.2 → extract_msg-0.48.4}/setup.py +0 -0
@@ -1,3 +1,10 @@
1
+ **v0.48.4**
2
+ * [[TeamMsgExtractor #411](https://github.com/TeamMsgExtractor/msg-extractor/issues/411)] Fix console script throwing error due to changed console args not defaulting.
3
+
4
+ **v0.48.3**
5
+ * [[TeamMsgExtractor #409](https://github.com/TeamMsgExtractor/msg-extractor/issues/409)] Added missing private method to `SignedAttachment`.
6
+ * Fixed some missing typing information.
7
+
1
8
  **v0.48.2**
2
9
  * Fixed bugs with `MessageBase.asEmailMessage()`. Numerous improvements to how it handles the data.
3
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: extract_msg
3
- Version: 0.48.2
3
+ Version: 0.48.4
4
4
  Summary: Extracts emails and attachments saved in Microsoft Outlook's .msg files
5
5
  Home-page: https://github.com/TeamMsgExtractor/msg-extractor
6
6
  Download-URL: https://github.com/TeamMsgExtractor/msg-extractor/archives/master
@@ -278,8 +278,8 @@ your access to the newest major version of extract-msg.
278
278
  .. |License: GPL v3| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
279
279
  :target: LICENSE.txt
280
280
 
281
- .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.2-blue.svg
282
- :target: https://pypi.org/project/extract-msg/0.48.2/
281
+ .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.4-blue.svg
282
+ :target: https://pypi.org/project/extract-msg/0.48.4/
283
283
 
284
284
  .. |PyPI2| image:: https://img.shields.io/badge/python-3.8+-brightgreen.svg
285
285
  :target: https://www.python.org/downloads/release/python-3810/
@@ -260,8 +260,8 @@ your access to the newest major version of extract-msg.
260
260
  .. |License: GPL v3| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
261
261
  :target: LICENSE.txt
262
262
 
263
- .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.2-blue.svg
264
- :target: https://pypi.org/project/extract-msg/0.48.2/
263
+ .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.4-blue.svg
264
+ :target: https://pypi.org/project/extract-msg/0.48.4/
265
265
 
266
266
  .. |PyPI2| image:: https://img.shields.io/badge/python-3.8+-brightgreen.svg
267
267
  :target: https://www.python.org/downloads/release/python-3810/
@@ -27,8 +27,8 @@ https://github.com/TeamMsgExtractor/msg-extractor
27
27
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
28
28
 
29
29
  __author__ = 'Destiny Peterson & Matthew Walker'
30
- __date__ = '2024-03-09'
31
- __version__ = '0.48.2'
30
+ __date__ = '2024-03-20'
31
+ __version__ = '0.48.4'
32
32
 
33
33
  __all__ = [
34
34
  # Modules:
@@ -13,7 +13,7 @@ from extract_msg.enums import ErrorBehavior
13
13
  from typing import List
14
14
 
15
15
 
16
- def main(argv : List[str]) -> None:
16
+ def main(argv: List[str] = sys.argv) -> None:
17
17
  # Setup logging to stdout, indicate running from cli
18
18
  CLI_LOGGING = 'extract_msg_cli'
19
19
  args = utils.getCommandArgs(argv[1:])
@@ -152,7 +152,7 @@ class AttachmentBase(abc.ABC):
152
152
  raise ReferenceError('The MSGFile for this Attachment instance has been garbage collected.')
153
153
  return msg._getTypedStream([self.__dir, msgPathToString(filename)], True, _type)
154
154
 
155
- def _handleFnc(self, _zip, filename, customPath, kwargs) -> pathlib.Path:
155
+ def _handleFnc(self, _zip, filename, customPath: pathlib.Path, kwargs) -> pathlib.Path:
156
156
  """
157
157
  "Handle Filename Conflict"
158
158
 
@@ -62,6 +62,48 @@ class SignedAttachment:
62
62
  if self.__data is None:
63
63
  self.__data = data
64
64
 
65
+ def _handleFnc(self, _zip, filename, customPath: pathlib.Path, kwargs) -> pathlib.Path:
66
+ """
67
+ "Handle Filename Conflict"
68
+
69
+ Internal function for use in determining how to modify the saving path
70
+ when a file with the same name already exists. This is mainly because
71
+ any save function that uses files will need to do this functionality.
72
+
73
+ :returns: A ``pathlib.Path`` object to where the file should be saved.
74
+ """
75
+ fullFilename = customPath / filename
76
+
77
+ overwriteExisting = kwargs.get('overwriteExisting', False)
78
+
79
+ if _zip:
80
+ # If we are writing to a zip file and are not overwriting.
81
+ if not overwriteExisting:
82
+ name, ext = os.path.splitext(filename)
83
+ nameList = _zip.namelist()
84
+ if str(fullFilename).replace('\\', '/') in nameList:
85
+ for i in range(2, 100):
86
+ testName = customPath / f'{name} ({i}){ext}'
87
+ if str(testName).replace('\\', '/') not in nameList:
88
+ return testName
89
+ else:
90
+ # If we couldn't find one that didn't exist.
91
+ raise FileExistsError(f'Could not create the specified file because it already exists ("{fullFilename}").')
92
+ else:
93
+ if not overwriteExisting and fullFilename.exists():
94
+ # Try to split the filename into a name and extension.
95
+ name, ext = os.path.splitext(filename)
96
+ # Try to add a number to it so that we can save without overwriting.
97
+ for i in range(2, 100):
98
+ testName = customPath / f'{name} ({i}){ext}'
99
+ if not testName.exists():
100
+ return testName
101
+ else:
102
+ # If we couldn't find one that didn't exist.
103
+ raise FileExistsError(f'Could not create the specified file because it already exists ("{fullFilename}").')
104
+
105
+ return fullFilename
106
+
65
107
  def save(self, **kwargs) -> constants.SAVE_TYPE:
66
108
  """
67
109
  Saves the attachment data.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: extract-msg
3
- Version: 0.48.2
3
+ Version: 0.48.4
4
4
  Summary: Extracts emails and attachments saved in Microsoft Outlook's .msg files
5
5
  Home-page: https://github.com/TeamMsgExtractor/msg-extractor
6
6
  Download-URL: https://github.com/TeamMsgExtractor/msg-extractor/archives/master
@@ -278,8 +278,8 @@ your access to the newest major version of extract-msg.
278
278
  .. |License: GPL v3| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
279
279
  :target: LICENSE.txt
280
280
 
281
- .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.2-blue.svg
282
- :target: https://pypi.org/project/extract-msg/0.48.2/
281
+ .. |PyPI3| image:: https://img.shields.io/badge/pypi-0.48.4-blue.svg
282
+ :target: https://pypi.org/project/extract-msg/0.48.4/
283
283
 
284
284
  .. |PyPI2| image:: https://img.shields.io/badge/python-3.8+-brightgreen.svg
285
285
  :target: https://www.python.org/downloads/release/python-3810/
File without changes
File without changes
File without changes
File without changes