atomicshop 2.15.8__py3-none-any.whl → 2.15.9__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.15.8'
4
+ __version__ = '2.15.9'
@@ -1,5 +1,7 @@
1
+ import sys
2
+
1
3
  from atomicshop.wrappers.ctyping.msi_windows_installer import extract_msi_main
2
4
 
3
5
 
4
6
  if __name__ == "__main__":
5
- extract_msi_main.extract_files_from_msi_main()
7
+ sys.exit(extract_msi_main.extract_files_from_msi_main())
@@ -3,7 +3,7 @@ import subprocess
3
3
  from pathlib import Path
4
4
 
5
5
  from ..print_api import print_api
6
- from .. import process, filesystem
6
+ from .. import process
7
7
 
8
8
 
9
9
  def is_path_contains_7z_executable(sevenz_path: str) -> bool:
@@ -1,4 +1,3 @@
1
- # v1.0.0 - 02.04.2023 16:20
2
1
  import traceback
3
2
 
4
3
 
atomicshop/diff_check.py CHANGED
@@ -108,7 +108,9 @@ class DiffChecker:
108
108
  statistics = diff_checker.statistics_queue.get()
109
109
  print(statistics)
110
110
 
111
- threading.Thread(target=process_statistics_queue).start()
111
+ thread = threading.Thread(target=process_statistics_queue)
112
+ thread.daemon = True
113
+ thread.start()
112
114
 
113
115
  <... Your checking operation for the object ...>
114
116
  :param new_objects_hours_then_difference: float, This is only for the 'new_objects' operation type.
atomicshop/scheduling.py CHANGED
@@ -22,7 +22,7 @@ def threaded_periodic_task(interval, function_ref, args=(), kwargs=None, thread_
22
22
  :param args: tuple, of arguments to provide for the 'function_ref' to execute.
23
23
  :param kwargs: dictionary, of keyword arguments to provide for the 'function_ref' to execute.
24
24
  :param thread_name: the name of the thread that will be created:
25
- threading.Thread(target=thread_timer, name=thread_name).start()
25
+ threading.Thread(target=thread_timer, name=thread_name)
26
26
  The default parameter for 'Thread' 'name' is 'None', so if you don't specify the name it works as default.
27
27
  :param daemon: bool, if True, the thread will be a daemon thread. Default is True.
28
28
  Since this is a periodic task, we don't need to wait for the thread to finish, so we can set it to True.
@@ -70,7 +70,14 @@ class ThreadLooper:
70
70
  def __init__(self):
71
71
  self.loop_queue = queue.Queue()
72
72
 
73
- def run_loop(self, function_reference, args=(), kwargs=None, interval_seconds=0, thread_name: str = None):
73
+ def run_loop(
74
+ self,
75
+ function_reference,
76
+ args=(),
77
+ kwargs=None,
78
+ interval_seconds=0,
79
+ thread_name: str = None
80
+ ):
74
81
  """
75
82
  The function executes referenced function 'function_ref' with arguments 'args' each 'interval' in a new thread.
76
83
 
@@ -96,7 +103,9 @@ class ThreadLooper:
96
103
  self.loop_queue.put(result_list)
97
104
  time.sleep(interval_seconds)
98
105
 
99
- threading.Thread(target=thread_function, name=thread_name).start()
106
+ thread = threading.Thread(target=thread_function, name=thread_name)
107
+ thread.daemon = True
108
+ thread.start()
100
109
 
101
110
  def emit_from_loop(self):
102
111
  """
atomicshop/sound.py CHANGED
@@ -280,11 +280,13 @@ class StereoMixRecorder:
280
280
  # when playback can start before the input interface is initialized, since thread runs in parallel.
281
281
  self.loopback_input = self._initialize_input_interface()
282
282
 
283
- threading.Thread(
283
+ thread = threading.Thread(
284
284
  target=self._thread_record,
285
285
  args=(split_emit_buffers, emit_type, file_path, record_until_zero_array, seconds),
286
286
  kwargs=kwargs
287
- ).start()
287
+ )
288
+ thread.daemon = True
289
+ thread.start()
288
290
 
289
291
  def _thread_record(
290
292
  self, split_emit_buffers: int, emit_type: str, file_path: str, record_until_zero_array: bool, seconds,
@@ -166,6 +166,7 @@ class SystemResourceMonitor:
166
166
  self.interval, self.get_cpu, self.get_memory, self.get_disk_io_bytes, self.get_disk_files_count,
167
167
  self.get_disk_busy_time, self.get_disk_used_percent, self.calculate_maximum_changed_disk_io,
168
168
  self.maximum_disk_io, self.queue_list, self.manager_dict))
