Py4HEAppE 1.0.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.
Files changed (183) hide show
  1. __init__.py +1 -0
  2. py4heappe/__init__.py +1 -0
  3. py4heappe/cli/__init__.py +1 -0
  4. py4heappe/cli/auth.py +153 -0
  5. py4heappe/cli/command_template.py +370 -0
  6. py4heappe/cli/configuration.py +65 -0
  7. py4heappe/cli/information.py +163 -0
  8. py4heappe/cli/job_management.py +211 -0
  9. py4heappe/cli/report.py +173 -0
  10. py4heappe/core/__init__.py +167 -0
  11. py4heappe/core/api/__init__.py +12 -0
  12. py4heappe/core/api/cluster_information_api.py +308 -0
  13. py4heappe/core/api/data_transfer_api.py +405 -0
  14. py4heappe/core/api/file_transfer_api.py +498 -0
  15. py4heappe/core/api/job_management_api.py +866 -0
  16. py4heappe/core/api/job_reporting_api.py +692 -0
  17. py4heappe/core/api/management_api.py +2540 -0
  18. py4heappe/core/api/user_and_limitation_management_api.py +676 -0
  19. py4heappe/core/api_client.py +632 -0
  20. py4heappe/core/base/__init__.py +1 -0
  21. py4heappe/core/base/exceptions.py +41 -0
  22. py4heappe/core/base/logger.py +11 -0
  23. py4heappe/core/base/utils.py +43 -0
  24. py4heappe/core/configuration.py +247 -0
  25. py4heappe/core/models/__init__.py +155 -0
  26. py4heappe/core/models/adaptor_user.py +398 -0
  27. py4heappe/core/models/adaptor_user_group.py +268 -0
  28. py4heappe/core/models/adaptor_user_role.py +242 -0
  29. py4heappe/core/models/adaptor_user_role_ext.py +138 -0
  30. py4heappe/core/models/adaptor_user_role_type.py +95 -0
  31. py4heappe/core/models/adaptor_user_type.py +91 -0
  32. py4heappe/core/models/adaptor_user_user_group_role.py +320 -0
  33. py4heappe/core/models/allocated_nodes_ips_model.py +136 -0
  34. py4heappe/core/models/authenticate_lexis_token_model.py +110 -0
  35. py4heappe/core/models/authenticate_user_digital_signature_model.py +110 -0
  36. py4heappe/core/models/authenticate_user_open_id_model.py +110 -0
  37. py4heappe/core/models/authenticate_user_open_id_open_stack_model.py +136 -0
  38. py4heappe/core/models/authenticate_user_password_model.py +110 -0
  39. py4heappe/core/models/authentication_credentials.py +110 -0
  40. py4heappe/core/models/bad_request_result.py +110 -0
  41. py4heappe/core/models/cancel_job_model.py +136 -0
  42. py4heappe/core/models/cluster.py +478 -0
  43. py4heappe/core/models/cluster_authentication_credentials.py +375 -0
  44. py4heappe/core/models/cluster_authentication_credentials_auth_type.py +97 -0
  45. py4heappe/core/models/cluster_connection_protocol.py +91 -0
  46. py4heappe/core/models/cluster_detailed_report_ext.py +214 -0
  47. py4heappe/core/models/cluster_ext.py +188 -0
  48. py4heappe/core/models/cluster_init_report_ext.py +136 -0
  49. py4heappe/core/models/cluster_node_type.py +528 -0
  50. py4heappe/core/models/cluster_node_type_detailed_report_ext.py +240 -0
  51. py4heappe/core/models/cluster_node_type_ext.py +292 -0
  52. py4heappe/core/models/cluster_node_type_for_task_ext.py +188 -0
  53. py4heappe/core/models/cluster_node_type_report_ext.py +214 -0
  54. py4heappe/core/models/cluster_node_type_requested_group.py +136 -0
  55. py4heappe/core/models/cluster_node_type_resource_usage_ext.py +292 -0
  56. py4heappe/core/models/cluster_node_usage_ext.py +318 -0
  57. py4heappe/core/models/cluster_project.py +347 -0
  58. py4heappe/core/models/cluster_project_credential.py +294 -0
  59. py4heappe/core/models/cluster_proxy_connection.py +243 -0
  60. py4heappe/core/models/cluster_proxy_connection_ext.py +214 -0
  61. py4heappe/core/models/cluster_report_ext.py +215 -0
  62. py4heappe/core/models/command_template.py +557 -0
  63. py4heappe/core/models/command_template_ext.py +240 -0
  64. py4heappe/core/models/command_template_parameter.py +347 -0
  65. py4heappe/core/models/command_template_parameter_ext.py +136 -0
  66. py4heappe/core/models/command_template_parameter_value_ext.py +136 -0
  67. py4heappe/core/models/contact.py +269 -0
  68. py4heappe/core/models/copy_job_data_from_temp_model.py +162 -0
  69. py4heappe/core/models/copy_job_data_to_temp_model.py +162 -0
  70. py4heappe/core/models/create_command_inner_template_parameter_model.py +162 -0
  71. py4heappe/core/models/create_command_template_from_generic_model.py +292 -0
  72. py4heappe/core/models/create_command_template_model.py +318 -0
  73. py4heappe/core/models/create_command_template_parameter_model.py +214 -0
  74. py4heappe/core/models/create_job_by_project_model.py +136 -0
  75. py4heappe/core/models/create_project_assignment_to_cluster_model.py +188 -0
  76. py4heappe/core/models/create_project_model.py +318 -0
  77. py4heappe/core/models/create_secure_shell_key_model.py +162 -0
  78. py4heappe/core/models/create_secure_shell_key_model_obsolete.py +188 -0
  79. py4heappe/core/models/current_cluster_node_usage_model.py +136 -0
  80. py4heappe/core/models/current_info_for_job_model.py +136 -0
  81. py4heappe/core/models/data_transfer_method_ext.py +188 -0
  82. py4heappe/core/models/delete_job_model.py +136 -0
  83. py4heappe/core/models/deployment_type_ext.py +91 -0
  84. py4heappe/core/models/digital_signature_credentials_ext.py +162 -0
  85. py4heappe/core/models/download_file_from_cluster_model.py +162 -0
  86. py4heappe/core/models/download_parts_of_job_files_from_cluster_model.py +162 -0
  87. py4heappe/core/models/end_data_transfer_model.py +136 -0
  88. py4heappe/core/models/end_file_transfer_model.py +162 -0
  89. py4heappe/core/models/environment_variable_ext.py +136 -0
  90. py4heappe/core/models/extended_command_template_ext.py +370 -0
  91. py4heappe/core/models/extended_command_template_parameter_ext.py +188 -0
  92. py4heappe/core/models/extended_project_info_ext.py +318 -0
  93. py4heappe/core/models/file_information_ext.py +136 -0
  94. py4heappe/core/models/file_transfer_cipher_type.py +94 -0
  95. py4heappe/core/models/file_transfer_cipher_type_ext.py +93 -0
  96. py4heappe/core/models/file_transfer_key_credentials_ext.py +240 -0
  97. py4heappe/core/models/file_transfer_method.py +294 -0
  98. py4heappe/core/models/file_transfer_method_ext.py +240 -0
  99. py4heappe/core/models/file_transfer_protocol.py +91 -0
  100. py4heappe/core/models/file_transfer_protocol_ext.py +91 -0
  101. py4heappe/core/models/get_command_template_parameters_name_model.py +188 -0
  102. py4heappe/core/models/get_current_usage_and_limitations_for_current_user_model.py +110 -0
  103. py4heappe/core/models/get_data_transfer_method_model.py +188 -0
  104. py4heappe/core/models/get_file_transfer_method_model.py +136 -0
  105. py4heappe/core/models/http_get_to_job_node_model.py +241 -0
  106. py4heappe/core/models/http_header_ext.py +136 -0
  107. py4heappe/core/models/http_post_to_job_node_model.py +267 -0
  108. py4heappe/core/models/initialize_cluster_script_directory_model.py +162 -0
  109. py4heappe/core/models/instance_information_ext.py +344 -0
  110. py4heappe/core/models/job_detailed_report_ext.py +318 -0
  111. py4heappe/core/models/job_file_content_ext.py +214 -0
  112. py4heappe/core/models/job_report_ext.py +188 -0
  113. py4heappe/core/models/job_specification_by_project_ext.py +448 -0
  114. py4heappe/core/models/job_specification_ext.py +448 -0
  115. py4heappe/core/models/job_state_aggregation_report_ext.py +162 -0
  116. py4heappe/core/models/job_state_ext.py +96 -0
  117. py4heappe/core/models/lexis_credentials_ext.py +137 -0
  118. py4heappe/core/models/list_changed_files_for_job_model.py +136 -0
  119. py4heappe/core/models/list_jobs_for_current_user_model.py +110 -0
  120. py4heappe/core/models/modify_command_template_from_generic_model.py +292 -0
  121. py4heappe/core/models/modify_command_template_model.py +292 -0
  122. py4heappe/core/models/modify_command_template_parameter_model.py +214 -0
  123. py4heappe/core/models/modify_project_assignment_to_cluster_model.py +188 -0
  124. py4heappe/core/models/modify_project_model.py +292 -0
  125. py4heappe/core/models/node_used_cores_and_limitation_ext.py +110 -0
  126. py4heappe/core/models/open_id_credentials_ext.py +137 -0
  127. py4heappe/core/models/open_stack_application_credentials_ext.py +136 -0
  128. py4heappe/core/models/password_credentials_ext.py +136 -0
  129. py4heappe/core/models/problem_details.py +89 -0
  130. py4heappe/core/models/project.py +482 -0
  131. py4heappe/core/models/project_contact.py +215 -0
  132. py4heappe/core/models/project_detailed_report_ext.py +292 -0
  133. py4heappe/core/models/project_ext.py +266 -0
  134. py4heappe/core/models/project_for_task_ext.py +214 -0
  135. py4heappe/core/models/project_list_report_ext.py +214 -0
  136. py4heappe/core/models/project_reference_ext.py +137 -0
  137. py4heappe/core/models/project_report_ext.py +240 -0
  138. py4heappe/core/models/project_resource_usage_ext.py +266 -0
  139. py4heappe/core/models/proxy_type.py +91 -0
  140. py4heappe/core/models/proxy_type_ext.py +91 -0
  141. py4heappe/core/models/public_key_ext.py +188 -0
  142. py4heappe/core/models/recreate_secure_shell_key_model.py +214 -0
  143. py4heappe/core/models/regenerate_secure_shell_key_model.py +188 -0
  144. py4heappe/core/models/regenerate_secure_shell_key_model_obsolete.py +188 -0
  145. py4heappe/core/models/remove_command_template_model.py +136 -0
  146. py4heappe/core/models/remove_command_template_parameter_model.py +136 -0
  147. py4heappe/core/models/remove_project_assignment_to_cluster_model.py +162 -0
  148. py4heappe/core/models/remove_project_model.py +136 -0
  149. py4heappe/core/models/remove_secure_shell_key_model.py +162 -0
  150. py4heappe/core/models/remove_secure_shell_key_model_obsolete.py +162 -0
  151. py4heappe/core/models/resource_allocation_type_ext.py +91 -0
  152. py4heappe/core/models/resource_limitation_ext.py +136 -0
  153. py4heappe/core/models/resource_usage_ext.py +163 -0
  154. py4heappe/core/models/scheduler_type.py +92 -0
  155. py4heappe/core/models/ssh_key_user_credentials_model.py +136 -0
  156. py4heappe/core/models/submit_job_model.py +136 -0
  157. py4heappe/core/models/submitted_job_info_ext.py +318 -0
  158. py4heappe/core/models/submitted_task_info_ext.py +370 -0
  159. py4heappe/core/models/synchronizable_files_ext.py +92 -0
  160. py4heappe/core/models/task_detailed_report_ext.py +318 -0
  161. py4heappe/core/models/task_file_offset_ext.py +162 -0
  162. py4heappe/core/models/task_paralization_parameter_ext.py +162 -0
  163. py4heappe/core/models/task_priority_ext.py +97 -0
  164. py4heappe/core/models/task_report_ext.py +266 -0
  165. py4heappe/core/models/task_specification_ext.py +682 -0
  166. py4heappe/core/models/task_state_ext.py +95 -0
  167. py4heappe/core/models/test_cluster_access_for_account_model.py +162 -0
  168. py4heappe/core/models/test_cluster_access_for_account_model_obsolete.py +162 -0
  169. py4heappe/core/models/unauthorized_result.py +110 -0
  170. py4heappe/core/models/usage_type.py +90 -0
  171. py4heappe/core/models/usage_type_ext.py +90 -0
  172. py4heappe/core/models/user_group_detailed_report_ext.py +240 -0
  173. py4heappe/core/models/user_group_list_report_ext.py +240 -0
  174. py4heappe/core/models/user_group_report_ext.py +240 -0
  175. py4heappe/core/models/version_information_ext.py +162 -0
  176. py4heappe/core/rest.py +311 -0
  177. py4heappe-1.0.0.dist-info/METADATA +147 -0
  178. py4heappe-1.0.0.dist-info/RECORD +183 -0
  179. py4heappe-1.0.0.dist-info/WHEEL +5 -0
  180. py4heappe-1.0.0.dist-info/entry_points.txt +2 -0
  181. py4heappe-1.0.0.dist-info/licenses/LICENSE +20 -0
  182. py4heappe-1.0.0.dist-info/top_level.txt +3 -0
  183. py4heappe_cli.py +22 -0
