atomicshop 2.2.8__py3-none-any.whl → 2.3.0__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 +1 -1
- atomicshop/basics/bytes_arrays.py +34 -1
- atomicshop/basics/dicts.py +35 -0
- atomicshop/basics/dicts_nested.py +30 -0
- atomicshop/basics/enums.py +70 -0
- atomicshop/basics/strings.py +50 -0
- atomicshop/datetimes.py +36 -1
- atomicshop/domains.py +7 -2
- atomicshop/file_io/csvs.py +21 -0
- atomicshop/file_io/jsons.py +0 -1
- atomicshop/file_io/tomls.py +24 -0
- atomicshop/file_io/xlsxs.py +58 -0
- atomicshop/filesystem.py +87 -49
- atomicshop/mitm/initialize_mitm_server.py +2 -2
- atomicshop/mitm/statistic_analyzer.py +465 -0
- atomicshop/ssh_scripts/process_from_port.py +6 -1
- atomicshop/wrappers/factw/__init__.py +0 -0
- atomicshop/wrappers/factw/fact_config.py +2 -0
- atomicshop/wrappers/factw/upload_firmware.py +80 -0
- atomicshop/wrappers/loggingw/reading.py +31 -14
- atomicshop/wrappers/socketw/socket_server_tester.py +4 -4
- {atomicshop-2.2.8.dist-info → atomicshop-2.3.0.dist-info}/METADATA +3 -1
- {atomicshop-2.2.8.dist-info → atomicshop-2.3.0.dist-info}/RECORD +26 -19
- {atomicshop-2.2.8.dist-info → atomicshop-2.3.0.dist-info}/LICENSE.txt +0 -0
- {atomicshop-2.2.8.dist-info → atomicshop-2.3.0.dist-info}/WHEEL +0 -0
- {atomicshop-2.2.8.dist-info → atomicshop-2.3.0.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import os
|
|
1
2
|
from typing import Literal
|
|
2
3
|
|
|
3
|
-
from ... import filesystem
|
|
4
|
-
from ...
|
|
4
|
+
from ... import filesystem, datetimes
|
|
5
|
+
from ...basics import list_of_dicts
|
|
6
|
+
from ...file_io import csvs
|
|
5
7
|
|
|
6
8
|
|
|
7
9
|
def get_logs(
|
|
@@ -10,6 +12,7 @@ def get_logs(
|
|
|
10
12
|
log_type: Literal['csv'] = 'csv',
|
|
11
13
|
header_type_of_files: Literal['first', 'all'] = 'first',
|
|
12
14
|
remove_logs: bool = False,
|
|
15
|
+
move_to_path: str = None,
|
|
13
16
|
print_kwargs: dict = None
|
|
14
17
|
):
|
|
15
18
|
"""
|
|
@@ -23,19 +26,20 @@ def get_logs(
|
|
|
23
26
|
'first' - Only the first file has a header for CSV. This header will be used for the rest of the files.
|
|
24
27
|
'all' - Each CSV file has a header. Get the header from each file.
|
|
25
28
|
:param remove_logs: Boolean, if True, the logs will be removed after getting them.
|
|
29
|
+
:param move_to_path: Path to move the logs to.
|
|
30
|
+
|
|
26
31
|
:param print_kwargs: Keyword arguments dict for 'print_api' function.
|
|
27
32
|
"""
|
|
28
33
|
|
|
29
34
|
if not print_kwargs:
|
|
30
35
|
print_kwargs = dict()
|
|
31
36
|
|
|
32
|
-
|
|
33
|
-
|
|
37
|
+
if remove_logs and move_to_path:
|
|
38
|
+
raise ValueError('Both "remove_logs" and "move_to_path" cannot be True/specified at the same time.')
|
|
34
39
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
logs_files = list(logs_files[1:] + [logs_files[0]])
|
|
40
|
+
logs_files: list = filesystem.get_file_paths_and_relative_directories(
|
|
41
|
+
path, file_name_check_pattern=pattern,
|
|
42
|
+
add_last_modified_time=True, sort_by_last_modified_time=True)
|
|
39
43
|
|
|
40
44
|
# Read all the logs.
|
|
41
45
|
logs_content: list = list()
|
|
@@ -43,24 +47,37 @@ def get_logs(
|
|
|
43
47
|
for single_file in logs_files:
|
|
44
48
|
if log_type == 'csv':
|
|
45
49
|
if header_type_of_files == 'all':
|
|
46
|
-
csv_content, _ = csvs.read_csv_to_list(single_file, **print_kwargs)
|
|
50
|
+
csv_content, _ = csvs.read_csv_to_list(single_file['path'], **print_kwargs)
|
|
47
51
|
logs_content.extend(csv_content)
|
|
48
52
|
elif header_type_of_files == 'first':
|
|
49
53
|
# The function gets empty header to read it from the CSV file, the returns the header that it read.
|
|
50
54
|
# Then each time the header is fed once again to the function.
|
|
51
|
-
csv_content, header = csvs.read_csv_to_list(single_file, header=header, **print_kwargs)
|
|
55
|
+
csv_content, header = csvs.read_csv_to_list(single_file['path'], header=header, **print_kwargs)
|
|
52
56
|
# Any way the first file will be read with header.
|
|
53
57
|
logs_content.extend(csv_content)
|
|
54
58
|
|
|
55
59
|
# if not header:
|
|
56
60
|
# # Get the first line of the file as text, which is the header.
|
|
57
|
-
# header =
|
|
58
|
-
# # Split the header to list of keys.
|
|
59
|
-
# header = header.split(',')
|
|
61
|
+
# header = csvs.get_header(single_file, **print_kwargs)
|
|
60
62
|
|
|
61
63
|
if remove_logs:
|
|
62
64
|
# Remove the statistics files.
|
|
63
65
|
for single_file in logs_files:
|
|
64
|
-
filesystem.remove_file(single_file)
|
|
66
|
+
filesystem.remove_file(single_file['path'])
|
|
67
|
+
|
|
68
|
+
if move_to_path:
|
|
69
|
+
# Get formatted time stamp for file name.
|
|
70
|
+
time_stamp = datetimes.TimeFormats().get_current_formatted_time_filename_stamp()
|
|
71
|
+
# Remove last separator from path if it exists.
|
|
72
|
+
move_to_path_with_timestamp = filesystem.remove_last_separator(move_to_path)
|
|
73
|
+
# Add time stamp to path.
|
|
74
|
+
move_to_path_with_timestamp = f'{move_to_path_with_timestamp}{os.sep}{time_stamp}'
|
|
75
|
+
# Create the path.
|
|
76
|
+
filesystem.create_directory(move_to_path_with_timestamp)
|
|
77
|
+
# Move the statistics files.
|
|
78
|
+
for single_file in logs_files:
|
|
79
|
+
single_file_name = filesystem.get_file_name(single_file['path'])
|
|
80
|
+
move_to_path_with_file = f'{move_to_path_with_timestamp}{os.sep}{single_file_name}'
|
|
81
|
+
filesystem.move_file(single_file['path'], move_to_path_with_file)
|
|
65
82
|
|
|
66
83
|
return logs_content
|
|
@@ -57,14 +57,14 @@ def execute_test(config_static):
|
|
|
57
57
|
loggingw.get_logger_with_stream_handler("network")
|
|
58
58
|
|
|
59
59
|
# Get all the files in requests folder recursively.
|
|
60
|
-
request_file_list
|
|
60
|
+
request_file_list = get_file_paths_and_relative_directories(config['requests_directory'])
|
|
61
61
|
print(f"Found request files: {len(request_file_list)}")
|
|
62
62
|
|
|
63
63
|
# Get contents of all request files to list of contents.
|
|
64
64
|
requests_bytes_list: list = list()
|
|
65
65
|
for request_file_path in request_file_list:
|
|
66
66
|
if config['request_type'] == 'json':
|
|
67
|
-
request_file_content = jsons.read_json_file(request_file_path)
|
|
67
|
+
request_file_content = jsons.read_json_file(request_file_path['path'])
|
|
68
68
|
|
|
69
69
|
# If imported json is regular and not combined json.
|
|
70
70
|
if isinstance(request_file_content, dict):
|
|
@@ -79,13 +79,13 @@ def execute_test(config_static):
|
|
|
79
79
|
requests_bytes_list.extend(
|
|
80
80
|
get_key_values_from_json(json_dict, config['request_json_hex_key_list']))
|
|
81
81
|
elif config['request_type'] == 'string':
|
|
82
|
-
request_file_content = file_io.read_file(request_file_path)
|
|
82
|
+
request_file_content = file_io.read_file(request_file_path['path'])
|
|
83
83
|
# Convert string content to bytes and append to list.
|
|
84
84
|
requests_bytes_list.append(request_file_content.encode())
|
|
85
85
|
print(f"Extracted 1 request.")
|
|
86
86
|
elif config['request_type'] == 'binary':
|
|
87
87
|
# The content is already in bytes, so just appending.
|
|
88
|
-
requests_bytes_list.append(file_io.read_file(request_file_path, 'rb'))
|
|
88
|
+
requests_bytes_list.append(file_io.read_file(request_file_path['path'], 'rb'))
|
|
89
89
|
print(f"Extracted 1 request.")
|
|
90
90
|
|
|
91
91
|
print(f"Finished parsing. Parsed requests: {len(requests_bytes_list)}")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: atomicshop
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.0
|
|
4
4
|
Summary: Atomic functions and classes to make developer life easier
|
|
5
5
|
Author: Denis Kras
|
|
6
6
|
License: MIT License
|
|
@@ -37,6 +37,8 @@ Requires-Dist: cryptography
|
|
|
37
37
|
Requires-Dist: dnslib
|
|
38
38
|
Requires-Dist: dnspython
|
|
39
39
|
Requires-Dist: numpy
|
|
40
|
+
Requires-Dist: openpyxl
|
|
41
|
+
Requires-Dist: pandas
|
|
40
42
|
Requires-Dist: paramiko
|
|
41
43
|
Requires-Dist: playwright
|
|
42
44
|
Requires-Dist: playwright-stealth
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
atomicshop/__init__.py,sha256=
|
|
1
|
+
atomicshop/__init__.py,sha256=yr_8y567Q3hThW-oAtdb4uyjp4EiXsJZdLV456tdqw8,122
|
|
2
2
|
atomicshop/_basics_temp.py,sha256=6cu2dd6r2dLrd1BRNcVDKTHlsHs_26Gpw8QS6v32lQ0,3699
|
|
3
3
|
atomicshop/appointment_management.py,sha256=N3wVGJgrqJfsj_lqiRfaL3FxMEe57by5Stzanh189mk,7263
|
|
4
4
|
atomicshop/archiver.py,sha256=KKdNI150yiMO_Y1TZdKjXtw4TP5LI5FJzI8VbvFKVwo,4763
|
|
@@ -6,12 +6,12 @@ atomicshop/certificates.py,sha256=nxuq6HPBT7RfwRTSipOxoRHBS-nZLsaHR9m6UdHmDn4,29
|
|
|
6
6
|
atomicshop/command_line_processing.py,sha256=u5yT9Ger_cu7ni5ID0VFlRbVD46ARHeNC9tRM-_YXrQ,1038
|
|
7
7
|
atomicshop/console_output.py,sha256=G-6jxnWooT1nJSaPxcCqIuw8S22R_0lOJcfrdovRhwE,1372
|
|
8
8
|
atomicshop/console_user_response.py,sha256=31HIy9QGXa7f-GVR8MzJauQ79E_ZqAeagF3Ks4GGdDU,3234
|
|
9
|
-
atomicshop/datetimes.py,sha256=
|
|
9
|
+
atomicshop/datetimes.py,sha256=ICr0_gQqWnIw4BuNtabrHzjSlwnZkBfhyCrOILs5xpU,14623
|
|
10
10
|
atomicshop/diff_check.py,sha256=RON9cSTgy3jAnwUmAUkOyfF6bgrBKOq9Sbgyl3RYodw,12350
|
|
11
11
|
atomicshop/dns.py,sha256=bNZOo5jVPzq7OT2qCPukXoK3zb1oOsyaelUwQEyK1SA,2500
|
|
12
|
-
atomicshop/domains.py,sha256=
|
|
12
|
+
atomicshop/domains.py,sha256=Rxu6JhhMqFZRcoFs69IoEd1PtYca0lMCG6F1AomP7z4,3197
|
|
13
13
|
atomicshop/emails.py,sha256=I0KyODQpIMEsNRi9YWSOL8EUPBiWyon3HRdIuSj3AEU,1410
|
|
14
|
-
atomicshop/filesystem.py,sha256=
|
|
14
|
+
atomicshop/filesystem.py,sha256=s9lJRCGIBJnMJDDkLFBkoU1YD5BqYnRvNH0-wNzdup4,18129
|
|
15
15
|
atomicshop/functions.py,sha256=VqLjxAxhaxUr-Ad8P1cw9bZGdZpbtqfCaXQyHf3CM9g,509
|
|
16
16
|
atomicshop/github_wrapper.py,sha256=7pZkhliP4vdcdeVtbgTDEzBS3lUw3-mp5PMWUDA19V0,4347
|
|
17
17
|
atomicshop/hashing.py,sha256=6523xFxuW0Cm1pcJCE63NWeiwt3al3t-FXLv0f0Kzpg,2989
|
|
@@ -54,10 +54,11 @@ atomicshop/basics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
54
54
|
atomicshop/basics/ansi_escape_codes.py,sha256=WtIkm-BjSZS5J5irDUdAMBNvdX-qXFZcTX98jcBMpJE,3140
|
|
55
55
|
atomicshop/basics/argparse_template.py,sha256=S-BIdKd45bmNdqO3Dj3yOxBgb0O90spZxG4OcnedBHw,5836
|
|
56
56
|
atomicshop/basics/booleans.py,sha256=-4JnSQ1pSb6CNY_62wtHBW8NltjPJEKM-gYOxFujunA,1772
|
|
57
|
-
atomicshop/basics/bytes_arrays.py,sha256=
|
|
57
|
+
atomicshop/basics/bytes_arrays.py,sha256=g-5mM0tRo49poqIHyhoqak6IAO_chuUFJEqT-KqV_Fg,2136
|
|
58
58
|
atomicshop/basics/classes.py,sha256=sgzsYpI8MhauNvfB_mmznROpyPbfgbqaneTTEWE7g9s,7336
|
|
59
|
-
atomicshop/basics/dicts.py,sha256=
|
|
60
|
-
atomicshop/basics/dicts_nested.py,sha256=
|
|
59
|
+
atomicshop/basics/dicts.py,sha256=56zgwJpTpyTrLIsMmOBwakGOaK41fOqipp3XChaf6Ms,5357
|
|
60
|
+
atomicshop/basics/dicts_nested.py,sha256=StYxYnYPa0SEJr1lmEwAv5zfERWWqoULeyG8e0zRAwE,4107
|
|
61
|
+
atomicshop/basics/enums.py,sha256=fY7a9oOKy9TWc-_ExbRK5UyGndU6uquj8yBxtnvYNtk,3567
|
|
61
62
|
atomicshop/basics/exceptions.py,sha256=-1Gu8bHA3hrf11mmeaPuVE73jWV3EOyRgh2vSpWfveg,504
|
|
62
63
|
atomicshop/basics/guids.py,sha256=iRx5n18ATZWhpo748BwEjuLWLsu9y3OwF5-Adp-Dtik,403
|
|
63
64
|
atomicshop/basics/hexs.py,sha256=XbawqHIgZeGvG94vFW95iCr6RE3HtBbfrdcEyX1lSoM,1083
|
|
@@ -67,7 +68,7 @@ atomicshop/basics/lists.py,sha256=ZyTjHyvkta-4_xCG1P-LFMENELmgAYlDdPq4hMRAOR8,25
|
|
|
67
68
|
atomicshop/basics/multiprocesses.py,sha256=GVeyF-r9Q6SAjpJ46eqkZQ4QUli554n-CAIE_W8pij8,958
|
|
68
69
|
atomicshop/basics/numbers.py,sha256=FRjAH1Thk3z3ayxq0Ik6Wh93ELDRk1geyDYTv8amZBE,165
|
|
69
70
|
atomicshop/basics/randoms.py,sha256=DmYLtnIhDK29tAQrGP1Nt-A-v8WC7WIEB8Edi-nk3N4,282
|
|
70
|
-
atomicshop/basics/strings.py,sha256=
|
|
71
|
+
atomicshop/basics/strings.py,sha256=e_jq1huII_JnE82fUnMPqirZIKfbS6axnxhxK6jJzkM,12919
|
|
71
72
|
atomicshop/basics/threads.py,sha256=xvgdDJdmgN0wmmARoZ-H7Kvl1GOcEbvgaeGL4M3Hcx8,2819
|
|
72
73
|
atomicshop/basics/timeit_template.py,sha256=fYLrk-X_dhdVtnPU22tarrhhvlggeW6FdKCXM8zkX68,405
|
|
73
74
|
atomicshop/basics/tracebacks.py,sha256=cNfh_oAwF55kSIdqtv3boHZQIoQI8TajxkTnwJwpweI,535
|
|
@@ -75,16 +76,19 @@ atomicshop/etw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
75
76
|
atomicshop/etw/dns_trace.py,sha256=ZbEf1gptnUnJwaRURUW9ENDwC9Q41Zl6NtxgMNELJcg,5198
|
|
76
77
|
atomicshop/etw/etw.py,sha256=xVJNbfCq4KgRfsDnul6CrIdAMl9xRBixZ-hUyqiB2g4,2403
|
|
77
78
|
atomicshop/file_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
78
|
-
atomicshop/file_io/csvs.py,sha256=
|
|
79
|
+
atomicshop/file_io/csvs.py,sha256=4R4Kij8FmxNwXFjDtlF_A0flAk0Hj5nZKlEnqC5VxgQ,3125
|
|
79
80
|
atomicshop/file_io/file_io.py,sha256=d7HYaixw12wf0WKKoCpWWjOWtmsFqgGztcSuWL41nlQ,5650
|
|
80
|
-
atomicshop/file_io/jsons.py,sha256=
|
|
81
|
+
atomicshop/file_io/jsons.py,sha256=sQjWtNXsM6HjtrSG2FIicT1Alp8ASC0yfY8VL-xoDR4,3354
|
|
82
|
+
atomicshop/file_io/tomls.py,sha256=BR1Gsz66zr9DlSPOuc4fqmYJbYAqhV6Ar5WQwIUih5U,904
|
|
83
|
+
atomicshop/file_io/xlsxs.py,sha256=v_dyg9GD4LqgWi6wA1QuWRZ8zG4ZwB6Dz52ytdcmmmI,2184
|
|
81
84
|
atomicshop/mitm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
85
|
atomicshop/mitm/connection_thread_worker.py,sha256=7f7T3t6ltndzb3125DgyRTzsD-oAbAfewDIhpNEeHRY,20630
|
|
83
86
|
atomicshop/mitm/import_config.py,sha256=BPZ62ozMUaUKn7Crt6dhzvUgD3dSKd17kMfbJNObvlI,7486
|
|
84
87
|
atomicshop/mitm/initialize_engines.py,sha256=qCtIjaR-sCbcliKKX_I65O6e4fqc-zDHELGglnL92cw,7687
|
|
85
|
-
atomicshop/mitm/initialize_mitm_server.py,sha256=
|
|
88
|
+
atomicshop/mitm/initialize_mitm_server.py,sha256=WtC9xJW4tt7LWWHKWIqI5adHAP4zGN81Vpx22WFaf6M,11350
|
|
86
89
|
atomicshop/mitm/message.py,sha256=u2U2f2SOHdBNU-6r1Ik2W14ai2EOwxUV4wVfGZA098k,1732
|
|
87
90
|
atomicshop/mitm/shared_functions.py,sha256=NeHABBlY-tmQRooWGVl2jZQx1wSTKJtEqG7mMvF2Jqo,4268
|
|
91
|
+
atomicshop/mitm/statistic_analyzer.py,sha256=1g5l6X-NbnHvh_TREJRumTDWgE4ixUNJ8pKGneKcf4Y,23524
|
|
88
92
|
atomicshop/mitm/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
89
93
|
atomicshop/mitm/engines/create_module_template.py,sha256=KHsdqpVtzCIHwaub8gC6VleM1Ct2cRjkN_Th2I5UdRM,5208
|
|
90
94
|
atomicshop/mitm/engines/create_module_template_example.py,sha256=X5xhvbV6-g9jU_bQVhf_crZmaH50LRWz3bS-faQ18ds,489
|
|
@@ -107,7 +111,7 @@ atomicshop/monitor/checks/hash_checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
|
|
|
107
111
|
atomicshop/monitor/checks/hash_checks/file.py,sha256=UDHrUphYSKeH4KJR5pC3ilPAGxX0oXTu3UD8ndnR5WU,2733
|
|
108
112
|
atomicshop/monitor/checks/hash_checks/url.py,sha256=aNAL1bIeks6xsRDk-5arGy4rhzrJkJ4ZRCqCQTi4n3U,3237
|
|
109
113
|
atomicshop/ssh_scripts/process_from_ipv4.py,sha256=uDBKZ2Ds20614JW1xMLr4IPB-z1LzIwy6QH5-SJ4j0s,1681
|
|
110
|
-
atomicshop/ssh_scripts/process_from_port.py,sha256=
|
|
114
|
+
atomicshop/ssh_scripts/process_from_port.py,sha256=uDTkVh4zc3HOTTGv1Et3IxM3PonDJCPuFRL6rnZDQZ4,1389
|
|
111
115
|
atomicshop/wrappers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
112
116
|
atomicshop/wrappers/_process_wrapper_curl.py,sha256=XkZZXYl7D0Q6UfdWqy-18AvpU0yVp9i2BVD2qRcXlkk,841
|
|
113
117
|
atomicshop/wrappers/_process_wrapper_tar.py,sha256=WUMZFKNrlG4nJP9tWZ51W7BR1j_pIjsjgyAStmWjRGs,655
|
|
@@ -121,12 +125,15 @@ atomicshop/wrappers/pyopensslw.py,sha256=OBWxA6EJ2vU_Qlf4M8m6ilcG3hyYB4yB0EsXUf7
|
|
|
121
125
|
atomicshop/wrappers/certauthw/certauth.py,sha256=hKedW0DOWlEigSNm8wu4SqHkCQsGJ1tJfH7s4nr3Bk0,12223
|
|
122
126
|
atomicshop/wrappers/certauthw/certauthw.py,sha256=4WvhjANI7Kzqrr_nKmtA8Kf7B6rute_5wfP65gwQrjw,8082
|
|
123
127
|
atomicshop/wrappers/ctyping/process_winapi.py,sha256=QcXL-ETtlSSkoT8F7pYle97ubGWsjYp8cx8HxkVMgAc,2762
|
|
128
|
+
atomicshop/wrappers/factw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
129
|
+
atomicshop/wrappers/factw/fact_config.py,sha256=grHCgqdd6Z6bhziYxCkpTy4rlNN9E08jrrgH2LiduYU,88
|
|
130
|
+
atomicshop/wrappers/factw/upload_firmware.py,sha256=wCc5HwFRBgtvF7bmCbraGxFld5kEVPTEHTtS4B09Up0,3183
|
|
124
131
|
atomicshop/wrappers/loggingw/checks.py,sha256=AGFsTsLxHQd1yAraa5popqLaGO9VM0KpcPGuSLn5ptU,719
|
|
125
132
|
atomicshop/wrappers/loggingw/formatters.py,sha256=mUtcJJfmhLNrwUVYShXTmdu40dBaJu4TS8FiuTXI7ys,7189
|
|
126
133
|
atomicshop/wrappers/loggingw/handlers.py,sha256=qm5Fbu8eDmlstMduUe5nKUlJU5IazFkSnQizz8Qt2os,5479
|
|
127
134
|
atomicshop/wrappers/loggingw/loggers.py,sha256=DHOOTAtqkwn1xgvLHSkOiBm6yFGNuQy1kvbhG-TDog8,2374
|
|
128
135
|
atomicshop/wrappers/loggingw/loggingw.py,sha256=30uaJOJhPJExYptEmwc5HWScI2RbnDlNgybOsxW7klc,11609
|
|
129
|
-
atomicshop/wrappers/loggingw/reading.py,sha256=
|
|
136
|
+
atomicshop/wrappers/loggingw/reading.py,sha256=cHco0EG8bEB6fJ7JxkFdV_d8J-voYRBCUzS-qVqv4aU,3697
|
|
130
137
|
atomicshop/wrappers/playwrightw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
131
138
|
atomicshop/wrappers/playwrightw/_tryouts.py,sha256=l1BLkFsiIMNlgv7nfZd1XGEvXQkIQkIcg48__9OaC00,4920
|
|
132
139
|
atomicshop/wrappers/playwrightw/base.py,sha256=zwHfbFZV7qqpmReJg5lEpKtOO23DRxEd61ZdoLBU_9Q,9833
|
|
@@ -150,12 +157,12 @@ atomicshop/wrappers/socketw/receiver.py,sha256=m8hXKOa8dqEQGUdcbYjshH8-j0CsMGRkg
|
|
|
150
157
|
atomicshop/wrappers/socketw/sender.py,sha256=hHpBLc0LCfOIUErq2mc0ATfp0tDDQ5XhcYT4hRAZARU,3680
|
|
151
158
|
atomicshop/wrappers/socketw/sni.py,sha256=GIm5uUJCh5i-pjY4FhSkoK4oo9uL_fFq1Mbr6PKXpBg,10014
|
|
152
159
|
atomicshop/wrappers/socketw/socket_client.py,sha256=X3Bo83EVZwDwrSIji7UOT9UGYutn-pfBTQcls_Jd7N8,20235
|
|
153
|
-
atomicshop/wrappers/socketw/socket_server_tester.py,sha256=
|
|
160
|
+
atomicshop/wrappers/socketw/socket_server_tester.py,sha256=VfNthyBvgI5tL9v3Qprh4CcRP0sqKnif-a7f0gev4lY,6335
|
|
154
161
|
atomicshop/wrappers/socketw/socket_wrapper.py,sha256=aXBwlEIJhFT0-c4i8iNlFx2It9VpCEpsv--5Oqcpxao,11624
|
|
155
162
|
atomicshop/wrappers/socketw/ssl_base.py,sha256=k4V3gwkbq10MvOH4btU4onLX2GNOsSfUAdcHmL1rpVE,2274
|
|
156
163
|
atomicshop/wrappers/socketw/statistics_csv.py,sha256=t3dtDEfN47CfYVi0CW6Kc2QHTEeZVyYhc57IYYh5nmA,826
|
|
157
|
-
atomicshop-2.
|
|
158
|
-
atomicshop-2.
|
|
159
|
-
atomicshop-2.
|
|
160
|
-
atomicshop-2.
|
|
161
|
-
atomicshop-2.
|
|
164
|
+
atomicshop-2.3.0.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
|
|
165
|
+
atomicshop-2.3.0.dist-info/METADATA,sha256=9SWfojPmoZw236BzJoRR1qiKodY--_-6swnXU_Pw0pM,9554
|
|
166
|
+
atomicshop-2.3.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
167
|
+
atomicshop-2.3.0.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
|
|
168
|
+
atomicshop-2.3.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|