169
+ self.thread.daemon = True
169
170
  self.thread.start()
170
171
  else:
171
172
  print_api("Monitoring is already running.", color='yellow', **print_kwargs)
@@ -80,26 +80,28 @@ def extract_files_from_msi_main(
80
80
 
81
81
  # If not provided, raise an error.
82
82
  if not msi_filepath:
83
- print_api("The path to the MSI file is not provided.", color="red")
84
- sys.exit()
83
+ print_api("The path to the MSI file is not provided with [-m].", color="red")
84
+ return 1
85
85
  if not main_out_directory:
86
- print_api("The main output directory is not provided.", color="red")
86
+ print_api("The main output directory is not provided with [-o].", color="red")
87
+ return 1
87
88
  if not sevenz_path:
88
89
  print_api(
89
90
  "The path to the 7z executable is not provided. Assuming 7z is in the PATH environment variable.",
90
91
  color="yellow")
92
+ sevenz_path = "7z"
91
93
 
92
94
  if not sevenz_app_w.is_path_contains_7z_executable(sevenz_path):
93
95
  print_api("The path to 7z does not contain 7z executable", color="red")
94
- sys.exit()
96
+ return 1
95
97
 
96
- if not os.path.isfile(sevenz_path):
98
+ if sevenz_path != "7z" and not os.path.isfile(sevenz_path):
97
99
  print_api("The path to 7z executable doesn't exist.", color="red")
98
- sys.exit()
100
+ return 1
99
101
 
100
102
  if not sevenz_app_w.is_executable_a_7z(sevenz_path):
101
103
  print_api("Provided 7z executable is not 7z.", color="red")
102
- sys.exit()
104
+ return 1
103
105
 
104
106
  # Create the main output directory.
105
107
  os.makedirs(main_out_directory, exist_ok=True)
@@ -134,3 +136,5 @@ def extract_files_from_msi_main(
134
136
 
135
137
  # Extract OLE metadata from the MSI file.
136
138
  olefilew.extract_ole_metadata(msi_filepath, os.path.join(embedded_files_directory, OLE_METADATA))
139
+
140
+ return 0
@@ -125,10 +125,11 @@ class DnsServer:
125
125
  # Starting a thread that will empty the DNS Cache lists
126
126
  thread_current = threading.Thread(target=self.thread_worker_empty_dns_cache,
127
127
  args=(self.config['dns']['cache_timeout_minutes'],))
128
- # Append to list of threads, so they can be "joined" later
129
- threads_list.append(thread_current)
128
+ thread_current.daemon = True
130
129
  # Start the thread
131
130
  thread_current.start()
131
+ # Append to list of threads, so they can be "joined" later
132
+ threads_list.append(thread_current)
132
133
 
133
134
  # To handle DNS requests UDP socket is needed.
134
135
  # AF_INET - Socket family of IPv4
@@ -117,10 +117,11 @@ def execute_test(config_static):
117
117
  requests_bytes_list,
118
118
  config['interval_between_request_custom_list_seconds'],
119
119
  config['interval_between_requests_defaults_seconds'],))
120
- # Append to list of threads, so they can be "joined" later
121
- threads_list.append(thread_current)
120
+ thread_current.daemon = True
122
121
  # Start the thread
123
122
  thread_current.start()
123
+ # Append to list of threads, so they can be "joined" later
124
+ threads_list.append(thread_current)
124
125
 
125
126
  # Joining all the threads.
126
127
  for thread in threads_list:
@@ -82,10 +82,10 @@ class SocketWrapper:
82
82
  def send_accepted_socket_to_thread(self, thread_function_name, reference_args=()):
83
83
  # Creating thread for each socket
84
84
  thread_current = threading.Thread(target=thread_function_name, args=(*reference_args,))
85
+ thread_current.daemon = True
86
+ thread_current.start()
85
87
  # Append to list of threads, so they can be "joined" later
86
88
  self.threads_list.append(thread_current)
87
- # Start the thread
88
- thread_current.start()
89
89
 
90
90
  # 'reference_args[0]' is the client socket.
