zrb 1.5.14__tar.gz → 1.5.16__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.
- {zrb-1.5.14 → zrb-1.5.16}/PKG-INFO +2 -1
- {zrb-1.5.14 → zrb-1.5.16}/pyproject.toml +2 -1
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/__init__.py +31 -2
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/base64.py +24 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/group.py +9 -0
- zrb-1.5.16/src/zrb/builtin/http.py +152 -0
- zrb-1.5.16/src/zrb/builtin/jwt.py +104 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/md5.py +23 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/todo.py +1 -1
- zrb-1.5.16/src/zrb/builtin/uuid.py +224 -0
- zrb-1.5.16/src/zrb/callback/any_callback.py +10 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/cli.py +3 -2
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/common_util.py +1 -1
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/context_enrichment.py +2 -3
- zrb-1.5.14/src/zrb/callback/any_callback.py +0 -10
- {zrb-1.5.14 → zrb-1.5.16}/README.md +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/__main__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/attr/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/attr/type.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/git.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/git_subtree.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/history.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/llm_chat.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/previous-session.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/api.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/cli.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/file.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/rag.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/sub_agent.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/llm/tool/web.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.coveragerc +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.flake8 +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/.gitignore +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/README.md +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/column/add_column_util.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/config.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/add_entity_util.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/gateway/view/content/my-module/my-entity.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/my_entity_service_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_db_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/module/my_module/service/my_entity/repository/my_entity_repository_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/schema/my_entity.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_create_my_entity.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_delete_my_entity.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_read_my_entity.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/app_template/test/my_module/my_entity/test_update_my_entity.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/client_method.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/gateway_subroute.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/entity/template/navigation_config_file.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/format_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/group.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/add_module_util.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/gateway/subroute/my_module.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/alembic.ini +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_api_client.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_client_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/client/my_module_direct_client.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/README +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/env.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/script.py.mako +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration/versions/.gitkeep +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/migration_metadata.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/app_template/module/my_module/service/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/module_task_definition.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/module/template/navigation_config_file.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/task_util.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/util.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/_zrb/venv_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/app_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_db_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/base_service.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/db_engine_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/error.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/logger_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/parser_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/schema.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/app.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/parser.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/user_agent.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/common/util/view.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/config.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/main.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/alembic.ini +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_api_client.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_client_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/client/auth_direct_client.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/README +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/env.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/script.py.mako +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/3093c7336477_add_auth_tables.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration/versions/8ed025bcc845_create_permissions.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/migration_metadata.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/permission_service_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_db_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/permission/repository/permission_repository_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_db_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/repository/role_repository_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/role/role_service_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_db_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/repository/user_repository_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/auth/service/user/user_service_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/alembic.ini +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/config/navigation.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/README +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/env.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/script.py.mako +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration/versions/.gitkeep +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/migration_metadata.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/schema/navigation.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/subroute/auth.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/auth.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/util/view.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/permission.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/role.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/auth/user.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/error.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/homepage.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/login.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/content/logout.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/common/util.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/style.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/crud/util.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/pico-style.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/script.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/default/style.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-192x192.png +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/android-chrome-512x512.png +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/images/favicon-32x32.png +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.amber.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.blue.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.cyan.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.fuchsia.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.green.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.grey.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.indigo.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.jade.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.lime.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.orange.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pink.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.pumpkin.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.purple.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.red.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.sand.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.slate.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.violet.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.yellow.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/static/pico-css/pico.zinc.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/module/gateway/view/template/default.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/requirements.txt +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/permission.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/role.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/schema/user.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/template.env +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/_util/access_token.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_create_permission.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_delete_permission.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_read_permission.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/permission/test_update_permission.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/auth/test_user_session.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_health_and_readiness.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_homepage.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test/test_not_found_error.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_template/my_app_name/test.sh +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/add/fastapp/fastapp_util.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/create/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/create/project-template/README.md +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/create/project-template/zrb_init.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/project/create/project_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/python.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/random.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/asdf/asdf.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/asdf/asdf_helper.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/common_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/latex/ubuntu.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/tmux/tmux.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/tmux/tmux_config.sh +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/tmux/tmux_helper.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/ubuntu.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/zsh/zsh.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/zsh/zsh_config.sh +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/setup/zsh/zsh_helper.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/shell/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/shell/autocomplete/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/shell/autocomplete/bash.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/shell/autocomplete/subcmd.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/builtin/shell/autocomplete/zsh.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/callback/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/callback/callback.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/cmd/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/cmd/cmd_result.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/cmd/cmd_val.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/config.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/content_transformer/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/content_transformer/any_content_transformer.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/content_transformer/content_transformer.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/context/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/context/any_context.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/context/any_shared_context.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/context/context.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/context/shared_context.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/dot_dict/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/dot_dict/dot_dict.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/env/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/env/any_env.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/env/env.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/env/env_file.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/env/env_map.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/group/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/group/any_group.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/group/group.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/any_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/base_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/bool_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/float_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/int_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/option_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/password_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/str_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/input/text_input.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/llm_config.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_app.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_config/config.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_config/config_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/docs_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/error_page/serve_default_404.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/error_page/show_error_page.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/error_page/view.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/home_page/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/home_page/home_page_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/home_page/view.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/login_api_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/login_page/login_page_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/login_page/view.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/logout_api_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/logout_page/logout_page_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/logout_page/view.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/node_page/group/show_group_page.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/node_page/group/view.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/node_page/node_page_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/node_page/task/partial/input.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/node_page/task/show_task_page.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/node_page/task/view.html +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/refresh_token_api_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/refresh-token.template.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/common.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/favicon-32x32.png +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/login/event.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/logout/event.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/pico.min.css +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/session/common-util.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/session/current-session.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/session/event.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/resources/session/past-session.js +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/static/static_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/task_input_api_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_route/task_session_api_route.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_schema/session.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_schema/token.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_schema/user.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_util/cookie.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_util/html.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_util/token.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/runner/web_util/user.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session/any_session.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session/session.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session_state_log/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session_state_log/session_state_log.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session_state_logger/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session_state_logger/any_session_state_logger.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session_state_logger/file_session_state_logger.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/session_state_logger/session_state_logger_factory.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/any_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base/context.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base/execution.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base/lifecycle.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base/monitoring.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base/operators.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/base_trigger.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/cmd_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/http_check.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/agent.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/config.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/context.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/error.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/history.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/history_summarization.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/print_node.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/prompt.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/tool_wrapper.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm/typing.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/llm_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/make_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/rsync_task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/scaffolder.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/scheduler.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/task.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task/tcp_check.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task_status/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/task_status/task_status.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/attr.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cli/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cli/style.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cli/subcommand.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cmd/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cmd/command.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cmd/remote.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modification_mode.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_class.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_class_parent.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_class_property.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_dict.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_function.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_function_call.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_method.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/codemod/modify_module.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/cron.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/file.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/git.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/git_subtree.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/group.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/load.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/run.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/string/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/string/conversion.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/string/format.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/string/name.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/util/todo.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/xcom/__init__.py +0 -0
- {zrb-1.5.14 → zrb-1.5.16}/src/zrb/xcom/xcom.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: zrb
|
3
|
-
Version: 1.5.
|
3
|
+
Version: 1.5.16
|
4
4
|
Summary: Your Automation Powerhouse
|
5
5
|
Home-page: https://github.com/state-alchemists/zrb
|
6
6
|
License: AGPL-3.0-or-later
|
@@ -27,6 +27,7 @@ Requires-Dist: pdfplumber (>=0.11.6,<0.12.0) ; extra == "rag" or extra == "all"
|
|
27
27
|
Requires-Dist: playwright (>=1.51.0,<2.0.0) ; extra == "playwright" or extra == "all"
|
28
28
|
Requires-Dist: psutil (>=7.0.0,<8.0.0)
|
29
29
|
Requires-Dist: pydantic-ai (>=0.1.6,<0.2.0)
|
30
|
+
Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
|
30
31
|
Requires-Dist: python-dotenv (>=1.1.0,<2.0.0)
|
31
32
|
Requires-Dist: python-jose[cryptography] (>=3.4.0,<4.0.0)
|
32
33
|
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
[tool.poetry]
|
2
2
|
name = "zrb"
|
3
|
-
version = "1.5.
|
3
|
+
version = "1.5.16"
|
4
4
|
description = "Your Automation Powerhouse"
|
5
5
|
authors = ["Go Frendi Gunawan <gofrendiasgard@gmail.com>"]
|
6
6
|
license = "AGPL-3.0-or-later"
|
@@ -53,6 +53,7 @@ pydantic-ai = "^0.1.6"
|
|
53
53
|
openai = {version = "^1.76.0", optional = true}
|
54
54
|
playwright = {version = "^1.51.0", optional = true}
|
55
55
|
psutil = "^7.0.0"
|
56
|
+
pyjwt = "^2.10.1"
|
56
57
|
|
57
58
|
[tool.poetry.extras]
|
58
59
|
# poetry install -E rag
|
@@ -1,4 +1,4 @@
|
|
1
|
-
from zrb.builtin.base64 import decode_base64, encode_base64
|
1
|
+
from zrb.builtin.base64 import decode_base64, encode_base64, validate_base64
|
2
2
|
from zrb.builtin.git import (
|
3
3
|
get_git_diff,
|
4
4
|
git_commit,
|
@@ -7,8 +7,10 @@ from zrb.builtin.git import (
|
|
7
7
|
prune_local_branches,
|
8
8
|
)
|
9
9
|
from zrb.builtin.git_subtree import git_add_subtree, git_pull_subtree, git_push_subtree
|
10
|
+
from zrb.builtin.http import generate_curl, http_request
|
11
|
+
from zrb.builtin.jwt import decode_jwt, encode_jwt, validate_jwt
|
10
12
|
from zrb.builtin.llm.llm_chat import llm_chat
|
11
|
-
from zrb.builtin.md5 import hash_md5, sum_md5
|
13
|
+
from zrb.builtin.md5 import hash_md5, sum_md5, validate_md5
|
12
14
|
from zrb.builtin.project.add.fastapp.fastapp_task import add_fastapp_to_project
|
13
15
|
from zrb.builtin.project.create.project_task import create_project
|
14
16
|
from zrb.builtin.python import format_python_code
|
@@ -30,6 +32,17 @@ from zrb.builtin.todo import (
|
|
30
32
|
log_todo,
|
31
33
|
show_todo,
|
32
34
|
)
|
35
|
+
from zrb.builtin.uuid import (
|
36
|
+
generate_uuid_v1,
|
37
|
+
generate_uuid_v3,
|
38
|
+
generate_uuid_v4,
|
39
|
+
generate_uuid_v5,
|
40
|
+
validate_uuid,
|
41
|
+
validate_uuid_v1,
|
42
|
+
validate_uuid_v3,
|
43
|
+
validate_uuid_v4,
|
44
|
+
validate_uuid_v5,
|
45
|
+
)
|
33
46
|
|
34
47
|
assert create_project
|
35
48
|
assert add_fastapp_to_project
|
@@ -38,9 +51,14 @@ assert make_bash_autocomplete
|
|
38
51
|
assert make_zsh_autocomplete
|
39
52
|
assert encode_base64
|
40
53
|
assert decode_base64
|
54
|
+
assert validate_base64
|
55
|
+
assert encode_jwt
|
56
|
+
assert decode_jwt
|
57
|
+
assert validate_jwt
|
41
58
|
assert llm_chat
|
42
59
|
assert hash_md5
|
43
60
|
assert sum_md5
|
61
|
+
assert validate_md5
|
44
62
|
assert get_git_diff
|
45
63
|
assert prune_local_branches
|
46
64
|
assert format_python_code
|
@@ -64,3 +82,14 @@ assert setup_latex_on_ubuntu
|
|
64
82
|
assert setup_asdf
|
65
83
|
assert setup_tmux
|
66
84
|
assert setup_zsh
|
85
|
+
assert validate_uuid
|
86
|
+
assert validate_uuid_v1
|
87
|
+
assert validate_uuid_v3
|
88
|
+
assert validate_uuid_v4
|
89
|
+
assert validate_uuid_v5
|
90
|
+
assert generate_uuid_v1
|
91
|
+
assert generate_uuid_v3
|
92
|
+
assert generate_uuid_v4
|
93
|
+
assert generate_uuid_v5
|
94
|
+
assert http_request
|
95
|
+
assert generate_curl
|
@@ -32,3 +32,27 @@ def decode_base64(ctx: AnyContext) -> str:
|
|
32
32
|
result = base64.b64decode(ctx.input.text.encode()).decode()
|
33
33
|
ctx.print(result)
|
34
34
|
return result
|
35
|
+
|
36
|
+
|
37
|
+
@make_task(
|
38
|
+
name="validate-base64",
|
39
|
+
input=StrInput(
|
40
|
+
name="text",
|
41
|
+
description="Text to validate",
|
42
|
+
prompt="Enter text to validate as base64",
|
43
|
+
),
|
44
|
+
description="✅ Validate base64 text",
|
45
|
+
group=base64_group,
|
46
|
+
alias="validate",
|
47
|
+
)
|
48
|
+
def validate_base64(ctx: AnyContext) -> bool:
|
49
|
+
import base64
|
50
|
+
import binascii
|
51
|
+
|
52
|
+
try:
|
53
|
+
base64.b64decode(ctx.input.text.encode()).decode()
|
54
|
+
ctx.print("Valid base64")
|
55
|
+
return True
|
56
|
+
except (binascii.Error, UnicodeDecodeError):
|
57
|
+
ctx.print("Invalid base64")
|
58
|
+
return False
|
@@ -2,6 +2,15 @@ from zrb.group.group import Group
|
|
2
2
|
from zrb.runner.cli import cli
|
3
3
|
|
4
4
|
base64_group = cli.add_group(Group(name="base64", description="📄 Base64 operations"))
|
5
|
+
uuid_group = cli.add_group(Group(name="uuid", description="🆔 UUID operations"))
|
6
|
+
uuid_v1_group = uuid_group.add_group(Group(name="v1", description="UUID V1 operations"))
|
7
|
+
uuid_v3_group = uuid_group.add_group(Group(name="v3", description="UUID V3 operations"))
|
8
|
+
uuid_v4_group = uuid_group.add_group(Group(name="v4", description="UUID V4 operations"))
|
9
|
+
uuid_v5_group = uuid_group.add_group(Group(name="v5", description="UUID V5 operations"))
|
10
|
+
ulid_group = cli.add_group(Group(name="ulid", description="🔢 ULID operations"))
|
11
|
+
jwt_group = cli.add_group(Group(name="jwt", description="🔒 JWT encode/decode"))
|
12
|
+
http_group = cli.add_group(Group(name="http", description="🌐 HTTP request operations"))
|
13
|
+
|
5
14
|
random_group = cli.add_group(Group(name="random", description="🔀 Random operation"))
|
6
15
|
git_group = cli.add_group(Group(name="git", description="🌱 Git related commands"))
|
7
16
|
git_branch_group = git_group.add_group(
|
@@ -0,0 +1,152 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
from zrb.builtin.group import http_group
|
4
|
+
from zrb.context.any_context import AnyContext
|
5
|
+
from zrb.input.option_input import OptionInput
|
6
|
+
from zrb.input.str_input import StrInput
|
7
|
+
from zrb.task.make_task import make_task
|
8
|
+
|
9
|
+
|
10
|
+
@make_task(
|
11
|
+
name="http-request",
|
12
|
+
description="🌐 Send HTTP request (Postman-like)",
|
13
|
+
group=http_group,
|
14
|
+
alias="request",
|
15
|
+
input=[
|
16
|
+
OptionInput(
|
17
|
+
name="method",
|
18
|
+
default="GET",
|
19
|
+
options=["GET", "POST", "PUT", "DELETE", "PATCH"],
|
20
|
+
prompt="HTTP method",
|
21
|
+
),
|
22
|
+
StrInput(name="url", description="Target URL", prompt="Enter request URL"),
|
23
|
+
StrInput(
|
24
|
+
name="headers",
|
25
|
+
description="Request headers (JSON)",
|
26
|
+
prompt="Enter headers as JSON",
|
27
|
+
default="{}",
|
28
|
+
),
|
29
|
+
StrInput(
|
30
|
+
name="body",
|
31
|
+
description="Request body (JSON)",
|
32
|
+
prompt="Enter body as JSON",
|
33
|
+
default="{}",
|
34
|
+
),
|
35
|
+
OptionInput(
|
36
|
+
name="verify_ssl",
|
37
|
+
default="true",
|
38
|
+
options=["true", "false"],
|
39
|
+
description="Verify SSL certificate",
|
40
|
+
),
|
41
|
+
],
|
42
|
+
)
|
43
|
+
def http_request(ctx: AnyContext) -> Any:
|
44
|
+
import json
|
45
|
+
|
46
|
+
import requests
|
47
|
+
|
48
|
+
try:
|
49
|
+
# Prepare headers
|
50
|
+
headers = json.loads(ctx.input.headers)
|
51
|
+
|
52
|
+
# Prepare body
|
53
|
+
body = None
|
54
|
+
if ctx.input.body != "{}":
|
55
|
+
body = json.loads(ctx.input.body)
|
56
|
+
|
57
|
+
# Make request
|
58
|
+
verify = ctx.input.verify_ssl.lower() == "true"
|
59
|
+
response = requests.request(
|
60
|
+
method=ctx.input.method,
|
61
|
+
url=ctx.input.url,
|
62
|
+
headers=headers,
|
63
|
+
json=body,
|
64
|
+
verify=verify,
|
65
|
+
)
|
66
|
+
|
67
|
+
# Print request/response details
|
68
|
+
ctx.print("🌐 Request:")
|
69
|
+
ctx.print(f" Method: {ctx.input.method}")
|
70
|
+
ctx.print(f" URL: {ctx.input.url}")
|
71
|
+
ctx.print(f" Headers: {headers}")
|
72
|
+
ctx.print(f" Body: {body}")
|
73
|
+
ctx.print(f" Verify SSL: {verify}")
|
74
|
+
ctx.print("📥 Response:")
|
75
|
+
ctx.print(f" Status: {response.status_code}")
|
76
|
+
ctx.print(f" Headers: {dict(response.headers)}")
|
77
|
+
ctx.print(f" Body: {response.text}")
|
78
|
+
|
79
|
+
return response
|
80
|
+
except Exception as e:
|
81
|
+
ctx.print_err(f"HTTP request failed: {e}")
|
82
|
+
raise
|
83
|
+
|
84
|
+
|
85
|
+
@make_task(
|
86
|
+
name="generate-curl",
|
87
|
+
description="🔄 Generate curl command",
|
88
|
+
group=http_group,
|
89
|
+
alias="curl",
|
90
|
+
input=[
|
91
|
+
OptionInput(
|
92
|
+
name="method",
|
93
|
+
default="GET",
|
94
|
+
options=["GET", "POST", "PUT", "DELETE", "PATCH"],
|
95
|
+
prompt="HTTP method",
|
96
|
+
),
|
97
|
+
StrInput(name="url", description="Target URL", prompt="Enter request URL"),
|
98
|
+
StrInput(
|
99
|
+
name="headers",
|
100
|
+
description="Request headers (JSON)",
|
101
|
+
prompt="Enter headers as JSON",
|
102
|
+
default="{}",
|
103
|
+
),
|
104
|
+
StrInput(
|
105
|
+
name="body",
|
106
|
+
description="Request body (JSON)",
|
107
|
+
prompt="Enter body as JSON",
|
108
|
+
default="{}",
|
109
|
+
),
|
110
|
+
OptionInput(
|
111
|
+
name="verify_ssl",
|
112
|
+
default="true",
|
113
|
+
options=["true", "false"],
|
114
|
+
description="Verify SSL certificate",
|
115
|
+
),
|
116
|
+
],
|
117
|
+
)
|
118
|
+
def generate_curl(ctx: AnyContext) -> str:
|
119
|
+
import json
|
120
|
+
import shlex
|
121
|
+
|
122
|
+
try:
|
123
|
+
# Prepare curl command parts
|
124
|
+
parts = ["curl"]
|
125
|
+
|
126
|
+
# Add method
|
127
|
+
parts.extend(["-X", ctx.input.method])
|
128
|
+
|
129
|
+
# Add headers
|
130
|
+
if ctx.input.headers != "{}":
|
131
|
+
headers = json.loads(ctx.input.headers)
|
132
|
+
for key, value in headers.items():
|
133
|
+
parts.extend(["-H", f"{key}: {value}"])
|
134
|
+
|
135
|
+
# Add body
|
136
|
+
if ctx.input.body != "{}":
|
137
|
+
parts.extend(["--data-raw", shlex.quote(ctx.input.body)])
|
138
|
+
|
139
|
+
# Add SSL verification
|
140
|
+
if ctx.input.verify_ssl.lower() == "false":
|
141
|
+
parts.append("--insecure")
|
142
|
+
|
143
|
+
# Add URL
|
144
|
+
parts.append(shlex.quote(ctx.input.url))
|
145
|
+
|
146
|
+
# Join parts into command string
|
147
|
+
curl_command = " ".join(parts)
|
148
|
+
ctx.print(f"🔄 Curl command: {curl_command}")
|
149
|
+
return curl_command
|
150
|
+
except Exception as e:
|
151
|
+
ctx.print_err(f"Failed to generate curl command: {e}")
|
152
|
+
raise
|
@@ -0,0 +1,104 @@
|
|
1
|
+
from typing import Any, Dict
|
2
|
+
|
3
|
+
from zrb.builtin.group import jwt_group
|
4
|
+
from zrb.context.any_context import AnyContext
|
5
|
+
from zrb.input.option_input import OptionInput
|
6
|
+
from zrb.input.str_input import StrInput
|
7
|
+
from zrb.task.make_task import make_task
|
8
|
+
|
9
|
+
|
10
|
+
@make_task(
|
11
|
+
name="encode-jwt",
|
12
|
+
description="🔒 Encode JWT token",
|
13
|
+
group=jwt_group,
|
14
|
+
alias="encode",
|
15
|
+
input=[
|
16
|
+
StrInput(name="secret", prompt="Secret", default=""),
|
17
|
+
StrInput(name="payload", prompt="Payload (JSON format)", default="{}"),
|
18
|
+
OptionInput(
|
19
|
+
name="algorithm",
|
20
|
+
prompt="Algorithm",
|
21
|
+
default="HS256",
|
22
|
+
options=["HS256", "HS384", "HS512"],
|
23
|
+
),
|
24
|
+
],
|
25
|
+
)
|
26
|
+
def encode_jwt(ctx: AnyContext) -> str:
|
27
|
+
import jwt
|
28
|
+
|
29
|
+
try:
|
30
|
+
payload = eval(ctx.input.payload)
|
31
|
+
token = jwt.encode(
|
32
|
+
payload=payload, key=ctx.input.secret, algorithm=ctx.input.algorithm
|
33
|
+
)
|
34
|
+
ctx.print(token)
|
35
|
+
return token
|
36
|
+
except Exception as e:
|
37
|
+
ctx.print_err(f"Failed to encode JWT: {e}")
|
38
|
+
raise
|
39
|
+
|
40
|
+
|
41
|
+
@make_task(
|
42
|
+
name="decode-jwt",
|
43
|
+
description="🔓 Decode JWT token",
|
44
|
+
group=jwt_group,
|
45
|
+
alias="decode",
|
46
|
+
input=[
|
47
|
+
StrInput(name="token", prompt="Token", default=""),
|
48
|
+
StrInput(name="secret", prompt="Secret", default=""),
|
49
|
+
OptionInput(
|
50
|
+
name="algorithm",
|
51
|
+
prompt="Algorithm",
|
52
|
+
default="HS256",
|
53
|
+
options=["HS256", "HS384", "HS512"],
|
54
|
+
),
|
55
|
+
],
|
56
|
+
)
|
57
|
+
def decode_jwt(ctx: AnyContext) -> Dict[str, Any]:
|
58
|
+
import jwt
|
59
|
+
|
60
|
+
try:
|
61
|
+
payload = jwt.decode(
|
62
|
+
jwt=ctx.input.token, key=ctx.input.secret, algorithms=[ctx.input.algorithm]
|
63
|
+
)
|
64
|
+
ctx.print(payload)
|
65
|
+
return payload
|
66
|
+
except Exception as e:
|
67
|
+
ctx.print_err(f"Failed to decode JWT: {e}")
|
68
|
+
raise
|
69
|
+
|
70
|
+
|
71
|
+
@make_task(
|
72
|
+
name="validate-jwt",
|
73
|
+
description="✅ Validate JWT token",
|
74
|
+
group=jwt_group,
|
75
|
+
alias="validate",
|
76
|
+
input=[
|
77
|
+
StrInput(name="token", prompt="Token", default=""),
|
78
|
+
StrInput(name="secret", prompt="Secret", default=""),
|
79
|
+
OptionInput(
|
80
|
+
name="algorithm",
|
81
|
+
prompt="Algorithm",
|
82
|
+
default="HS256",
|
83
|
+
options=["HS256", "HS384", "HS512"],
|
84
|
+
),
|
85
|
+
],
|
86
|
+
)
|
87
|
+
def validate_jwt(ctx: AnyContext) -> bool:
|
88
|
+
import jwt
|
89
|
+
|
90
|
+
try:
|
91
|
+
jwt.decode(
|
92
|
+
jwt=ctx.input.token, key=ctx.input.secret, algorithms=[ctx.input.algorithm]
|
93
|
+
)
|
94
|
+
ctx.print("✅ Token is valid")
|
95
|
+
return True
|
96
|
+
except jwt.ExpiredSignatureError:
|
97
|
+
ctx.print_err("❌ Token has expired")
|
98
|
+
return False
|
99
|
+
except jwt.InvalidTokenError:
|
100
|
+
ctx.print_err("❌ Invalid token")
|
101
|
+
return False
|
102
|
+
except Exception as e:
|
103
|
+
ctx.print_err(f"❌ Validation failed: {e}")
|
104
|
+
return False
|
@@ -34,3 +34,26 @@ def sum_md5(ctx: AnyContext) -> str:
|
|
34
34
|
result = hashlib.md5(content).hexdigest()
|
35
35
|
ctx.print(result)
|
36
36
|
return result
|
37
|
+
|
38
|
+
|
39
|
+
@make_task(
|
40
|
+
name="validate-md5",
|
41
|
+
input=StrInput(
|
42
|
+
name="hash",
|
43
|
+
description="Hash to validate",
|
44
|
+
prompt="Enter hash to validate as MD5",
|
45
|
+
),
|
46
|
+
description="✅ Validate MD5 hash",
|
47
|
+
group=md5_group,
|
48
|
+
alias="validate",
|
49
|
+
)
|
50
|
+
def validate_md5(ctx: AnyContext) -> bool:
|
51
|
+
import re
|
52
|
+
|
53
|
+
pattern = r"^[a-f0-9]{32}$"
|
54
|
+
is_valid = bool(re.fullmatch(pattern, ctx.input.hash))
|
55
|
+
if is_valid:
|
56
|
+
ctx.print("Valid MD5 hash")
|
57
|
+
else:
|
58
|
+
ctx.print("Invalid MD5 hash")
|
59
|
+
return is_valid
|
@@ -215,7 +215,7 @@ def archive_todo(ctx: AnyContext):
|
|
215
215
|
# Save the new todo list and add the archived ones
|
216
216
|
save_todo_list(archive_file_path, archived_todo_list)
|
217
217
|
save_todo_list(todo_file_path, working_todo_list)
|
218
|
-
return get_visual_todo_list(
|
218
|
+
return get_visual_todo_list(working_todo_list, filter=ctx.input.filter)
|
219
219
|
|
220
220
|
|
221
221
|
@make_task(
|
@@ -0,0 +1,224 @@
|
|
1
|
+
from zrb.builtin.group import (
|
2
|
+
uuid_group,
|
3
|
+
uuid_v1_group,
|
4
|
+
uuid_v3_group,
|
5
|
+
uuid_v4_group,
|
6
|
+
uuid_v5_group,
|
7
|
+
)
|
8
|
+
from zrb.context.any_context import AnyContext
|
9
|
+
from zrb.input.option_input import OptionInput
|
10
|
+
from zrb.input.str_input import StrInput
|
11
|
+
from zrb.task.make_task import make_task
|
12
|
+
|
13
|
+
|
14
|
+
@make_task(
|
15
|
+
name="generate-uuid-v1",
|
16
|
+
description="🔨 Generate UUID V1",
|
17
|
+
input=[
|
18
|
+
StrInput(
|
19
|
+
name="node",
|
20
|
+
description="48-bit hardware address as integer (leave empty for random)",
|
21
|
+
prompt="Enter node address (48-bit integer)",
|
22
|
+
allow_empty=True,
|
23
|
+
),
|
24
|
+
StrInput(
|
25
|
+
name="clock-seq",
|
26
|
+
description="14-bit sequence number as integer (leave empty for random)",
|
27
|
+
prompt="Enter clock sequence (14-bit integer)",
|
28
|
+
allow_empty=True,
|
29
|
+
),
|
30
|
+
],
|
31
|
+
group=uuid_v1_group,
|
32
|
+
alias="generate",
|
33
|
+
)
|
34
|
+
def generate_uuid_v1(ctx: AnyContext) -> str:
|
35
|
+
import uuid
|
36
|
+
|
37
|
+
result = str(
|
38
|
+
uuid.uuid1(
|
39
|
+
node=int(ctx.input.node) if ctx.input.node != "" else None,
|
40
|
+
clock_seq=int(ctx.input.clock_seq) if ctx.input.clock_seq != "" else None,
|
41
|
+
)
|
42
|
+
)
|
43
|
+
ctx.print(result)
|
44
|
+
return result
|
45
|
+
|
46
|
+
|
47
|
+
@make_task(
|
48
|
+
name="generate-uuid-v3",
|
49
|
+
description="🔨 Generate UUID v3 (MD5 namespace-based)",
|
50
|
+
input=[
|
51
|
+
OptionInput(
|
52
|
+
name="namespace",
|
53
|
+
description="Namespace for v3",
|
54
|
+
prompt="Select a namespace",
|
55
|
+
options=["dns", "url", "oid", "x500"],
|
56
|
+
),
|
57
|
+
StrInput(
|
58
|
+
name="name",
|
59
|
+
description="Name string",
|
60
|
+
prompt="Enter the name to namespace-hash",
|
61
|
+
),
|
62
|
+
],
|
63
|
+
group=uuid_v3_group,
|
64
|
+
alias="generate",
|
65
|
+
)
|
66
|
+
def generate_uuid_v3(ctx: AnyContext) -> str:
|
67
|
+
import uuid
|
68
|
+
|
69
|
+
ns_map = {
|
70
|
+
"dns": uuid.NAMESPACE_DNS,
|
71
|
+
"url": uuid.NAMESPACE_URL,
|
72
|
+
"oid": uuid.NAMESPACE_OID,
|
73
|
+
"x500": uuid.NAMESPACE_X500,
|
74
|
+
}
|
75
|
+
namespace = ns_map[ctx.input.namespace]
|
76
|
+
result = str(uuid.uuid3(namespace, ctx.input.name))
|
77
|
+
ctx.print(result)
|
78
|
+
return result
|
79
|
+
|
80
|
+
|
81
|
+
@make_task(
|
82
|
+
name="generate-uuid-v4",
|
83
|
+
description="🔨 Generate UUID v4 (random)",
|
84
|
+
group=uuid_v4_group,
|
85
|
+
alias="generate",
|
86
|
+
)
|
87
|
+
def generate_uuid_v4(ctx: AnyContext) -> str:
|
88
|
+
import uuid
|
89
|
+
|
90
|
+
result = str(uuid.uuid4())
|
91
|
+
ctx.print(result)
|
92
|
+
return result
|
93
|
+
|
94
|
+
|
95
|
+
uuid_group.add_task(generate_uuid_v4, alias="generate")
|
96
|
+
|
97
|
+
|
98
|
+
@make_task(
|
99
|
+
name="generate-uuid-v5",
|
100
|
+
description="🔨 Generate UUID v5 (SHA1 namespace-based)",
|
101
|
+
input=[
|
102
|
+
OptionInput(
|
103
|
+
name="namespace",
|
104
|
+
description="Namespace for v5",
|
105
|
+
prompt="Select a namespace",
|
106
|
+
options=["dns", "url", "oid", "x500"],
|
107
|
+
),
|
108
|
+
StrInput(
|
109
|
+
name="name",
|
110
|
+
description="Name string",
|
111
|
+
prompt="Enter the name to namespace-hash",
|
112
|
+
),
|
113
|
+
],
|
114
|
+
group=uuid_v5_group,
|
115
|
+
alias="generate",
|
116
|
+
)
|
117
|
+
def generate_uuid_v5(ctx: AnyContext) -> str:
|
118
|
+
import uuid
|
119
|
+
|
120
|
+
ns_map = {
|
121
|
+
"dns": uuid.NAMESPACE_DNS,
|
122
|
+
"url": uuid.NAMESPACE_URL,
|
123
|
+
"oid": uuid.NAMESPACE_OID,
|
124
|
+
"x500": uuid.NAMESPACE_X500,
|
125
|
+
}
|
126
|
+
namespace = ns_map[ctx.input.namespace]
|
127
|
+
result = str(uuid.uuid5(namespace, ctx.input.name))
|
128
|
+
ctx.print(result)
|
129
|
+
return result
|
130
|
+
|
131
|
+
|
132
|
+
@make_task(
|
133
|
+
name="validate-uuid",
|
134
|
+
description="✅ Validate UUID",
|
135
|
+
input=StrInput(name="id"),
|
136
|
+
group=uuid_group,
|
137
|
+
alias="validate",
|
138
|
+
)
|
139
|
+
def validate_uuid(ctx: AnyContext) -> bool:
|
140
|
+
import uuid
|
141
|
+
|
142
|
+
try:
|
143
|
+
uuid.UUID(ctx.input.id, version=1)
|
144
|
+
ctx.print("Valid UUID")
|
145
|
+
return True
|
146
|
+
except Exception:
|
147
|
+
ctx.print("Invalid UUID")
|
148
|
+
return False
|
149
|
+
|
150
|
+
|
151
|
+
@make_task(
|
152
|
+
name="validate-uuid-v1",
|
153
|
+
description="✅ Validate UUID V1",
|
154
|
+
input=StrInput(name="id"),
|
155
|
+
group=uuid_v1_group,
|
156
|
+
alias="validate",
|
157
|
+
)
|
158
|
+
def validate_uuid_v1(ctx: AnyContext) -> bool:
|
159
|
+
import uuid
|
160
|
+
|
161
|
+
try:
|
162
|
+
uuid.UUID(ctx.input.id, version=1)
|
163
|
+
ctx.print("Valid UUID V1")
|
164
|
+
return True
|
165
|
+
except Exception:
|
166
|
+
ctx.print("Invalid UUID V1")
|
167
|
+
return False
|
168
|
+
|
169
|
+
|
170
|
+
@make_task(
|
171
|
+
name="validate-uuid-v3",
|
172
|
+
description="✅ Validate UUID V3",
|
173
|
+
input=StrInput(name="id"),
|
174
|
+
group=uuid_v3_group,
|
175
|
+
alias="validate",
|
176
|
+
)
|
177
|
+
def validate_uuid_v3(ctx: AnyContext) -> bool:
|
178
|
+
import uuid
|
179
|
+
|
180
|
+
try:
|
181
|
+
uuid.UUID(ctx.input.id, version=3)
|
182
|
+
ctx.print("Valid UUID V3")
|
183
|
+
return True
|
184
|
+
except Exception:
|
185
|
+
ctx.print("Invalid UUID V3")
|
186
|
+
return False
|
187
|
+
|
188
|
+
|
189
|
+
@make_task(
|
190
|
+
name="validate-uuid-v4",
|
191
|
+
description="✅ Validate UUID V4",
|
192
|
+
input=StrInput(name="id"),
|
193
|
+
group=uuid_v4_group,
|
194
|
+
alias="validate",
|
195
|
+
)
|
196
|
+
def validate_uuid_v4(ctx: AnyContext) -> bool:
|
197
|
+
import uuid
|
198
|
+
|
199
|
+
try:
|
200
|
+
uuid.UUID(ctx.input.id, version=4)
|
201
|
+
ctx.print("Valid UUID V4")
|
202
|
+
return True
|
203
|
+
except Exception:
|
204
|
+
ctx.print("Invalid UUID V4")
|
205
|
+
return False
|
206
|
+
|
207
|
+
|
208
|
+
@make_task(
|
209
|
+
name="validate-uuid-v5",
|
210
|
+
description="✅ Validate UUID V5",
|
211
|
+
input=StrInput(name="id"),
|
212
|
+
group=uuid_v5_group,
|
213
|
+
alias="validate",
|
214
|
+
)
|
215
|
+
def validate_uuid_v5(ctx: AnyContext) -> bool:
|
216
|
+
import uuid
|
217
|
+
|
218
|
+
try:
|
219
|
+
uuid.UUID(ctx.input.id, version=5)
|
220
|
+
ctx.print("Valid UUID V5")
|
221
|
+
return True
|
222
|
+
except Exception:
|
223
|
+
ctx.print("Invalid UUID V5")
|
224
|
+
return False
|
@@ -4,6 +4,7 @@ from typing import Any
|
|
4
4
|
from zrb.config import BANNER, VERSION, WEB_HTTP_PORT
|
5
5
|
from zrb.context.any_context import AnyContext
|
6
6
|
from zrb.context.shared_context import SharedContext
|
7
|
+
from zrb.group.any_group import AnyGroup
|
7
8
|
from zrb.group.group import Group
|
8
9
|
from zrb.runner.common_util import get_run_kwargs
|
9
10
|
from zrb.runner.web_app import create_web_app
|
@@ -25,7 +26,7 @@ class Cli(Group):
|
|
25
26
|
def run(self, args: list[str] = []):
|
26
27
|
kwargs, args = self._extract_kwargs_from_args(args)
|
27
28
|
node, node_path, args = extract_node_from_args(self, args)
|
28
|
-
if isinstance(node,
|
29
|
+
if isinstance(node, AnyGroup):
|
29
30
|
self._show_group_info(node)
|
30
31
|
return
|
31
32
|
if "h" in kwargs or "help" in kwargs:
|
@@ -88,7 +89,7 @@ class Cli(Group):
|
|
88
89
|
print(f" --{task_input_name}: {task_input.description}")
|
89
90
|
print()
|
90
91
|
|
91
|
-
def _show_group_info(self, group:
|
92
|
+
def _show_group_info(self, group: AnyGroup):
|
92
93
|
if group.banner != "":
|
93
94
|
print(group.banner)
|
94
95
|
print()
|