connect-cli 26.15__tar.gz → 27.1__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 (289) hide show
  1. {connect_cli-26.15 → connect_cli-27.1}/PKG-INFO +8 -3
  2. {connect_cli-26.15 → connect_cli-27.1}/README.md +6 -1
  3. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/ccli.py +9 -0
  4. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/account/commands.py +1 -5
  5. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/constants.py +0 -2
  6. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/terminal.py +12 -8
  7. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/constants.py +0 -8
  8. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/sync.py +4 -6
  9. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/script.py +2 -1
  10. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/api.py +2 -1
  11. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/export.py +5 -11
  12. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/__init__.py +6 -2
  13. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/actions.py +4 -4
  14. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/items.py +6 -8
  15. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/media.py +5 -4
  16. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/params.py +2 -2
  17. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/templates.py +4 -2
  18. connect_cli-27.1/connect/cli/plugins/project/extension/constants.py +15 -0
  19. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/helpers.py +30 -5
  20. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/tfnapp.py.j2 +50 -0
  21. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/webapp.py.j2 +78 -5
  22. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/docker-compose.yml.j2 +1 -1
  23. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/pyproject.toml.j2 +4 -1
  24. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_tfnapp.py.j2 +40 -0
  25. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_webapp.py.j2 +113 -0
  26. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/transformations/copy.html.j2 +26 -0
  27. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/transformations/manual.html.j2 +56 -0
  28. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/components.js.j2 +2 -0
  29. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/transformations/copy.js.j2 +14 -0
  30. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/transformations/manual.js.j2 +15 -0
  31. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages.js.j2 +342 -0
  32. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/utils.js.j2 +13 -0
  33. connect_cli-27.1/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/manual.css.j2 +40 -0
  34. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/components.spec.js.j2 +8 -2
  35. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/webpack.config.js.j2 +16 -3
  36. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/utils.py +20 -5
  37. connect_cli-27.1/connect/cli/plugins/project/extension/validators.py +29 -0
  38. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/wizard.py +14 -5
  39. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/validations.py +8 -11
  40. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/wizard.py +1 -0
  41. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/validators.py +20 -2
  42. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/commands.py +1 -5
  43. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/helpers.py +8 -8
  44. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/export.py +3 -2
  45. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/translation_attr_sync.py +3 -6
  46. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/translation_sync.py +4 -2
  47. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/activate.py +2 -5
  48. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/constants.py +0 -7
  49. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/export.py +1 -4
  50. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/primarize.py +2 -6
  51. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/translation_sync.py +2 -5
  52. {connect_cli-26.15 → connect_cli-27.1}/pyproject.toml +37 -4
  53. connect_cli-26.15/connect/cli/plugins/project/extension/constants.py +0 -100
  54. connect_cli-26.15/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages.js.j2 +0 -76
  55. {connect_cli-26.15 → connect_cli-27.1}/LICENSE +0 -0
  56. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/.github/workflows/build.yml +0 -0
  57. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/.gitignore +0 -0
  58. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/LICENSE +0 -0
  59. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/README.md +0 -0
  60. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/poetry.lock +0 -0
  61. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/pyproject.toml +0 -0
  62. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/__init__.py +0 -0
  63. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/Readme.md +0 -0
  64. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/__init__.py +0 -0
  65. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/entrypoint.py +0 -0
  66. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests/templates/xlsx/template.xlsx +0 -0
  67. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/Readme.md +0 -0
  68. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/__init__.py +0 -0
  69. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/entrypoint.py +0 -0
  70. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/billing_requests_line_item/templates/xlsx/template.xlsx +0 -0
  71. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/Readme.md +0 -0
  72. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/__init__.py +0 -0
  73. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/entrypoint.py +0 -0
  74. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/contract_list/templates/xlsx/template.xlsx +0 -0
  75. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/Readme.md +0 -0
  76. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/__init__.py +0 -0
  77. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/entrypoint.py +0 -0
  78. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/customers_list/templates/xlsx/template.xlsx +0 -0
  79. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/Readme.md +0 -0
  80. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/__init__.py +0 -0
  81. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/constants.py +0 -0
  82. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/entrypoint.py +0 -0
  83. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/img/ClouBlue-Logo.png +0 -0
  84. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.css +0 -0
  85. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/executive_fullfilment_requests/templates/pdf/template.html.j2 +0 -0
  86. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/Readme.md +0 -0
  87. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/__init__.py +0 -0
  88. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/entrypoint.py +0 -0
  89. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests/templates/xlsx/template.xlsx +0 -0
  90. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/Readme.md +0 -0
  91. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/__init__.py +0 -0
  92. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/entrypoint.py +0 -0
  93. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_failed/templates/xlsx/template.xlsx +0 -0
  94. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/Readme.md +0 -0
  95. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/__init__.py +0 -0
  96. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/entrypoint.py +0 -0
  97. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/fulfillment_requests_line_item/templates/xlsx/template.xlsx +0 -0
  98. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/Readme.md +0 -0
  99. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/__init__.py +0 -0
  100. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/entrypoint.py +0 -0
  101. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/helpdesk/templates/xlsx/template.xlsx +0 -0
  102. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/Readme.md +0 -0
  103. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/__init__.py +0 -0
  104. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/entrypoint.py +0 -0
  105. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_list/templates/xlsx/template.xlsx +0 -0
  106. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/Readme.md +0 -0
  107. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/__init__.py +0 -0
  108. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/entrypoint.py +0 -0
  109. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/listing_requests/templates/xlsx/template.xlsx +0 -0
  110. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/Readme.md +0 -0
  111. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/__init__.py +0 -0
  112. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/entrypoint.py +0 -0
  113. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-connect-alone.png +0 -0
  114. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-logo.png +0 -0
  115. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-small-color-disabled.png +0 -0
  116. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cloudblue-small-color-enabled.png +0 -0
  117. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/connect-logo.png +0 -0
  118. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/cover-bg.png +0 -0
  119. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/assets/imc-small-color.png +0 -0
  120. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-Black.png +0 -0
  121. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo-White.png +0 -0
  122. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/ClouBlue-Logo.png +0 -0
  123. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/accordo.png +0 -0
  124. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-blue.png +0 -0
  125. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/acronis-white.png +0 -0
  126. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/adobe.jpeg +0 -0
  127. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/airtame.png +0 -0
  128. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/allyhub.png +0 -0
  129. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/alsid.png +0 -0
  130. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/anchor.png +0 -0
  131. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/australia.png +0 -0
  132. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/austria.png +0 -0
  133. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/aws.png +0 -0
  134. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/belgium.png +0 -0
  135. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/brazil.png +0 -0
  136. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/canada.png +0 -0
  137. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/chile.png +0 -0
  138. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/colombia.png +0 -0
  139. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/france.png +0 -0
  140. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/germany.png +0 -0
  141. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/hong-kong.png +0 -0
  142. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/icon.png +0 -0
  143. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/india.png +0 -0
  144. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/italy.png +0 -0
  145. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/malaysia.png +0 -0
  146. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/mexico.png +0 -0
  147. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/netherlands.png +0 -0
  148. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/new-zealand.png +0 -0
  149. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/singapore.png +0 -0
  150. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/spain.png +0 -0
  151. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/sweden.png +0 -0
  152. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/switzerland.png +0 -0
  153. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/turkey.png +0 -0
  154. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uae.png +0 -0
  155. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/uk.png +0 -0
  156. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/img/usa.png +0 -0
  157. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.css +0 -0
  158. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/products_catalog/templates/pdf/template.html.j2 +0 -0
  159. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/Readme.md +0 -0
  160. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/__init__.py +0 -0
  161. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/entrypoint.py +0 -0
  162. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/sla/templates/xlsx/template.xlsx +0 -0
  163. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/Readme.md +0 -0
  164. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/__init__.py +0 -0
  165. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/entrypoint.py +0 -0
  166. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/subscription_list/templates/xlsx/template.xlsx +0 -0
  167. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/Readme.md +0 -0
  168. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/__init__.py +0 -0
  169. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/entrypoint.py +0 -0
  170. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_list/templates/xlsx/template.xlsx +0 -0
  171. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/Readme.md +0 -0
  172. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/__init__.py +0 -0
  173. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/entrypoint.py +0 -0
  174. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/tier_configuration_requests/templates/xlsx/template.xlsx +0 -0
  175. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/Readme.md +0 -0
  176. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/__init__.py +0 -0
  177. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/entrypoint.py +0 -0
  178. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/usage_in_subscription/templates/xlsx/template.xlsx +0 -0
  179. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports/utils.py +0 -0
  180. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/reports.json +0 -0
  181. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/sonar-project.properties +0 -0
  182. {connect_cli-26.15 → connect_cli-27.1}/connect/.data/connect_reports/tox.ini +0 -0
  183. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/__init__.py +0 -0
  184. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/__init__.py +0 -0
  185. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/account/__init__.py +0 -0
  186. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/account/helpers.py +1 -1
  187. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/base.py +0 -0
  188. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/config.py +1 -1
  189. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/http.py +1 -1
  190. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/plugins.py +0 -0
  191. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/core/utils.py +1 -1
  192. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/__init__.py +0 -0
  193. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/__init__.py +0 -0
  194. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/commands.py +0 -0
  195. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/customer/export.py +1 -1
  196. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/locale/__init__.py +0 -0
  197. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/locale/commands.py +0 -0
  198. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/__init__.py +1 -1
  199. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/commands.py +0 -0
  200. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/context.py +0 -0
  201. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/play/save.py +0 -0
  202. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/__init__.py +0 -0
  203. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/clone.py +1 -1
  204. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/commands.py +4 -4
  205. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/constants.py +0 -0
  206. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/capabilities.py +1 -1
  207. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/configuration_values.py +0 -0
  208. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/general.py +3 -3
  209. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/sync/static_resources.py +2 -2
  210. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/product/utils.py +0 -0
  211. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/__init__.py +0 -0
  212. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/commands.py +0 -0
  213. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/__init__.py +0 -0
  214. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/__init__.py.j2 +0 -0
  215. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/anvil.py.j2 +0 -0
  216. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/events.py.j2 +0 -0
  217. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/extension.json.j2 +0 -0
  218. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/schemas.py.j2 +0 -0
  219. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/${package_name}/static/.gitkeep.j2 +0 -0
  220. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.${project_slug}_dev.env.j2 +0 -0
  221. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.eslintrc.yaml.j2 +0 -0
  222. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
  223. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.github/workflows/test.yml.j2 +0 -0
  224. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
  225. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/CHANGELOG.md.j2 +0 -0
  226. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/Dockerfile.j2 +0 -0
  227. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
  228. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
  229. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
  230. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/fileMock.js.j2 +0 -0
  231. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/__mocks__/styleMock.js.j2 +0 -0
  232. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/babel.config.json.j2 +0 -0
  233. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/jest.config.js.j2 +0 -0
  234. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/package.json.j2 +0 -0
  235. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
  236. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
  237. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
  238. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_anvil.py.j2 +0 -0
  239. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/tests/test_events.py.j2 +0 -0
  240. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/images/mkp.svg.j2 +0 -0
  241. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/index.html.j2 +0 -0
  242. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/pages/settings.html.j2 +0 -0
  243. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/index.js.j2 +0 -0
  244. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/src/pages/settings.js.j2 +0 -0
  245. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/styles/index.css.j2 +0 -0
  246. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/pages.spec.js.j2 +0 -0
  247. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/extension/templates/bootstrap/${project_slug}/ui/tests/utils.spec.js.j2 +0 -0
  248. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/renderer.py +3 -3
  249. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/__init__.py +0 -0
  250. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/helpers.py +3 -3
  251. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/README.md.j2 +0 -0
  252. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/__init__.py.j2 +0 -0
  253. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/entrypoint.py.j2 +0 -0
  254. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/pdf/template.css.j2 +0 -0
  255. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/pdf/template.html.j2.j2 +0 -0
  256. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/add/${initial_report_slug}/templates/xml/template.xml.j2.j2 +0 -0
  257. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/README.md.j2 +0 -0
  258. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/__init__.py.j2 +0 -0
  259. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/entrypoint.py.j2 +0 -0
  260. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/pdf/template.css.j2 +0 -0
  261. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/pdf/template.html.j2.j2 +0 -0
  262. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/${package_name}/${initial_report_slug}/templates/xml/template.xml.j2.j2 +0 -0
  263. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.flake8.j2 +0 -0
  264. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.github/workflows/build.yml.j2 +0 -0
  265. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/.gitignore.j2 +0 -0
  266. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/HOWTO.md.j2 +0 -0
  267. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/LICENSE.j2 +0 -0
  268. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/README.md.j2 +0 -0
  269. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/poetry.toml.j2 +0 -0
  270. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/pyproject.toml.j2 +0 -0
  271. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/reports.json.j2 +0 -0
  272. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/__init__.py.j2 +0 -0
  273. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/conftest.py.j2 +0 -0
  274. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/report/templates/bootstrap/${project_slug}/tests/test_${project_slug}.py.j2 +0 -0
  275. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/project/utils.py +1 -1
  276. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/__init__.py +0 -0
  277. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/constants.py +0 -0
  278. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/utils.py +1 -1
  279. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/report/wizard.py +3 -3
  280. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/__init__.py +0 -0
  281. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/base.py +0 -0
  282. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/constants.py +0 -0
  283. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/exceptions.py +0 -0
  284. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/sync_stats.py +0 -0
  285. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/translations_synchronizers.py +2 -2
  286. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/shared/utils.py +1 -1
  287. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/__init__.py +0 -0
  288. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/commands.py +1 -1
  289. {connect_cli-26.15 → connect_cli-27.1}/connect/cli/plugins/translation/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: connect-cli