91
91
  client_address = base.get_source_address_from_socket(reference_args[0])
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atomicshop
3
- Version: 2.15.8
3
+ Version: 2.15.9
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=qXSapgKOZW5gBDxm1PRQP-ON2rt7bHb-DROkBl2tcpQ,123
1
+ atomicshop/__init__.py,sha256=ZvziMlqTqg0hlV8CHevfeY4bxjemWVOIiFxfHyQ4bqs,123
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
@@ -9,7 +9,7 @@ atomicshop/config_init.py,sha256=BSxc2FhytQPv06g5z9wbAXuA6oYCAsAJLxu_mTExhwI,249
9
9
  atomicshop/console_output.py,sha256=AOSJjrRryE97PAGtgDL03IBtWSi02aNol8noDnW3k6M,4667
10
10
  atomicshop/console_user_response.py,sha256=31HIy9QGXa7f-GVR8MzJauQ79E_ZqAeagF3Ks4GGdDU,3234
11
11
  atomicshop/datetimes.py,sha256=XF-6PbMlXgxHAOCVBGWUnAwDlFuZS1YFUGk6STFWsq0,18362
12
- atomicshop/diff_check.py,sha256=RJvzJhyYAZyRPKVDk1dS7UwZCx0kq__WDZ6N0rNfZUY,27110
12
+ atomicshop/diff_check.py,sha256=Q9RCqRa-jEgo7Fujx08_JTuZ6qcgttMI6aNYB6zN9Ik,27173
13
13
  atomicshop/dns.py,sha256=h4uZKoz4wbBlLOOduL1GtRcTm-YpiPnGOEGxUm7hhOI,2140
14
14
  atomicshop/domains.py,sha256=Rxu6JhhMqFZRcoFs69IoEd1PtYca0lMCG6F1AomP7z4,3197
15
15
  atomicshop/emails.py,sha256=I0KyODQpIMEsNRi9YWSOL8EUPBiWyon3HRdIuSj3AEU,1410
@@ -32,13 +32,13 @@ atomicshop/python_file_patcher.py,sha256=kd3rBWvTcosLEk-7TycNdfKW9fZbe161iVwmH4n
32
32
  atomicshop/python_functions.py,sha256=zJg4ogUwECxrDD7xdDN5JikIUctITM5lsyabr_ZNsRw,4435
33
33
  atomicshop/question_answer_engine.py,sha256=7nM6kGDSFjQNi87b87-kP9lYM0vTjBHn1rEQGNAfdGA,825
34
34
  atomicshop/queues.py,sha256=Al0fdC3ZJmdKfv-PyBeIck9lnfLr82BYchvzr189gsI,640
35
- atomicshop/scheduling.py,sha256=NF1_csXwez4RbHoRyUXQg1pGdswGmS1WdSGAQ54m6R8,4550
35
+ atomicshop/scheduling.py,sha256=MvF20M6uU0Kh_CQn2ERxMTLvvF-ToBrdMhXNrKxYFj8,4682
36
36
  atomicshop/script_as_string_processor.py,sha256=JKENiARNuKQ0UegP2GvIVgNPbr6CzGiMElUVTddOX3A,1776
37
- atomicshop/sound.py,sha256=KSzWRF8dkpEVXmFidIv-Eftc3kET-hQzQOxZRE7rMto,24297
37
+ atomicshop/sound.py,sha256=tHiQQbFBk7EYN3pAfGNcxfF9oNsoYnZgu9z9iq8hxQE,24352
38
38
  atomicshop/speech_recognize.py,sha256=55-dIjgkpF93mvJnJuxSFuft5H5eRvGNlUj9BeIOZxk,5903
39
39
  atomicshop/ssh_remote.py,sha256=Sas3nrQv8ardxR51t59xZZsYm8nvUcA7tMSqEDViRLk,17155
40
40
  atomicshop/sys_functions.py,sha256=MTBxRve5bh58SPvhX3gMiGqHlSBuI_rdNN1NnnBBWqI,906
41
- atomicshop/system_resource_monitor.py,sha256=ilA3wEUJfBjQhRsHDXGH7Q05mYr5KarPjRWP8S6pCTw,13681
41
+ atomicshop/system_resource_monitor.py,sha256=WvnnQrD5W9NRqOWI2YNcL-ut2UrvhrYToVlRR2c1vs8,13720
42
42
  atomicshop/system_resources.py,sha256=0mhDZBEcMzToCOw5ArJhtqYjktOW6iJGdyRkJ01Cpwk,9272
