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

Files changed (35) hide show
  1. atomicshop/__init__.py +1 -1
  2. atomicshop/a_installs/ubuntu/pycharm.py +7 -0
  3. atomicshop/a_installs/win/pycharm.py +2 -2
  4. atomicshop/{addons/mains/install_wsl_ubuntu_lts_admin.py → a_installs/win/wsl_ubuntu_lts.py} +1 -0
  5. atomicshop/{addons/mains → a_mains}/FACT/update_extract.py +3 -2
  6. atomicshop/dns.py +1 -1
  7. atomicshop/mitm/import_config.py +2 -1
  8. atomicshop/mitm/initialize_mitm_server.py +2 -1
  9. atomicshop/mitm/statistic_analyzer_helper/moving_average_helper.py +7 -1
  10. atomicshop/permissions/__init__.py +0 -0
  11. atomicshop/permissions/permissions.py +22 -0
  12. atomicshop/{permissions.py → permissions/ubuntu_permissions.py} +4 -54
  13. atomicshop/permissions/win_permissions.py +33 -0
  14. atomicshop/urls.py +6 -0
  15. atomicshop/wrappers/dockerw/install_docker.py +6 -5
  16. atomicshop/wrappers/elasticsearchw/install_elastic.py +2 -1
  17. atomicshop/wrappers/factw/install/pre_install_and_install_before_restart.py +5 -4
  18. atomicshop/wrappers/mongodbw/install_mongodb.py +2 -1
  19. atomicshop/wrappers/msiw.py +2 -3
  20. atomicshop/wrappers/pycharmw/__init__.py +0 -0
  21. atomicshop/wrappers/pycharmw/ubuntu.py +38 -0
  22. atomicshop/wrappers/{pycharmw.py → pycharmw/win.py} +2 -2
  23. atomicshop/wrappers/ubuntu_terminal.py +6 -6
  24. atomicshop/wrappers/wslw.py +1 -0
  25. {atomicshop-2.16.0.dist-info → atomicshop-2.16.2.dist-info}/METADATA +1 -1
  26. {atomicshop-2.16.0.dist-info → atomicshop-2.16.2.dist-info}/RECORD +33 -29
  27. atomicshop/addons/mains/__pycache__/install_fibratus_windows.cpython-312.pyc +0 -0
  28. atomicshop/addons/mains/__pycache__/msi_unpacker.cpython-312.pyc +0 -0
  29. /atomicshop/{addons/mains/install_docker_rootless_ubuntu.py → a_installs/ubuntu/docker_rootless.py} +0 -0
  30. /atomicshop/{addons/mains/install_docker_ubuntu_main_sudo.py → a_installs/ubuntu/docker_sudo.py} +0 -0
  31. /atomicshop/{addons/mains/install_elastic_search_and_kibana_ubuntu.py → a_installs/ubuntu/elastic_search_and_kibana.py} +0 -0
  32. /atomicshop/{addons/mains → a_mains}/FACT/factw_fact_extractor_docker_image_main_sudo.py +0 -0
  33. {atomicshop-2.16.0.dist-info → atomicshop-2.16.2.dist-info}/LICENSE.txt +0 -0
  34. {atomicshop-2.16.0.dist-info → atomicshop-2.16.2.dist-info}/WHEEL +0 -0
  35. {atomicshop-2.16.0.dist-info → atomicshop-2.16.2.dist-info}/top_level.txt +0 -0
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.16.0'
4
+ __version__ = '2.16.2'
@@ -0,0 +1,7 @@
1
+ import sys
2
+
3
+ from atomicshop.wrappers.pycharmw import ubuntu
4
+
5
+
6
+ if __name__ == '__main__':
7
+ sys.exit(ubuntu.install_main())
@@ -1,8 +1,8 @@
1
- from atomicshop.wrappers import pycharmw
1
+ from atomicshop.wrappers.pycharmw import win
2
2
 
3
3
 
4
4
  def main():
5
- pycharmw.download_install_main()
5
+ win.download_install_main()
6
6
 
7
7
 
8
8
  if __name__ == "__main__":
@@ -1,6 +1,7 @@
1
1
  from atomicshop.wrappers import wslw
2
2
 
3
3
 
4
+ # Run as admin
4
5
  def main():
5
6
  wslw.install_wsl()
6
7
 
@@ -1,15 +1,16 @@
1
1
  import os
2
2
 
3
+ from atomicshop import filesystem
3
4
  from atomicshop.wrappers.factw.fact_extractor import get_extractor
4
5
  from atomicshop.wrappers.factw import config_install
5
- from atomicshop import permissions, filesystem
6
+ from atomicshop.permissions import ubuntu_permissions
6
7
 
7
8
 
8
9
  def main():
9
10
  get_extractor.get_extractor_script()
10
11
  fact_extractor_executable_path: str = (
11
12
  filesystem.get_working_directory() + os.sep + config_install.FACT_EXTRACTOR_FILE_NAME)
12
- permissions.set_executable_permission(fact_extractor_executable_path)
13
+ ubuntu_permissions.set_executable(fact_extractor_executable_path)
13
14
 
14
15
 
15
16
  if __name__ == '__main__':
atomicshop/dns.py CHANGED
@@ -3,7 +3,7 @@ import argparse
3
3
  import dns.resolver
4
4
 
5
5
  from .print_api import print_api
6
- from . import permissions
6
+ from .permissions import permissions
7
7
  from .wrappers.pywin32w.wmis import win32networkadapter
8
8
 
9
9
 
@@ -1,7 +1,8 @@
1
1
  from pathlib import Path
2
2
 
3
3
  from ..print_api import print_api
4
- from .. import config_init, permissions, filesystem, dns
4
+ from .. import config_init, filesystem, dns
5
+ from ..permissions import permissions
5
6
  from ..wrappers.socketw import base
6
7
  from ..basics import booleans
7
8
 
@@ -4,7 +4,8 @@ import time
4
4
 
5
5
  import atomicshop # Importing atomicshop package to get the version of the package.
6
6
 
7
- from .. import filesystem, queues, dns, on_exit, permissions
7
+ from .. import filesystem, queues, dns, on_exit
8
+ from ..permissions import permissions
8
9
  from ..python_functions import get_current_python_version_string, check_python_version_compliance
9
10
  from ..wrappers.socketw import socket_wrapper, dns_server, base
10
11
  from ..wrappers.loggingw import loggingw
@@ -1,4 +1,5 @@
1
1
  import statistics
2
+ from pathlib import Path
2
3
  from typing import Literal
