atomicshop 2.17.3__py3-none-any.whl → 2.18.1__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.

@@ -13,10 +13,10 @@ class Sender:
13
13
  def __init__(
14
14
  self,
15
15
  ssl_socket: ssl.SSLSocket,
16
- class_message: bytearray,
16
+ class_message: bytes,
17
17
  logger: logging.Logger = None
18
18
  ):
19
- self.class_message: bytearray = class_message
19
+ self.class_message: bytes = class_message
20
20
  self.ssl_socket: ssl.SSLSocket = ssl_socket
21
21
 
22
22
  if logger:
@@ -35,12 +35,11 @@ class Sender:
35
35
  # The error string that will be returned by the function in case of error.
36
36
  # If returned None then everything is fine.
37
37
  # noinspection PyTypeChecker
38
- function_result_error: str = None
38
+ error_message: str = None
39
+
39
40
  # Current amount of bytes sent is 0, since we didn't start yet
40
41
  total_sent_bytes = 0
41
42
 
42
- # noinspection PyTypeChecker
43
- error_message: str = None
44
43
  try:
45
44
  # Getting byte length of current message
46
45
  current_message_length = len(self.class_message)
@@ -59,7 +58,6 @@ class Sender:
59
58
  f"Sent {sent_bytes} bytes - connection is down... Could send only "
60
59
  f"{total_sent_bytes} bytes out of {current_message_length}. Closing socket...")
61
60
  self.logger.info(error_message)
62
- function_result_error = error_message
63
61
  break
64
62
 
65
63
  # Adding amount of currently sent bytes to the total amount of bytes sent
@@ -97,6 +95,5 @@ class Sender:
97
95
 
98
96
  if error_message:
99
97
  print_api(error_message, logger=self.logger, logger_method='error')
100
- function_result_error = error_message
101
98
 
102
- return function_result_error
99
+ return error_message
@@ -54,7 +54,6 @@ class SNISetup:
54
54
  self.default_server_certificate_name = default_server_certificate_name
55
55
  self.default_server_certificate_directory = default_server_certificate_directory
56
56
  self.default_certificate_domain_list = default_certificate_domain_list
57
- self.enable_sslkeylogfile_to_ssl_context: bool = enable_sslkeylogfile_to_ssl_context
58
57
  self.sni_custom_callback_function: callable = sni_custom_callback_function
59
58
  self.sni_use_default_callback_function: bool = sni_use_default_callback_function
60
59
  self.sni_use_default_callback_function_extended: bool = sni_use_default_callback_function_extended
@@ -113,8 +113,8 @@ class SocketClient:
113
113
  Function to establish connection to server
114
114
 
115
115
  :return: Tuple with socket object and error string.