43
43
  atomicshop/tempfiles.py,sha256=uq1ve2WlWehZ3NOTXJnpBBMt6HyCdBufqedF0HyzA6k,2517
44
44
  atomicshop/timer.py,sha256=7Zw1KRV0acHCRATMnanyX2MLBb63Hc-6us3rCZ9dNlY,2345
@@ -49,6 +49,7 @@ atomicshop/web.py,sha256=J9izvF5LNEVOVkkWon0XUgJmR7nrFln03nIxW7wUZWg,11547
49
49
  atomicshop/a_installs/win/fibratus.py,sha256=TU4e9gdZ_zI73C40uueJ59pD3qmN-UFGdX5GFoVf6cM,179
50
50
  atomicshop/a_installs/win/mongodb.py,sha256=5k9sFWM_9Zh5ShutH2IhGvAo7nrLkOIeUPzhoKvEsx8,171
51
51
  atomicshop/a_installs/win/pycharm.py,sha256=uYTfME7hOeNkAsOZxDDPj2hDqmkxrFqVV6Nv6xnYNVk,141
52
+ atomicshop/a_mains/msi_unpacker.py,sha256=5hrkqETYt9HIqR_3PMf32_q06kCrIcsdm_RJV9oY438,188
52
53
  atomicshop/a_mains/search_for_hyperlinks_in_docx.py,sha256=HkIdo_Sz9nPbbbJf1mwfwFkyI7vkvpH8qiIkuYopN4w,529
53
54
  atomicshop/addons/PlayWrightCodegen.cmd,sha256=Z5cnllsyXD4F1W2h-WLEnyFkg5nZy0-hTGHRWXVOuW4,173
54
55
  atomicshop/addons/ScriptExecution.cmd,sha256=8iC-uHs9MX9qUD_C2M7n9Xw4MZvwOfxT8H5v3hluVps,93
@@ -59,10 +60,10 @@ atomicshop/addons/mains/install_docker_rootless_ubuntu.py,sha256=9IPNtGZYjfy1_n6
59
60
  atomicshop/addons/mains/install_docker_ubuntu_main_sudo.py,sha256=JzayxeyKDtiuT4Icp2L2LyFRbx4wvpyN_bHLfZ-yX5E,281
60
61
  atomicshop/addons/mains/install_elastic_search_and_kibana_ubuntu.py,sha256=yRB-l1zBxdiN6av-FwNkhcBlaeu4zrDPjQ0uPGgpK2I,244
61
62
  atomicshop/addons/mains/install_wsl_ubuntu_lts_admin.py,sha256=PrvZ4hMuadzj2GYKRZSwyNayJUuaSnCF9nV6ORqoPdo,123
62
- atomicshop/addons/mains/msi_unpacker.py,sha256=XAJdEqs-3s9JqIgHpGRL-HxLKpFMXdrlXmq2Is2Pyfk,164
63
63
  atomicshop/addons/mains/FACT/factw_fact_extractor_docker_image_main_sudo.py,sha256=DDKX3Wp2SmzMCEtCIEOUbEKMob2ZQ7VEQGLEf9uYXrs,320
64
64
  atomicshop/addons/mains/FACT/update_extract.py,sha256=H3VsdhlA7xxK5lI_nyrWUdk8GNZXbEUVR_K9cJ4ECAw,506
65
65
  atomicshop/addons/mains/__pycache__/install_fibratus_windows.cpython-312.pyc,sha256=u92dFjDrTbZBIti9B3ttna33Jg1ZSeMYhTiupdfklt4,549
66
+ atomicshop/addons/mains/__pycache__/msi_unpacker.cpython-312.pyc,sha256=_jTJnhmwV3ncttk9yiIlPAabJMpziG3Q-v0xwilyY3A,415
66
67
  atomicshop/addons/package_setup/CreateWheel.cmd,sha256=hq9aWBSH6iffYlZyaCNrFlA0vxMh3j1k8DQE8IARQuA,189
67
68
  atomicshop/addons/package_setup/Setup in Edit mode.cmd,sha256=299RsExjR8Mup6YyC6rW0qF8lnwa3uIzwk_gYg_R_Ss,176
