splent-cli 1.48.0__tar.gz → 1.48.2__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 (317) hide show
  1. {splent_cli-1.48.0/src/splent_cli.egg-info → splent_cli-1.48.2}/PKG-INFO +1 -1
  2. {splent_cli-1.48.0 → splent_cli-1.48.2}/pyproject.toml +1 -1
  3. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_deps.py +40 -0
  4. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_validate.py +4 -1
  5. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/frontend_check.py +4 -1
  6. {splent_cli-1.48.0 → splent_cli-1.48.2/src/splent_cli.egg-info}/PKG-INFO +1 -1
  7. {splent_cli-1.48.0 → splent_cli-1.48.2}/COPYING +0 -0
  8. {splent_cli-1.48.0 → splent_cli-1.48.2}/COPYING.LESSER +0 -0
  9. {splent_cli-1.48.0 → splent_cli-1.48.2}/README.md +0 -0
  10. {splent_cli-1.48.0 → splent_cli-1.48.2}/setup.cfg +0 -0
  11. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/__init__.py +0 -0
  12. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/__main__.py +0 -0
  13. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/cli.py +0 -0
  14. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/__init__.py +0 -0
  15. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/__init__.py +0 -0
  16. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_clear.py +0 -0
  17. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_orphans.py +0 -0
  18. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_outdated.py +0 -0
  19. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_prune.py +0 -0
  20. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_size.py +0 -0
  21. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_status.py +0 -0
  22. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_usage.py +0 -0
  23. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/cache/cache_versions.py +0 -0
  24. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/__init__.py +0 -0
  25. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_contracts.py +0 -0
  26. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_docker.py +0 -0
  27. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_env.py +0 -0
  28. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_features.py +0 -0
  29. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_github.py +0 -0
  30. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_infra.py +0 -0
  31. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_product.py +0 -0
  32. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_pypi.py +0 -0
  33. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_pyproject.py +0 -0
  34. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_releases.py +0 -0
  35. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/check/check_vendor.py +0 -0
  36. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/clear/__init__.py +0 -0
  37. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/clear/clear_build.py +0 -0
  38. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/clear/clear_log.py +0 -0
  39. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/clear/clear_uploads.py +0 -0
  40. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/command/__init__.py +0 -0
  41. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/command/command_create.py +0 -0
  42. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/coverage.py +0 -0
  43. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_console.py +0 -0
  44. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_dump.py +0 -0
  45. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_migrate.py +0 -0
  46. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_reset.py +0 -0
  47. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_restore.py +0 -0
  48. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_rollback.py +0 -0
  49. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_seed.py +0 -0
  50. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_status.py +0 -0
  51. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/database/db_upgrade.py +0 -0
  52. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/doctor.py +0 -0
  53. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/env/env_list.py +0 -0
  54. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/env/env_set.py +0 -0
  55. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/env/env_show.py +0 -0
  56. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/export/__init__.py +0 -0
  57. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/export/export_puml.py +0 -0
  58. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_add.py +0 -0
  59. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_attach.py +0 -0
  60. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_clean.py +0 -0
  61. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_clone.py +0 -0
  62. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_compat.py +0 -0
  63. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_compile.py +0 -0
  64. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_contract.py +0 -0
  65. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_create.py +0 -0
  66. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_delete.py +0 -0
  67. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_detach.py +0 -0
  68. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_discard.py +0 -0
  69. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_drift.py +0 -0
  70. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_env.py +0 -0
  71. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_fork.py +0 -0
  72. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_frontend_init.py +0 -0
  73. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_git.py +0 -0
  74. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_hook_add.py +0 -0
  75. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_hook_remove.py +0 -0
  76. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_hooks.py +0 -0
  77. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_impact.py +0 -0
  78. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_info.py +0 -0
  79. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_inject_config.py +0 -0
  80. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_install.py +0 -0
  81. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_list.py +0 -0
  82. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_npm.py +0 -0
  83. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_order.py +0 -0
  84. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_outdated.py +0 -0
  85. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_pin.py +0 -0
  86. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_pip_install.py +0 -0
  87. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_pull.py +0 -0
  88. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_refine.py +0 -0
  89. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_release.py +0 -0
  90. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_remove.py +0 -0
  91. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_rename.py +0 -0
  92. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_search.py +0 -0
  93. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_status.py +0 -0
  94. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_sync_template.py +0 -0
  95. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_test.py +0 -0
  96. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_translate.py +0 -0
  97. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_unlock.py +0 -0
  98. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_upgrade.py +0 -0
  99. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_versions.py +0 -0
  100. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/feature/feature_xray.py +0 -0
  101. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/lint.py +0 -0
  102. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/locust.py +0 -0
  103. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/marketplace/login.py +0 -0
  104. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/marketplace/logout.py +0 -0
  105. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/marketplace/marketplace_auth_utils.py +0 -0
  106. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/marketplace/marketplace_index.py +0 -0
  107. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/marketplace/whoami.py +0 -0
  108. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/__init__.py +0 -0
  109. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_auto_require.py +0 -0
  110. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_build.py +0 -0
  111. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_clean.py +0 -0
  112. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_commands.py +0 -0
  113. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_config.py +0 -0
  114. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_configure.py +0 -0
  115. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_console.py +0 -0
  116. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_containers.py +0 -0
  117. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_create.py +0 -0
  118. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_deploy.py +0 -0
  119. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_derive.py +0 -0
  120. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_deselect.py +0 -0
  121. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_down.py +0 -0
  122. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_drift.py +0 -0
  123. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_env.py +0 -0
  124. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_frontend_audit.py +0 -0
  125. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_list.py +0 -0
  126. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_logs.py +0 -0
  127. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_missing.py +0 -0
  128. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_params.py +0 -0
  129. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_port.py +0 -0
  130. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_release.py +0 -0
  131. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_resolve.py +0 -0
  132. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_restart.py +0 -0
  133. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_routes.py +0 -0
  134. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_run.py +0 -0
  135. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_select.py +0 -0
  136. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_shell.py +0 -0
  137. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_signals.py +0 -0
  138. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_sync_template.py +0 -0
  139. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_test.py +0 -0
  140. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/product/product_up.py +0 -0
  141. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/release/__init__.py +0 -0
  142. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/release/release_core.py +0 -0
  143. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/release/release_resume.py +0 -0
  144. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/selenium.py +0 -0
  145. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/__init__.py +0 -0
  146. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_add_constraints.py +0 -0
  147. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_add_feature.py +0 -0
  148. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_compare.py +0 -0
  149. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_configurations.py +0 -0
  150. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_create.py +0 -0
  151. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_deps.py +0 -0
  152. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_features.py +0 -0
  153. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_fetch.py +0 -0
  154. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_info.py +0 -0
  155. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_list.py +0 -0
  156. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_outdated.py +0 -0
  157. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_pin.py +0 -0
  158. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_publish.py +0 -0
  159. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_remove_feature.py +0 -0
  160. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/spl/spl_utils.py +0 -0
  161. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/tokens_setup.py +0 -0
  162. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/uvl/uvl_utils.py +0 -0
  163. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/commands/version.py +0 -0
  164. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/__init__.py +0 -0
  165. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/compose.py +0 -0
  166. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/context.py +0 -0
  167. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/credentials.py +0 -0
  168. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/deploy_bundle.py +0 -0
  169. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/editable_refresh.py +0 -0
  170. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/frontend.py +0 -0
  171. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/image_registry.py +0 -0
  172. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/index_refresh.py +0 -0
  173. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/marketplace.py +0 -0
  174. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/marketplace_api.py +0 -0
  175. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/marketplace_url.py +0 -0
  176. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/neutral_app.py +0 -0
  177. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/own_commands.py +0 -0
  178. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/preflight.py +0 -0
  179. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/pypi_quota.py +0 -0
  180. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/registry.py +0 -0
  181. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/release.py +0 -0
  182. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/release_dry_run.py +0 -0
  183. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/release_gate.py +0 -0
  184. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/spl_store.py +0 -0
  185. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/services/web_container.py +0 -0
  186. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_.gitignore.j2 +0 -0
  187. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_MANIFEST.in.j2 +0 -0
  188. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_README.md.j2 +0 -0
  189. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_commands.py.j2 +0 -0
  190. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_config.py.j2 +0 -0
  191. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_docker-compose.dev.yml.j2 +0 -0
  192. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_docker-compose.prod.yml.j2 +0 -0
  193. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_docker.env.example.j2 +0 -0
  194. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_forms.py.j2 +0 -0
  195. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_frontend.npmrc.j2 +0 -0
  196. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_frontend_scripts.js.j2 +0 -0
  197. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_hooks.py.j2 +0 -0
  198. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_init.py.j2 +0 -0
  199. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_init_config.py.j2 +0 -0
  200. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_init_light.py.j2 +0 -0
  201. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_init_service.py.j2 +0 -0
  202. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_migrations_alembic.ini.j2 +0 -0
  203. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_migrations_env.py.j2 +0 -0
  204. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_migrations_script.py.mako.j2 +0 -0
  205. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_models.py.j2 +0 -0
  206. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_pyproject.toml.j2 +0 -0
  207. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_pyproject_minimal.toml.j2 +0 -0
  208. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_repositories.py.j2 +0 -0
  209. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_routes.py.j2 +0 -0
  210. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_scripts.js.j2 +0 -0
  211. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_seeders.py.j2 +0 -0
  212. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_services.py.j2 +0 -0
  213. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_services_service.py.j2 +0 -0
  214. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_signals.py.j2 +0 -0
  215. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_templates_index.html.j2 +0 -0
  216. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_tests_conftest.py.j2 +0 -0
  217. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_tests_e2e.py.j2 +0 -0
  218. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_tests_functional.py.j2 +0 -0
  219. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_tests_integration.py.j2 +0 -0
  220. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_tests_locustfile.py.j2 +0 -0
  221. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_tests_unit.py.j2 +0 -0
  222. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/feature/feature_webpack.config.js.j2 +0 -0
  223. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/licenses/COPYING +0 -0
  224. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/licenses/COPYING.LESSER +0 -0
  225. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_.env.dev.example.j2 +0 -0
  226. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_.env.prod.example.j2 +0 -0
  227. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_.gitignore.j2 +0 -0
  228. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_00_core_requirements_dev.sh.j2 +0 -0
  229. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_00_install_features.sh.j2 +0 -0
  230. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_01_compile_assets.sh.j2 +0 -0
  231. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_02_0_db_wait_connection.sh.j2 +0 -0
  232. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_02_1_db_create_db_test.sh.j2 +0 -0
  233. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_02_2_db_create_splent_migrations.sh.j2 +0 -0
  234. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_03_initialize_migrations.sh.j2 +0 -0
  235. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_04_handle_migrations.sh.j2 +0 -0
  236. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_05_0_start_app_dev.sh.j2 +0 -0
  237. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_05_1_start_app_prod.sh.j2 +0 -0
  238. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_400.html +0 -0
  239. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_401.html +0 -0
  240. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_404.html +0 -0
  241. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_500.html +0 -0
  242. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_Dockerfile.dev.dockerignore.j2 +0 -0
  243. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_Dockerfile.dev.j2 +0 -0
  244. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_Dockerfile.prod.dockerignore.j2 +0 -0
  245. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_Dockerfile.prod.j2 +0 -0
  246. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_README.md.j2 +0 -0
  247. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_app.css +0 -0
  248. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_app.js +0 -0
  249. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_base_template.html +0 -0
  250. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_ci_upgrade.yml.j2 +0 -0
  251. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_ci_validate.yml.j2 +0 -0
  252. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_config.py.j2 +0 -0
  253. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_docker-compose.dev.yml.j2 +0 -0
  254. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_docker-compose.prod.yml.j2 +0 -0
  255. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_dropzone.css +0 -0
  256. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_entrypoint.dev.sh.j2 +0 -0
  257. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_entrypoint.prod.sh.j2 +0 -0
  258. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_errors.py.j2 +0 -0
  259. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_favicon.svg +0 -0
  260. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_init.py.j2 +0 -0
  261. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_logging.py.j2 +0 -0
  262. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_own.css +0 -0
  263. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_package.json.j2 +0 -0
  264. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_pyproject.toml.j2 +0 -0
  265. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/templates/product/product_uvl.j2 +0 -0
  266. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/Dockerfile.frontend +0 -0
  267. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/package-lock.json +0 -0
  268. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/package.json +0 -0
  269. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/splent/build.js +0 -0
  270. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/splent/legacy.js +0 -0
  271. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/splent/lint.js +0 -0
  272. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/splent/plugin.js +0 -0
  273. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/splent/preset.js +0 -0
  274. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/toolchain/frontend/splent/singletons.json +0 -0
  275. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/__init__.py +0 -0
  276. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/archetype.py +0 -0
  277. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/cache_utils.py +0 -0
  278. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/ci_services.py +0 -0
  279. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/ci_workflow.py +0 -0
  280. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/command_loader.py +0 -0
  281. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/contract_freshness.py +0 -0
  282. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/db_client.py +0 -0
  283. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/db_utils.py +0 -0
  284. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/decorators.py +0 -0
  285. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/deploy_freshness.py +0 -0
  286. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/dynamic_imports.py +0 -0
  287. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/feature_installer.py +0 -0
  288. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/feature_naming.py +0 -0
  289. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/feature_params.py +0 -0
  290. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/feature_requirements.py +0 -0
  291. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/feature_resolution.py +0 -0
  292. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/feature_utils.py +0 -0
  293. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/forge.py +0 -0
  294. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/frontend_licenses.py +0 -0
  295. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/git_url.py +0 -0
  296. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/integrity.py +0 -0
  297. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/io_utils.py +0 -0
  298. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/lifecycle.py +0 -0
  299. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/manifest.py +0 -0
  300. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/menu_keys.py +0 -0
  301. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/migration_lock.py +0 -0
  302. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/npm_semver.py +0 -0
  303. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/path_utils.py +0 -0
  304. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/proc.py +0 -0
  305. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/redact.py +0 -0
  306. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/refinement_facts.py +0 -0
  307. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/running_version.py +0 -0
  308. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/template_drift.py +0 -0
  309. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/toml_edit.py +0 -0
  310. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/upgrade_plan.py +0 -0
  311. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/uvl_diagnosis.py +0 -0
  312. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli/utils/uvl_params.py +0 -0
  313. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli.egg-info/SOURCES.txt +0 -0
  314. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli.egg-info/dependency_links.txt +0 -0
  315. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli.egg-info/entry_points.txt +0 -0
  316. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli.egg-info/requires.txt +0 -0
  317. {splent_cli-1.48.0 → splent_cli-1.48.2}/src/splent_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splent_cli