3
- Version: 26.15
3
+ Version: 27.1
4
4
  Summary: CloudBlue Connect Command Line Interface
5
5
  Home-page: https://connect.cloudblue.com
6
6
  License: Apache-2.0
@@ -22,7 +22,7 @@ Classifier: Programming Language :: Python :: 3.9
22
22
  Classifier: Topic :: Utilities
23
23
  Requires-Dist: Jinja2 (>=3.1.2,<4.0.0)
24
24
  Requires-Dist: click (>=8.1.3,<9.0.0)
25
- Requires-Dist: connect-eaas-core (>=26.13,<27)
25
+ Requires-Dist: connect-eaas-core (>=27.13,<28)
26
26
  Requires-Dist: connect-markdown-renderer (>=2.0.1,<3)
27
27
  Requires-Dist: connect-openapi-client (>=25.15)
28
28
  Requires-Dist: connect-reports-core (>=26.0.0,<27.0.0)
@@ -43,7 +43,7 @@ Description-Content-Type: text/markdown
43
43
 
44
44
  # CloudBlue Connect Command Line Interface
45
45
 
46
- ![pyversions](https://img.shields.io/pypi/pyversions/connect-cli.svg) [![PyPi Status](https://img.shields.io/pypi/v/connect-cli.svg)](https://pypi.org/project/connect-cli/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/connect-cli) ![Docker Pulls](https://img.shields.io/docker/pulls/cloudblueconnect/connect-cli) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/cloudblue/connect-cli/Build%20Connect%20Command%20Line%20Client) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=coverage)](https://sonarcloud.io/summary/new_code?id=connect-cli) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=connect-cli)
46
+ ![pyversions](https://img.shields.io/pypi/pyversions/connect-cli.svg) [![PyPi Status](https://img.shields.io/pypi/v/connect-cli.svg)](https://pypi.org/project/connect-cli/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/connect-cli) ![Docker Pulls](https://img.shields.io/docker/pulls/cloudblueconnect/connect-cli) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/cloudblue/connect-cli/build.yml?branch=master) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=coverage)](https://sonarcloud.io/summary/new_code?id=connect-cli) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=connect-cli)
47
47
 
48
48
  ## Introduction
49
49
 
@@ -113,6 +113,11 @@ You can download its zip file from the [Github Releases](https://github.com/clou
113
113
  * [Projects](docs/project_usage.md)
114
114
 
115
115
 
116
+ ## Development
117
+ We use `isort` library to order and format our imports, and we check it using `flake8-isort` library (automatically on `flake8` run).
118
+ For convenience you may run `poetry run isort .` to order imports.
119
+
120
+
116
121
  ## Run tests
117
122
 
118
123
  `connect-cli` uses [poetry](https://python-poetry.org/) for dependencies management and packaging.
@@ -1,6 +1,6 @@
1
1
  # CloudBlue Connect Command Line Interface
2
2
 
3
- ![pyversions](https://img.shields.io/pypi/pyversions/connect-cli.svg) [![PyPi Status](https://img.shields.io/pypi/v/connect-cli.svg)](https://pypi.org/project/connect-cli/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/connect-cli) ![Docker Pulls](https://img.shields.io/docker/pulls/cloudblueconnect/connect-cli) ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/cloudblue/connect-cli/Build%20Connect%20Command%20Line%20Client) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=coverage)](https://sonarcloud.io/summary/new_code?id=connect-cli) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=connect-cli)
3
+ ![pyversions](https://img.shields.io/pypi/pyversions/connect-cli.svg) [![PyPi Status](https://img.shields.io/pypi/v/connect-cli.svg)](https://pypi.org/project/connect-cli/) ![PyPI - Downloads](https://img.shields.io/pypi/dm/connect-cli) ![Docker Pulls](https://img.shields.io/docker/pulls/cloudblueconnect/connect-cli) ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/cloudblue/connect-cli/build.yml?branch=master) [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=coverage)](https://sonarcloud.io/summary/new_code?id=connect-cli) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=connect-cli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=connect-cli)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -70,6 +70,11 @@ You can download its zip file from the [Github Releases](https://github.com/clou
70
70
  * [Projects](docs/project_usage.md)
71
71
 
72
72
 
73
+ ## Development
74
+ We use `isort` library to order and format our imports, and we check it using `flake8-isort` library (automatically on `flake8` run).
75
+ For convenience you may run `poetry run isort .` to order imports.
76
+
77
+
73
78
  ## Run tests
74
79
 
75
80
  `connect-cli` uses [poetry](https://python-poetry.org/) for dependencies management and packaging.
@@ -2,6 +2,9 @@
2
2
 
3
3
  # This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
4
4
  # Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
5
+ import io
6
+ import sys
7
+
5
8
  import click
6
9
 
7
10
  from connect.cli.core.base import cli
@@ -10,6 +13,7 @@ from connect.cli.core.plugins import load_plugins
10
13
 
11
14
 
12
15
  def main():
16
+ _set_stdout_unbuffered()
13
17
  _ignore_openpyxl_warnings()
14
18
  try:
15
19
  import uvloop
@@ -44,5 +48,10 @@ def _ignore_openpyxl_warnings():
44
48
  warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl.worksheet._reader')
45
49
 
46
50
 
51
+ def _set_stdout_unbuffered(): # pragma: no cover
52
+ if 'pytest' not in sys.modules:
53
+ sys.stdout = io.TextIOWrapper(open(sys.stdout.fileno(), 'wb', 0), write_through=True)
54
+
55
+
47
56
  if __name__ == '__main__':
48
57
  main() # pragma: no cover
@@ -6,11 +6,7 @@
6
6
  import click
7
7
  from click import ClickException
8
8
 
9
- from connect.cli.core.account.helpers import (
10
- activate_account,
11
- add_account,
12
- remove_account,
13
- )
9
+ from connect.cli.core.account.helpers import activate_account, add_account, remove_account
14
10
  from connect.cli.core.config import pass_config
15
11
  from connect.cli.core.constants import DEFAULT_ENDPOINT
16
12
  from connect.cli.core.terminal import console
@@ -4,8 +4,6 @@
4
4
  # Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
5
5
 
6
6
  DEFAULT_ENDPOINT = 'https://api.connect.cloudblue.com/public/v1'
7
- DEFAULT_USER_AGENT = 'CloudBlue Connect CLI/'
8
- DEFAULT_BAR_FORMAT = '{desc:<70.69}{percentage:3.0f}%|{bar:30}{r_bar}'
9
7
 
10
8
  CAIRO_NOT_FOUND_ERROR = """Connect CLI depends on Cairo which is not present on the system.
11
9
  If so, please follow the instructions to install it at https://github.com/cloudblue/connect-cli
@@ -1,23 +1,27 @@
1
- import os
2
1
  import contextlib
2
+ import os
3
3
 
4
4
  from click.exceptions import Abort
5
+ from connect.utils.terminal.markdown import render
5
6
  from rich import box
6
7
  from rich.console import Console as _Console, Group
7
8
  from rich.live import Live
8
- from rich.status import Status as _Status
9
- from rich.style import Style
10
9
  from rich.panel import Panel
11
- from rich.prompt import Confirm
12
10
  from rich.progress import (
13
- BarColumn, MofNCompleteColumn, Progress, SpinnerColumn,
14
- TaskProgressColumn, TextColumn, TimeElapsedColumn,
11
+ BarColumn,
12
+ MofNCompleteColumn,
13
+ Progress,
14
+ SpinnerColumn,
15
+ TaskProgressColumn,
16
+ TextColumn,
17
+ TimeElapsedColumn,
15
18
  )
19
+ from rich.prompt import Confirm
20
+ from rich.status import Status as _Status
21
+ from rich.style import Style
16
22
  from rich.table import Table
17
23
  from rich.text import Text
18
24
 
19
- from connect.utils.terminal.markdown import render
20
-
21
25
 
22
26
  def get_style(
23
27
  fg=None,
@@ -20,11 +20,3 @@ COL_HEADERS = {
20
20
  'S': 'Technical Contact Email',
21
21
  'T': 'Technical Contact Phone',
22
22
  }
23
-
24
- SYNC_RESULT_OUTPUT = """
25
- # Results of synchronization
26
-
27
-
28
- | Module | Processed | Created | Updated | Deleted | Skipped | Errors |
29
- |:--------|--------:| --------:|--------:|----------:|----------:|----------:|
30
- """
@@ -1,20 +1,18 @@
1
1
  import uuid
2
2
  from collections import namedtuple
3
+ from zipfile import BadZipFile
3
4
 
4
5
  import phonenumbers
5
6
  from click import ClickException
6
-
7
7
  from connect.client import ClientError, R
8
-
9
- from zipfile import BadZipFile
10
-
11
8
  from openpyxl import load_workbook
12
9
  from openpyxl.utils.exceptions import InvalidFileException
13
10
 
14
11
  from connect.cli.core.terminal import console
15
- from connect.cli.plugins.shared.sync_stats import SynchronizerStatsSingleModule
16
- from connect.cli.plugins.shared.exceptions import SheetNotFoundError
17
12
  from connect.cli.plugins.customer.constants import COL_HEADERS
13
+ from connect.cli.plugins.shared.exceptions import SheetNotFoundError
14
+ from connect.cli.plugins.shared.sync_stats import SynchronizerStatsSingleModule
15
+
18
16
 
19
17
  fields = (v.replace(' ', '_').lower() for v in COL_HEADERS.values())
20
18
 
@@ -5,9 +5,10 @@
5
5
  import re
6
6
  from typing import List
7
7
 
8
- from connect.cli.plugins.play.context import Context
9
8
  from connect.client import ConnectClient
10
9
 
10
+ from connect.cli.plugins.play.context import Context
11
+
11
12
 
12
13
  class OptionWrapper:
13
14
  def __init__(self, *args, **kwargs):
@@ -3,9 +3,10 @@
3
3
  # This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
4
4
  # Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
5
5
 
6
- from connect.cli.core.http import handle_http_error
7
6
  from connect.client import ClientError, R
8
7
 
8
+ from connect.cli.core.http import handle_http_error
9
+
9
10
 
10
11
  def create_unit(client, data):
11
12
  try:
@@ -3,38 +3,32 @@
3
3
  # This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
4
4
  # Copyright (c) 2019-2022 Ingram Micro. All Rights Reserved.
5
5
 
6
- import os
7
6
  import copy
8
7
  import json
8
+ import os
9
9
  from datetime import datetime
10
10
  from urllib import parse
11
11
 
12
12
  import requests
13
13
  from click import ClickException
14
+ from connect.client import ClientError, R
14
15
  from openpyxl import Workbook
15
16
  from openpyxl.styles import Alignment, Font, PatternFill
16
- from openpyxl.styles.colors import Color, WHITE
17
+ from openpyxl.styles.colors import WHITE, Color
17
18
  from openpyxl.utils import quote_sheetname
18
19
  from openpyxl.worksheet.datavalidation import DataValidation
19
20
 
20
- from connect.cli.core.http import (
21
- format_http_status,
22
- handle_http_error,
23
- )
21
+ from connect.cli.core.http import format_http_status, handle_http_error
24
22
  from connect.cli.core.utils import validate_output_options
25
23
  from connect.cli.plugins.product.constants import PARAM_TYPES
26
24
  from connect.cli.plugins.product.utils import get_json_object_for_param
27
- from connect.cli.plugins.shared.export import (
28
- alter_attributes_sheet,
29
- get_translation_workbook,
30
- )
25
+ from connect.cli.plugins.shared.export import alter_attributes_sheet, get_translation_workbook
31
26
  from connect.cli.plugins.shared.utils import (
32
27
  fill_translation_row,
33
28
  get_col_headers_by_ws_type,
34
29
  get_col_limit_by_ws_type,
35
30
  setup_locale_data_validation,
36
31
  )
37
- from connect.client import ClientError, R
38
32
 
39
33
 
40
34
  def _setup_locales_list(ws, client):
@@ -1,9 +1,13 @@
1
1
  from connect.cli.plugins.product.sync.actions import ActionsSynchronizer # noqa: F401
2
2
  from connect.cli.plugins.product.sync.capabilities import CapabilitiesSynchronizer # noqa: F401
3
- from connect.cli.plugins.product.sync.configuration_values import ConfigurationValuesSynchronizer # noqa: F401
3
+ from connect.cli.plugins.product.sync.configuration_values import ( # noqa: F401
4
+ ConfigurationValuesSynchronizer,
5
+ )
4
6
  from connect.cli.plugins.product.sync.general import GeneralSynchronizer # noqa: F401
5
7
  from connect.cli.plugins.product.sync.items import ItemSynchronizer # noqa: F401
6
8
  from connect.cli.plugins.product.sync.media import MediaSynchronizer # noqa: F401
7
9
  from connect.cli.plugins.product.sync.params import ParamsSynchronizer # noqa: F401
8
- from connect.cli.plugins.product.sync.static_resources import StaticResourcesSynchronizer # noqa: F401
10
+ from connect.cli.plugins.product.sync.static_resources import ( # noqa: F401
11
+ StaticResourcesSynchronizer,
12
+ )
9
13
  from connect.cli.plugins.product.sync.templates import TemplatesSynchronizer # noqa: F401
@@ -7,12 +7,12 @@ import re
7
7
  from collections import namedtuple
8
8
  from functools import partial
9
9
 
10
- from connect.cli.plugins.shared.base import ProductSynchronizer
11
- from connect.cli.plugins.shared.constants import (
12
- ACTIONS_HEADERS,
13
- )
14
10
  from connect.client import ClientError
15
11
 
12
+ from connect.cli.plugins.shared.base import ProductSynchronizer
13
+ from connect.cli.plugins.shared.constants import ACTIONS_HEADERS
14
+
15
+
16
16
  fields = (v.replace(' ', '_').lower() for v in ACTIONS_HEADERS.values())
17
17
 
18
18
  _RowData = namedtuple('RowData', fields)
@@ -5,13 +5,8 @@
5
5
 
6
6
  from collections import namedtuple
7
7
 
8
- from connect.cli.plugins.product.constants import (
9
- BILLING_PERIOD,
10
- COMMITMENT,
11
- PRECISIONS,
12
- )
13
- from connect.cli.plugins.shared.base import ProductSynchronizer
14
- from connect.cli.plugins.shared.constants import ITEMS_COLS_HEADERS
8
+ from connect.client.rql import R
9
+
15
10
  from connect.cli.plugins.product.api import (
16
11
  create_item,
17
12
  create_unit,
@@ -20,7 +15,10 @@ from connect.cli.plugins.product.api import (
20
15
  get_item_by_mpn,
21
16
  update_item,
22
17
  )
23
- from connect.client.rql import R
18
+ from connect.cli.plugins.product.constants import BILLING_PERIOD, COMMITMENT, PRECISIONS
19
+ from connect.cli.plugins.shared.base import ProductSynchronizer
20
+ from connect.cli.plugins.shared.constants import ITEMS_COLS_HEADERS
21
+
24
22
 
25
23
  fields = (v.replace(' ', '_').lower() for v in ITEMS_COLS_HEADERS.values())
26
24
 
@@ -2,16 +2,17 @@
2
2
 
3
3
  # This file is part of the Ingram Micro Cloud Blue Connect connect-cli.
4
4
  # Copyright (c) 2019-2021 Ingram Micro. All Rights Reserved.
5
+ import json
5
6
  import os
6
7
  from collections import namedtuple
7
- from urllib.parse import urlparse
8
- import json
9
8
  from mimetypes import guess_type
9
+ from urllib.parse import urlparse
10
10
 
11
- from connect.cli.plugins.shared.constants import MEDIA_COLS_HEADERS
12
- from connect.cli.plugins.shared.base import ProductSynchronizer
13
11
  from connect.client import ClientError
14
12
 
13
+ from connect.cli.plugins.shared.base import ProductSynchronizer
14
+ from connect.cli.plugins.shared.constants import MEDIA_COLS_HEADERS
15
+
15
16
 
16
17
  fields = (v.replace(' ', '_').lower() for v in MEDIA_COLS_HEADERS.values())
17
18
 
@@ -7,13 +7,13 @@ import re
7
7
  from collections import namedtuple
8
8
  from json.decoder import JSONDecodeError
9
9
 
10
+ from connect.client import ClientError
10
11
  from openpyxl.styles import Alignment
11
12
 
12
13
  from connect.cli.plugins.product.constants import PARAM_TYPES
14
+ from connect.cli.plugins.product.utils import ParamSwitchNotSupported, get_json_object_for_param
13
15
  from connect.cli.plugins.shared.base import ProductSynchronizer
14
16
  from connect.cli.plugins.shared.constants import PARAMS_COLS_HEADERS
15
- from connect.cli.plugins.product.utils import get_json_object_for_param, ParamSwitchNotSupported
16
- from connect.client import ClientError
17
17
 
18
18
 
19
19
  fields = (v.replace(' ', '_').lower() for v in PARAMS_COLS_HEADERS.values())
@@ -5,10 +5,12 @@
5
5
 
6
6
  from collections import namedtuple
7
7
 
8
- from connect.cli.plugins.shared.constants import TEMPLATES_HEADERS
9
- from connect.cli.plugins.shared.base import ProductSynchronizer
10
8
  from connect.client import ClientError
11
9
 
10
+ from connect.cli.plugins.shared.base import ProductSynchronizer
11
+ from connect.cli.plugins.shared.constants import TEMPLATES_HEADERS
12
+
13
+
12
14
  fields = (v.replace(' ', '_').lower() for v in TEMPLATES_HEADERS.values())
13
15
 
14
16
  _RowData = namedtuple('RowData', fields)
@@ -0,0 +1,15 @@
1
+ # Copyright © 2021 CloudBlue. All rights reserved.
2
+
3
+
4
+ PYPI_EXTENSION_RUNNER_URL = 'https://pypi.org/pypi/connect-extension-runner/json'
5
+
6
+ PRE_COMMIT_HOOK = """#! /bin/sh
7
+
8
+ set -e
9
+
10
+ if [ -f /usr/local/bin/extension-check-static ]; then
11
+ exec /usr/local/bin/extension-check-static {package_name}
12
+ else
13
+ exec docker-compose run -T {project_slug}_bash /usr/local/bin/extension-check-static {package_name}
14
+ fi
15
+ """
@@ -4,12 +4,11 @@ import os
4
4
 
5
5
  import yaml
6
6
  from click.exceptions import ClickException
7
+ from connect.eaas.core.validation.validators import get_validators
7
8
  from interrogatio.core.dialog import dialogus
8
9
 
9
10
  from connect.cli import get_version
10
11
  from connect.cli.core.terminal import console
11
- from connect.cli.plugins.project.utils import show_validation_result_table
12
- from connect.cli.plugins.project.renderer import BoilerplateRenderer
13
12
  from connect.cli.plugins.project.extension.utils import (
14
13
  get_event_definitions,
15
14
  get_pypi_runner_version,
@@ -20,7 +19,9 @@ from connect.cli.plugins.project.extension.wizard import (
20
19
  get_questions,
21
20
  get_summary,
22
21
  )
23
- from connect.eaas.core.validation.validators import get_validators
22
+ from connect.cli.plugins.project.renderer import BoilerplateRenderer
23
+ from connect.cli.plugins.project.utils import show_validation_result_table
24
+ from connect.cli.plugins.project.validators import ProjectDirValidator
24
25
 
25
26
 
26
27
  def bootstrap_extension_project( # noqa: CCR001
@@ -53,6 +54,12 @@ def bootstrap_extension_project( # noqa: CCR001
53
54
  except Exception as e:
54
55
  raise ClickException(f'Can not load or parse answers from {load_answers}: {e}')
55
56
 
57
+ if not overwrite:
58
+ for q in questions:
59
+ if q['name'] == 'project_slug':
60
+ q['validators'].append(ProjectDirValidator(output_dir))
61
+ break
62
+
56
63
  answers = dialogus(
57
64
  questions,
58
65
  'Extension project bootstrap',
@@ -92,6 +99,8 @@ def bootstrap_extension_project( # noqa: CCR001
92
99
  if answers['use_github_actions'] == 'n':
93
100
  exclude.extend(['.github', '.github/**/*'])
94
101
 
102
+ application_types = answers.get('application_types', [])
103
+
95
104
  if answers.get('webapp_supports_ui') != 'y':
96
105
  exclude.extend([
97
106
  os.path.join('${package_name}', 'static', '.gitkeep'),
@@ -106,9 +115,25 @@ def bootstrap_extension_project( # noqa: CCR001
106
115
  'jest.config.js.j2',
107
116
  ])
108
117
 
109
- application_types = answers.get('application_types', [])
118
+ elif 'tfnapp' not in application_types:
119
+ exclude.extend([
120
+ 'ui/pages/transformations',
121
+ 'ui/pages/transformations/*',
122
+ 'ui/src/pages/transformations',
123
+ 'ui/src/pages/transformations/*',
124
+ 'ui/styles/manual.css.j2',
125
+ ])
126
+ else:
127
+ exclude.extend([
128
+ 'ui/pages/index.html.j2',
129
+ 'ui/pages/settings.html.j2',
130
+ 'ui/src/pages/index.js.j2',
131
+ 'ui/src/pages/settings.js.j2',
132
+ 'ui/tests/pages.spec.js.j2',
133
+ 'ui/tests/utils.spec.js.j2',
134
+ ])
110
135
 
111
- for app_type in ['anvil', 'events', 'webapp']:
136
+ for app_type in ['anvil', 'events', 'webapp', 'tfnapp']:
112
137
  if app_type not in application_types:
113
138
  exclude.append(
114
139
  os.path.join(
@@ -0,0 +1,50 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (c) {% now 'utc', '%Y' %}, {{ author }}
4
+ # All rights reserved.
5
+ #
6
+ from connect.eaas.core.decorators import manual_transformation, transformation{% if include_variables_example == 'y' -%}, variables{% endif %}
7
+ from connect.eaas.core.extension import TransformationsApplicationBase
8
+ from connect.eaas.core.responses import RowTransformationResponse
9
+
10
+
11
+ {% if include_variables_example == 'y' -%}
12
+ @variables([{
13
+ 'name': 'VAR_NAME_1',
14
+ 'initial_value': 'VAR_VALUE_1',
15
+ 'secure': False,
16
+ }])
17
+ {% endif -%}
18
+ class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}TransformationsApplication(TransformationsApplicationBase):
19
+ @transformation(
20
+ name='Manual transformation',
21
+ description=(
22
+ 'This transformation function allows to describe a manual '
23
+ 'procedure to be done.'
24
+ ),
25
+ edit_dialog_ui='/static/transformations/manual.html',
26
+ )
27
+ @manual_transformation()
28
+ {% if use_asyncio == 'y' %}async {% endif %}def manual_transformation(self, row: dict):
29
+ pass
30
+
31
+ @transformation(
32
+ name='Copy Column(s)',
33
+ description=(
34
+ 'This transformation function allows copy values from Input to Output columns, '
35
+ 'which can be used in case of change column name in the output data or '
36
+ 'create a copy of values in table.'
37
+ ),
38
+ edit_dialog_ui='/static/transformations/copy.html',
39
+ )
40
+ def copy_columns(self, row: dict):
41
+ tfn_settings = (
42
+ self.transformation_request['transformation']['settings']
43
+ )
44
+ result = {}
45
+
46
+ for setting in tfn_settings:
47
+ result[setting['to']] = row[setting['from']]
48
+
49
+ return RowTransformationResponse.done(result)
50
+
@@ -3,11 +3,19 @@
3
3
  # Copyright (c) {% now 'utc', '%Y' %}, {{ author }}
4
4
  # All rights reserved.
5
5
  #
6
+ {%- if extension_type == 'transformations' %}
7
+ from connect.eaas.core.decorators import (
8
+ router,
9
+ web_app,
10
+ )
11
+ from connect.eaas.core.extension import WebApplicationBase
12
+ from fastapi.responses import JSONResponse
13
+ {%- else %}
6
14
  from typing import List
7
15
 
8
16
  from connect.client import {% if use_asyncio == 'y' %}Async{% endif %}ConnectClient{% if extension_type == 'multiaccount' %}, R{% endif %}
9
17
  from connect.eaas.core.decorators import (
10
- {%- if webapp_supports_ui == 'y' %}
18
+ {%- if webapp_supports_ui == 'y'%}
11
19
  account_settings_page,
12
20
  module_pages,
13
21
  {%- endif %}
@@ -35,6 +43,7 @@ from connect.eaas.core.inject.synchronous import get_extension_client
35
43
  from fastapi import Depends
36
44
 
37
45
  from {{ package_name }}.schemas import Marketplace{% if extension_type == 'multiaccount' %}, Settings{% endif %}
46
+ {%- endif %}
38
47
 
39
48
 
40
49
  {% if include_variables_example == 'y' -%}
@@ -52,13 +61,13 @@ from {{ package_name }}.schemas import Marketplace{% if extension_type == 'multi
52
61
  ])
53
62
  {% endif -%}
54
63
  @web_app(router)
55
- {% if webapp_supports_ui == 'y' -%}
64
+ {% if webapp_supports_ui == 'y' and extension_type != 'transformations' -%}
56
65
  @account_settings_page('Chart settings', '/static/settings.html')
57
66
  @module_pages('Chart', '/static/index.html')
58
67
  {% endif -%}
59
68
  class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}WebApplication(WebApplicationBase):
60
69
 
61
- @router.get(
70
+ {% if extension_type != 'transformations' -%}@router.get(
62
71
  '/marketplaces',
63
72
  summary='List all available marketplaces',
64
73
  response_model=List[Marketplace],
@@ -77,7 +86,7 @@ class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}WebApplication(
77
86
  {% if extension_type == 'multiaccount' -%}
78
87
  @router.get(
79
88
  '/settings',
80
- summary='Retrive charts settings',
89
+ summary='Retrieve charts settings',
81
90
  response_model=Settings,
82
91
  )
83
92
  {% if use_asyncio == 'y' %}async {% endif %}def retrieve_settings(
@@ -132,4 +141,68 @@ class {{ project_slug|replace("_", " ")|title|replace(" ", "") }}WebApplication(
132
141
  ],
133
142
  },
134
143
  }
135
- {% endif %}
144
+ {%- endif %}
145
+
146
+ {%- else %}def validate_copy_columns(self, data):
147
+ if (
148
+ 'settings' not in data
149
+ or not isinstance(data['settings'], list)
150
+ or 'columns' not in data
151
+ or 'input' not in data['columns']
152
+ ):
153
+ return JSONResponse(status_code=400, content={'error': 'Invalid input data'})
154
+
155
+ settings = data['settings']
156
+ input_columns = data['columns']['input']
157
+ available_input_columns = [c['name'] for c in input_columns]
158
+ unique_names = [c['name'] for c in input_columns]
159
+ overview = []
160
+
161
+ for s in settings:
162
+ if 'from' not in s or 'to' not in s:
163
+ return JSONResponse(
164
+ status_code=400,
165
+ content={'error': 'Invalid settings format'},
166
+ )
167
+ if s['from'] not in available_input_columns:
168
+ return JSONResponse(
169
+ status_code=400,
170
+ content={'error': f'The input column {s["from"]} does not exists'},
171
+ )
172
+ if s['to'] in unique_names:
173
+ return JSONResponse(
174
+ status_code=400,
175
+ content={
176
+ 'error': f'Invalid column name {s["to"]}. The to field should be unique',
177
+ },
178
+ )
179
+ unique_names.append(s['to'])
180
+ overview.append(f'{s["from"]} --> {s["to"]}')
181
+
182
+ overview = ''.join([row + '\n' for row in overview])
183
+
184
+ return {
185
+ 'overview': overview,
186
+ }
187
+
188
+ @router.post(
189
+ '/validate/{transformation_function}',
190
+ summary='Validate settings',
191
+ )
192
+ def validate_tfn_settings(
193
+ self,
194
+ transformation_function: str,
195
+ data: dict,
196
+ ):
197
+ try:
198
+ method = getattr(self, f'validate_{transformation_function}')
199
+ return method(data)
200
+ except AttributeError:
201
+ return JSONResponse(
202
+ status_code=400,
203
+ content={
204
+ 'error': f'The validation method {transformation_function} does not exist',
205
+ },
206
+ )
207
+
208
+ {%- endif %}
@@ -6,7 +6,7 @@ services:
6
6
  build:
7
7
  context: .
8
8
  working_dir: /extension
9
- command: cextrun -d
9
+ command: cextrun -d --no-rich-logging
10
10
  volumes:
11
11
  - .:/extension
12
12
  env_file: