atomicshop 2.19.15__py3-none-any.whl → 2.19.17__py3-none-any.whl

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.

Potentially problematic release.


This version of atomicshop might be problematic. Click here for more details.

atomicshop/__init__.py CHANGED
@@ -1,4 +1,4 @@
1
1
  """Atomic Basic functions and classes to make developer life easier"""
2
2
 
3
3
  __author__ = "Den Kras"
4
- __version__ = '2.19.15'
4
+ __version__ = '2.19.17'
atomicshop/etws/trace.py CHANGED
@@ -1,7 +1,7 @@
1
1
  import queue
2
2
  import sys
3
- import time
4
3
  import multiprocessing.managers
4
+ from datetime import datetime
5
5
 
6
6
  # Import FireEye Event Tracing library.
7
7
  import etw
@@ -9,7 +9,6 @@ import etw
9
9
  from ..print_api import print_api
10
10
  from . import sessions
11
11
  from ..process_poller import simple_process_pool
12
- from ..wrappers.psutilw import psutilw
13
12
 
14
13
 
15
14
  class EventTrace(etw.ETW):
@@ -147,9 +146,13 @@ class EventTrace(etw.ETW):
147
146
 
148
147
  event: tuple = self.event_queue.get()
149
148
 
149
+ current_datetime = datetime.now()
150
+ readable_time = current_datetime.strftime('%Y-%m-%d %H:%M:%S.%f')
151
+
150
152
  event_dict: dict = {
151
153
  'EventId': event[0],
152
- 'EventHeader': event[1]
154
+ 'EventHeader': event[1],
155
+ 'timestamp': readable_time
153
156
  }
154
157
 
155
158
  if 'ProcessId' not in event[1]:
@@ -136,6 +136,7 @@ class DnsRequestResponseTrace:
136
136
  status = 'Error'
137
137
 