3
- Version: 1.48.0
3
+ Version: 1.48.2
4
4
  Summary: SPLENT-CLI is a CLI to be able to work on your development more easily.
5
5
  Author-email: DiversoLab <diversolab@us.es>
6
6
  License-Expression: LGPL-3.0-or-later
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "splent_cli"
7
- version = "1.48.0"
7
+ version = "1.48.2"
8
8
  description = "SPLENT-CLI is a CLI to be able to work on your development more easily."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -152,6 +152,34 @@ def _scan_feature_imports(
152
152
  return python_imports, template_deps
153
153
 
154
154
 
155
+ def _optional_features(feature_path: str) -> set[str]:
156
+ """The packages a feature's contract names in requires.features_optional.
157
+
158
+ A feature reaches those only when the product has them (a tolerant
159
+ import, a has_endpoint guard), so its reference to one needs no UVL
160
+ constraint: the model leaves the other feature optional, and nothing
161
+ breaks without it. Version ranges ("hubfile>=0.5.0") are dropped.
162
+ """
163
+ import tomllib
164
+
165
+ try:
166
+ with open(os.path.join(feature_path, "pyproject.toml"), "rb") as fh:
167
+ data = tomllib.load(fh)
168
+ except (OSError, tomllib.TOMLDecodeError):
169
+ return set()
170
+ requires = (
171
+ data.get("tool", {}).get("splent", {}).get("contract", {}).get("requires", {})
172
+ )
173
+ names = set()
174
+ for entry in requires.get("features_optional") or []:
175
+ name = re.split(r"[<>=!~\s]", str(entry), maxsplit=1)[0]
176
+ if name:
177
+ names.add(
178
+ name if name.startswith("splent_feature_") else f"splent_feature_{name}"
179
+ )
180
+ return names
181
+
182
+
155
183
  # ---------------------------------------------------------------------------
156
184
  # Feature path resolver
157
185
  # ---------------------------------------------------------------------------
@@ -271,6 +299,7 @@ def check_deps():
271
299
 
272
300
  py_imports, tpl_deps = _scan_feature_imports(fpath, pkg_name, all_packages)
273
301
  allowed = allowed_deps.get(pkg_name, set())
302
+ optional = _optional_features(fpath)
274
303
  all_deps = py_imports | tpl_deps
275
304
 
276
305
  if not all_deps:
@@ -296,6 +325,17 @@ def check_deps():
296
325
  )