68
69
  atomicshop/addons/package_setup/Setup.cmd,sha256=IMm0PfdARH7CG7h9mbWwmWD9X47l7tddwQ2U4MUxy3A,213
@@ -76,7 +77,7 @@ atomicshop/archiver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
76
77
  atomicshop/archiver/_search_in_zip.py,sha256=dd8qFSvIhcKmtnPj_uYNJFPmMwZp4tZys0kKgTw_ACw,8385
77
78
  atomicshop/archiver/archiver.py,sha256=BomnK7zT-nQXA1z0i2R2aTv8eu88wPx7tf2HtOdbmEc,1280
78
79
  atomicshop/archiver/search_in_archive.py,sha256=XAxa0QukkXZvPmKna8cpwBHLDEskRUtbgaW1eHvpn6w,10833
79
- atomicshop/archiver/sevenz_app_w.py,sha256=TEOhlZPzKqQPStmyIq5E_yP98brj1t_GuoBgeLXA4dA,3019
80
+ atomicshop/archiver/sevenz_app_w.py,sha256=BWcJb4f7jZEiETDBKyNLE0f5YLFPQx6B91_ObEIXWf8,3007
80
81
  atomicshop/archiver/sevenzs.py,sha256=5i_C50-deC1Cz_GQdMGofV2jeMPbbGWAvih-QnA72cg,1370
81
82
  atomicshop/archiver/zips.py,sha256=k742K1bEDtc_4N44j_Waebi-uOkxxavqltvV6q-BLW4,14402
82
83
  atomicshop/basics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -103,7 +104,7 @@ atomicshop/basics/randoms.py,sha256=DmYLtnIhDK29tAQrGP1Nt-A-v8WC7WIEB8Edi-nk3N4,
103
104
  atomicshop/basics/strings.py,sha256=YIE0q5mdpwPtGXsRgvn-HSvR3R6sU1EyBCWHQq3IlKs,21216
104
105
  atomicshop/basics/threads.py,sha256=xvgdDJdmgN0wmmARoZ-H7Kvl1GOcEbvgaeGL4M3Hcx8,2819
105
106
  atomicshop/basics/timeit_template.py,sha256=fYLrk-X_dhdVtnPU22tarrhhvlggeW6FdKCXM8zkX68,405
106
- atomicshop/basics/tracebacks.py,sha256=cNfh_oAwF55kSIdqtv3boHZQIoQI8TajxkTnwJwpweI,535
107
+ atomicshop/basics/tracebacks.py,sha256=pMdnTUTYKdY9SVtMPNBUKL_4uSKulc54NNQjOIHjKxE,506
107
108
  atomicshop/etws/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
109
  atomicshop/etws/const.py,sha256=v3x_IdCYeSKbCGywiZFOZln80ldpwKW5nuMDuUe51Jg,1257
109
110
  atomicshop/etws/providers.py,sha256=CXNx8pYdjtpLIpA66IwrnE64XhY4U5ExnFBMLEb8Uzk,547
@@ -194,7 +195,7 @@ atomicshop/wrappers/ctyping/etw_winapi/etw_functions.py,sha256=Iwd0wIuoxpjMaaOfZ
194
195
  atomicshop/wrappers/ctyping/msi_windows_installer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
196
  atomicshop/wrappers/ctyping/msi_windows_installer/base.py,sha256=Uu9SlWLsQQ6mjE-ek-ptHcmgiI3Ruah9bdZus70EaVY,4884
196
197
  atomicshop/wrappers/ctyping/msi_windows_installer/cabs.py,sha256=htzwb2ROYI8yyc82xApStckPS2yCcoyaw32yC15KROs,3285
197
- atomicshop/wrappers/ctyping/msi_windows_installer/extract_msi_main.py,sha256=eyFAD1itG0UClPs92GFefIWTccRgRF55KVLKl1pugGw,5402
198
+ atomicshop/wrappers/ctyping/msi_windows_installer/extract_msi_main.py,sha256=Nq-04-PbT_diUOuHLQ6-uBWBCr6UY9GOOQ0Nojs0QhA,5500
198
199
  atomicshop/wrappers/ctyping/msi_windows_installer/tables.py,sha256=ajiFiLXl1prg2kOhatfT8E2RKX7F8JjUJpwkVuKu1GY,16263
199
200
  atomicshop/wrappers/dockerw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
