atomicshop 3.3.6__py3-none-any.whl → 3.3.7__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__ = '3.3.6'
4
+ __version__ = '3.3.7'
atomicshop/consoles.py ADDED
@@ -0,0 +1,9 @@
1
+ import msvcrt
2
+
3
+
4
+ # === WINDOWS ONLY FUNCTIONS ===========================================================================================
5
+ def wait_any_key(prompt="Press any key to continue..."):
6
+ print(prompt, end="", flush=True)
7
+ msvcrt.getch() # waits for one key press (no Enter needed)
8
+ print() # move to next line
9
+ # === EOF WINDOWS ONLY FUNCTIONS =======================================================================================
@@ -2,8 +2,12 @@ import os
2
2
  import argparse
3
3
  from typing import Literal
4
4
 
5
- from ... import filesystem
5
+ from ... import filesystem, consoles
6
6
  from ...basics import strings
7
+ from rich.console import Console
8
+
9
+
10
+ console = Console()
7
11
 
8
12
 
9
13
  GENERAL_CLASS_NAME: str = "General"
@@ -71,6 +75,8 @@ class CreateModuleTemplate:
71
75
 
72
76
  self.create_config_file()
73
77
 
78
+ consoles.wait_any_key()
79
+
74
80
  def create_config_file(self):
75
81
  # Defining variables.
76
82
  config_lines_list: list = list()
@@ -93,7 +99,7 @@ class CreateModuleTemplate:
93
99
  with open(config_file_path, 'w') as output_file:
94
100
  output_file.write('\n'.join(config_lines_list))
95
101
 
96
- print(f"Config File Created: {config_file_path}")
102
+ console.print(f"Config File Created: {config_file_path}", style="bright_blue")
97
103
 