3
4
 
4
5
  from ...print_api import print_api
@@ -129,7 +130,12 @@ def get_data_dict_from_statistics_content(
129
130
  type_to_check: str = line['host'] + line['path']
130
131
  # Remove the parameters from the URL.
131
132
  url_parsed = urls.url_parser(type_to_check)
132
- type_to_check = url_parsed['path']
133
+
134
+ if url_parsed['file'] and Path(url_parsed['file']).suffix in ['.gz', '.gzip', '.zip']:
135
+ type_to_check = '/'.join(url_parsed['directories'][:-1])
136
+ else:
137
+ type_to_check = url_parsed['path']
138
+
133
139
  # Remove the last slash from the URL.
134
140
  type_to_check = type_to_check.removesuffix('/')
135
141
  else:
File without changes
@@ -0,0 +1,22 @@
1
+ import os
2
+ import ctypes
3
+
4
+
5
+ def is_admin() -> bool:
6
+ """
7
+ Function checks on Windows or POSIX OSes if the script is executed under Administrative Privileges.
8
+ :return: True / False.
9
+ """
10
+
11
+ if os.name == 'nt':
12
+ if ctypes.windll.shell32.IsUserAnAdmin() == 0:
13
+ result = False
14
+ else:
15
+ result = True
16
+ else:
17
+ if 'SUDO_USER' in os.environ and os.geteuid() == 0:
18
+ result = True
19
+ else:
20
+ result = False
21
+
22
+ return result
@@ -1,6 +1,5 @@
1
1
  import os
2
2
  import stat
3
- import ctypes
4
3
  import contextlib
5
4
  import subprocess
6
5
 
@@ -9,27 +8,7 @@ if os.name == 'posix':
9
8
  import pwd
10
9
 
11
10
 
12
- def is_admin() -> bool:
13
- """
14
- Function checks on Windows or POSIX OSes if the script is executed under Administrative Privileges.
15
- :return: True / False.
16
- """
17
-
18
- if os.name == 'nt':
19
- if ctypes.windll.shell32.IsUserAnAdmin() == 0:
20
- result = False
21
- else:
22
- result = True
23
- else:
24
- if 'SUDO_USER' in os.environ and os.geteuid() == 0:
25
- result = True
26
- else:
27
- result = False
28
-
29
- return result
30
-
31
-
32
- def get_ubuntu_sudo_executer_username() -> str:
11
+ def get_sudo_executer_username() -> str:
33
12
  """
34
13
  Function gets the username of the user who executed the script with sudo.
35
14
  :return: str, username.
@@ -41,7 +20,7 @@ def get_ubuntu_sudo_executer_username() -> str:
41
20
  return ''
42
21
 
43
22
 
44
- def set_executable_permission(file_path: str):
23
+ def set_executable(file_path: str):
45
24
  """
46
25
  Function sets the executable permission on a file.
47
26
  Equivalent to: chmod +x <file_path>
@@ -54,7 +33,7 @@ def set_executable_permission(file_path: str):
54
33
  os.chmod(file_path, os.stat(file_path).st_mode | stat.S_IXUSR)
55
34
 
56
35
 
57
- def change_file_owner_ubuntu(file_path: str, username: str):
36
+ def change_file_owner(file_path: str, username: str):
58
37
  """
59
38
  Function changes the owner of the file to the specified user.
60
39
  :param file_path: str, path to the file.
@@ -66,7 +45,7 @@ def change_file_owner_ubuntu(file_path: str, username: str):
66
45
  os.chown(file_path, uid, -1)
67
46
 
68
47
 
69
- def is_executable_permission(file_path: str) -> bool:
48
+ def is_executable(file_path: str) -> bool:
70
49
  """
71
50
  Function checks if the file has the executable permission.
72
51
  Equivalent to: stat -c "%a %n" <file_path>
@@ -120,32 +99,3 @@ def expand_user_path(user_name, path):
120
99
  pwnam = pwd.getpwnam(user_name)
121
100
  home_dir = pwnam.pw_dir
122
101
  return path.replace("~", home_dir)
123
-
124
-
125
- def unblock_file_windows(file_path):
126
- """
127
- Unblock a file on Windows. This is used to unblock files downloaded from the internet.
128
- When you Right-click then navigate to Properties, you will see the Unblock checkbox.
129
- :param file_path:
130
- :return:
131
- """
132
- try:
133
- subprocess.run(["powershell", "-Command", f"Unblock-File -Path '{file_path}'"], check=True)
134
- print(f"Successfully unblocked the file: {file_path}")
135
- except subprocess.CalledProcessError as e:
136
- print(f"Failed to unblock the file: {file_path}\nError: {e}")
137
-
138
-
139
- def get_command_to_run_as_admin_windows(command: str) -> str:
140
- """
141
- Function returns the command to run a command as administrator on Windows.
142
- :param command: str, command to run.
143
- :return: str, command to run as administrator.
144
- """
145
-
146
- executable = command.split()[0]
147
- command = (
148
- f"powershell -Command "
149
- f"\"Start-Process {executable} -ArgumentList '{' '.join(command.split()[1:])}' -Verb RunAs\"")
150
-
151
- return command
@@ -0,0 +1,33 @@
1
+ import subprocess
2
+
3
+
4
+ def unblock_file_windows(file_path):
5
+ """
6
+ Unblock a file on Windows. This is used to unblock files downloaded from the internet.
7
+ When you Right-click then navigate to Properties, you will see the Unblock checkbox.
8
+ :param file_path:
9
+ :return:
10
+ """
11
+ try:
12
+ subprocess.run(["powershell", "-Command", f"Unblock-File -Path '{file_path}'"], check=True)
13
+ print(f"Successfully unblocked the file: {file_path}")
14
+ except subprocess.CalledProcessError as e:
15
+ print(f"Failed to unblock the file: {file_path}\nError: {e}")
16
+
17
+
18
+ def get_command_to_run_as_admin_windows(command: str) -> str:
19
+ """
20
+ Function returns the command to run a command as administrator on Windows.
21
+ NOTE: When you run something this way, the parent will be the powershell.exe process.
22
+ If you need a status result directly of the executed command, you need to use subprocess.run() instead.
23
+
24
+ :param command: str, command to run.
25
+ :return: str, command to run as administrator.
26
+ """
27
+
28
+ executable = command.split()[0]
29
+ command = (
30
+ f"powershell -Command "
31
+ f"\"Start-Process {executable} -ArgumentList '{' '.join(command.split()[1:])}' -Verb RunAs\"")
32
+
33
+ return command
atomicshop/urls.py CHANGED
@@ -8,6 +8,11 @@ def url_parser(url):
8
8
  directories = parts.path.strip('/').split('/')
9
9
  queries = parts.query.strip('&').split('&')
10
10
 
11
+ if len(directories) > 1 and '.' in directories[-1]:
12
+ file = directories[-1]
13
+ else:
14
+ file = ''
15
+
11
16
  elements = {
12
17
  'scheme': parts.scheme,
13
18
  'netloc': parts.netloc,
@@ -17,6 +22,7 @@ def url_parser(url):
17
22
  'fragment': parts.fragment,
18
23
  'directories': directories,
19
24
  'queries': queries,
25
+ 'file': file
20
26
  }
21
27
 
22
28
  return elements
@@ -2,7 +2,8 @@ import sys
2
2
  import subprocess
3
3
  import getpass
4
4
 
5
- from ... import process, filesystem, permissions
5
+ from ... import process, filesystem
6
+ from ...permissions import permissions, ubuntu_permissions
6
7
  from ...print_api import print_api
7
8
  from .. import ubuntu_terminal
8
9
 
@@ -38,7 +39,7 @@ def add_current_user_to_docker_group(print_kwargs: dict = None):
38
39
  :return:
39
40
  """
40
41
  # Check if current user that executed the script is a sudo user. If not, use the current user.
41
- sudo_executer_username: str = permissions.get_ubuntu_sudo_executer_username()
42
+ sudo_executer_username: str = ubuntu_permissions.get_sudo_executer_username()
42
43
  if sudo_executer_username:
43
44
  current_user = sudo_executer_username
44
45
  else:
@@ -145,7 +146,7 @@ def install_docker_ubuntu(
145
146
  ubuntu_terminal.update_system_packages()
146
147
  ubuntu_terminal.install_packages(['uidmap'])
147
148
 
148
- with permissions.temporary_regular_permissions():
149
+ with ubuntu_permissions.temporary_regular_permissions():
149
150
  # After 'get-docker.sh' execution, we will install docker in rootless mode.
150
151
  # process.execute_script('dockerd-rootless-setuptool.sh install', shell=True, as_regular_user=True)
151
152
  process.execute_script(
@@ -164,13 +165,13 @@ def install_docker_ubuntu(
164
165
  process.execute_script(docker_enable_command, shell=True, executable=None)
165
166
 
166
167
  print_api('Executing "loginctl enable-linger" to enable Docker to run when the user is not logged in...')
167
- non_sudo_executer = permissions.get_ubuntu_sudo_executer_username()
168
+ non_sudo_executer = ubuntu_permissions.get_sudo_executer_username()
168
169
  # Enable lingering so Docker runs when the user is not logged in
169
170
  process.execute_script(f'sudo loginctl enable-linger {non_sudo_executer}', shell=True)
170
171
 
171
172
  print_api('Adding $HOME/bin to your PATH...')
172
173
  # Add $HOME/bin to your PATH if it's not already there.
173
- with permissions.temporary_regular_permissions():
174
+ with ubuntu_permissions.temporary_regular_permissions():
174
175
  ubuntu_terminal.add_path_to_bashrc(as_regular_user=True)
175
176
 
176
177
  # Add appropriate permissions to the docker socket, so the user can run docker commands without sudo in python.
@@ -1,7 +1,8 @@
1
1
  import sys
2
2
 
3
3
  from ...print_api import print_api
4
- from ... import process, permissions
4
+ from ... import process
5
+ from ...permissions import permissions
5
6
  from .. import ubuntu_terminal
6
7
  from . import config_basic, infrastructure
7
8
 
@@ -2,7 +2,8 @@ import sys
2
2
  import subprocess
3
3
  from pathlib import Path
4
4
 
5
- from .... import permissions, filesystem
5
+ from .... import filesystem
6
+ from ....permissions import ubuntu_permissions
6
7
  from ....archiver import zips
7
8
  from ....print_api import print_api
8
9
  from ... import githubw, pipw, ubuntu_terminal
@@ -42,7 +43,7 @@ def install_before_restart(
42
43
  # sys.exit(1)
43
44
 
44
45
  # # Install docker in rootless mode.
45
- # with permissions.temporary_regular_permissions():
46
+ # with ubuntu_permissions.temporary_regular_permissions():
46
47
  # install_docker.install_docker_ubuntu(
47
48
  # use_docker_installer=True, rootless=True, add_current_user_to_docker_group_bool=False)
48
49
 
@@ -59,7 +60,7 @@ def install_before_restart(
59
60
  filesystem.remove_directory(installation_directory)
60
61
 
61
62
  # Since you run the script with sudo, we need to change the permissions to the current user.
62
- # with permissions.temporary_regular_permissions():
63
+ # with ubuntu_permissions.temporary_regular_permissions():
63
64
  # Create the FACT_core directory.
64
65
  filesystem.create_directory(installation_directory)
65
66
 
@@ -78,7 +79,7 @@ def install_before_restart(
78
79
  remove_first_directory=True, **(print_kwargs or {}))
79
80
 
80
81
  # Set the executable permission on the pre-installation file.
81
- permissions.set_executable_permission(fact_core_pre_install_file_path)
82
+ ubuntu_permissions.set_executable(fact_core_pre_install_file_path)
82
83
 
83
84
  if use_built_in_fact_installer:
84
85
  # Run the shell script
@@ -4,7 +4,8 @@ from typing import Union
4
4
  import argparse
5
5
  import subprocess
6
6
 
7
- from ... import urls, web, permissions
7
+ from ... import urls, web
8
+ from ...permissions import permissions
8
9
  from ...print_api import print_api
9
10
  from .. import msiw
10
11
  from . import infrastructure
@@ -1,8 +1,7 @@
1
1
  import subprocess
2
- import sys
3
2
 
4
3
  from ..print_api import print_api
5
- from .. import permissions
4
+ from ..permissions import permissions
6
5
  from ..import get_process_list
7
6
  from .psutilw import processes
8
7
 
@@ -124,7 +123,7 @@ def install_msi(
124
123
  command = f"{command} {additional_args}"
125
124
 
126
125
  # if as_admin:
127
- # command = permissions.get_command_to_run_as_admin_windows(command)
126
+ # command = win_permissions.get_command_to_run_as_admin_windows(command)
128
127
 
129
128
  # Run the command
130
129
  result = subprocess.run(command, capture_output=True, text=True)
File without changes
@@ -0,0 +1,38 @@
1
+ import argparse
2
+
3
+ from ... import process
4
+ from ...print_api import print_api
5
+
6
+
7
+ def parse_args():
8
+ """
9
+ Parse command line arguments.
10
+
11
+ :return: Parsed arguments.
12
+ """
13
+ parser = argparse.ArgumentParser(description='Install PyCharm Community Edition.')
14
+ parser.add_argument('--install', action='store_true', help='Install PyCharm Community Edition with snapd.')
15
+ parser.add_argument('--enable_sudo_execution', action='store_true',
16
+ help='There is a problem when trying to run snapd installed Pycharm as sudo, need to enable '
17
+ 'this.')
18
+
19
+ return parser.parse_args()
20
+
21
+
22
+ def install_main():
23
+ """
24
+ Main function to install the latest PyCharm Community Edition.
25
+
26
+ Usage:
27
+ python -m atomicshop.a_installs.ubuntu.pycharm
28
+ """
29
+
30
+ args = parse_args()
31
+
32
+ if args.install:
33
+ process.execute_script('sudo snap install pycharm-community --classic', shell=True)
34
+
35
+ if args.enable_sudo_execution:
36
+ process.execute_script('xhost +SI:localuser:root', shell=True)
37
+ print_api('Run the following command to start PyCharm as root: [sudo snap run pycharm-community]', color='blue')
38
+ return 0
@@ -2,8 +2,8 @@ import requests
2
2
  from bs4 import BeautifulSoup
3
3
  import subprocess
4
4
 
5
- from .. import web, filesystem
6
- from ..print_api import print_api
5
+ from ... import web, filesystem
6
+ from ...print_api import print_api
7
7
 
8
8
 
9
9
  # URL to the PyCharm Community Edition download page
@@ -5,7 +5,7 @@ import shutil
5
5
  import time
6
6
 
7
7
  from ..print_api import print_api
8
- from .. import permissions
8
+ from ..permissions import ubuntu_permissions
9
9
 
10
10
 
11
11
  def install_packages(package_list: list[str]):
@@ -231,11 +231,11 @@ def add_path_to_bashrc(as_regular_user: bool = False):
231
231
 
232
232
  if as_regular_user:
233
233
  # Get the current non-sudo user
234
- with permissions.temporary_regular_permissions():
234
+ with ubuntu_permissions.temporary_regular_permissions():
235
235
  current_non_sudo_user = os.getlogin()
236
236
 
237
237
  # Get the home path of the current non-sudo user
238
- user_bashrc_path = permissions.expand_user_path(current_non_sudo_user, home_path_bashrc)
238
+ user_bashrc_path = ubuntu_permissions.expand_user_path(current_non_sudo_user, home_path_bashrc)
239
239
  else:
240
240
  user_bashrc_path = os.path.expanduser(home_path_bashrc)
241
241
 
@@ -258,11 +258,11 @@ def add_line_to_bashrc(line: str, as_regular_user: bool = False):
258
258
 
259
259
  if as_regular_user:
260
260
  # Get the current non-sudo user
261
- with permissions.temporary_regular_permissions():
261
+ with ubuntu_permissions.temporary_regular_permissions():
262
262
  current_non_sudo_user = os.getlogin()
263
263
 
264
264
  # Get the home path of the current non-sudo user
265
- user_bashrc_path = permissions.expand_user_path(current_non_sudo_user, home_path_bashrc)
265
+ user_bashrc_path = ubuntu_permissions.expand_user_path(current_non_sudo_user, home_path_bashrc)
266
266
  else:
267
267
  user_bashrc_path = os.path.expanduser(home_path_bashrc)
268
268
 
@@ -293,7 +293,7 @@ def get_command_execution_as_sudo_executer(command: str, add_bash_exec: bool = F
293
293
 
294
294
  command = command.replace('sudo ', '').strip()
295
295
 
296
- sudo_executer_username: str = permissions.get_ubuntu_sudo_executer_username()
296
+ sudo_executer_username: str = ubuntu_permissions.get_sudo_executer_username()
297
297
 
298
298
  if sudo_executer_username:
299
299
  if add_bash_exec:
@@ -2,6 +2,7 @@ import sys
2
2
  from pathlib import Path
3
3
 
4
4
  from ..import process, permissions, virtualization
5
+ from ..permissions import permissions
5
6
  from ..print_api import print_api
6
7
 
7
8
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: atomicshop
3
- Version: 2.16.0
3
+ Version: 2.16.2
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=eYYraQvZ9ooCnZOqcP2nBoxN7GB2FH32Xu4IS_qDW6Q,123
1
+ atomicshop/__init__.py,sha256=DzLsNeiwKWTo5p75-S_CaNb8QEBZEyoz2eM5n5isUr8,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
@@ -10,7 +10,7 @@ atomicshop/console_output.py,sha256=AOSJjrRryE97PAGtgDL03IBtWSi02aNol8noDnW3k6M,
10
10
  atomicshop/console_user_response.py,sha256=31HIy9QGXa7f-GVR8MzJauQ79E_ZqAeagF3Ks4GGdDU,3234
11
11
  atomicshop/datetimes.py,sha256=XF-6PbMlXgxHAOCVBGWUnAwDlFuZS1YFUGk6STFWsq0,18362
12
12
  atomicshop/diff_check.py,sha256=Q9RCqRa-jEgo7Fujx08_JTuZ6qcgttMI6aNYB6zN9Ik,27173
13
- atomicshop/dns.py,sha256=wj9WaIzqmd6gA_BKcc-SHzLrwN3g0eHKnAyAVr3rJhc,6449
13
+ atomicshop/dns.py,sha256=5WrAczISjtR9y2rUbqQ8QQxqSGqR5j8dXenUAW0O5Tc,6460
14
14
  atomicshop/domains.py,sha256=Rxu6JhhMqFZRcoFs69IoEd1PtYca0lMCG6F1AomP7z4,3197
15
15
  atomicshop/emails.py,sha256=I0KyODQpIMEsNRi9YWSOL8EUPBiWyon3HRdIuSj3AEU,1410
16
16
  atomicshop/file_types.py,sha256=-0jzQMRlmU1AP9DARjk-HJm1tVE22E6ngP2mRblyEjY,763
@@ -25,7 +25,6 @@ atomicshop/ip_addresses.py,sha256=Hvi4TumEFoTEpKWaq5WNF-YzcRzt24IxmNgv-Mgax1s,11
25
25
  atomicshop/keyboard_press.py,sha256=1W5kRtOB75fulVx-uF2yarBhW0_IzdI1k73AnvXstk0,452
26
26
  atomicshop/on_exit.py,sha256=Wf1iy2e0b0Zu7oRxrct3VkLdQ_x9B32-z_JerKTt9Z0,5493
27
27
  atomicshop/pbtkmultifile_argparse.py,sha256=aEk8nhvoQVu-xyfZosK3ma17CwIgOjzO1erXXdjwtS4,4574
28
- atomicshop/permissions.py,sha256=P6tiUKV-Gw-c3ePEVsst9bqWaHJbB4ZlJB4xbDYVpEs,4436
29
28
  atomicshop/print_api.py,sha256=j0bZ9b2rFKCcr0TVx1ARraVKeEs6JaaSgIlBdndy1nI,11600
30
29
  atomicshop/process.py,sha256=PeLvyixXaCfftdUF3oMbohI1L4MdLtvQVDx2V1Tz_Rk,16662
31
30
  atomicshop/python_file_patcher.py,sha256=kd3rBWvTcosLEk-7TycNdfKW9fZbe161iVwmH4niUo0,5515
@@ -42,29 +41,28 @@ atomicshop/system_resource_monitor.py,sha256=WvnnQrD5W9NRqOWI2YNcL-ut2UrvhrYToVl
42
41
  atomicshop/system_resources.py,sha256=0mhDZBEcMzToCOw5ArJhtqYjktOW6iJGdyRkJ01Cpwk,9272
43
42
  atomicshop/tempfiles.py,sha256=uq1ve2WlWehZ3NOTXJnpBBMt6HyCdBufqedF0HyzA6k,2517
44
43
  atomicshop/timer.py,sha256=7Zw1KRV0acHCRATMnanyX2MLBb63Hc-6us3rCZ9dNlY,2345
45
- atomicshop/urls.py,sha256=yqEn8YJS2Ma-cZidn0NZgIfuzFX0rReJ_L5IDt6iWJA,1414
44
+ atomicshop/urls.py,sha256=aJ0NGS9qqaKeqjkkWBs80jaBBg6MYBiPuLIyPGxscVc,1557
46
45
  atomicshop/uuids.py,sha256=JSQdm3ZTJiwPQ1gYe6kU0TKS_7suwVrHc8JZDGYlydM,2214
47
46
  atomicshop/virtualization.py,sha256=LPP4vjE0Vr10R6DA4lqhfX_WaNdDGRAZUW0Am6VeGco,494
48
47
  atomicshop/web.py,sha256=J9izvF5LNEVOVkkWon0XUgJmR7nrFln03nIxW7wUZWg,11547
48
+ atomicshop/a_installs/ubuntu/docker_rootless.py,sha256=9IPNtGZYjfy1_n6ZRt7gWz9KZgR6XCgevjqq02xk-o0,281
49
+ atomicshop/a_installs/ubuntu/docker_sudo.py,sha256=JzayxeyKDtiuT4Icp2L2LyFRbx4wvpyN_bHLfZ-yX5E,281
50
+ atomicshop/a_installs/ubuntu/elastic_search_and_kibana.py,sha256=yRB-l1zBxdiN6av-FwNkhcBlaeu4zrDPjQ0uPGgpK2I,244
51
+ atomicshop/a_installs/ubuntu/pycharm.py,sha256=eFk_JDIzJJhxCuYFkjxOYHYMnZBC62Q9n5ZaFt4z9cs,132
49
52
  atomicshop/a_installs/win/fibratus.py,sha256=TU4e9gdZ_zI73C40uueJ59pD3qmN-UFGdX5GFoVf6cM,179
50
53
  atomicshop/a_installs/win/mongodb.py,sha256=5k9sFWM_9Zh5ShutH2IhGvAo7nrLkOIeUPzhoKvEsx8,171
51
- atomicshop/a_installs/win/pycharm.py,sha256=uYTfME7hOeNkAsOZxDDPj2hDqmkxrFqVV6Nv6xnYNVk,141
54
+ atomicshop/a_installs/win/pycharm.py,sha256=j_RSd7aDOyC3yDd-_GUTMLlQTmDrqtVFG--oUfGLiZk,140
55
+ atomicshop/a_installs/win/wsl_ubuntu_lts.py,sha256=dZbPRLNKFeMd6MotjkE6UDY9cOiIaaclIdR1kGYWI50,139
52
56
  atomicshop/a_mains/dns_gateway_setting.py,sha256=ncc2rFQCChxlNP59UshwmTonLqC6MWblrVAzbbz-13M,149
53
57
  atomicshop/a_mains/msi_unpacker.py,sha256=5hrkqETYt9HIqR_3PMf32_q06kCrIcsdm_RJV9oY438,188
54
58
  atomicshop/a_mains/search_for_hyperlinks_in_docx.py,sha256=HkIdo_Sz9nPbbbJf1mwfwFkyI7vkvpH8qiIkuYopN4w,529
59
+ atomicshop/a_mains/FACT/factw_fact_extractor_docker_image_main_sudo.py,sha256=DDKX3Wp2SmzMCEtCIEOUbEKMob2ZQ7VEQGLEf9uYXrs,320
60
+ atomicshop/a_mains/FACT/update_extract.py,sha256=atNIBKDeGAM1XNymDjnEHq7Ke3i_rXlAfrT-1pDdz_Q,544
55
61
  atomicshop/addons/PlayWrightCodegen.cmd,sha256=Z5cnllsyXD4F1W2h-WLEnyFkg5nZy0-hTGHRWXVOuW4,173
56
62
  atomicshop/addons/ScriptExecution.cmd,sha256=8iC-uHs9MX9qUD_C2M7n9Xw4MZvwOfxT8H5v3hluVps,93
57
63
  atomicshop/addons/a_setup_scripts/install_psycopg2_ubuntu.sh,sha256=lM7LkXQ2AxfFzDGyzSOfIS_zpg9bAD1k3JJ-qu5CdH8,81
58
64
  atomicshop/addons/a_setup_scripts/install_pywintrace_0.3.cmd,sha256=lEP_o6rWcBFUyup6_c-LTL3Q2LRMqryLuG3mJw080Zc,115
59
65
  atomicshop/addons/inits/init_to_import_all_modules.py,sha256=piyFjkqtNbM9PT2p8aGcatI615517XEQHgU9kDFwseY,559
60
- atomicshop/addons/mains/install_docker_rootless_ubuntu.py,sha256=9IPNtGZYjfy1_n6ZRt7gWz9KZgR6XCgevjqq02xk-o0,281
61
- atomicshop/addons/mains/install_docker_ubuntu_main_sudo.py,sha256=JzayxeyKDtiuT4Icp2L2LyFRbx4wvpyN_bHLfZ-yX5E,281
62
- atomicshop/addons/mains/install_elastic_search_and_kibana_ubuntu.py,sha256=yRB-l1zBxdiN6av-FwNkhcBlaeu4zrDPjQ0uPGgpK2I,244
63
- atomicshop/addons/mains/install_wsl_ubuntu_lts_admin.py,sha256=PrvZ4hMuadzj2GYKRZSwyNayJUuaSnCF9nV6ORqoPdo,123
64
- atomicshop/addons/mains/FACT/factw_fact_extractor_docker_image_main_sudo.py,sha256=DDKX3Wp2SmzMCEtCIEOUbEKMob2ZQ7VEQGLEf9uYXrs,320
65
- atomicshop/addons/mains/FACT/update_extract.py,sha256=H3VsdhlA7xxK5lI_nyrWUdk8GNZXbEUVR_K9cJ4ECAw,506
66
- atomicshop/addons/mains/__pycache__/install_fibratus_windows.cpython-312.pyc,sha256=u92dFjDrTbZBIti9B3ttna33Jg1ZSeMYhTiupdfklt4,549
67
- atomicshop/addons/mains/__pycache__/msi_unpacker.cpython-312.pyc,sha256=_jTJnhmwV3ncttk9yiIlPAabJMpziG3Q-v0xwilyY3A,415
68
66
  atomicshop/addons/package_setup/CreateWheel.cmd,sha256=hq9aWBSH6iffYlZyaCNrFlA0vxMh3j1k8DQE8IARQuA,189
69
67
  atomicshop/addons/package_setup/Setup in Edit mode.cmd,sha256=299RsExjR8Mup6YyC6rW0qF8lnwa3uIzwk_gYg_R_Ss,176
70
68
  atomicshop/addons/package_setup/Setup.cmd,sha256=IMm0PfdARH7CG7h9mbWwmWD9X47l7tddwQ2U4MUxy3A,213
@@ -126,9 +124,9 @@ atomicshop/mitm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
124
  atomicshop/mitm/config_static.py,sha256=PZp9AAW2ihSUZCen1fhuwFW7Rucd9jA1Pw6pK6Q3DVM,6994
127
125
  atomicshop/mitm/config_toml_editor.py,sha256=2p1CMcktWRR_NW-SmyDwylu63ad5e0-w1QPMa8ZLDBw,1635
128
126
  atomicshop/mitm/connection_thread_worker.py,sha256=BHSUwSKJfdGigPH1zsFXvjDH1RQV-UkRA7pyx2yn8-Q,18992
129
- atomicshop/mitm/import_config.py,sha256=ZSJ4avnWgo4R6P3-rB35ght6IKmbuvcXoLZRJi5J3NQ,7855
127
+ atomicshop/mitm/import_config.py,sha256=fvUESPMkpRvkL7HtMaUqQRPwPF0eHV5V6pwueg4DQkU,7881
130
128
  atomicshop/mitm/initialize_engines.py,sha256=YoSNksMdu4vHjr5xy77t9t5W74zyDZIdjIXrzd3eRXc,8204
131
- atomicshop/mitm/initialize_mitm_server.py,sha256=e_glssrzgOfLGSLwL2nk2itTDaj46UhtiEAf4G2OWcg,18356
129
+ atomicshop/mitm/initialize_mitm_server.py,sha256=PMYjt06IysdDpq5utKof4X578EAgCp4TDjiLC7uxDPQ,18382
132
130
  atomicshop/mitm/message.py,sha256=u2U2f2SOHdBNU-6r1Ik2W14ai2EOwxUV4wVfGZA098k,1732
133
131
  atomicshop/mitm/shared_functions.py,sha256=hplm98tz8pgJ4WHUVI9sf_oVqUM2KJ1Y2pD6EFSb8P0,1879
134
132
  atomicshop/mitm/statistic_analyzer.py,sha256=E0ba1PjsUEcmQUPPw2YH911lyWkbQb9OSAdgB3pihsY,24658
@@ -145,7 +143,7 @@ atomicshop/mitm/engines/__reference_general/recorder___reference_general.py,sha2
145
143
  atomicshop/mitm/engines/__reference_general/responder___reference_general.py,sha256=1AM49UaFTKA0AHw-k3SV3uH3QbG-o6ux0c-GoWkKNU0,6993
146
144
  atomicshop/mitm/statistic_analyzer_helper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
145
  atomicshop/mitm/statistic_analyzer_helper/analyzer_helper.py,sha256=pk6L1t1ea1kvlBoR9QEJptOmaX-mumhwLsP2GCKukbk,5920
148
- atomicshop/mitm/statistic_analyzer_helper/moving_average_helper.py,sha256=xMvFnbsiDjtbmASErV-Deuy9u4ft14seM33o-immhhM,16391
146
+ atomicshop/mitm/statistic_analyzer_helper/moving_average_helper.py,sha256=9weATjSy0Ne8XceW0LeEZ-dI_y_yZfgUNx9ZfuQsjcc,16618
149
147
  atomicshop/monitor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
148
  atomicshop/monitor/change_monitor.py,sha256=K5NlVp99XIDDPnQQMdru4BDmua_DtcDIhVAzkTOvD5s,7673
151
149
  atomicshop/monitor/checks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -154,6 +152,10 @@ atomicshop/monitor/checks/file.py,sha256=2tIDSlX2KZNc_9i9ji1tcOqupbFTIOj7cKXLyBE
154
152
  atomicshop/monitor/checks/network.py,sha256=CGZWl4WlQrxayZeVF9JspJXwYA-zWx8ECWTVGSlXc98,3825
155
153
  atomicshop/monitor/checks/process_running.py,sha256=x66wd6-l466r8sbRQaIli0yswyGt1dH2DVXkGDL6O0Q,1891
156
154
  atomicshop/monitor/checks/url.py,sha256=1PvKt_d7wFg7rDMFpUejAQhj0mqWsmlmrNfjNAV2G4g,4123
155
+ atomicshop/permissions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
+ atomicshop/permissions/permissions.py,sha256=CYTDVOI0jh9ks0ZLnnOuPzppgCszFEc9-92DTkVTYi4,522
157
+ atomicshop/permissions/ubuntu_permissions.py,sha256=nMmr8ywwS0or8qJdg4ztMeqB2vppE_aytQTRQrg6lFc,2842
158
+ atomicshop/permissions/win_permissions.py,sha256=eDQm1jfK9x_hkbLqIJjFTwfqinAWQ0iSr0kW3XrF1BE,1272
157
159
  atomicshop/process_poller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
160
  atomicshop/process_poller/process_pool.py,sha256=1CaG6Cov-Pt_kZohfFeQFT42YBnEwNBA6ge55dxok_8,9600
159
161
  atomicshop/process_poller/simple_process_pool.py,sha256=hJkrn-efetLjyC8CevAFcsiKwBBKS8onYbf2ygq2J18,4540
@@ -177,16 +179,15 @@ atomicshop/wrappers/configparserw.py,sha256=JwDTPjZoSrv44YKwIRcjyUnpN-FjgXVfMqMK
177
179
  atomicshop/wrappers/cryptographyw.py,sha256=_5jgzQjgCDQrFN1f6_0y-IdIR6bGaYIjIy92bjJRuHI,13168
178
180
  atomicshop/wrappers/ffmpegw.py,sha256=wcq0ZnAe0yajBOuTKZCCaKI7CDBjkq7FAgdW5IsKcVE,6031
179
181
  atomicshop/wrappers/githubw.py,sha256=AQcFuT5mvDUNT_cI31MwkJ7srdhMtttF8FyXS8vs5cU,12270
180
- atomicshop/wrappers/msiw.py,sha256=BizivVfz-NAQgBCYUrGjrNiQJdc9gI9G3FYd55GdJn4,6115
182
+ atomicshop/wrappers/msiw.py,sha256=GQLqud72nfex3kvO1bJSruNriCYTYX1_G1gSf1MPkIA,6118
181
183
  atomicshop/wrappers/numpyw.py,sha256=sBV4gSKyr23kXTalqAb1oqttzE_2XxBooCui66jbAqc,1025
182
184
  atomicshop/wrappers/olefilew.py,sha256=biD5m58rogifCYmYhJBrAFb9O_Bn_spLek_9HofLeYE,2051
183
185
  atomicshop/wrappers/pipw.py,sha256=mu4jnHkSaYNfpBiLZKMZxEX_E2LqW5BVthMZkblPB_c,1317
184
186
  atomicshop/wrappers/process_wrapper_pbtk.py,sha256=ycPmBRnv627RWks6N8OhxJQe8Gu3h3Vwj-4HswPOw0k,599
185
- atomicshop/wrappers/pycharmw.py,sha256=OHcaVlyhIqhgRioPhkeS5krDZ_NezZjpBCvyRiLjWwI,2723
186
187
  atomicshop/wrappers/pyopensslw.py,sha256=OBWxA6EJ2vU_Qlf4M8m6ilcG3hyYB4yB0EsXUf7NhEU,6804
187
188
  atomicshop/wrappers/sysmonw.py,sha256=MFF8ts0gHbXn2_QeH196UncOUtm4MnM2cQBzTOnfrnk,5351
188
- atomicshop/wrappers/ubuntu_terminal.py,sha256=BBZD3EH6KSDORd5IZBZM-ti4U6Qh1sZwftx42s7hqB4,10917
189
- atomicshop/wrappers/wslw.py,sha256=AKphiHLSddL7ErevUowr3f9Y1AgGz_R3KZ3NssW07h8,6959
189
+ atomicshop/wrappers/ubuntu_terminal.py,sha256=8BgL8EtIashrYnBxrV5R4ZLtL0mosfNHyWfV0ZjoN8w,10963
190
+ atomicshop/wrappers/wslw.py,sha256=2Z7X0j5M2hoRZjbHfm_vqwNXZeptsdkNCdhdcM_S9vo,6998
190
191
  atomicshop/wrappers/certauthw/certauth.py,sha256=hKedW0DOWlEigSNm8wu4SqHkCQsGJ1tJfH7s4nr3Bk0,12223
191
192
  atomicshop/wrappers/certauthw/certauthw.py,sha256=4WvhjANI7Kzqrr_nKmtA8Kf7B6rute_5wfP65gwQrjw,8082
192
193
  atomicshop/wrappers/ctyping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -201,12 +202,12 @@ atomicshop/wrappers/ctyping/msi_windows_installer/extract_msi_main.py,sha256=Nq-
201
202
  atomicshop/wrappers/ctyping/msi_windows_installer/tables.py,sha256=tHsu0YfBgzuIk9L-PyqLgU_IzyVbCfy8L1EqelNnvWk,17674
202
203
  atomicshop/wrappers/dockerw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
203
204
  atomicshop/wrappers/dockerw/dockerw.py,sha256=w8zSJr5C7cbvbuG09ORCpAe0BOcibqqL_Z2EKEBHYK4,6266
204
- atomicshop/wrappers/dockerw/install_docker.py,sha256=IKHInhSb9iO-g9zOYRrE4EX4eA2DaSadbZ9b0brXgRk,9921
205
+ atomicshop/wrappers/dockerw/install_docker.py,sha256=7NTMxCPBesr0QcqB0RZ5YU0I8FDPtNux_mYAX28wI0I,9982
205
206
  atomicshop/wrappers/elasticsearchw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
207
  atomicshop/wrappers/elasticsearchw/config_basic.py,sha256=fDujtrjEjbWiYh_WQ3OcYp_8mXhXPYeKLy4wSPL5qM0,1177
207
208
  atomicshop/wrappers/elasticsearchw/elasticsearchw.py,sha256=7TqFdEFznO8NlligJhEKk1vm641ALpCYdaRl1uoXdzM,9768
208
209
  atomicshop/wrappers/elasticsearchw/infrastructure.py,sha256=at0sD-SFtmEvfGyIU_YBEKoU-MNeVtDQSNscPm0JWLc,10368
209
- atomicshop/wrappers/elasticsearchw/install_elastic.py,sha256=pblQBJ6o4ymp-g1EioBoUA6R1s-ZhA-FAoIcvc9Rpr0,8620
210
+ atomicshop/wrappers/elasticsearchw/install_elastic.py,sha256=mIex4-D7R3qYNfq8f_PrBkYyB1vRF5SLvJ2Mra9hj3Y,8647
210
211
  atomicshop/wrappers/elasticsearchw/queries/__init__.py,sha256=KBjT-bAt75CJsx1Apko9mpuFU4pfZV8DcGWQvpX65RU,78
211
212
  atomicshop/wrappers/elasticsearchw/queries/aggregation.py,sha256=N9a5yMMnb10sMa_x1qJBFQpgyJ49UWo8_vxuqmUtZ1A,1742
212
213
  atomicshop/wrappers/elasticsearchw/queries/info.py,sha256=P_VhhBo8MvRI4Shi-bh4RsYtlYNRKRBzScXPC64Up_Q,2900
@@ -224,7 +225,7 @@ atomicshop/wrappers/factw/fact_extractor/docker_image.py,sha256=2FyYjnw8gxFNwISQ
224
225
  atomicshop/wrappers/factw/fact_extractor/get_extractor.py,sha256=2mfOAftHIlCcGt1s7MWdq7DsDCuI6wX3MtvcEZ4SK-0,756
225
226
  atomicshop/wrappers/factw/install/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
227
  atomicshop/wrappers/factw/install/install_after_restart.py,sha256=-VXC3KDX2BzF0oi0ELCmfch55vLk-3t16KxlmYyUGD8,1560
227
- atomicshop/wrappers/factw/install/pre_install_and_install_before_restart.py,sha256=GbLczU3M2U9hHp7sdLf6sKpwCuu-adQUOp_kabaE6BM,5890
228
+ atomicshop/wrappers/factw/install/pre_install_and_install_before_restart.py,sha256=2bwj6gltlA2nQTsq9Yrx2XuddspKqhbtPW0_W8TBnbU,5935
228
229
  atomicshop/wrappers/factw/postgresql/__init__.py,sha256=xMBn2d3Exo23IPP2F_9-SXmOlhFbwWDgS9KwozSTjA0,162
229
230
  atomicshop/wrappers/factw/postgresql/analysis.py,sha256=2Rxzy2jyq3zEKIo53z8VkjuslKE_i5mq2ZpmJAvyd6U,716
230
231
  atomicshop/wrappers/factw/postgresql/file_object.py,sha256=VRiCXnsd6yDbnsE-TEKYPC-gkAgFVkE6rygRrJLQShI,713
@@ -250,7 +251,7 @@ atomicshop/wrappers/loggingw/loggingw.py,sha256=lo4OZPXCbYZi3GqpaaJSs9SOGFfqD2Eg
250
251
  atomicshop/wrappers/loggingw/reading.py,sha256=ZgFbmQdStLg2nlgzJEznsvEP0r63ki_2RRwsNnggLDI,18148
251
252
  atomicshop/wrappers/mongodbw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
252
253
  atomicshop/wrappers/mongodbw/infrastructure.py,sha256=tHqtt__yKGtj24CT5AIk0V0k9t1p_PjezFExXRmmmcA,1517
253
- atomicshop/wrappers/mongodbw/install_mongodb.py,sha256=dik6tpXws4FaQN_-u8s-yn5Z1InHROV7k1WhFA8eu4M,6617
254
+ atomicshop/wrappers/mongodbw/install_mongodb.py,sha256=21Re0NpikgYOKelyPTkosoQQxzu67dy80Kj204TL5eo,6644
254
255
  atomicshop/wrappers/mongodbw/mongodbw.py,sha256=eDwI3sePLGWhl-neBRQM955KZOl8jaO7U0n_AzXM3es,4568
255
256
  atomicshop/wrappers/nodejsw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
256
257
  atomicshop/wrappers/nodejsw/install_nodejs.py,sha256=QZg-R2iTQt7kFb8wNtnTmwraSGwvUs34JIasdbNa7ZU,5154
@@ -271,6 +272,9 @@ atomicshop/wrappers/psutilw/networks.py,sha256=uv0QN-7Abp15iQ2leWj6oIoItBtBKhuLk
271
272
  atomicshop/wrappers/psutilw/processes.py,sha256=ZOkqEEF36NFeQg7G-baUUdTaV8DQe_jpkJg42ASUuc0,1566
272
273
  atomicshop/wrappers/psutilw/psutilw.py,sha256=q3EwgprqyrR4zLCjl4l5DHFOQoukEvQMIPjNB504oQ0,21262
273
274
  atomicshop/wrappers/psycopgw/psycopgw.py,sha256=XJvVf0oAUjCHkrYfKeFuGCpfn0Oxj3u4SbKMKA1508E,7118
275
+ atomicshop/wrappers/pycharmw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
276
+ atomicshop/wrappers/pycharmw/ubuntu.py,sha256=l2_9SXrw7ApSvFOROGZdPZa5ylZBKofk4sYqf4IugQs,1223
277
+ atomicshop/wrappers/pycharmw/win.py,sha256=jdnTkUqZX_BrMW8AmW-xGtxdV-wmmNr_NMA2jB6JHsQ,2725
274
278
  atomicshop/wrappers/pywin32w/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
279
  atomicshop/wrappers/pywin32w/console.py,sha256=LstHajPLgXp9qQxFNR44QfH10nOnNp3bCJquxaTquns,1175
276
280
  atomicshop/wrappers/pywin32w/winshell.py,sha256=i2bKiMldPU7_azsD5xGQDdMwjaM7suKJd3k0Szmcs6c,723
@@ -300,8 +304,8 @@ atomicshop/wrappers/socketw/socket_server_tester.py,sha256=SdchUf9qrPk1Rrat0RzvM
300
304
  atomicshop/wrappers/socketw/socket_wrapper.py,sha256=655nGQp0HFy-7KNx8zHsA-miXi9ufC7DNeGsvvGALak,28415
301
305
  atomicshop/wrappers/socketw/ssl_base.py,sha256=k4V3gwkbq10MvOH4btU4onLX2GNOsSfUAdcHmL1rpVE,2274
302
306
  atomicshop/wrappers/socketw/statistics_csv.py,sha256=q5vRA7jL5ERFhIGctn5HjBlOppwSY9qMoEVgo898AIo,2979
303
- atomicshop-2.16.0.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
304
- atomicshop-2.16.0.dist-info/METADATA,sha256=OWf74QsiyWjI4GWQa8U_AuG8mE1szZ0dEhNmT64lIeM,10502
305
- atomicshop-2.16.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
306
- atomicshop-2.16.0.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
307
- atomicshop-2.16.0.dist-info/RECORD,,
307
+ atomicshop-2.16.2.dist-info/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
308
+ atomicshop-2.16.2.dist-info/METADATA,sha256=XKUGZGKugdxkcysucbwMsc6KljxRiR0m2sT0HKOtStU,10502
309
+ atomicshop-2.16.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
310
+ atomicshop-2.16.2.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
311
+ atomicshop-2.16.2.dist-info/RECORD,,