splent-cli 1.48.2__tar.gz → 1.49.0__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.
- {splent_cli-1.48.2/src/splent_cli.egg-info → splent_cli-1.49.0}/PKG-INFO +1 -1
- {splent_cli-1.48.2 → splent_cli-1.49.0}/pyproject.toml +1 -1
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/cli.py +41 -1
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_clear.py +2 -2
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/clear/clear_uploads.py +2 -2
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_contract.py +21 -1
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_release.py +392 -27
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_translate.py +51 -12
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/lint.py +3 -2
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_build.py +13 -12
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_deploy.py +61 -48
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_restart.py +1 -1
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/image_registry.py +2 -2
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/neutral_app.py +174 -43
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/release_dry_run.py +28 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/path_utils.py +8 -11
- {splent_cli-1.48.2 → splent_cli-1.49.0/src/splent_cli.egg-info}/PKG-INFO +1 -1
- {splent_cli-1.48.2 → splent_cli-1.49.0}/COPYING +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/COPYING.LESSER +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/README.md +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/setup.cfg +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/__main__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_orphans.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_outdated.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_prune.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_size.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_status.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_usage.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/cache/cache_versions.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_contracts.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_deps.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_docker.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_env.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_features.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_github.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_infra.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_product.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_pypi.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_pyproject.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_releases.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/check/check_vendor.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/clear/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/clear/clear_build.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/clear/clear_log.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/command/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/command/command_create.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/coverage.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_console.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_dump.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_migrate.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_reset.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_restore.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_rollback.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_seed.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_status.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/database/db_upgrade.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/doctor.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/env/env_list.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/env/env_set.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/env/env_show.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/export/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/export/export_puml.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_add.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_attach.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_clean.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_clone.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_compat.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_compile.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_create.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_delete.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_detach.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_discard.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_drift.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_env.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_fork.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_frontend_init.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_git.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_hook_add.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_hook_remove.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_hooks.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_impact.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_info.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_inject_config.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_install.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_list.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_npm.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_order.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_outdated.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_pin.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_pip_install.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_pull.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_refine.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_remove.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_rename.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_search.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_status.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_sync_template.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_test.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_unlock.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_upgrade.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_versions.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/feature/feature_xray.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/locust.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/marketplace/login.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/marketplace/logout.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/marketplace/marketplace_auth_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/marketplace/marketplace_index.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/marketplace/whoami.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_auto_require.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_clean.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_commands.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_config.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_configure.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_console.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_containers.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_create.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_derive.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_deselect.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_down.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_drift.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_env.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_frontend_audit.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_list.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_logs.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_missing.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_params.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_port.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_release.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_resolve.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_routes.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_run.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_select.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_shell.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_signals.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_sync_template.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_test.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_up.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/product/product_validate.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/release/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/release/release_core.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/release/release_resume.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/selenium.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_add_constraints.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_add_feature.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_compare.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_configurations.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_create.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_deps.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_features.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_fetch.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_info.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_list.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_outdated.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_pin.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_publish.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_remove_feature.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/spl/spl_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/tokens_setup.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/uvl/uvl_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/commands/version.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/compose.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/context.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/credentials.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/deploy_bundle.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/editable_refresh.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/frontend.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/index_refresh.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/marketplace.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/marketplace_api.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/marketplace_url.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/own_commands.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/preflight.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/pypi_quota.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/registry.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/release.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/release_gate.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/spl_store.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/services/web_container.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_.gitignore.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_MANIFEST.in.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_README.md.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_commands.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_config.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_docker-compose.dev.yml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_docker-compose.prod.yml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_docker.env.example.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_forms.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_frontend.npmrc.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_frontend_scripts.js.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_hooks.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_init.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_init_config.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_init_light.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_init_service.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_migrations_alembic.ini.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_migrations_env.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_migrations_script.py.mako.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_models.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_pyproject.toml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_pyproject_minimal.toml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_repositories.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_routes.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_scripts.js.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_seeders.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_services.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_services_service.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_signals.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_templates_index.html.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_tests_conftest.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_tests_e2e.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_tests_functional.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_tests_integration.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_tests_locustfile.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_tests_unit.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/feature/feature_webpack.config.js.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/licenses/COPYING +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/licenses/COPYING.LESSER +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_.env.dev.example.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_.env.prod.example.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_.gitignore.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_00_core_requirements_dev.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_00_install_features.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_01_compile_assets.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_02_0_db_wait_connection.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_02_1_db_create_db_test.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_02_2_db_create_splent_migrations.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_03_initialize_migrations.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_04_handle_migrations.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_05_0_start_app_dev.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_05_1_start_app_prod.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_400.html +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_401.html +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_404.html +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_500.html +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_Dockerfile.dev.dockerignore.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_Dockerfile.dev.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_Dockerfile.prod.dockerignore.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_Dockerfile.prod.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_README.md.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_app.css +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_app.js +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_base_template.html +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_ci_upgrade.yml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_ci_validate.yml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_config.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_docker-compose.dev.yml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_docker-compose.prod.yml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_dropzone.css +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_entrypoint.dev.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_entrypoint.prod.sh.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_errors.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_favicon.svg +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_init.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_logging.py.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_own.css +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_package.json.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_pyproject.toml.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/templates/product/product_uvl.j2 +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/Dockerfile.frontend +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/package-lock.json +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/package.json +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/splent/build.js +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/splent/legacy.js +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/splent/lint.js +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/splent/plugin.js +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/splent/preset.js +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/toolchain/frontend/splent/singletons.json +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/__init__.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/archetype.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/cache_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/ci_services.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/ci_workflow.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/command_loader.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/contract_freshness.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/db_client.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/db_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/decorators.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/deploy_freshness.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/dynamic_imports.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/feature_installer.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/feature_naming.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/feature_params.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/feature_requirements.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/feature_resolution.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/feature_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/forge.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/frontend_check.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/frontend_licenses.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/git_url.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/integrity.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/io_utils.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/lifecycle.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/manifest.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/menu_keys.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/migration_lock.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/npm_semver.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/proc.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/redact.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/refinement_facts.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/running_version.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/template_drift.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/toml_edit.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/upgrade_plan.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/uvl_diagnosis.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli/utils/uvl_params.py +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli.egg-info/SOURCES.txt +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli.egg-info/dependency_links.txt +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli.egg-info/entry_points.txt +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli.egg-info/requires.txt +0 -0
- {splent_cli-1.48.2 → splent_cli-1.49.0}/src/splent_cli.egg-info/top_level.txt +0 -0
|
@@ -45,6 +45,41 @@ def _quiet_unless(debug: bool):
|
|
|
45
45
|
logging.disable(logging.NOTSET)
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
@contextlib.contextmanager
|
|
49
|
+
def _held_logs(debug: bool):
|
|
50
|
+
"""Hold what is logged while the app is built here, for a command that
|
|
51
|
+
may run in the product's web container instead.
|
|
52
|
+
|
|
53
|
+
A build that fails on a package the CLI's image lacks hands the command
|
|
54
|
+
to the web container, which builds the app again and says there all
|
|
55
|
+
the build has to say. What the attempt here logged first (the features'
|
|
56
|
+
warnings, the traceback of the import that failed) came before it, as
|
|
57
|
+
if the command had failed. Yields the records held, which
|
|
58
|
+
:func:`_replay` hands to their loggers when the command does not move
|
|
59
|
+
after all. SPLENT_DEBUG shows them as they happen.
|
|
60
|
+
"""
|
|
61
|
+
held: list[tuple[logging.Logger, logging.LogRecord]] = []
|
|
62
|
+
if debug:
|
|
63
|
+
yield held
|
|
64
|
+
return
|
|
65
|
+
handle = logging.Logger.handle
|
|
66
|
+
|
|
67
|
+
def hold(logger, record):
|
|
68
|
+
held.append((logger, record))
|
|
69
|
+
|
|
70
|
+
logging.Logger.handle = hold
|
|
71
|
+
try:
|
|
72
|
+
yield held
|
|
73
|
+
finally:
|
|
74
|
+
logging.Logger.handle = handle
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _replay(held) -> None:
|
|
78
|
+
"""Log what :func:`_held_logs` held, as it would have been logged."""
|
|
79
|
+
for logger, record in held:
|
|
80
|
+
logger.handle(record)
|
|
81
|
+
|
|
82
|
+
|
|
48
83
|
class SPLENTCLI(click.Group):
|
|
49
84
|
"""
|
|
50
85
|
Main SPLENT CLI class.
|
|
@@ -211,14 +246,18 @@ class SPLENTCLI(click.Group):
|
|
|
211
246
|
if context.is_override():
|
|
212
247
|
self._delegate_to_the_product(ctx)
|
|
213
248
|
|
|
249
|
+
debug = bool(os.getenv("SPLENT_DEBUG"))
|
|
214
250
|
try:
|
|
215
|
-
|
|
251
|
+
with _held_logs(debug) as held:
|
|
252
|
+
app = get_app()
|
|
216
253
|
except Exception as exc:
|
|
217
254
|
missing = _missing_module(exc)
|
|
218
255
|
if missing is None:
|
|
256
|
+
_replay(held)
|
|
219
257
|
raise
|
|
220
258
|
# Only then: where the app builds here, the command runs here
|
|
221
259
|
# with the tools the CLI image has (ruff formats migrations).
|
|
260
|
+
# The web container builds it again and logs what it logs.
|
|
222
261
|
self._delegate_to_the_product(ctx)
|
|
223
262
|
product = context.active_app() or "The product"
|
|
224
263
|
raise click.ClickException(
|
|
@@ -227,6 +266,7 @@ class SPLENTCLI(click.Group):
|
|
|
227
266
|
" Start the product (splent product:up --dev) and run the "
|
|
228
267
|
"command again: it then runs in the product's web container."
|
|
229
268
|
) from exc
|
|
269
|
+
_replay(held)
|
|
230
270
|
if getattr(command, "requires_db", False):
|
|
231
271
|
if not check_db_connection(app):
|
|
232
272
|
raise SystemExit(1)
|
|
@@ -39,8 +39,8 @@ def _validate_feature(ctx, param, value):
|
|
|
39
39
|
or (at and not _plain(version, _VERSION_RE))
|
|
40
40
|
):
|
|
41
41
|
raise click.BadParameter(
|
|
42
|
-
"must be a feature name such as
|
|
43
|
-
" with a namespace and a version (splent-io/
|
|
42
|
+
"must be a feature name such as splent_feature_notes, optionally"
|
|
43
|
+
" with a namespace and a version (splent-io/splent_feature_notes@v1.2.0)."
|
|
44
44
|
)
|
|
45
45
|
ns, name, version = parse_feature_entry(value)
|
|
46
46
|
return {
|
|
@@ -289,8 +289,8 @@ def clear_uploads(env_dev, env_prod, yes):
|
|
|
289
289
|
|
|
290
290
|
if not yes:
|
|
291
291
|
click.confirm(
|
|
292
|
-
f"Delete every file in {uploads_dir}?
|
|
293
|
-
"the app serves from it cannot be recovered.",
|
|
292
|
+
f"Delete every file in {uploads_dir}? What the features stored "
|
|
293
|
+
"there, and the app serves from it, cannot be recovered.",
|
|
294
294
|
abort=True,
|
|
295
295
|
)
|
|
296
296
|
|
|
@@ -21,10 +21,12 @@ from pathlib import Path
|
|
|
21
21
|
|
|
22
22
|
from splent_cli.services import context
|
|
23
23
|
from splent_cli.commands.feature.feature_release import (
|
|
24
|
+
REVISION_ID_MAX,
|
|
24
25
|
_interactive,
|
|
25
26
|
infer_contract,
|
|
26
27
|
merge_preserved,
|
|
27
28
|
requirement_problems,
|
|
29
|
+
revision_id_problems,
|
|
28
30
|
write_contract,
|
|
29
31
|
)
|
|
30
32
|
from splent_cli.utils.feature_resolution import package_identifier, resolve_feature_ref
|
|
@@ -444,7 +446,25 @@ def feature_contract(feature_ref, write, inject_config):
|
|
|
444
446
|
for problem in problems:
|
|
445
447
|
click.secho(f" {problem}", fg="red")
|
|
446
448
|
click.echo(
|
|
447
|
-
' Write a short name with an optional PEP 440 specifier, such as "
|
|
449
|
+
' Write a short name with an optional PEP 440 specifier, such as "notes>=1.20.0".'
|
|
450
|
+
)
|
|
451
|
+
raise SystemExit(1)
|
|
452
|
+
|
|
453
|
+
# A migration no database can record: refused here, in the dry run too,
|
|
454
|
+
# as feature:release refuses it, before anyone releases it.
|
|
455
|
+
long_ids = revision_id_problems(str(cache_path), name)
|
|
456
|
+
if long_ids:
|
|
457
|
+
click.secho(
|
|
458
|
+
f" ❌ These revision ids are longer than the {REVISION_ID_MAX} "
|
|
459
|
+
"characters alembic_version.version_num holds:",
|
|
460
|
+
fg="red",
|
|
461
|
+
)
|
|
462
|
+
for problem in long_ids:
|
|
463
|
+
click.secho(f" {problem}", fg="red")
|
|
464
|
+
click.echo(
|
|
465
|
+
" The upgrade would run the migration and then fail to record "
|
|
466
|
+
"it.\n Shorten the revision id, and every down_revision that "
|
|
467
|
+
"names it."
|
|
448
468
|
)
|
|
449
469
|
raise SystemExit(1)
|
|
450
470
|
|