98
104
  def _create_engine_module_from_reference(
99
105
  self,
@@ -113,7 +119,7 @@ class CreateModuleTemplate:
113
119
  raise ValueError(f"Module type is not recognized: {module_type}")
114
120
 
115
121
  # Reading the module file to string.
116
- with open(file_path, 'r') as input_file:
122
+ with open(file_path, 'r', encoding='utf-8') as input_file:
117
123
  file_content_string = input_file.read()
118
124
 
119
125
  new_module_full_path: str = str()
@@ -126,4 +132,4 @@ class CreateModuleTemplate:
126
132
  output_file.write(new_content_string)
127
133
 
128
134
  print(f"Converted: {file_path}")
129
- print(f"To: {new_module_full_path}")
135
+ console.print(f"To: {new_module_full_path}", style="green")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: atomicshop
3
- Version: 3.3.6
3
+ Version: 3.3.7
4
4
  Summary: Atomic functions and classes to make developer life easier
5
5
  Author: Denis Kras
6
6
  License-Expression: MIT
@@ -1,4 +1,4 @@
1
- atomicshop/__init__.py,sha256=PKxHKogNO1jVrjMDxPohtYhd5093pVEONPVfmujNgfw,122
1
+ atomicshop/__init__.py,sha256=MIwc3VJrXSpw6OLpv-QypjAnF5OWyBPBQvLHLdy2SVA,122
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
@@ -8,6 +8,7 @@ atomicshop/command_line_processing.py,sha256=u5yT9Ger_cu7ni5ID0VFlRbVD46ARHeNC9t
8
8
  atomicshop/config_init.py,sha256=G6_f25zPxyPlht5jJC4ZDrrQiuJfjHiuPd22VBjd9Cg,2683
9
9
  atomicshop/console_output.py,sha256=AOSJjrRryE97PAGtgDL03IBtWSi02aNol8noDnW3k6M,4667
10
10
  atomicshop/console_user_response.py,sha256=OHcjuzWAys6WmfRnMIU_nkJA634kKmJh6T8w1VtUTJM,2714
11
+ atomicshop/consoles.py,sha256=jlEKqMV7OUCq_vCHMwePcSxRa5yZhrdEyfaVcoWj2_k,464
11
12
  atomicshop/datetimes.py,sha256=IQZ66lmta-ZqxYbyHzm_9eugbJFSilXK1e0kfMgoXGg,18371
12
13
  atomicshop/diff_check.py,sha256=vxTDccVbGZHEge6Ja9_ArLWwslOUgIoJAdYPylh4cZg,27176
13
14
  atomicshop/dns.py,sha256=XB0tijVi1bxWLWKV9hPzpt75jK4SrGbZCV5VJbiiQ74,7185
@@ -49,15 +50,12 @@ atomicshop/versioning.py,sha256=e5W6m9AF3__M5nntqI9CqNAeHqkwY9JhlnpYeZ1CEus,970
49
50
  atomicshop/virtualization.py,sha256=LPP4vjE0Vr10R6DA4lqhfX_WaNdDGRAZUW0Am6VeGco,494
50
51
  atomicshop/web.py,sha256=hkAS0MeMW_mGgxhFCX1xckT3yslCJ2cMP2nx9ADpe3o,13024
51
52
  atomicshop/websocket_parse.py,sha256=aLHWyKqaYqEn_MRBWm2L6rIl6QPmqbVrjEXE_rBzwCw,16711
52
- atomicshop/a_installs/pywintrace.py,sha256=oZ9BATsJ2YsdIkZZWLar_dAUV32-oDiT7MJxthC0NnU,738
53
53
  atomicshop/a_installs/ubuntu/docker_rootless.py,sha256=9IPNtGZYjfy1_n6ZRt7gWz9KZgR6XCgevjqq02xk-o0,281
54
54
  atomicshop/a_installs/ubuntu/docker_sudo.py,sha256=JzayxeyKDtiuT4Icp2L2LyFRbx4wvpyN_bHLfZ-yX5E,281
55
55
  atomicshop/a_installs/ubuntu/elastic_search_and_kibana.py,sha256=yRB-l1zBxdiN6av-FwNkhcBlaeu4zrDPjQ0uPGgpK2I,244
56
56
  atomicshop/a_installs/ubuntu/mongodb.py,sha256=xuRJS1qqOZ0EZp7of5R3tTjSu6CwBIxYg8-NaM7othE,230
57
- atomicshop/a_installs/ubuntu/pycharm.py,sha256=Ld7YQBwPxrjuZcTG1K4kZqjbBdt8aooCVRa15u5FOmE,157
58
57
  atomicshop/a_installs/win/fibratus.py,sha256=TU4e9gdZ_zI73C40uueJ59pD3qmN-UFGdX5GFoVf6cM,179
59
58
  atomicshop/a_installs/win/mongodb.py,sha256=AqyItXu19aaoe49pppDxtEkXey6PMy0PoT2Y_RmPpPE,179
60
- atomicshop/a_installs/win/pycharm.py,sha256=j_RSd7aDOyC3yDd-_GUTMLlQTmDrqtVFG--oUfGLiZk,140
61
59
  atomicshop/a_installs/win/wsl_ubuntu_lts.py,sha256=dZbPRLNKFeMd6MotjkE6UDY9cOiIaaclIdR1kGYWI50,139
62
60
  atomicshop/a_mains/dns_gateway_setting.py,sha256=ncc2rFQCChxlNP59UshwmTonLqC6MWblrVAzbbz-13M,149
63
61
  atomicshop/a_mains/github_wrapper.py,sha256=F-PoZknVCxWPN0PTO6l7ZNiaYvo7OVFKFI_zlPt56ps,169
@@ -142,7 +140,7 @@ atomicshop/mitm/recs_files.py,sha256=tv8XFhYZMkBv4DauvpiAdPgvSo0Bcm1CghnmwO7dx8M
142
140
  atomicshop/mitm/shared_functions.py,sha256=0lzeyINd44sVEfFbahJxQmz6KAMWbYrW5ou3UYfItvw,1777
143
141
  atomicshop/mitm/statistic_analyzer.py,sha256=5_sAYGX2Xunzo_pS2W5WijNCwr_BlGJbbOO462y_wN4,27533
144
142
  atomicshop/mitm/engines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
145
- atomicshop/mitm/engines/create_module_template.py,sha256=2ceRWPzofpRf-R8VAMgXrx2D7vumkhfsrr120YFGgH0,5764
143
+ atomicshop/mitm/engines/create_module_template.py,sha256=PHE2pVC9JNgaIh2o7M5dFMrkdOkmIyHLoO2mdzE5BdM,5938
146
144
  atomicshop/mitm/engines/create_module_template_main_example.py,sha256=LeQ44Rp2Gi_KbIDY_4OMS0odkSK3zFZWra_oAka5eJY,243
147
145
  atomicshop/mitm/engines/__parent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
146
  atomicshop/mitm/engines/__parent/parser___parent.py,sha256=HHaCXhScl3OlPjz6eUxsDpJaZyk6BNuDMc9xCkeo2Ws,661
@@ -292,9 +290,6 @@ atomicshop/wrappers/psutilw/processes.py,sha256=ihYnxfMTVEXHWy92iewktoZGxazx3v5Q
292
290
  atomicshop/wrappers/psutilw/psutil_networks.py,sha256=79FplDAj45ofBCudlft77O3lfi0RDwJ3ijye0ZGRR44,2870
293
291
  atomicshop/wrappers/psutilw/psutilw.py,sha256=q3EwgprqyrR4zLCjl4l5DHFOQoukEvQMIPjNB504oQ0,21262
294
292
  atomicshop/wrappers/psycopgw/psycopgw.py,sha256=XJvVf0oAUjCHkrYfKeFuGCpfn0Oxj3u4SbKMKA1508E,7118
295
- atomicshop/wrappers/pycharmw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
- atomicshop/wrappers/pycharmw/ubuntu.py,sha256=vOvGWvTbzvTja9tRrJW2yJb0_r1EV11RrENGHckzvVE,1051
297
- atomicshop/wrappers/pycharmw/win.py,sha256=hNP-d95z1zhcCpYqhHE5HZVYxaAlt8JJCNXh65jZsHc,2757
298
293
  atomicshop/wrappers/pywin32w/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
299
294
  atomicshop/wrappers/pywin32w/cert_store.py,sha256=dV1XyoKTFKZ-HCIVqU2Nd6CTZ8HANqjAXv26rsNzO6s,4365
300
295
  atomicshop/wrappers/pywin32w/console.py,sha256=LstHajPLgXp9qQxFNR44QfH10nOnNp3bCJquxaTquns,1175
@@ -330,9 +325,9 @@ atomicshop/wrappers/socketw/statistics_csv.py,sha256=_gA8bMX6Sw_UCXKi2y9wNAwlqif
330
325
  atomicshop/wrappers/winregw/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
326
  atomicshop/wrappers/winregw/winreg_installed_software.py,sha256=Qzmyktvob1qp6Tjk2DjLfAqr_yXV0sgWzdMW_9kwNjY,2345
332
327
  atomicshop/wrappers/winregw/winreg_network.py,sha256=ih0BVNwByLvf9F_Lac4EdmDYYJA3PzMvmG0PieDZrsE,9905
333
- atomicshop-3.3.6.dist-info/licenses/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
334
- atomicshop-3.3.6.dist-info/METADATA,sha256=IL5-xRKSd3KMQq1-z8F1hdeVTz9jNmhxtEdbXTAeKtM,9311
335
- atomicshop-3.3.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
336
- atomicshop-3.3.6.dist-info/entry_points.txt,sha256=SJEgEP0KoFtfxuGwe5tOzKfXkjR9Dv6YYug33KNYxyY,69
337
- atomicshop-3.3.6.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
338
- atomicshop-3.3.6.dist-info/RECORD,,
328
+ atomicshop-3.3.7.dist-info/licenses/LICENSE.txt,sha256=lLU7EYycfYcK2NR_1gfnhnRC8b8ccOTElACYplgZN88,1094
329
+ atomicshop-3.3.7.dist-info/METADATA,sha256=YtwfcbICVVpiUrkEndWY-sfDjaT6_bHn8b2JOi3N8QI,9311
330
+ atomicshop-3.3.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
331
+ atomicshop-3.3.7.dist-info/entry_points.txt,sha256=SJEgEP0KoFtfxuGwe5tOzKfXkjR9Dv6YYug33KNYxyY,69
332
+ atomicshop-3.3.7.dist-info/top_level.txt,sha256=EgKJB-7xcrAPeqTRF2laD_Np2gNGYkJkd4OyXqpJphA,11
333
+ atomicshop-3.3.7.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- import argparse
2
- import subprocess
3
- import sys
4
-
5
-
6
- WHEEL = (
7
- "https://github.com/fireeye/pywintrace/releases/download/"
8
- "v0.3.0/pywintrace-0.3.0-py3-none-any.whl"
9
- )
10
-
11
-
12
- def main() -> None:
13
- parser = argparse.ArgumentParser(
14
- prog="pywintrace",
15
- description="Utility wrapper for installing FireEye’s pywintrace wheel"
16
- )
17
- sub = parser.add_subparsers(dest="command", required=True)
18
- sub.add_parser("install", help="Download and install pywintrace v0.3.0")
19
- args = parser.parse_args()
20
-
21
- if args.command == "install":
22
- subprocess.check_call([sys.executable, "-m", "pip", "install", WHEEL])
23
- print("pywintrace 0.3.0 installed")
24
-
25
- if __name__ == "__main__":
26
- main()
@@ -1,8 +0,0 @@
1
- #! /usr/bin/env python3
2
- import sys
3
-
4
- from atomicshop.wrappers.pycharmw import ubuntu
5
-
6
-
7
- if __name__ == '__main__':
8
- sys.exit(ubuntu.install_main())
@@ -1,9 +0,0 @@
1
- from atomicshop.wrappers.pycharmw import win
2
-
3
-
4
- def main():
5
- win.download_install_main()
6
-
7
-
8
- if __name__ == "__main__":
9
- main()
File without changes
@@ -1,36 +0,0 @@
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(
15
- '--enable_sudo_execution', action='store_true',
16
- help='There is a problem when trying to run snapd installed Pycharm as sudo, need to enable this.')
17
-
18
- return parser.parse_args()
19
-
20
-
21
- def install_main():
22
- """
23
- Main function to install the latest PyCharm Community Edition.
24
-
25
- Usage:
26
- python -m atomicshop.a_installs.ubuntu.pycharm
27
- """
28
-
29
- args = parse_args()
30
-
31
- process.execute_script('sudo snap install pycharm-professional --classic', shell=True)
32
-
33
- if args.enable_sudo_execution:
34
- process.execute_script('xhost +SI:localuser:root', shell=True)
35
- print_api('Run the following command to start PyCharm as root: [sudo snap run pycharm-professional]', color='blue')
36
- return 0
@@ -1,81 +0,0 @@
1
- import requests
2
- from bs4 import BeautifulSoup
3
- import subprocess
4
-
5
- from ... import web, filesystem
6
- from ...print_api import print_api
7
-
8
-
9
- # URL to the PyCharm Community Edition download page
10
- PYCHARM_DOWNLOAD_URL = 'https://www.jetbrains.com/pycharm/download/#section=windowsC'
11
-
12
-
13
- def download_install_main():
14
- """
15
- Main function to download and install the latest PyCharm Community Edition.
16
-
17
- Usage:
18
- python -m atomicshop.mains.installs.pycharm
19
-
20
- Or run the main function directly.
21
- from atomicshop.wrappers import pycharmw
22
-
23
-
24
- def main():
25
- pycharmw.download_install_main()
26
-
27
-
28
- if __name__ == "__main__":
29
- main()
30
- """
31
-
32
- def get_latest_pycharm_download_link():
33
- url = "https://www.jetbrains.com/pycharm/download/"
34
- headers = {
35
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
36
- }
37
-
38
- response = requests.get(url, headers=headers)
39
- if response.status_code != 200:
40
- raise Exception("Failed to load the download page")
41
-
42
- soup = BeautifulSoup(response.text, 'html.parser')
43
- download_link = None
44
-
45
- # Find the Professional version download link
46
- for a in soup.find_all('a', href=True):
47
- if '/download?code=PCC&platform=windows' in a['href']:
48
- download_link = a['href']
49
- break
50
-
51
- if not download_link:
52
- raise Exception("Could not find the download link for the latest version of PyCharm Professional")
53
-
54
- return f"https:{download_link}"
55
-
56
- installer_path: str = None
57
- try:
58
- print_api("Fetching the latest PyCharm download link...")
59
- download_url = get_latest_pycharm_download_link()
60
- print_api(f"Download URL: {download_url}")
61
-
62
- print_api("Starting the download...")
63
- file_name = "pycharm-latest.exe"
64
- # download_file(download_url, file_name)
65
- installer_path = web.download(file_url=download_url, file_name=file_name, use_certifi_ca_repository=True)
66
- print_api(f"Downloaded the latest version of PyCharm to {file_name}", color='green')
67
- except Exception as e:
68
- print_api(f"An error occurred: {e}")
69
-
70
- if not installer_path:
71
- print_api("Failed to download the latest version of PyCharm", color='red')
72
- return 1
73
-
74
- # Install PyCharm
75
- # Run the installer
76
- print_api("Running the installer...")
77
- subprocess.run([installer_path, '/S'], check=True) # /S for silent installation
78
- print_api("Installation complete.", color='green')
79
-
80
- # Remove the installer
81
- filesystem.remove_file(installer_path)