@@ -0,0 +1,183 @@
1
+ __init__.py,sha256=2k_ZeqU7FvqZMFqGm-EYRiV98uxUxmiy5wXygvIobPU,13
2
+ py4heappe_cli.py,sha256=HSIdh92f1ObS5fbA-wgyahQwAeldnPRCbFADjJhoM3g,935
3
+ py4heappe/__init__.py,sha256=2k_ZeqU7FvqZMFqGm-EYRiV98uxUxmiy5wXygvIobPU,13
4
+ py4heappe/cli/__init__.py,sha256=2k_ZeqU7FvqZMFqGm-EYRiV98uxUxmiy5wXygvIobPU,13
5
+ py4heappe/cli/auth.py,sha256=x38ZBfG0fHYPD3Kof9v3a9aGh7rjA9e7wPKvPXyL3bE,6328
6
+ py4heappe/cli/command_template.py,sha256=G1mdBKvdRY5WFW4iC3TWoyoEFkHxO4M5sHAPKOH0Xsk,19070
7
+ py4heappe/cli/configuration.py,sha256=pu6gYf5fYk9mFxOIQNeboJJZUdT8K2aPoja5p9fuXqA,2435
8
+ py4heappe/cli/information.py,sha256=sZuD5YH9SDSA1hbcyAaq5UjIehXUhCMjCHXOjn6kXV8,7933
9
+ py4heappe/cli/job_management.py,sha256=SqCUuLi23zTDme7yeCIpMq8gziR5wBff3o2TCVbWalU,9719
10
+ py4heappe/cli/report.py,sha256=a2dyAqQ8bzzXUpz_Y6mDuFPZJUZ8ynjpOT9tzpunc2I,8489
11
+ py4heappe/core/__init__.py,sha256=4FGAjSukIGVP39ZWoIJ8CRV8_4qA3nvoLAy_9IKtxIQ,12689
12
+ py4heappe/core/api_client.py,sha256=8NGjen753fOs1-7Ih2yTwQy3MrIZ2_r-pG569SKG_fU,25026
13
+ py4heappe/core/configuration.py,sha256=fyeNVlLrCFgXVKttjvkzAlK0Y8YqdEi6QxogBZByPK4,8061
14
+ py4heappe/core/rest.py,sha256=wxZBChyosnWE2lP1qjMEn2q6Gr_TVAVGOd8aOV1xzkI,12409
15
+ py4heappe/core/api/__init__.py,sha256=jsY9lSYfwS0rg8LQiZ6ZocA7gyy8XBm5fY7ZX3UVaVs,583
16
+ py4heappe/core/api/cluster_information_api.py,sha256=Fg3nnaYr6Iqajyd3mfyuQN2vbeAjnXeDixyxxQC7Raw,11952
17
+ py4heappe/core/api/data_transfer_api.py,sha256=pDUGLN5sLS1cIO17edUaIOjk3K-Ohan_WaoKR0d7fiw,15141
18
+ py4heappe/core/api/file_transfer_api.py,sha256=BOpApe5bxcFSuB2tpGrpDAegOQNWQEwVcKjgGDDk9_w,19366
19
+ py4heappe/core/api/job_management_api.py,sha256=jkAHhYPMoR_C4FCsw6xLUNnrpV2zheKeEneWsECg1jc,33063
20
+ py4heappe/core/api/job_reporting_api.py,sha256=MNW9J2KYsmLPDO8liY6X_EXEUoETy5wrOgDpd0eKPHE,27483
21
+ py4heappe/core/api/management_api.py,sha256=-jQysdgXIwQFNWGrbKBjAvLTTlvJoKUhmueglbZ68og,99232
22
+ py4heappe/core/api/user_and_limitation_management_api.py,sha256=LFzvNA4H4JndAuP4Qa18m3kyydkAqmB-JOdbHIcB38o,27719
23
+ py4heappe/core/base/__init__.py,sha256=2k_ZeqU7FvqZMFqGm-EYRiV98uxUxmiy5wXygvIobPU,13
24
+ py4heappe/core/base/exceptions.py,sha256=o1M6LaHSRPWAK43MbBRN0mDjjyje_fjq-XFYpri5gSg,1382
25
+ py4heappe/core/base/logger.py,sha256=E4QS7tugdHkQN2BrSo8IPZJLC5cUVuSoN2TKD5uw9As,293
26
+ py4heappe/core/base/utils.py,sha256=zdVHZHYQltkZpmFy5KnOdqoNIwuF22FhzPUGo72kYb0,1671
27
+ py4heappe/core/models/__init__.py,sha256=cfTu968gosV-keqPl3Tn0Gbr5V634WFVQhYDtpBt9qM,12041
28
+ py4heappe/core/models/adaptor_user.py,sha256=GZq8L82oIFTJ38fyvcF2NnGwKVMC_xIE6VpEwZmRKdE,11010
29
+ py4heappe/core/models/adaptor_user_group.py,sha256=DA-2iGekAu0dNuaoo4hx7NL-I2DLyT1lmQ5mv3pk-EQ,7671
30
+ py4heappe/core/models/adaptor_user_role.py,sha256=G-oW4bpn5OowYZD71uZZ6L_dafLDUV4OKmaNcAVkzIA,7328
31
+ py4heappe/core/models/adaptor_user_role_ext.py,sha256=pSjAvEeRZ6nzG7eU62H5HLWKrEAon8G-9Xb_uZsYy3I,3940
32
+ py4heappe/core/models/adaptor_user_role_type.py,sha256=JrmtIJ9vsQfPbX66M4rOh8uoZOwExr7zun0h5eO8g_s,2563
33
+ py4heappe/core/models/adaptor_user_type.py,sha256=pFXsVgKQAHr5FVU48vaNKv5x8P_aTuOIImEaWtpnNao,2495
34
+ py4heappe/core/models/adaptor_user_user_group_role.py,sha256=g_FVT3YbWP-Zsje9YLVQVVpim6W1o7ZLNPb1RWpD_oI,10328
35
+ py4heappe/core/models/allocated_nodes_ips_model.py,sha256=dECiFMzV45rwS2jUf5qDqoG0r4wkAPCthYJOYAyl8ag,4138
36
+ py4heappe/core/models/authenticate_lexis_token_model.py,sha256=_3kGthpnbz57CpZAhJ8147QjizvHj32yTvBeDcvj7U0,3286
37
+ py4heappe/core/models/authenticate_user_digital_signature_model.py,sha256=aGBu6GjwYUvJytaazGJQxSnZpW5RL0wEDRAjCqmO408,3399
38
+ py4heappe/core/models/authenticate_user_open_id_model.py,sha256=nBkVV2bN1q52RD5GFAk9uU07X8NHpXr5T8TP-xNxQq4,3289
39
+ py4heappe/core/models/authenticate_user_open_id_open_stack_model.py,sha256=wZv4tlrHP4h8B08qYf3jC7fyeV2yPNH2djLTWO5cdo8,4153
40
+ py4heappe/core/models/authenticate_user_password_model.py,sha256=SjXeMeCKIX1gTNfxsD4CwDIQQur6kojaS_B_CkWxI28,3311
41
+ py4heappe/core/models/authentication_credentials.py,sha256=fmroZK6odPD2HruC8m0XmIHy65mFo-FJqlGGsYFe23E,3162
42
+ py4heappe/core/models/bad_request_result.py,sha256=TbpSy4B-c3oe1UIbZaiS6colgw2tza1xv1HKeMTxkOY,3149
43
+ py4heappe/core/models/cancel_job_model.py,sha256=HR5Gfw6FkPVHdRNu-aQL_k5LrwPidGRuxLIE8iVrCdw,4075
44
+ py4heappe/core/models/cluster.py,sha256=XbOLqDKpVXsn8tLprolkYh9_KVwEKlodkLoT5XSogW8,14338
45
+ py4heappe/core/models/cluster_authentication_credentials.py,sha256=tRpfNcE6sAdA_bDVVfShxwVnZFRBJpARq20RqseBExQ,12626
46
+ py4heappe/core/models/cluster_authentication_credentials_auth_type.py,sha256=nSunWmwjmORnSaAcE0j0Jqh_QAT51RME2EmAPSLLrG8,2673
47
+ py4heappe/core/models/cluster_connection_protocol.py,sha256=eQJ1TFyp1l-VK6LId9OiHz_djItvRjmIIIMy6Or0fa4,2535
48
+ py4heappe/core/models/cluster_detailed_report_ext.py,sha256=pgR8_Vue4rKOw3Gjw8dNguyaG35FHv6ajk4nluoVBaA,6202
49
+ py4heappe/core/models/cluster_ext.py,sha256=vqSKVeWOrbna_5yv1k4y5PkQ0gEVkR_DtPKsHoRk_oY,4951
50
+ py4heappe/core/models/cluster_init_report_ext.py,sha256=3fAO1eYO-Q98hgPfYCSMjiz7ZUFBgE2vj2E8dL0_5qI,4171
51
+ py4heappe/core/models/cluster_node_type.py,sha256=jWGqFq-g3jIu3ZWkk1tSefYDiX50khnDkAV8VVpn7rw,16162
52
+ py4heappe/core/models/cluster_node_type_detailed_report_ext.py,sha256=5OY1P-onJRiCppS4BoibiYoQ7-XzPODsXwJ6dwvCPwc,6856
53
+ py4heappe/core/models/cluster_node_type_ext.py,sha256=x13NlG_wBlPFsUwFbQOIg7Jz1wHLK4_7eAfUMzjJ_ts,8404
54
+ py4heappe/core/models/cluster_node_type_for_task_ext.py,sha256=y-a4VuFOruKDs-tjUSCFAzOxveTZKumkk3C3Ef7zPTc,5171
55
+ py4heappe/core/models/cluster_node_type_report_ext.py,sha256=VLaZxDLkCzyf-TbmxvgjC55HdRrGrLKRDsW89hR4Dj4,5864
56
+ py4heappe/core/models/cluster_node_type_requested_group.py,sha256=KNzIbqZkovsmgdX-1pyCRoi2IYkrkgHkQu3WqrajUl4,3719
57
+ py4heappe/core/models/cluster_node_type_resource_usage_ext.py,sha256=Ga20Hrs9cr6AtYs-4MMSwU5Sz1V0R19JYQ_nCflpJMc,9347
58
+ py4heappe/core/models/cluster_node_usage_ext.py,sha256=_2mqsc5juS694DyQ40JPEK3ijl7tZGwqnOpRHz-GyTA,9065
59
+ py4heappe/core/models/cluster_project.py,sha256=phI4DfOxLClnKExPhUOSxMKWFyw-Ob2MLxnvJLAvRM4,10020
60
+ py4heappe/core/models/cluster_project_credential.py,sha256=fuamVRNUYxPG_mM6H2HZaEceRk_R2qvA-meLM_ar_to,10190
61
+ py4heappe/core/models/cluster_proxy_connection.py,sha256=D3VzVbl8b9EmKtk9BikSVX3TMmONX8pFQmCOciWpH9U,6530
62
+ py4heappe/core/models/cluster_proxy_connection_ext.py,sha256=7SA-SCEg14A-XW7RSsEEEdmEJwHt8zIhrrqbJZEBP-E,5785
63
+ py4heappe/core/models/cluster_report_ext.py,sha256=SuvpLyAtsfmfyuXqtMONLiSRzwmfLPs06DhhmwLITp4,6076
64
+ py4heappe/core/models/command_template.py,sha256=g0e0PszHza4YASa38stVqG24GL9ns-j9g0jLlFoU6YM,16922
65
+ py4heappe/core/models/command_template_ext.py,sha256=0ed4PMgc85JAL8JwcIqGx1ywEKsWtemkBaH1yLZPXQk,7100
66
+ py4heappe/core/models/command_template_parameter.py,sha256=jC6VnE84k0m0D9hdCWOndFvjLcxp7Dy6BGt6j8VCTB8,10307
67
+ py4heappe/core/models/command_template_parameter_ext.py,sha256=2_znpdsfJYFSXs7cnW8y-2DKKLVDpHePGKx-RY33UOU,3995
68
+ py4heappe/core/models/command_template_parameter_value_ext.py,sha256=VKxvhT7ASH6xYWwjUslY569_Ks7VkGlcq9Q-6IRTubk,4492
69
+ py4heappe/core/models/contact.py,sha256=1S3PzUs2lGfbEpwiJ_Ift_78COYzMRF2LU4vyIX3m-8,7341
70
+ py4heappe/core/models/copy_job_data_from_temp_model.py,sha256=VYm-5WakV7e8Yw6yRU2aaeBnufQsYXyr4kgFRzbYi18,5038
71
+ py4heappe/core/models/copy_job_data_to_temp_model.py,sha256=dguzMOc9VbAJsRfVilGTnvIXGM7dmyrpHvPp94D0fpI,4788
72
+ py4heappe/core/models/create_command_inner_template_parameter_model.py,sha256=f51WzFBO04a5tQoAgK95kyo_IQ0XolvnkzOsRmIudPQ,4860
73
+ py4heappe/core/models/create_command_template_from_generic_model.py,sha256=eRRsviromjYi0ZjXYbA8Fk5UlewVSTw4lO-gpELDvzA,9748
74
+ py4heappe/core/models/create_command_template_model.py,sha256=DRV9biEzCyKWKMCBeDa0PVAg7r08jE9jMyClYOW28tg,10273
75
+ py4heappe/core/models/create_command_template_parameter_model.py,sha256=7we2lQLhr0cuVMVuB8HAhgL2b2uqhtC3OENI6cTKtn0,6575
76
+ py4heappe/core/models/create_job_by_project_model.py,sha256=JFX4qjtwV44Q1vCIhy3fTtOBfVCIDsZtwlw8Pp3gI0g,4153
77
+ py4heappe/core/models/create_project_assignment_to_cluster_model.py,sha256=wkxBLEhNZqYV5qW50-qE9hpI_YGm58zpy4PTCN3xB10,5805
78
+ py4heappe/core/models/create_project_model.py,sha256=6wqDjSYbHXZud4y72tP-djLRkwZSNQLv1kbCZKFIp8w,9464
79
+ py4heappe/core/models/create_secure_shell_key_model.py,sha256=iCukylRuw6rzRORGFxBcS0oHaFZjyoBEWh6ZZkKhUuE,4845
80
+ py4heappe/core/models/create_secure_shell_key_model_obsolete.py,sha256=HHdPaqmQwJPRqPSF886fF1cvAsOoUK5C0R-vcxbhP7A,5567
81
+ py4heappe/core/models/current_cluster_node_usage_model.py,sha256=2_WNqVON7Ya8frh2kiw0LcW7V-C33tCOQfGltgid_8I,4124
82
+ py4heappe/core/models/current_info_for_job_model.py,sha256=Kj_LQsXkxHqNEERTw_JaGTdDoLDgnOn8Ex5XCgU1j7M,4171
83
+ py4heappe/core/models/data_transfer_method_ext.py,sha256=XnLkWydA8heiVS6Ba1OYa-lsfc-16RLEdSxqGCGyt3U,5464
84
+ py4heappe/core/models/delete_job_model.py,sha256=SAzyKYMTx1GwlFcAINp7KAdqKaVqrXW_Y-GvTfpD9ds,4075
85
+ py4heappe/core/models/deployment_type_ext.py,sha256=qe21LuSRaJPXwjchOQn_7au01tMIAV27q6omvOrz2HU,2503
86
+ py4heappe/core/models/digital_signature_credentials_ext.py,sha256=2kJJGVZ29ZAOFl9N7igqVdf2KXwQknKJWnRkUr51lSY,4797
87
+ py4heappe/core/models/download_file_from_cluster_model.py,sha256=YPbLrKVX5ULyAXmab55sAlHEJo3Gn3xRFIMOTg0SGV8,5162
88
+ py4heappe/core/models/download_parts_of_job_files_from_cluster_model.py,sha256=3Sdzhr-kzH2ZnrKiCGnbSuuAMxkVxgkEAMG51AEnGEI,5378
89
+ py4heappe/core/models/end_data_transfer_model.py,sha256=eldwuMbcWsx9541o-l_929ze8NhIFPBYvNrZK9flZDU,4182
90
+ py4heappe/core/models/end_file_transfer_model.py,sha256=AQX7SO7gC9Kr8SmfZI4YsbMFRadof4B3fofl1vfOvGc,4875
91
+ py4heappe/core/models/environment_variable_ext.py,sha256=jEU0G3_aLW7qp3u2zbLTIoVDVRCqrE-hbT2l5a8YZqc,3695
92
+ py4heappe/core/models/extended_command_template_ext.py,sha256=GQvLIW0h1vTfVCYMRK-o2Y-zaWWvpOQxd8JwPHE_vNE,11726
93
+ py4heappe/core/models/extended_command_template_parameter_ext.py,sha256=XE-2-FZwV7hTg06Vdo4U3kap7Ksu0StMS6IkCEJ_-qI,5409
94
+ py4heappe/core/models/extended_project_info_ext.py,sha256=nMjIyP-Yp7tiPVRDKY1GIRe8kuWbfhToF_kZzHjKkek,9479
95
+ py4heappe/core/models/file_information_ext.py,sha256=0xppGeoxPWZzR2yF9_OvCcCMWAddk_6mFtydiS9iCO8,4019
96
+ py4heappe/core/models/file_transfer_cipher_type.py,sha256=bBtBIk3qoqeqT7SQm1ZN_O8OAimAE4lsVs3s7Y07mp8,2562
97
+ py4heappe/core/models/file_transfer_cipher_type_ext.py,sha256=OqfZXNvZvkC5WXo-HIJe-ixxs6-IM5UNVXBaF4ggknM,2561
98
+ py4heappe/core/models/file_transfer_key_credentials_ext.py,sha256=yKv96kAfDnEVcA25yIC9Vxzr_PwJL_uHfqDdUOZxQOM,7082
99
+ py4heappe/core/models/file_transfer_method.py,sha256=q9tbaX-FiR28HBBJtH8tPNdVu-6PR6WVa6CX690526g,8358
100
+ py4heappe/core/models/file_transfer_method_ext.py,sha256=bkh3WCqY8q7k-4NTSdZ8tEIy57DYxAWQzqpZTKgBzfw,7216
101
+ py4heappe/core/models/file_transfer_protocol.py,sha256=n-C8gQeJjk51m4wOCa11gbvbWr0uqUhklDnwJ-d_0yE,2515
102
+ py4heappe/core/models/file_transfer_protocol_ext.py,sha256=91c0FVSV5fzhxjICS3A5dvoUa_aYwsmzRoqKKFT7Hv4,2527
103
+ py4heappe/core/models/get_command_template_parameters_name_model.py,sha256=szcx6103aobZ4qmjg3_B81dOzhZRvJ3VNMnrRij7G6E,6023
104
+ py4heappe/core/models/get_current_usage_and_limitations_for_current_user_model.py,sha256=Oz9BI_5ylSFxM3_gG5aF258kE3Bxl3tmfs594sGKFgs,3425
105
+ py4heappe/core/models/get_data_transfer_method_model.py,sha256=47hDwQViGLyj0W7glGtncWpb6XZn_Z2MF6QDC3O64dU,5604
106
+ py4heappe/core/models/get_file_transfer_method_model.py,sha256=_JVSOCyqvJeQQWKqBCeOc-Q_refDV9GYq5TY-kxGVww,4219
107
+ py4heappe/core/models/http_get_to_job_node_model.py,sha256=BzJPN9Zg_g-ISthoqSNM0UsePKjGSMe_qVD_8QnXgG0,7382
108
+ py4heappe/core/models/http_header_ext.py,sha256=Kw78JJkg3yuEhkzSlp07q68G4RrNtLdAGCdos9wyflE,3587
109
+ py4heappe/core/models/http_post_to_job_node_model.py,sha256=62m7lTcNYV5YljaUgKOPO_KE11DV_uWDOX29TRJ_TUE,8186
110
+ py4heappe/core/models/initialize_cluster_script_directory_model.py,sha256=z5KSxMzI24jQPwwNIVeG-vrx41VUYeVx5YXiRQHtHYM,5327
111
+ py4heappe/core/models/instance_information_ext.py,sha256=cOr4NCDzViECf0voQpzSKw4o_F9TVMmfX4YwLfgHmFs,10146
112
+ py4heappe/core/models/job_detailed_report_ext.py,sha256=WJ3geX_TAQvnIVnk8Hzn5mcbwA3qmrYRFbLzbjX5kRY,8686
113
+ py4heappe/core/models/job_file_content_ext.py,sha256=ffV-cs0oR6__OlBd7pAGUNv9VzqrQvVlbaKMN6mImOE,6198
114
+ py4heappe/core/models/job_report_ext.py,sha256=_aWooJXQyJiuxJ0AXNdL7y9Up96Apr9VSQRA9evDSSA,4781
115
+ py4heappe/core/models/job_specification_by_project_ext.py,sha256=mSyB6CelraOqzIMCiSfjDd7l73dH2cpm0kYtve7Fa60,14237
116
+ py4heappe/core/models/job_specification_ext.py,sha256=Nkb4uk2ZYUHoahjy0IovLNx8LrLtwV9JN_QwcWu7nJw,13697
117
+ py4heappe/core/models/job_state_aggregation_report_ext.py,sha256=FgTsuXAC5vngnDGMI1LQbh5k2XatYUS3HZLeLiMW_YA,4788
118
+ py4heappe/core/models/job_state_ext.py,sha256=PsE4VQQ3ya3VRYR7KszCK7m_0FbAw9CdV_4errmyGLI,2554
119
+ py4heappe/core/models/lexis_credentials_ext.py,sha256=iDaj3LVi5RiGxEpamxXq2NSzXlkxiCclPkj0BQLEopo,4135
120
+ py4heappe/core/models/list_changed_files_for_job_model.py,sha256=MoGh2iyt1RqUn6w7Ri5IxIHyhwxF8BBLBNf53MDjZGk,4231
121
+ py4heappe/core/models/list_jobs_for_current_user_model.py,sha256=9J7rMJvBhtVVlL1sDTw8kDih7sWDsIkfRC9_-79lZdo,3257
122
+ py4heappe/core/models/modify_command_template_from_generic_model.py,sha256=2GApJb622DqhfbrhlCq01CuV5dUsMVy2F2Kw2a3uq48,9589
123
+ py4heappe/core/models/modify_command_template_model.py,sha256=lme8PPeZ02v2NaVwm8TAysty4kXf4jgssJ0aFC0I9pQ,9053
124
+ py4heappe/core/models/modify_command_template_parameter_model.py,sha256=Dda8ID1LysBOfhFQ2YSfG0VY-pwf-e7Bf7JZ6TYP-Zo,6237
125
+ py4heappe/core/models/modify_project_assignment_to_cluster_model.py,sha256=8M8d4wyNl1ZGWGBuwkuG4cTw9OLM88gD606WVXMTy_E,5805
126
+ py4heappe/core/models/modify_project_model.py,sha256=OWGPOsl6YbVBAvfefzfJZ1IFDJRqC1SRzAUliS0V_Qg,8485
127
+ py4heappe/core/models/node_used_cores_and_limitation_ext.py,sha256=_m1K2cMFUe4WbP62XWEe0hYCUez5qsXxFOEL4rxs1u8,3233
128
+ py4heappe/core/models/open_id_credentials_ext.py,sha256=EvLZ3icT9GEC01bizCVYY3Uc4HfFVTHs2VJEpjJtby4,4147
129
+ py4heappe/core/models/open_stack_application_credentials_ext.py,sha256=8iIUT9wkGP8X5uWtFcZEj8xtRmFpxr_jqdXfpR08gYk,4775
130
+ py4heappe/core/models/password_credentials_ext.py,sha256=PBlQfdOg8Mq6s1tqTVQZI_sDw6AXtaKAhXGzKcJ10aw,3835
131
+ py4heappe/core/models/problem_details.py,sha256=gn94fR8QuSQkO1jy10bNAjqaWC6MONfYjWCozmFsgTI,2647
132
+ py4heappe/core/models/project.py,sha256=xJYYWn7O_nDzSGaoqHkUVszcbv8hAsuaFpOFMaJHHz8,14473
133
+ py4heappe/core/models/project_contact.py,sha256=5o_U81G9A9M2qYc56HY4b1WKmLVMR3FwPJu7HyR6sJw,5822
134
+ py4heappe/core/models/project_detailed_report_ext.py,sha256=CgiLNbN_9L2z0KeT5-0dN3KsXEeNZE4-Mssg05KTMYw,8342
135
+ py4heappe/core/models/project_ext.py,sha256=rifWQNX1opqJ7hlnWAzR6Fn4KSEHoURYIIKA1zWzR1k,7285
136
+ py4heappe/core/models/project_for_task_ext.py,sha256=vIK__n5SiE9Xfiy65PLOlCGQJiPiDwo900SfbFp83SU,6049
137
+ py4heappe/core/models/project_list_report_ext.py,sha256=DT3yXKqagu12vtXO8ufVvbMegMN7vwCFkVg6x24KSnM,5982
138
+ py4heappe/core/models/project_reference_ext.py,sha256=XDeYE4eTE8DGkYS8uPQwmt31oSYzFnrVMZk3cks-w64,3851
139
+ py4heappe/core/models/project_report_ext.py,sha256=XCyegxCt9kQTiNzfSRz6UE3yCaJlzNfK6vn1_bRhl78,6616
140
+ py4heappe/core/models/project_resource_usage_ext.py,sha256=9SYJ1F-x50xTsdEH8tNFpWWiyGUTBo19yHT9CFWUF30,7600
141
+ py4heappe/core/models/proxy_type.py,sha256=bnL7vDlu-9Hq2M1pB5U5FKNmYGV3qijLUt7Sqd-7Q-0,2471
142
+ py4heappe/core/models/proxy_type_ext.py,sha256=zK9No8VfnDITbUuxazmx2erDXHpHdRp2fu7Eei5yCVc,2483
143
+ py4heappe/core/models/public_key_ext.py,sha256=VeboqUVHMYORKn2xS1I0TvcMGeQidr52dZiboKrR1Is,5429
144
+ py4heappe/core/models/recreate_secure_shell_key_model.py,sha256=b-sPk8dO5aIOin0XKZuiFYRrNyaPDg2srs_ljxat9AQ,6203
145
+ py4heappe/core/models/regenerate_secure_shell_key_model.py,sha256=RGqN7FQ0XulQYUUwbXVgoUJQkWSfS4z9cgeGOP8eqGc,5487
146
+ py4heappe/core/models/regenerate_secure_shell_key_model_obsolete.py,sha256=EvYPJtm-PwRZ4Gbdy7kl0IkOcHePfvyU-j_TmQTL4sQ,5686
147
+ py4heappe/core/models/remove_command_template_model.py,sha256=77XoAN-ZJSwrIgZDM499_9mAjdYfjOfnlYjJ0mgcpnM,4180
148
+ py4heappe/core/models/remove_command_template_parameter_model.py,sha256=e6Us-QqS-y5ikthcLmDWpQGYK1ocrIeI5qyj5G-8R2k,3950
149
+ py4heappe/core/models/remove_project_assignment_to_cluster_model.py,sha256=VMucsNZw61V4_R_TrdmUkcd3VvZfkmKzVwljdZQUbjM,4929
150
+ py4heappe/core/models/remove_project_model.py,sha256=L8jsnRukOZl1X6K8NBqynyAnUHzzK63sueg3OO3CQlE,3746
151
+ py4heappe/core/models/remove_secure_shell_key_model.py,sha256=IwLjOfRt6vHbdyN-YuaPJq04bJjxTJUCIM3_usNlOuo,4698
152
+ py4heappe/core/models/remove_secure_shell_key_model_obsolete.py,sha256=Zn0qqVx950UDSFOvi5y_pRWkfpaSRMyCcV7ZggWsJCg,4865
153
+ py4heappe/core/models/resource_allocation_type_ext.py,sha256=U-geSbC7L4cjt3VAWs3F8F3Ke7DJ3Kj5twl6-F5Maek,2535
154
+ py4heappe/core/models/resource_limitation_ext.py,sha256=8I_wVUajR0vvL9kJiISMWsaNRiY4IvAmOgLW4Ig-u0Q,4138
155
+ py4heappe/core/models/resource_usage_ext.py,sha256=eH2EXTRXIPHDptac4_K24R6cmU_z-2MzV4WDdxC9OQU,4721
156
+ py4heappe/core/models/scheduler_type.py,sha256=pHQZ0IF4iJ1AuZX1WOVkOm83J5T8gBVnTGfm66pGru8,2500
157
+ py4heappe/core/models/ssh_key_user_credentials_model.py,sha256=rpQPtSSm1oB9-nzGKQh_TldJwn_ZoYg84a0BctqDYgM,3883
158
+ py4heappe/core/models/submit_job_model.py,sha256=NjFLAXANgSdM4BNVRxP8Xhs-Hq8flH7-xz8or6bbpNw,4035
159
+ py4heappe/core/models/submitted_job_info_ext.py,sha256=fc9xxnu12FTvRJHg0Jt48fRUiPUWWfYxzqZymoKvxsg,8867
160
+ py4heappe/core/models/submitted_task_info_ext.py,sha256=mAta26bL5YpEaYm0Sv_l86dkbItTBlCrAwWXBBXInV8,10629
161
+ py4heappe/core/models/synchronizable_files_ext.py,sha256=Nmvq3MMJgBWvEYdn1B5XPs4OfJYcaT5dHt7ZPoHALZk,2536
162
+ py4heappe/core/models/task_detailed_report_ext.py,sha256=38kwBaS_4uhN7x1k-pkPPv0vhzNsPvbh18dC3EjiI40,9089
163
+ py4heappe/core/models/task_file_offset_ext.py,sha256=1rTkeCf1Q6Nfk78KVrcLhsWPzcxUrCG9316i6sbumME,4765
164
+ py4heappe/core/models/task_paralization_parameter_ext.py,sha256=5gzXgrhoGucSkIFXUp7hAm8WhtU-mO3A-rTNRt8xNxg,4884
165
+ py4heappe/core/models/task_priority_ext.py,sha256=PJlThKcFKVC78vf-JjvsHYQ7oE0TPiQjnv17EOCpN_0,2573
166
+ py4heappe/core/models/task_report_ext.py,sha256=qmgc6mGPuGfdm1wh0D7PBeIYcPu0OKDMBoWho3Sjh_s,7031
167
+ py4heappe/core/models/task_specification_ext.py,sha256=TFEY146haZFgVV9RIXzDoRKgcfKIBVDYU_GavceDVzU,22074
168
+ py4heappe/core/models/task_state_ext.py,sha256=h65yGB3j6vhaoN7VO9XJKU_6fgO9imExb9oIwPmo1Yw,2541
169
+ py4heappe/core/models/test_cluster_access_for_account_model.py,sha256=oxe4D90YpAnyXkYZDFdcp_lmZiGpG9CbB95rvAtSU2w,4849
170
+ py4heappe/core/models/test_cluster_access_for_account_model_obsolete.py,sha256=adf2ENsPS7EaGx0gIctM0_X80pLRZrIHOj1BUvSTm3U,4977
171
+ py4heappe/core/models/unauthorized_result.py,sha256=cMxoKhUwUGyqAgdjM-37LFBnakjFOHmSgLc_B-iML5A,3165
172
+ py4heappe/core/models/usage_type.py,sha256=wt1jHk2-1hhaf42kirYUZNmTOuNey1-jAnFmSPn3urA,2458
173
+ py4heappe/core/models/usage_type_ext.py,sha256=rrAk2V9rDnusaf1VbfPad6eP3r1rSBG8DhHw2i24xBQ,2470
174
+ py4heappe/core/models/user_group_detailed_report_ext.py,sha256=CkRulegD-CFQUhsoAflUFw7KxgyBXSOf-ant2tz8R8o,6769
175
+ py4heappe/core/models/user_group_list_report_ext.py,sha256=t-z-e-Vop0aPlemjqMXpsaYE3pcz9WCVtS1XLurALHM,6645
176
+ py4heappe/core/models/user_group_report_ext.py,sha256=xxeD429h7IrDCeUDWAwPIf5X6ZagLjlFqDeasGQycVM,6521
177
+ py4heappe/core/models/version_information_ext.py,sha256=ncGuZhUbxCp7o3X-AmCV_WD1bBuTi-Da9dztXJ6BrYs,4476
178
+ py4heappe-1.0.0.dist-info/licenses/LICENSE,sha256=PAKn98MkziZ4Ldn6oDDJXzV33pPYKQFTnFhhJVvHwN0,1081
179
+ py4heappe-1.0.0.dist-info/METADATA,sha256=Sm9zIWivIWPksvJpBIiJLKAbHLIq7tPFYpQqddqmBmc,5848
180
+ py4heappe-1.0.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
181
+ py4heappe-1.0.0.dist-info/entry_points.txt,sha256=_U_dR2cjAHSnlGtPHjGjA1YX6Yy4YOxFO864Gj_jVEo,49
182
+ py4heappe-1.0.0.dist-info/top_level.txt,sha256=BjjqgssIxozXGkFVLm0EpznnpiLvneaPWR079B_uCdA,33
183
+ py4heappe-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (78.1.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ py4heappe = py4heappe_cli:main
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 HEAppE
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
6
+ this software and associated documentation files (the "Software"), to deal in
7
+ the Software without restriction, including without limitation the rights to
8
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9
+ the Software, and to permit persons to whom the Software is furnished to do so,
10
+ subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17
+ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18
+ COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,3 @@
1
+ __init__
2
+ py4heappe
3
+ py4heappe_cli
py4heappe_cli.py ADDED
@@ -0,0 +1,22 @@
1
+ import typer
2
+
3
+ import py4heappe.cli.auth as auth
4
+ import py4heappe.cli.command_template as command_template
5
+ import py4heappe.cli.configuration as configuration
6
+ import py4heappe.cli.information as information
7
+ import py4heappe.cli.job_management as job_management
8
+ import py4heappe.cli.report as report
9
+
10
+ app = typer.Typer(no_args_is_help=True, pretty_exceptions_short=True, pretty_exceptions_show_locals=False)
11
+ app.add_typer(configuration.app, name="Conf", help="Configuration options")
12
+ app.add_typer(auth.app, name="Auth", help="Authentication methods")
13
+ app.add_typer(command_template.app, name="CmdTemp", help="Command templates management")
14
+ app.add_typer(information.app, name="Info", help="Information")
15
+ #app.add_typer(job_management.app, name="JobMgmt", help="HEAppE Job Management")
16
+ app.add_typer(report.app, name="Report", help="Reporting and usage")
17
+
18
+ def main():
19
+ app()
20
+
21
+ if __name__ == '__main__':
22
+ main()