201
  atomicshop/wrappers/dockerw/dockerw.py,sha256=w8zSJr5C7cbvbuG09ORCpAe0BOcibqqL_Z2EKEBHYK4,6266
@@ -283,19 +284,19 @@ atomicshop/wrappers/socketw/accepter.py,sha256=HQC1EyZmyUtVEfFbaBkHCE-VZp6RWyd9m
283
284
  atomicshop/wrappers/socketw/base.py,sha256=1vvg8EhRGvnxdrRAm1VJSLCXkm2SZDHRjdpTuhkH3Mg,1844
284
285
  atomicshop/wrappers/socketw/certificator.py,sha256=SxCKFyBlwzs4uohugfBokOYQpZJyH8KY46m87Q23n6w,9017
285
286
  atomicshop/wrappers/socketw/creator.py,sha256=C-l57G854HAtWJonVbgfQge290-Dg0Ov4aurJAWIKls,11199
286
- atomicshop/wrappers/socketw/dns_server.py,sha256=u4RSDIK4UR1aKOulwSGscchxYa7pTlPxMO-StHuBMag,42464
287
+ atomicshop/wrappers/socketw/dns_server.py,sha256=KAjeIkclY5yosMOmZJbAikgGVYzQE0ZJVZZAZ-WK0P4,42502
287
288
  atomicshop/wrappers/socketw/exception_wrapper.py,sha256=_YDnzyEcUnV6VISU3bk-UPdnsMvHjKJBHwxLMTsxQu8,8495
288
289
  atomicshop/wrappers/socketw/get_process.py,sha256=APw_oOXsuR5KljYesd4J8MuzR-kaw2ez3MN3oD_h9Qc,5226
289
290
  atomicshop/wrappers/socketw/receiver.py,sha256=m8hXKOa8dqEQGUdcbYjshH8-j0CsMGRkge2ifYKhaAw,9050
290
291
  atomicshop/wrappers/socketw/sender.py,sha256=hHpBLc0LCfOIUErq2mc0ATfp0tDDQ5XhcYT4hRAZARU,3680
291
292
  atomicshop/wrappers/socketw/sni.py,sha256=GIm5uUJCh5i-pjY4FhSkoK4oo9uL_fFq1Mbr6PKXpBg,10014
292
293
  atomicshop/wrappers/socketw/socket_client.py,sha256=IvRnxeqsj5RGm4lR3btUz3MSxTWhe2q1X_zNoZ8tK-M,20229
293
- atomicshop/wrappers/socketw/socket_server_tester.py,sha256=AhpurHJmP2kgzHaUbq5eyTx0UGBOJi74viowtpU5Jvs,6291
294
- atomicshop/wrappers/socketw/socket_wrapper.py,sha256=aXBwlEIJhFT0-c4i8iNlFx2It9VpCEpsv--5Oqcpxao,11624
294
+ atomicshop/wrappers/socketw/socket_server_tester.py,sha256=XAERNDVe85yQlIZe2C-tVuzytC_nrV9nVmaOZOnU7EY,6333
295
+ atomicshop/wrappers/socketw/socket_wrapper.py,sha256=JpOy9UkvCllrCFLpxOYmvitRu1cio5yT17sUo19YEFo,11634
295
296
  atomicshop/wrappers/socketw/ssl_base.py,sha256=k4V3gwkbq10MvOH4btU4onLX2GNOsSfUAdcHmL1rpVE,2274
296
297
  atomicshop/wrappers/socketw/statistics_csv.py,sha256=t3dtDEfN47CfYVi0CW6Kc2QHTEeZVyYhc57IYYh5nmA,826
297
- atomicshop-2.15.8.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
298
- atomicshop-2.15.8.dist-info/METADATA,sha256=3DmLuxpwvuPD30x8sV91qGlIySBzcaNhAjiX_qbBd-8,10502
299
- atomicshop-2.15.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
300
- atomicshop-2.15.8.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
301
- atomicshop-2.15.8.dist-info/RECORD,,
298
+ atomicshop-2.15.9.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
299
+ atomicshop-2.15.9.dist-info/METADATA,sha256=jUnSaiSPXYWRVmetMp0UC72Bg98HH7r8qDQ9C_AJ36k,10502
300
+ atomicshop-2.15.9.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
301
+ atomicshop-2.15.9.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
302
+ atomicshop-2.15.9.dist-info/RECORD,,