116
- If connection was successful, the error string will be None.
117
- If connection wasn't successful, the socket object will be None.
116
+ If connection was successful, the error string will be None.
117
+ If connection wasn't successful, the socket object will be None.
118
118
  """
119
119
  # Check if socket to service domain exists.
120
120
  # If not
@@ -6,8 +6,8 @@ from ..loggingw import loggingw
6
6
 
7
7
  LOGGER_NAME: str = 'statistics'
8
8
  STATISTICS_HEADER: str = (
9
- 'request_time_sent,thread_id,tls,protocol,host,path,command,status_code,request_size_bytes,response_size_bytes,file_path,'
10
- 'process_cmd,error')
9
+ 'request_time_sent,thread_id,tls,protocol,protocol2,protocol3,host,path,command,status_code,request_size_bytes,'
10
+ 'response_size_bytes,file_path,process_cmd,action,error')
11
11
 
12
12
 
13
13
  class StatisticsCSVWriter:
@@ -35,6 +35,8 @@ class StatisticsCSVWriter:
35
35
  tls_type: str,
36
36
  tls_version: str,
37
37
  protocol: str,
38
+ protocol2: str,
39
+ protocol3: str,
38
40
  path: str,
39
41
  status_code: str,
40
42
  command: str,
@@ -43,10 +45,11 @@ class StatisticsCSVWriter:
43
45
  recorded_file_path: str = None,
44
46
  process_cmd: str = None,
45
47
  error: str = None,
46
- request_time_sent=None,
48
+ action: str = None,
49
+ timestamp=None,
47
50
  ):
48
- if not request_time_sent:
49
- request_time_sent = datetime.datetime.now()
51
+ if not timestamp:
52
+ timestamp = datetime.datetime.now()
50
53
 
51
54
  if not tls_type and not tls_version:
52
55
  tls_info = ''
@@ -54,10 +57,12 @@ class StatisticsCSVWriter:
54
57
  tls_info = f'{tls_type}|{tls_version}'
55
58
 
56
59
  escaped_line_string: str = csvs.escape_csv_line_to_string([
57
- request_time_sent,
60
+ timestamp,
58
61
  thread_id,
59
62
  tls_info,
60
63
  protocol,
64
+ protocol2,
65
+ protocol3,
61
66
  host,
62
67
  path,
63
68
  command,
@@ -66,6 +71,7 @@ class StatisticsCSVWriter:
66
71
  response_size_bytes,
67
72
  recorded_file_path,
68
73
  process_cmd,
74
+ action,
69
75
  error
70
76
  ])
71
77
 
@@ -95,6 +101,8 @@ class StatisticsCSVWriter:
95
101
  tls_type='',
96
102
  tls_version='',
97
103
  protocol='',
104
+ protocol2='',
105
+ protocol3='',
98
106
  path='',
99
107
  status_code='',
100
108
  command='',
@@ -102,5 +110,6 @@ class StatisticsCSVWriter:
102
110
  response_size_bytes='',
103
111
  recorded_file_path='',
104
112
  process_cmd=process_name,
113
+ action='client_accept',
105
114
  error=error_message
106
115
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atomicshop
3
- Version: 2.17.3
3
+ Version: 2.18.1
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=T9jtW2aWDvJvFYaGUUorjlEM5yR1Lx48uobqDYGwsHY,123
1
+ atomicshop/__init__.py,sha256=sd-5MCzdxJLvLvlvBmT3hqetHRPabTPPEglAUqrWUSo,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
@@ -19,7 +19,7 @@ atomicshop/functions.py,sha256=pK8hoCE9z61PtWCxQJsda7YAphrLH1wxU5x-1QJP-sY,499
19
19
  atomicshop/get_process_list.py,sha256=8cxb7gKe9sl4R6H2yMi8J6oe-RkonTvCdKjRFqi-Fs4,6075
20
20
  atomicshop/get_process_name_cmd_dll.py,sha256=CtaSp3mgxxJKCCVW8BLx6BJNx4giCklU_T7USiCEwfc,5162
21
21
  atomicshop/hashing.py,sha256=Le8qGFyt3_wX-zGTeQShz7L2HL_b6nVv9PnawjglyHo,3474
22
- atomicshop/http_parse.py,sha256=WoUoz5HeiIjPzFQYn7d2aeuAKa0kVWvrswyKMZT6VUg,10039
22
+ atomicshop/http_parse.py,sha256=1Tna9YbOM0rE3t6i_M-klBlwd1KNSA9skA_BqKGXDFc,11861
23
23
  atomicshop/inspect_wrapper.py,sha256=sGRVQhrJovNygHTydqJj0hxES-aB2Eg9KbIk3G31apw,11429
24
24
  atomicshop/ip_addresses.py,sha256=Hvi4TumEFoTEpKWaq5WNF-YzcRzt24IxmNgv-Mgax1s,1190
25
25
  atomicshop/keyboard_press.py,sha256=1W5kRtOB75fulVx-uF2yarBhW0_IzdI1k73AnvXstk0,452
@@ -37,7 +37,7 @@ atomicshop/sound.py,sha256=tHiQQbFBk7EYN3pAfGNcxfF9oNsoYnZgu9z9iq8hxQE,24352
37
37
  atomicshop/speech_recognize.py,sha256=55-dIjgkpF93mvJnJuxSFuft5H5eRvGNlUj9BeIOZxk,5903
38
38
  atomicshop/ssh_remote.py,sha256=Mxixqs2-xGy1bhbcP0LKqjxKTNPz1Gmzz8PzO8aLB4c,17345
39
39
  atomicshop/sys_functions.py,sha256=MTBxRve5bh58SPvhX3gMiGqHlSBuI_rdNN1NnnBBWqI,906
40
- atomicshop/system_resource_monitor.py,sha256=5sM3Ad4IZI8ahpKM3Wu4B0a3TD-N2Y795_kSkIv94lk,13632
40
+ atomicshop/system_resource_monitor.py,sha256=yHdBU4mAVqoVS0Nn_SM_H42i4PgsgXDaXaMxfnL5CgA,14588
41
41
  atomicshop/system_resources.py,sha256=iKUvVSaXR47inmr3cTYsgNfclT38dRia2oupnlhIpK4,9290
42
42
  atomicshop/tempfiles.py,sha256=uq1ve2WlWehZ3NOTXJnpBBMt6HyCdBufqedF0HyzA6k,2517
43
43
  atomicshop/timer.py,sha256=7Zw1KRV0acHCRATMnanyX2MLBb63Hc-6us3rCZ9dNlY,2345
@@ -83,7 +83,7 @@ atomicshop/archiver/sevenzs.py,sha256=5i_C50-deC1Cz_GQdMGofV2jeMPbbGWAvih-QnA72c
83
83
  atomicshop/archiver/shutils.py,sha256=BomnK7zT-nQXA1z0i2R2aTv8eu88wPx7tf2HtOdbmEc,1280
84
84
  atomicshop/archiver/zips.py,sha256=0Z_1MWs7YRiCBVpyaG8llnzRguHSO4R51KDMN3FJZt8,16984
85
85
  atomicshop/basics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- atomicshop/basics/ansi_escape_codes.py,sha256=WtIkm-BjSZS5J5irDUdAMBNvdX-qXFZcTX98jcBMpJE,3140
86
+ atomicshop/basics/ansi_escape_codes.py,sha256=uGVRW01v2O052701sOfAdCaM_GLF_cu_jrssuYiPbzA,3216
87
87
  atomicshop/basics/argparse_template.py,sha256=horwgSf3MX1ZgRnYxtmmQuz9OU_vKrKggF65gmjlmfg,5836
88
88
  atomicshop/basics/booleans.py,sha256=V36NaMf8AffhCom_ovQeOZlYcdtGyIcQwWKki6h7O0M,1745
89
89
  atomicshop/basics/bytes_arrays.py,sha256=tU7KF0UAFSErGNcan4Uz1GJxeIYVRuUu9sHVZHgyNnw,6542
@@ -118,33 +118,33 @@ atomicshop/etws/traces/trace_dns.py,sha256=WvOZm7KNdP4r6ofkZhUGi9WjtYlkV3mUp_yxi
118
118
  atomicshop/etws/traces/trace_sysmon_process_creation.py,sha256=OM-bkK38uYMwWLZKNOTDa0Xdk3sO6sqsxoMUIiPvm5g,4656
119
119
  atomicshop/file_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
120
  atomicshop/file_io/csvs.py,sha256=jBdm3_z5cMyvxLxJnGcybUAptHAbyL0r0tlLqY0sdTQ,9327
121
- atomicshop/file_io/docxs.py,sha256=3ctQ9JiGx8K8EYeKWiuraLtqhilW1qk1cZX9lHv0usk,5753
121
+ atomicshop/file_io/docxs.py,sha256=Nyt3hSpzwqUKZEP5p5efqNpjFs9XqkK40Kp7BbbPo7E,6245
122
122
  atomicshop/file_io/file_io.py,sha256=5Kl0P6vF4GQVdwew1lzHLb-db9qiMvDjTgccbi5P-zk,7167
123
123
  atomicshop/file_io/jsons.py,sha256=q9ZU8slBKnHLrtn3TnbK1qxrRpj5ZvCm6AlsFzoANjo,5303
124
124
  atomicshop/file_io/tomls.py,sha256=ol8EvQPf9sryTmZUf1v55BYSUQ6ml7HVVBHpNKbsIlA,9768
125
125
  atomicshop/file_io/xlsxs.py,sha256=v_dyg9GD4LqgWi6wA1QuWRZ8zG4ZwB6Dz52ytdcmmmI,2184
126
126
  atomicshop/file_io/xmls.py,sha256=zh3SuK-dNaFq2NDNhx6ivcf4GYCfGM8M10PcEwDSpxk,2104
127
127
  atomicshop/mitm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
- atomicshop/mitm/config_static.py,sha256=r6M4FJVBr9jGIXmjcOk2KBHvCPelWcbZCQrRh3-G26k,7871
128
+ atomicshop/mitm/config_static.py,sha256=HIzxyMEj7DZksYvJsN5VuKpB-_HSVvuR6U59ztS9gi0,7871
129
129
  atomicshop/mitm/config_toml_editor.py,sha256=2p1CMcktWRR_NW-SmyDwylu63ad5e0-w1QPMa8ZLDBw,1635
130
- atomicshop/mitm/connection_thread_worker.py,sha256=nbCQNQwJFoBnXTmIXvqpL6Jq2Q28uTn4FRaoCZZdrHA,21438
130
+ atomicshop/mitm/connection_thread_worker.py,sha256=NHRa_f7k12JH9eDuGmr_-eCPRQVjO77RgCmLe9K2lWA,26073
131
131
  atomicshop/mitm/import_config.py,sha256=0Ij14aISTllTOiWYJpIUMOWobQqGofD6uafui5uWllE,9272
132
132
  atomicshop/mitm/initialize_engines.py,sha256=NWz0yBErSrYBn0xWkJDBcHStBJ-kcsv9VtorcSP9x5M,8258
133
- atomicshop/mitm/message.py,sha256=URR5JKSuAT8XmGIkyprEjlPW2GW4ef_gfUz_GgcFseE,2184
134
- atomicshop/mitm/mitm_main.py,sha256=5c-9oxBiLueTbZr4Dyd4EEOorEUix5vSWxX9p5O1fBs,23375
135
- atomicshop/mitm/recs_files.py,sha256=gzFuTonqcXkMvhpOj1Nwse3E8umFGrKN2H5AleMjJ3w,3051
133
+ atomicshop/mitm/message.py,sha256=mNo4Lphr_Jo6IlNX5mPJzABpogWGkjOhwI4meAivwHw,2987
134
+ atomicshop/mitm/mitm_main.py,sha256=AxmqUiDHgfzqmIF8v2GZxlEKth6_AMaYcqAxziWMG0U,23430
135
+ atomicshop/mitm/recs_files.py,sha256=ZAAD0twun-FtmbSniXe3XQhIlawvANNB_HxwbHj7kwI,3151
136
136
  atomicshop/mitm/shared_functions.py,sha256=0lzeyINd44sVEfFbahJxQmz6KAMWbYrW5ou3UYfItvw,1777
137
137
  atomicshop/mitm/statistic_analyzer.py,sha256=5_sAYGX2Xunzo_pS2W5WijNCwr_BlGJbbOO462y_wN4,27533
138
138
  atomicshop/mitm/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
139
  atomicshop/mitm/engines/create_module_template.py,sha256=TAzsA4eLD2wYr7auuL4Nf_71iXqn-BOBXlSkNVrnYD4,5336
140
140
  atomicshop/mitm/engines/create_module_template_example.py,sha256=X5xhvbV6-g9jU_bQVhf_crZmaH50LRWz3bS-faQ18ds,489
141
141
  atomicshop/mitm/engines/__parent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- atomicshop/mitm/engines/__parent/parser___parent.py,sha256=RK2wviepP0oeq7zuLpgkvqvTJtc0r0a7hDGWdV0dGc4,657
143
- atomicshop/mitm/engines/__parent/recorder___parent.py,sha256=mHQAvUgsRCy3pJR_ws4v_QBE9Ju5r7RmWhyJyvczyI0,3781
142
+ atomicshop/mitm/engines/__parent/parser___parent.py,sha256=HHaCXhScl3OlPjz6eUxsDpJaZyk6BNuDMc9xCkeo2Ws,661
143
+ atomicshop/mitm/engines/__parent/recorder___parent.py,sha256=exfElkgOU57hupV6opRCeYPHw91GIkIZL6UY3f2OClM,5635
144
144
  atomicshop/mitm/engines/__parent/responder___parent.py,sha256=7WQeR3UmMnN74bDwn-0nz2OfhXJ3-ClXpNGUFZ7wJUE,12004
145
145
  atomicshop/mitm/engines/__reference_general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
146
  atomicshop/mitm/engines/__reference_general/parser___reference_general.py,sha256=57MEPZMAjTO6xBDZ-yt6lgGJyqRrP0Do5Gk_cgCiPns,2998
147
- atomicshop/mitm/engines/__reference_general/recorder___reference_general.py,sha256=3eCGxD2oDulpVDgmMq19TyXohjsY-O_3HUiN8oKsUI4,712
147
+ atomicshop/mitm/engines/__reference_general/recorder___reference_general.py,sha256=El2_YHLoHUCiKfkAmGlXxtFpmSjsUFdsb8I1MvSAFaM,653
148
148
  atomicshop/mitm/engines/__reference_general/responder___reference_general.py,sha256=IUyQYMPeEhIARfALWiKPFeXagSQD6lRzAxUdi4ZIT88,7010
149
149
  atomicshop/mitm/statistic_analyzer_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
150
  atomicshop/mitm/statistic_analyzer_helper/analyzer_helper.py,sha256=pk6L1t1ea1kvlBoR9QEJptOmaX-mumhwLsP2GCKukbk,5920
@@ -303,24 +303,24 @@ atomicshop/wrappers/pywin32w/wmis/win32networkadapter.py,sha256=9H9MdS__GDBMm8H-
303
303
  atomicshop/wrappers/pywin32w/wmis/win32process.py,sha256=qMzXtJ5hBZ5ydAyqpDbSx0nO2RJQL95HdmV5SzNKMhk,6826
304
304
  atomicshop/wrappers/socketw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
305
305
  atomicshop/wrappers/socketw/accepter.py,sha256=hZZKVYlF3LOHQJsSIEKXZUf6QXXWm-AtqXZevvaYigE,1732
306
- atomicshop/wrappers/socketw/base.py,sha256=DV6BWao9kiLAWimhVDKGEi3ISVaWk5iPHXtBHrO3uwc,2264
306
+ atomicshop/wrappers/socketw/base.py,sha256=zYwFxiEzTcItFi1RZQCMxMTLBvECVUiKwivPYKcu44g,2713
307
307
  atomicshop/wrappers/socketw/certificator.py,sha256=mtWPJ_ew3OSwt0-1W4jaoco1VIY4NRCrMv3mDUxb_Cc,12418
308
308
  atomicshop/wrappers/socketw/creator.py,sha256=zMWLsOF07vX-xQZR720LeHQVndUT8q-ytdCrKF5tt9I,12835
309
309
  atomicshop/wrappers/socketw/dns_server.py,sha256=RklzINNuoMQn4PGGQEI5hiAldprbVwwvikY6u9X-jTY,49067
310
310
  atomicshop/wrappers/socketw/exception_wrapper.py,sha256=B-X5SHLSUIWToihH2MKnOB1F4A81_X0DpLLfnYKYbEc,7067
311
311
  atomicshop/wrappers/socketw/get_process.py,sha256=aJC-_qFUv3NgWCSUzDI72E4z8_-VTZE9NVZ0CwUoNlM,5698
312
- atomicshop/wrappers/socketw/receiver.py,sha256=-QtKK0T_lmoAIypTYaIKOD3pgB1npWGPxcVEN37y_gk,10060
313
- atomicshop/wrappers/socketw/sender.py,sha256=gwSzF51QD5paeeFav6fpbQpO8KgBO5lNztHYQyN5id0,4959
314
- atomicshop/wrappers/socketw/sni.py,sha256=28xpmGawMvO2wpeqpBPtxpX6cX661_CXqPElRAyLj-0,17685
315
- atomicshop/wrappers/socketw/socket_client.py,sha256=qwEV4HSMiROPk5VOY6kj_3k00tCIN8c0rZh3fjpSBno,22027
312
+ atomicshop/wrappers/socketw/receiver.py,sha256=LRQO-RIY0ZRjSMGVHLVJAXFTVO1zvjgIKSefEngPFfc,8186
313
+ atomicshop/wrappers/socketw/sender.py,sha256=aX_K8l_rHjd5AWb8bi5mt8-YTkMYVRDB6DnPqK_XDUE,4754
314
+ atomicshop/wrappers/socketw/sni.py,sha256=Nc8WMZZR21o5GXILQLVWbf7OzNPXAfE8trJY153e9Qk,17591
315
+ atomicshop/wrappers/socketw/socket_client.py,sha256=oa3GwS4OPgokrJE5_Oc4-5_wlXHxSH9J5f2DKebms8k,22035
316
316
  atomicshop/wrappers/socketw/socket_server_tester.py,sha256=Qobmh4XV8ZxLUaw-eW4ESKAbeSLecCKn2OWFzMhadk0,6420
317
317
  atomicshop/wrappers/socketw/socket_wrapper.py,sha256=WtylpezgIIBuz-A6PfM0hO1sm9Exd4j3qhDXcFc74-E,35567
318
318
  atomicshop/wrappers/socketw/ssl_base.py,sha256=kmiif84kMhBr5yjQW17p935sfjR5JKG0LxIwBA4iVvU,2275
319
- atomicshop/wrappers/socketw/statistics_csv.py,sha256=SDYI1cN0oaapvPeLxSXiJrelTy6xbZl-bopR0jAjVGE,3149
319
+ atomicshop/wrappers/socketw/statistics_csv.py,sha256=fgMzDXI0cybwUEqAxprRmY3lqbh30KAV-jOpoFKT-m8,3395
320
320
  atomicshop/wrappers/winregw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
321
321
  atomicshop/wrappers/winregw/winreg_network.py,sha256=zZQfps-CdODQaTUADbHAwKHr5RUg7BLafnKWBbKaLN4,8728
322
- atomicshop-2.17.3.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
323
- atomicshop-2.17.3.dist-info/METADATA,sha256=LHsnD_4t56XniePIJ4iTVrrCfWOpqDoLxXG3kxNXvJw,10499
324
- atomicshop-2.17.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
325
- atomicshop-2.17.3.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
326
- atomicshop-2.17.3.dist-info/RECORD,,
322
+ atomicshop-2.18.1.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
323
+ atomicshop-2.18.1.dist-info/METADATA,sha256=udb7ZbArHpKHBqBMXmBZbJw4FBWF0EVZeWc3yVZHeak,10499
324
+ atomicshop-2.18.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
325
+ atomicshop-2.18.1.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
326
+ atomicshop-2.18.1.dist-info/RECORD,,