297
326
  )
298
327
  ok += 1
328
+ elif imp in optional:
329
+ click.echo(
330
+ click.style(" [✔] ", fg="green")
331
+ + click.style(f"{short}", bold=True)
332
+ + f" {source} {imp_short}"
333
+ + click.style(
334
+ f" (optional: {short}'s contract lists it in features_optional)",
335
+ fg="bright_black",
336
+ )
337
+ )
338
+ ok += 1
299
339
  else:
300
340
  reverse_allowed = allowed_deps.get(imp, set())
301
341
  if pkg_name in reverse_allowed:
@@ -207,6 +207,7 @@ def _run_deps_check(workspace, product, data=None, uvl_path=None):
207
207
  a model to check against instead (--model).
208
208
  """
209
209
  from splent_cli.commands.check.check_deps import (
210
+ _optional_features,
210
211
  _parse_uvl_deps,
211
212
  _resolve_feature_paths,
212
213
  _scan_feature_imports,
@@ -259,6 +260,8 @@ def _run_deps_check(workspace, product, data=None, uvl_path=None):
259
260
 
260
261
  py_imports, tpl_deps = _scan_feature_imports(fpath, pkg_name, all_packages)
261
262
  allowed = allowed_deps.get(pkg_name, set())
263
+ # What the feature reaches only when the product has it.
264
+ optional = _optional_features(fpath)
262
265
  all_deps = py_imports | tpl_deps
263
266
 
264
267
  if not all_deps:
@@ -267,7 +270,7 @@ def _run_deps_check(workspace, product, data=None, uvl_path=None):
267
270
 
268
271
  for imp in sorted(all_deps):
269
272
  imp_short = pkg_to_short.get(imp, imp)
270
- if imp in allowed:
273
+ if imp in allowed or imp in optional:
271
274
  ok_count += 1
272
275
  else:
273
276
  reverse_allowed = allowed_deps.get(imp, set())
@@ -920,6 +920,7 @@ def _check_csp(check, built, approvals) -> None:
920
920
  granted = approved.get(feature.short) or {}
921
921
  missing = []
922
922
  for directive, sources in sorted(asked.items()):
923
+ unapproved = []
923
924
  for source in sources:
924
925
  why = rules.forbidden(directive, source)
925
926
  if why:
@@ -930,7 +931,9 @@ def _check_csp(check, built, approvals) -> None:
930
931
  f"(splent.csp): {why}.",
931
932
  )
932
933
  elif source not in (granted.get(directive) or []):
933
- missing.append(f"{directive} {source}")
934
+ unapproved.append(source)
935
+ if unapproved:
936
+ missing.append(f"{directive} {' '.join(unapproved)}")
934
937
  if missing:
935
938
  lines = ", ".join(f'"{line}"' for line in missing)
936
939
  check.add(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: splent_cli
3
- Version: 1.48.0
3
+ Version: 1.48.2
4
4
  Summary: SPLENT-CLI is a CLI to be able to work on your development more easily.
5
5
  Author-email: DiversoLab <diversolab@us.es>
6
6
  License-Expression: LGPL-3.0-or-later
File without changes
File without changes
File without changes
File without changes