oafuncs 0.0.98.47__tar.gz → 0.0.98.50__tar.gz

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.
Files changed (52) hide show
  1. {oafuncs-0.0.98.47/oafuncs.egg-info → oafuncs-0.0.98.50}/PKG-INFO +1 -1
  2. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/email.py +7 -24
  3. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_linux.py +10 -5
  4. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_tool.py +2 -2
  5. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50/oafuncs.egg-info}/PKG-INFO +1 -1
  6. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/setup.py +1 -1
  7. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/LICENSE.txt +0 -0
  8. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/MANIFEST.in +0 -0
  9. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/README.md +0 -0
  10. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/__init__.py +0 -0
  11. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_data/hycom.png +0 -0
  12. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_data/oafuncs.png +0 -0
  13. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/cprogressbar.py +0 -0
  14. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/data_interp.py +0 -0
  15. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/netcdf_merge.py +0 -0
  16. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/netcdf_modify.py +0 -0
  17. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/netcdf_write.py +0 -0
  18. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/parallel.py +0 -0
  19. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/parallel_bak.py +0 -0
  20. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/plot_dataset.py +0 -0
  21. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/_script/replace_file_content.py +0 -0
  22. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_cmap.py +0 -0
  23. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_data.py +0 -0
  24. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_date.py +0 -0
  25. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/User_Agent-list.txt +0 -0
  26. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/__init__.py +0 -0
  27. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/hycom_3hourly.py +0 -0
  28. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/idm.py +0 -0
  29. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/literature.py +0 -0
  30. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/read_proxy.py +0 -0
  31. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/test_ua.py +0 -0
  32. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_down/user_agent.py +0 -0
  33. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_draw.py +0 -0
  34. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_file.py +0 -0
  35. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_geo.py +0 -0
  36. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_help.py +0 -0
  37. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_model/__init__.py +0 -0
  38. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_model/roms/__init__.py +0 -0
  39. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_model/roms/test.py +0 -0
  40. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_model/wrf/__init__.py +0 -0
  41. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_model/wrf/little_r.py +0 -0
  42. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_nc.py +0 -0
  43. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_python.py +0 -0
  44. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_sign/__init__.py +0 -0
  45. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_sign/meteorological.py +0 -0
  46. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_sign/ocean.py +0 -0
  47. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs/oa_sign/scientific.py +0 -0
  48. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs.egg-info/SOURCES.txt +0 -0
  49. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs.egg-info/dependency_links.txt +0 -0
  50. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs.egg-info/requires.txt +0 -0
  51. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/oafuncs.egg-info/top_level.txt +0 -0
  52. {oafuncs-0.0.98.47 → oafuncs-0.0.98.50}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oafuncs
3
- Version: 0.0.98.47
3
+ Version: 0.0.98.50
4
4
  Summary: Oceanic and Atmospheric Functions
5
5
  Home-page: https://github.com/Industry-Pays/OAFuncs
6
6
  Author: Kun Liu
@@ -2,25 +2,8 @@ from rich import print
2
2
 
3
3
  __all__ = ["send"]
4
4
 
5
- def _email_info():
6
- import random
7
- email_dict = {
8
- "liukun0312@vip.qq.com": [4, 13, -10, 2, -10, 4, -7, -8, 8, -1, 3, -2, -11, -6, -9, -7],
9
- "756866877@qq.com": [4, -2, -3, 13, 12, 8, -6, 9, -12, 13, -10, -12, -11, -12, -4, -11],
10
- "99138763@qq.com": [0, 6, 12, 2, 9, 9, 4, -1, 11, -7, -12, 6, -11, -3, -5, -11],
11
- "1031260@qq.com": [-1, -5, -9, 9, -3, 4, -8, -7, -12, -2, 0, -9, -11, -3, -7, -10],
12
- }
13
- keys = list(email_dict.keys())
14
- choose_email = random.randint(0, len(keys) - 1)
15
- msg_from = keys[choose_email]
16
- return msg_from, email_dict[msg_from]
17
5
 
18
-
19
- def _decode_password(password):
20
- return "".join([chr(i + 109) for i in password])
21
-
22
-
23
- def _send_message(title, content, msg_to):
6
+ def _send_message(title, content, msg_to, msg_from, password):
24
7
  from email.header import Header
25
8
  from email.mime.multipart import MIMEMultipart
26
9
  from email.mime.text import MIMEText
@@ -29,8 +12,9 @@ def _send_message(title, content, msg_to):
29
12
  con = smtplib.SMTP_SSL("smtp.qq.com", 465)
30
13
 
31
14
  # 2. 登录邮箱
32
- msg_from, password = _email_info()
33
- con.login(msg_from, _decode_password(password))
15
+ # msg_from, password = _email_info()
16
+ # con.login(msg_from, _decode_password(password))
17
+ con.login(msg_from, password)
34
18
 
35
19
  # 3. 准备数据
36
20
  # 创建邮件对象
@@ -70,7 +54,7 @@ def _send_message(title, content, msg_to):
70
54
  print("发送内容为:\n{}\n\n".format(content))
71
55
 
72
56
 
73
- def send(title="Title", content=None, send_to="16031215@qq.com"):
57
+ def send(title="Title", content=None, send_to: str = "email@qq.com", msg_from='must@qq.com', password='email_not_qq_pwd'):
74
58
  """
75
59
  Description: 发送邮件
76
60
 
@@ -85,11 +69,10 @@ def send(title="Title", content=None, send_to="16031215@qq.com"):
85
69
  Example:
86
70
  send(title='Title', content='Content', '123@qq.com')
87
71
  """
88
- if content is None:
89
- # 避免发送空邮件,或有人误调用
72
+ if content is None or send_to=='email@qq.com' or msg_from=='must@qq.com' or password=='email_not_qq_pwd':
90
73
  return
91
74
  else:
92
- _send_message(title, content, send_to)
75
+ _send_message(title, content, send_to, msg_from, password)
93
76
 
94
77
 
95
78
  if __name__ == "__main__":
@@ -54,10 +54,15 @@ def query_queue(need_node=1, queue_list =['dcu','bigmem','cpu_parallel','cpu_sin
54
54
  queue_dict = get_queue_node()
55
55
  hs = None
56
56
  for my_queue in queue_list:
57
- if my_queue in queue_dict and queue_dict[my_queue] >= need_node:
58
- # slurm_file = f'../run.slurm.{my_queue}'
59
- hs = my_queue
60
- break
57
+ if my_queue == 'cpu_parallel':
58
+ for mq in ['cpu_parallel','cpu_parallel*']:
59
+ if mq in queue_dict and queue_dict[mq] >= need_node:
60
+ hs = 'cpu_parallel'
61
+ break
62
+ else:
63
+ if my_queue in queue_dict and queue_dict[my_queue] >= need_node:
64
+ hs = my_queue
65
+ break
61
66
  return hs
62
67
 
63
68
  def running_jobs():
@@ -116,7 +121,7 @@ def submit_job(working_dir=None, script_tmp='run.slurm', script_run='run.slurm',
116
121
  while True:
117
122
  if job_id in running_jobs():
118
123
  print(f'Time: {datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")}')
119
- print(f'任务{job_id}正在任务队列中...')
124
+ print(f'任务{job_id}正在队列中...')
120
125
  time.sleep(60)
121
126
  else:
122
127
  print(f'任务{job_id}已完成!')
@@ -118,7 +118,7 @@ class PEx(ParallelExecutor):
118
118
 
119
119
 
120
120
 
121
- def email(title: str = "Title", content: Optional[str] = None, send_to: str = "10001@qq.com") -> None:
121
+ def email(title: str = "Title", content: Optional[str] = None, send_to: str = "email@qq.com", msg_from='must@qq.com', password='email_not_qq_pwd') -> None:
122
122
  """
123
123
  Send an email using the specified title, content, and recipient.
124
124
 
@@ -130,7 +130,7 @@ def email(title: str = "Title", content: Optional[str] = None, send_to: str = "1
130
130
  from ._script.email import send
131
131
 
132
132
  print(f"[green]Sending email to {send_to} with title: {title}[/green]")
133
- send(title, content, send_to)
133
+ send(title, content, send_to, msg_from, password)
134
134
 
135
135
 
136
136
  def pbar(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: oafuncs
3
- Version: 0.0.98.47
3
+ Version: 0.0.98.50
4
4
  Summary: Oceanic and Atmospheric Functions
5
5
  Home-page: https://github.com/Industry-Pays/OAFuncs
6
6
  Author: Kun Liu
@@ -18,7 +18,7 @@ URL = "https://github.com/Industry-Pays/OAFuncs"
18
18
  EMAIL = "liukun0312@stu.ouc.edu.cn"
19
19
  AUTHOR = "Kun Liu"
20
20
  REQUIRES_PYTHON = ">=3.10.0" # 2025/03/13
21
- VERSION = "0.0.98.47"
21
+ VERSION = "0.0.98.50"
22
22
 
23
23
  # What packages are required for this module to be executed?
24
24
  REQUIRED = [
File without changes
File without changes
File without changes
File without changes