138
138
  event_dict: dict = {
139
+ 'timestamp': event['timestamp'],
139
140
  'event_id': event['EventId'],
140
141
  'query': event['EventHeader']['QueryName'],
141
142
  'query_type_id': str(event['EventHeader']['QueryType']),
@@ -112,6 +112,7 @@ class TcpIpNewConnectionsTrace:
112
112
  remote_address = remote_address.replace('[', '').replace(']', '')
113
113
 
114
114
  event_dict: dict = {
115
+ 'timestamp': event['timestamp'],
115
116
  'event_id': event['EventId'],
116
117
  'local_ip': local_address,
117
118
  'local_port': local_port,
@@ -5,6 +5,7 @@ try:
5
5
  import tomllib
6
6
  except ModuleNotFoundError:
7
7
  # This is library from pypi.
8
+ # noinspection PyPackageRequirements
8
9
  import tomli as tomllib
9
10
 
10
11
  from . import file_io
@@ -14,6 +15,7 @@ class TomlValueNotImplementedError(Exception):
14
15
  pass
15
16
 
16
17
 
18
+ # noinspection PyUnusedLocal
17
19
  @file_io.read_file_decorator
18
20
  def read_toml_file(file_path: str,
19
21
  file_mode: str = 'rb',
@@ -35,6 +37,7 @@ def read_toml_file(file_path: str,
35
37
  return tomllib.load(file_object)
36
38
 
37
39
 
40
+ # noinspection PyUnusedLocal
38
41
  @file_io.write_file_decorator
39
42
  def write_toml_file(
40
43
  toml_content: dict,
@@ -112,7 +115,11 @@ def update_toml_file_with_new_config(
112
115
  If not, the changes will be written to the 'main_config_file_path'.
113
116
  """
114
117
 
115
- # Sync the config files.
118
+ if not changes_config_file_path and not changes_dict:
119
+ raise ValueError("You must provide either 'changes_config_file_path' or 'changes_dict'.")
120
+ if changes_config_file_path and changes_dict:
121
+ raise ValueError("You can't provide both 'changes_config_file_path' and 'changes_dict'.")
122
+
116
123
  with open(main_config_file_path, 'r') as file:
117
124
  main_config_file_text_lines: list = file.readlines()
118
125
 
@@ -121,30 +128,29 @@ def update_toml_file_with_new_config(
121
128
  # Read the new config file.
122
129
  main_config_file_dict: dict = read_toml_file(main_config_file_path)
123
130
 
124
- if changes_dict:
125
- changes_config_file_dict = changes_dict
126
- else:
127
- changes_config_file_dict: dict = read_toml_file(changes_config_file_path)
131
+ if not changes_dict:
132
+ changes_dict: dict = read_toml_file(changes_config_file_path)
128
133
 
129
134
  # Update the config text lines.
130
135
  for category, settings in main_config_file_dict.items():
131
- if category not in changes_config_file_dict:
136
+ if category not in changes_dict:
132
137
  continue
133
138
 
134
139
  for key, value in settings.items():
135
140
  # If the key is in the old config file, use the old value.
136
- if key not in changes_config_file_dict[category]:
141
+ if key not in changes_dict[category]:
137
142
  continue
138
143
 
139
- if main_config_file_dict[category][key] != changes_config_file_dict[category][key]:
144
+ if main_config_file_dict[category][key] != changes_dict[category][key]:
140
145
  # Get the line of the current category line.
141
146
  current_category_line_index_in_text = None
142
147
  for current_category_line_index_in_text, line in enumerate(main_config_file_text_lines):
143
148
  if f"[{category}]" in line:
144
149
  break
145
150
 
146
- # current_category_line_index_in_text = main_config_file_text_lines.index(f"[{category}]\n")
147
- current_category_index_in_main_config_dict = list(main_config_file_dict.keys()).index(category)
151
+ # Get the index inside the main config file dictionary of the current category.
152
+ main_config_list_of_keys: list = list(main_config_file_dict.keys())
153
+ current_category_index_in_main_config_dict = main_config_list_of_keys.index(category)
148
154
 
149
155
  try:
150
156
  next_category_name = list(
@@ -191,20 +197,20 @@ def update_toml_file_with_new_config(
191
197
  # noinspection PyUnboundLocalVariable
192
198
  comment = main_config_file_text_lines[line_index].replace(string_to_check, '')
193
199
 
194
- object_type = type(changes_config_file_dict[category][key])
200
+ object_type = type(changes_dict[category][key])
195
201
  if object_type == bool:
196
- value_string_to_set = str(changes_config_file_dict[category][key]).lower()
202
+ value_string_to_set = str(changes_dict[category][key]).lower()
197
203
  elif object_type == str:
198
- value_string_to_set = f"'{changes_config_file_dict[category][key]}'"
204
+ value_string_to_set = f"'{changes_dict[category][key]}'"
199
205
  elif object_type == int:
200
- value_string_to_set = str(changes_config_file_dict[category][key])
206
+ value_string_to_set = str(changes_dict[category][key])
201
207
 
202
208
  # noinspection PyUnboundLocalVariable
203
209
  line_to_set = f"{key} = {value_string_to_set}{comment}"
204
210
  # Replace the line with the old value.
205
211
  main_config_file_text_lines[line_index] = line_to_set
206
212
 
207
- main_config_file_dict[category][key] = changes_config_file_dict[category][key]
213
+ main_config_file_dict[category][key] = changes_dict[category][key]
208
214
 
209
215
  if new_config_file_path:
210
216
  file_path_to_write = new_config_file_path
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atomicshop
3
- Version: 2.19.15
3
+ Version: 2.19.17
4
4
  Summary: Atomic functions and classes to make developer life easier
5
5
  Author: Denis Kras
6
6
  License: MIT License
@@ -1,4 +1,4 @@
1
- atomicshop/__init__.py,sha256=WKaxSIjt5IaCfnoGVa6leC9_f4rctgz8oEdhJaSdjGs,124
1
+ atomicshop/__init__.py,sha256=sirfPpzTYXnvvIq87Zu3Mv0_mmzJTsmrk6btWEBTaN4,124
2
2
  atomicshop/_basics_temp.py,sha256=6cu2dd6r2dLrd1BRNcVDKTHlsHs_26Gpw8QS6v32lQ0,3699
3
3
  atomicshop/_create_pdf_demo.py,sha256=Yi-PGZuMg0RKvQmLqVeLIZYadqEZwUm-4A9JxBl_vYA,3713
4
4
  atomicshop/_patch_import.py,sha256=ENp55sKVJ0e6-4lBvZnpz9PQCt3Otbur7F6aXDlyje4,6334
@@ -119,17 +119,17 @@ atomicshop/etws/_pywintrace_fix.py,sha256=nHrtnAb796eOZ6FlCqcsuRh_TSqSPp6JXLN6TB
119
119
  atomicshop/etws/const.py,sha256=v3x_IdCYeSKbCGywiZFOZln80ldpwKW5nuMDuUe51Jg,1257
120
120
  atomicshop/etws/providers.py,sha256=CXNx8pYdjtpLIpA66IwrnE64XhY4U5ExnFBMLEb8Uzk,547
121
121
  atomicshop/etws/sessions.py,sha256=b_KeiOvgOBJezJokN81TRlrvJiQNJlIWN4Z6UVjuxP0,1335
122
- atomicshop/etws/trace.py,sha256=p-5wegZ-5SuJ3UsprCCnlor8g2LPkF9ZOynLCYaEvXQ,7647
122
+ atomicshop/etws/trace.py,sha256=u38pgUa9_eG1WBSDUOJ2PmCRQWifZJCEmovCy8OFk18,7786
123
123
  atomicshop/etws/traces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
- atomicshop/etws/traces/trace_dns.py,sha256=SWeex1mK7rrMzCmmL3qiGaD_jzbRiiwJ_mhMZz5TwJc,6879
124
+ atomicshop/etws/traces/trace_dns.py,sha256=mCZgkSrfYrq9rBfqWGmY7rRSqFQeMoQWCOC8ggjKUak,6925
125
125
  atomicshop/etws/traces/trace_sysmon_process_creation.py,sha256=OM-bkK38uYMwWLZKNOTDa0Xdk3sO6sqsxoMUIiPvm5g,4656
126
- atomicshop/etws/traces/trace_tcp.py,sha256=pQF4A_qM-HjEhzMQUyTmUqOWdvSaqqAg5PwnkVn2fy4,5236
126
+ atomicshop/etws/traces/trace_tcp.py,sha256=bHxngCxuKFOlSJw7z7fWAG613nzqLYZMktgxAlGC5rQ,5282
127
127
  atomicshop/file_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
128
  atomicshop/file_io/csvs.py,sha256=zv0kKjRT-ZWRi0WpMIUQ_FKyP9Dt0f5Bc98Qsj6ClPU,9495
129
129
  atomicshop/file_io/docxs.py,sha256=Nyt3hSpzwqUKZEP5p5efqNpjFs9XqkK40Kp7BbbPo7E,6245
130
130
  atomicshop/file_io/file_io.py,sha256=8pKH08ILN91gfeNC0hrtLCx7l9ZgmcPAYIcLydDtZ-k,7198
131
131
  atomicshop/file_io/jsons.py,sha256=GJyVlGTcdhjZ-andfz7_dYVk1O74f-23Mc9PDmdjtPI,7424
132
- atomicshop/file_io/tomls.py,sha256=ol8EvQPf9sryTmZUf1v55BYSUQ6ml7HVVBHpNKbsIlA,9768
132
+ atomicshop/file_io/tomls.py,sha256=vZ_Wng5alLf8z6HSEZj7PS0XKDA-Iies9ihVWOkTcKo,10048
133
133
  atomicshop/file_io/xlsxs.py,sha256=v_dyg9GD4LqgWi6wA1QuWRZ8zG4ZwB6Dz52ytdcmmmI,2184
134
134
  atomicshop/file_io/xmls.py,sha256=zh3SuK-dNaFq2NDNhx6ivcf4GYCfGM8M10PcEwDSpxk,2104
135
135
  atomicshop/mitm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -330,8 +330,8 @@ atomicshop/wrappers/socketw/statistics_csv.py,sha256=fgMzDXI0cybwUEqAxprRmY3lqbh
330
330
  atomicshop/wrappers/winregw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
331
  atomicshop/wrappers/winregw/winreg_installed_software.py,sha256=Qzmyktvob1qp6Tjk2DjLfAqr_yXV0sgWzdMW_9kwNjY,2345
332
332
  atomicshop/wrappers/winregw/winreg_network.py,sha256=AENV88H1qDidrcpyM9OwEZxX5svfi-Jb4N6FkS1xtqA,8851
333
- atomicshop-2.19.15.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
334
- atomicshop-2.19.15.dist-info/METADATA,sha256=rY7lZlB7UShEsmFFxnRswkAQm8YFkShGJURQks7NGiw,10631
335
- atomicshop-2.19.15.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
336
- atomicshop-2.19.15.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
337
- atomicshop-2.19.15.dist-info/RECORD,,
333
+ atomicshop-2.19.17.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
334
+ atomicshop-2.19.17.dist-info/METADATA,sha256=Mh7XFo4nIxw7Rzs_QAjEABvfXj4gQvkAg6dlj0qxO8w,10631
335
+ atomicshop-2.19.17.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
336
+ atomicshop-2.19.17.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
337
+ atomicshop-2.19.17.dist-info/RECORD,,