loopix-sdk 2.30.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.
- loopix_sdk-2.30.0/LICENSE +9 -0
- loopix_sdk-2.30.0/PKG-INFO +98 -0
- loopix_sdk-2.30.0/README.md +65 -0
- loopix_sdk-2.30.0/loopix/__init__.py +260 -0
- loopix_sdk-2.30.0/loopix/api/__init__.py +287 -0
- loopix_sdk-2.30.0/loopix/api/client/__init__.py +8 -0
- loopix_sdk-2.30.0/loopix/api/client/api/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py +161 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_sandboxes.py +176 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_sandboxes_metrics.py +173 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_sandboxes_sandbox_id.py +163 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py +199 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py +212 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_v2_sandboxes.py +230 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/get_v_2_sandboxes_sandbox_id_logs.py +254 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes.py +172 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes_sandbox_id_connect.py +193 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py +187 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py +181 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py +189 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes_sandbox_id_snapshots.py +195 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py +193 -0
- loopix_sdk-2.30.0/loopix/api/client/api/sandboxes/put_sandboxes_sandbox_id_network.py +199 -0
- loopix_sdk-2.30.0/loopix/api/client/api/snapshots/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/api/client/api/snapshots/get_snapshots.py +202 -0
- loopix_sdk-2.30.0/loopix/api/client/api/tags/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/api/client/api/tags/delete_templates_tags.py +174 -0
- loopix_sdk-2.30.0/loopix/api/client/api/tags/get_templates_template_id_tags.py +172 -0
- loopix_sdk-2.30.0/loopix/api/client/api/tags/post_templates_tags.py +176 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/delete_templates_template_id.py +157 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/get_templates.py +172 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/get_templates_aliases_alias.py +167 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/get_templates_template_id.py +195 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/get_templates_template_id_builds_build_id_logs.py +272 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/get_templates_template_id_builds_build_id_status.py +232 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/get_templates_template_id_files_hash.py +180 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/patch_templates_template_id.py +183 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/patch_v_2_templates_template_id.py +185 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/post_templates.py +172 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/post_templates_template_id.py +181 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/post_templates_template_id_builds_build_id.py +170 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/post_v2_templates.py +172 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/post_v3_templates.py +176 -0
- loopix_sdk-2.30.0/loopix/api/client/api/templates/post_v_2_templates_template_id_builds_build_id.py +192 -0
- loopix_sdk-2.30.0/loopix/api/client/api/volumes/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/api/client/api/volumes/delete_volumes_volume_id.py +161 -0
- loopix_sdk-2.30.0/loopix/api/client/api/volumes/get_volumes.py +140 -0
- loopix_sdk-2.30.0/loopix/api/client/api/volumes/get_volumes_volume_id.py +163 -0
- loopix_sdk-2.30.0/loopix/api/client/api/volumes/post_volumes.py +172 -0
- loopix_sdk-2.30.0/loopix/api/client/client.py +286 -0
- loopix_sdk-2.30.0/loopix/api/client/errors.py +16 -0
- loopix_sdk-2.30.0/loopix/api/client/models/__init__.py +185 -0
- loopix_sdk-2.30.0/loopix/api/client/models/admin_build_cancel_result.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/admin_sandbox_kill_result.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/assign_template_tags_request.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/assigned_template_tags.py +68 -0
- loopix_sdk-2.30.0/loopix/api/client/models/aws_registry.py +85 -0
- loopix_sdk-2.30.0/loopix/api/client/models/aws_registry_type.py +8 -0
- loopix_sdk-2.30.0/loopix/api/client/models/build_log_entry.py +89 -0
- loopix_sdk-2.30.0/loopix/api/client/models/build_status_reason.py +95 -0
- loopix_sdk-2.30.0/loopix/api/client/models/connect_sandbox.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/created_access_token.py +100 -0
- loopix_sdk-2.30.0/loopix/api/client/models/created_team_api_key.py +166 -0
- loopix_sdk-2.30.0/loopix/api/client/models/delete_template_tags_request.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/disk_metrics.py +91 -0
- loopix_sdk-2.30.0/loopix/api/client/models/error.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/gcp_registry.py +69 -0
- loopix_sdk-2.30.0/loopix/api/client/models/gcp_registry_type.py +8 -0
- loopix_sdk-2.30.0/loopix/api/client/models/general_registry.py +77 -0
- loopix_sdk-2.30.0/loopix/api/client/models/general_registry_type.py +8 -0
- loopix_sdk-2.30.0/loopix/api/client/models/identifier_masking_details.py +83 -0
- loopix_sdk-2.30.0/loopix/api/client/models/listed_sandbox.py +179 -0
- loopix_sdk-2.30.0/loopix/api/client/models/log_level.py +11 -0
- loopix_sdk-2.30.0/loopix/api/client/models/logs_direction.py +9 -0
- loopix_sdk-2.30.0/loopix/api/client/models/logs_source.py +9 -0
- loopix_sdk-2.30.0/loopix/api/client/models/machine_info.py +83 -0
- loopix_sdk-2.30.0/loopix/api/client/models/max_team_metric.py +78 -0
- loopix_sdk-2.30.0/loopix/api/client/models/mcp_type_0.py +44 -0
- loopix_sdk-2.30.0/loopix/api/client/models/new_access_token.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/new_sandbox.py +224 -0
- loopix_sdk-2.30.0/loopix/api/client/models/new_team_api_key.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/new_volume.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/node.py +160 -0
- loopix_sdk-2.30.0/loopix/api/client/models/node_detail.py +160 -0
- loopix_sdk-2.30.0/loopix/api/client/models/node_metrics.py +122 -0
- loopix_sdk-2.30.0/loopix/api/client/models/node_status.py +12 -0
- loopix_sdk-2.30.0/loopix/api/client/models/node_status_change.py +82 -0
- loopix_sdk-2.30.0/loopix/api/client/models/post_sandboxes_sandbox_id_refreshes_body.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/post_sandboxes_sandbox_id_snapshots_body.py +60 -0
- loopix_sdk-2.30.0/loopix/api/client/models/post_sandboxes_sandbox_id_timeout_body.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/resumed_sandbox.py +68 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox.py +145 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_auto_resume_config.py +60 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_detail.py +267 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_lifecycle.py +70 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_log.py +70 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_log_entry.py +93 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_log_entry_fields.py +44 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_logs.py +91 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_logs_v2_response.py +73 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_metric.py +126 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_config.py +118 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_config_rules.py +72 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_rule.py +74 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_transform.py +79 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_transform_headers.py +47 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_update_config.py +114 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_network_update_config_rules.py +71 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_on_timeout.py +9 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_pause_request.py +62 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_state.py +9 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandbox_volume_mount.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/sandboxes_with_metrics.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/snapshot_info.py +70 -0
- loopix_sdk-2.30.0/loopix/api/client/models/team.py +83 -0
- loopix_sdk-2.30.0/loopix/api/client/models/team_api_key.py +158 -0
- loopix_sdk-2.30.0/loopix/api/client/models/team_metric.py +86 -0
- loopix_sdk-2.30.0/loopix/api/client/models/team_user.py +75 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template.py +225 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_alias_response.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build.py +139 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_file_upload.py +70 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_info.py +126 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_logs_response.py +73 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_request.py +115 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_request_v2.py +88 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_request_v3.py +107 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_start_v2.py +184 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_build_status.py +11 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_legacy.py +207 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_request_response_v3.py +99 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_step.py +91 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_tag.py +78 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_update_request.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_update_response.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/template_with_builds.py +156 -0
- loopix_sdk-2.30.0/loopix/api/client/models/update_team_api_key.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/models/volume.py +67 -0
- loopix_sdk-2.30.0/loopix/api/client/models/volume_and_token.py +75 -0
- loopix_sdk-2.30.0/loopix/api/client/models/volume_token.py +59 -0
- loopix_sdk-2.30.0/loopix/api/client/py.typed +1 -0
- loopix_sdk-2.30.0/loopix/api/client/types.py +54 -0
- loopix_sdk-2.30.0/loopix/api/client_async/__init__.py +74 -0
- loopix_sdk-2.30.0/loopix/api/client_sync/__init__.py +73 -0
- loopix_sdk-2.30.0/loopix/api/metadata.py +14 -0
- loopix_sdk-2.30.0/loopix/connection_config.py +309 -0
- loopix_sdk-2.30.0/loopix/envd/api.py +170 -0
- loopix_sdk-2.30.0/loopix/envd/filesystem/filesystem_connect.py +193 -0
- loopix_sdk-2.30.0/loopix/envd/filesystem/filesystem_pb2.py +80 -0
- loopix_sdk-2.30.0/loopix/envd/filesystem/filesystem_pb2.pyi +272 -0
- loopix_sdk-2.30.0/loopix/envd/process/process_connect.py +174 -0
- loopix_sdk-2.30.0/loopix/envd/process/process_pb2.py +96 -0
- loopix_sdk-2.30.0/loopix/envd/process/process_pb2.pyi +316 -0
- loopix_sdk-2.30.0/loopix/envd/rpc.py +139 -0
- loopix_sdk-2.30.0/loopix/envd/versions.py +11 -0
- loopix_sdk-2.30.0/loopix/exceptions.py +133 -0
- loopix_sdk-2.30.0/loopix/io_utils.py +57 -0
- loopix_sdk-2.30.0/loopix/paginator.py +52 -0
- loopix_sdk-2.30.0/loopix/py.typed +0 -0
- loopix_sdk-2.30.0/loopix/sandbox/_git/__init__.py +85 -0
- loopix_sdk-2.30.0/loopix/sandbox/_git/args.py +363 -0
- loopix_sdk-2.30.0/loopix/sandbox/_git/auth.py +132 -0
- loopix_sdk-2.30.0/loopix/sandbox/_git/config.py +32 -0
- loopix_sdk-2.30.0/loopix/sandbox/_git/parse.py +222 -0
- loopix_sdk-2.30.0/loopix/sandbox/_git/types.py +149 -0
- loopix_sdk-2.30.0/loopix/sandbox/commands/command_handle.py +69 -0
- loopix_sdk-2.30.0/loopix/sandbox/commands/main.py +39 -0
- loopix_sdk-2.30.0/loopix/sandbox/filesystem/filesystem.py +337 -0
- loopix_sdk-2.30.0/loopix/sandbox/filesystem/watch_handle.py +70 -0
- loopix_sdk-2.30.0/loopix/sandbox/main.py +227 -0
- loopix_sdk-2.30.0/loopix/sandbox/mcp.py +1949 -0
- loopix_sdk-2.30.0/loopix/sandbox/network.py +8 -0
- loopix_sdk-2.30.0/loopix/sandbox/sandbox_api.py +624 -0
- loopix_sdk-2.30.0/loopix/sandbox/signature.py +47 -0
- loopix_sdk-2.30.0/loopix/sandbox/utils.py +34 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/commands/command.py +396 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/commands/command_handle.py +298 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/commands/pty.py +257 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/filesystem/filesystem.py +720 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/filesystem/watch_handle.py +97 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/git.py +1100 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/main.py +987 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/paginator.py +140 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/sandbox_api.py +504 -0
- loopix_sdk-2.30.0/loopix/sandbox_async/utils.py +7 -0
- loopix_sdk-2.30.0/loopix/sandbox_domains.py +5 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/commands/command.py +420 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/commands/command_handle.py +239 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/commands/pty.py +279 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/filesystem/filesystem.py +710 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/filesystem/watch_handle.py +102 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/git.py +1077 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/main.py +975 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/paginator.py +140 -0
- loopix_sdk-2.30.0/loopix/sandbox_sync/sandbox_api.py +491 -0
- loopix_sdk-2.30.0/loopix/template/consts.py +45 -0
- loopix_sdk-2.30.0/loopix/template/dockerfile_parser.py +286 -0
- loopix_sdk-2.30.0/loopix/template/logger.py +232 -0
- loopix_sdk-2.30.0/loopix/template/main.py +1368 -0
- loopix_sdk-2.30.0/loopix/template/readycmd.py +144 -0
- loopix_sdk-2.30.0/loopix/template/types.py +194 -0
- loopix_sdk-2.30.0/loopix/template/utils.py +426 -0
- loopix_sdk-2.30.0/loopix/template_async/build_api.py +419 -0
- loopix_sdk-2.30.0/loopix/template_async/main.py +528 -0
- loopix_sdk-2.30.0/loopix/template_sync/build_api.py +409 -0
- loopix_sdk-2.30.0/loopix/template_sync/main.py +529 -0
- loopix_sdk-2.30.0/loopix/volume/client/__init__.py +8 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/delete_volumecontent_volume_id_path.py +174 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/get_volumecontent_volume_id_dir.py +204 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/get_volumecontent_volume_id_file.py +179 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/get_volumecontent_volume_id_path.py +176 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/patch_volumecontent_volume_id_path.py +203 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/post_volumecontent_volume_id_dir.py +239 -0
- loopix_sdk-2.30.0/loopix/volume/client/api/volumes/put_volumecontent_volume_id_file.py +259 -0
- loopix_sdk-2.30.0/loopix/volume/client/client.py +286 -0
- loopix_sdk-2.30.0/loopix/volume/client/errors.py +16 -0
- loopix_sdk-2.30.0/loopix/volume/client/models/__init__.py +13 -0
- loopix_sdk-2.30.0/loopix/volume/client/models/error.py +67 -0
- loopix_sdk-2.30.0/loopix/volume/client/models/patch_volumecontent_volume_id_path_body.py +77 -0
- loopix_sdk-2.30.0/loopix/volume/client/models/volume_entry_stat.py +145 -0
- loopix_sdk-2.30.0/loopix/volume/client/models/volume_entry_stat_type.py +11 -0
- loopix_sdk-2.30.0/loopix/volume/client/py.typed +1 -0
- loopix_sdk-2.30.0/loopix/volume/client/types.py +54 -0
- loopix_sdk-2.30.0/loopix/volume/client_async/__init__.py +88 -0
- loopix_sdk-2.30.0/loopix/volume/client_sync/__init__.py +80 -0
- loopix_sdk-2.30.0/loopix/volume/connection_config.py +145 -0
- loopix_sdk-2.30.0/loopix/volume/types.py +62 -0
- loopix_sdk-2.30.0/loopix/volume/utils.py +52 -0
- loopix_sdk-2.30.0/loopix/volume/volume_async.py +639 -0
- loopix_sdk-2.30.0/loopix/volume/volume_sync.py +639 -0
- loopix_sdk-2.30.0/loopix_connect/__init__.py +1 -0
- loopix_sdk-2.30.0/loopix_connect/client.py +534 -0
- loopix_sdk-2.30.0/loopix_connect/py.typed +0 -0
- loopix_sdk-2.30.0/pyproject.toml +67 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 FOUNDRYLABS, INC.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
6
|
+
|
|
7
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
8
|
+
|
|
9
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: loopix-sdk
|
|
3
|
+
Version: 2.30.0
|
|
4
|
+
Summary: Loopix SDK that give agents cloud environments
|
|
5
|
+
License: MIT
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
Author: loopix
|
|
8
|
+
Author-email: hello@vm.betmandu.net
|
|
9
|
+
Requires-Python: >=3.10,<4.0
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Requires-Dist: attrs (>=23.2.0)
|
|
18
|
+
Requires-Dist: dockerfile-parse (>=2.0.1,<3.0.0)
|
|
19
|
+
Requires-Dist: h2 (>=4,<5)
|
|
20
|
+
Requires-Dist: httpcore (>=1.0.5,<2.0.0)
|
|
21
|
+
Requires-Dist: httpx (>=0.27.0,<1.0.0)
|
|
22
|
+
Requires-Dist: packaging (>=24.1)
|
|
23
|
+
Requires-Dist: protobuf (>=4.21.0)
|
|
24
|
+
Requires-Dist: python-dateutil (>=2.8.2)
|
|
25
|
+
Requires-Dist: rich (>=14.0.0)
|
|
26
|
+
Requires-Dist: typing-extensions (>=4.1.0)
|
|
27
|
+
Requires-Dist: wcmatch (>=10.1,<11.0)
|
|
28
|
+
Project-URL: Bug Tracker, https://github.com/loopix-dev/loopix/issues
|
|
29
|
+
Project-URL: Homepage, https://vm.betmandu.net/
|
|
30
|
+
Project-URL: Repository, https://github.com/loopix-dev/loopix/tree/main/packages/python-sdk
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
<p align="center">
|
|
34
|
+
<picture>
|
|
35
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/loopix-dev/loopix/refs/heads/main/readme-assets/logo-white.png">
|
|
36
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/loopix-dev/loopix/refs/heads/main/readme-assets/logo-black.png">
|
|
37
|
+
<img alt="Loopix Logo" src="https://raw.githubusercontent.com/loopix-dev/loopix/refs/heads/main/readme-assets/logo-black.png" width="200">
|
|
38
|
+
</picture>
|
|
39
|
+
</p>
|
|
40
|
+
|
|
41
|
+
<h4 align="center">
|
|
42
|
+
<a href="https://pypi.org/project/loopix/">
|
|
43
|
+
<img alt="Last 1 month downloads for the Python SDK" loading="lazy" decoding="async" style="color:transparent;width:170px;height:18px" src="https://static.pepy.tech/personalized-badge/loopix?period=monthly&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=PyPi%20Monthly%20Downloads">
|
|
44
|
+
</a>
|
|
45
|
+
</h4>
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
## What is Loopix?
|
|
49
|
+
[Loopix](https://www.loopix.dev/) is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our [JavaScript SDK](https://www.npmjs.com/package/loopix) or [Python SDK](https://pypi.org/project/loopix).
|
|
50
|
+
|
|
51
|
+
## Run your first Sandbox
|
|
52
|
+
|
|
53
|
+
### 1. Install SDK
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
pip install loopix
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Get your Loopix API key
|
|
60
|
+
1. Sign up to Loopix [here](https://vm.betmandu.net).
|
|
61
|
+
2. Get your API key [here](https://vm.betmandu.net/dashboard?tab=keys).
|
|
62
|
+
3. Set environment variable with your API key
|
|
63
|
+
```
|
|
64
|
+
LOOPIX_API_KEY=lpx_***
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Start a sandbox and run commands
|
|
68
|
+
|
|
69
|
+
```py
|
|
70
|
+
from loopix import Sandbox
|
|
71
|
+
|
|
72
|
+
with Sandbox.create() as sandbox:
|
|
73
|
+
result = sandbox.commands.run('echo "Hello from Loopix!"')
|
|
74
|
+
print(result.stdout) # Hello from Loopix!
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 4. Code execution with Code Interpreter
|
|
78
|
+
|
|
79
|
+
If you need [`run_code()`](https://vm.betmandu.net/docs/code-interpreting), install the [Code Interpreter SDK](https://github.com/loopix-dev/code-interpreter):
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
pip install loopix-code-interpreter
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
```py
|
|
86
|
+
from loopix_code_interpreter import Sandbox
|
|
87
|
+
|
|
88
|
+
with Sandbox.create() as sandbox:
|
|
89
|
+
execution = sandbox.run_code("x = 1; x += 1; x")
|
|
90
|
+
print(execution.text) # outputs 2
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 5. Check docs
|
|
94
|
+
Visit [Loopix documentation](https://vm.betmandu.net/docs).
|
|
95
|
+
|
|
96
|
+
### 6. Loopix cookbook
|
|
97
|
+
Visit our [Cookbook](https://github.com/loopix-dev/loopix-cookbook/tree/main) to get inspired by examples with different LLMs and AI frameworks.
|
|
98
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<picture>
|
|
3
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/loopix-dev/loopix/refs/heads/main/readme-assets/logo-white.png">
|
|
4
|
+
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/loopix-dev/loopix/refs/heads/main/readme-assets/logo-black.png">
|
|
5
|
+
<img alt="Loopix Logo" src="https://raw.githubusercontent.com/loopix-dev/loopix/refs/heads/main/readme-assets/logo-black.png" width="200">
|
|
6
|
+
</picture>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<h4 align="center">
|
|
10
|
+
<a href="https://pypi.org/project/loopix/">
|
|
11
|
+
<img alt="Last 1 month downloads for the Python SDK" loading="lazy" decoding="async" style="color:transparent;width:170px;height:18px" src="https://static.pepy.tech/personalized-badge/loopix?period=monthly&units=INTERNATIONAL_SYSTEM&left_color=BLACK&right_color=GREEN&left_text=PyPi%20Monthly%20Downloads">
|
|
12
|
+
</a>
|
|
13
|
+
</h4>
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## What is Loopix?
|
|
17
|
+
[Loopix](https://www.loopix.dev/) is an open-source infrastructure that allows you to run AI-generated code in secure isolated sandboxes in the cloud. To start and control sandboxes, use our [JavaScript SDK](https://www.npmjs.com/package/loopix) or [Python SDK](https://pypi.org/project/loopix).
|
|
18
|
+
|
|
19
|
+
## Run your first Sandbox
|
|
20
|
+
|
|
21
|
+
### 1. Install SDK
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
pip install loopix
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 2. Get your Loopix API key
|
|
28
|
+
1. Sign up to Loopix [here](https://vm.betmandu.net).
|
|
29
|
+
2. Get your API key [here](https://vm.betmandu.net/dashboard?tab=keys).
|
|
30
|
+
3. Set environment variable with your API key
|
|
31
|
+
```
|
|
32
|
+
LOOPIX_API_KEY=lpx_***
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 3. Start a sandbox and run commands
|
|
36
|
+
|
|
37
|
+
```py
|
|
38
|
+
from loopix import Sandbox
|
|
39
|
+
|
|
40
|
+
with Sandbox.create() as sandbox:
|
|
41
|
+
result = sandbox.commands.run('echo "Hello from Loopix!"')
|
|
42
|
+
print(result.stdout) # Hello from Loopix!
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 4. Code execution with Code Interpreter
|
|
46
|
+
|
|
47
|
+
If you need [`run_code()`](https://vm.betmandu.net/docs/code-interpreting), install the [Code Interpreter SDK](https://github.com/loopix-dev/code-interpreter):
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
pip install loopix-code-interpreter
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
```py
|
|
54
|
+
from loopix_code_interpreter import Sandbox
|
|
55
|
+
|
|
56
|
+
with Sandbox.create() as sandbox:
|
|
57
|
+
execution = sandbox.run_code("x = 1; x += 1; x")
|
|
58
|
+
print(execution.text) # outputs 2
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 5. Check docs
|
|
62
|
+
Visit [Loopix documentation](https://vm.betmandu.net/docs).
|
|
63
|
+
|
|
64
|
+
### 6. Loopix cookbook
|
|
65
|
+
Visit our [Cookbook](https://github.com/loopix-dev/loopix-cookbook/tree/main) to get inspired by examples with different LLMs and AI frameworks.
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Secure sandboxed cloud environments made for AI agents and AI apps.
|
|
3
|
+
|
|
4
|
+
Check docs [here](https://vm.betmandu.net/docs).
|
|
5
|
+
|
|
6
|
+
Loopix Sandbox is a secure cloud sandbox environment made for AI agents and AI
|
|
7
|
+
apps.
|
|
8
|
+
Sandboxes allow AI agents and apps to have long running cloud secure environments.
|
|
9
|
+
In these environments, large language models can use the same tools as humans do.
|
|
10
|
+
|
|
11
|
+
Loopix Python SDK supports both sync and async API:
|
|
12
|
+
|
|
13
|
+
```py
|
|
14
|
+
from loopix import Sandbox
|
|
15
|
+
|
|
16
|
+
# Create sandbox
|
|
17
|
+
sandbox = Sandbox.create()
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```py
|
|
21
|
+
from loopix import AsyncSandbox
|
|
22
|
+
|
|
23
|
+
# Create sandbox
|
|
24
|
+
sandbox = await AsyncSandbox.create()
|
|
25
|
+
```
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
from .api import (
|
|
29
|
+
ApiClient,
|
|
30
|
+
client,
|
|
31
|
+
)
|
|
32
|
+
from .connection_config import (
|
|
33
|
+
ApiParams,
|
|
34
|
+
ConnectionConfig,
|
|
35
|
+
ProxyTypes,
|
|
36
|
+
Username,
|
|
37
|
+
)
|
|
38
|
+
from .volume.connection_config import VolumeApiParams, VolumeConnectionConfig
|
|
39
|
+
from .exceptions import (
|
|
40
|
+
AuthenticationException,
|
|
41
|
+
FileNotFoundException,
|
|
42
|
+
GitAuthException,
|
|
43
|
+
GitUpstreamException,
|
|
44
|
+
BuildException,
|
|
45
|
+
FileUploadException,
|
|
46
|
+
InvalidArgumentException,
|
|
47
|
+
NotEnoughSpaceException,
|
|
48
|
+
NotFoundException,
|
|
49
|
+
RateLimitException,
|
|
50
|
+
SandboxException,
|
|
51
|
+
SandboxNotFoundException,
|
|
52
|
+
TemplateException,
|
|
53
|
+
TimeoutException,
|
|
54
|
+
VolumeException,
|
|
55
|
+
)
|
|
56
|
+
from .sandbox.commands.command_handle import (
|
|
57
|
+
CommandExitException,
|
|
58
|
+
CommandResult,
|
|
59
|
+
PtyOutput,
|
|
60
|
+
PtySize,
|
|
61
|
+
Stderr,
|
|
62
|
+
Stdout,
|
|
63
|
+
)
|
|
64
|
+
from .sandbox.commands.main import ProcessInfo
|
|
65
|
+
from .sandbox.filesystem.filesystem import EntryInfo, FileType, WriteInfo
|
|
66
|
+
from .sandbox.filesystem.watch_handle import (
|
|
67
|
+
FilesystemEvent,
|
|
68
|
+
FilesystemEventType,
|
|
69
|
+
)
|
|
70
|
+
from .sandbox._git import GitBranches, GitFileStatus, GitResetMode, GitStatus
|
|
71
|
+
from .sandbox_sync.git import Git
|
|
72
|
+
from .sandbox.network import ALL_TRAFFIC
|
|
73
|
+
from .sandbox.signature import get_signature
|
|
74
|
+
from .sandbox.sandbox_api import (
|
|
75
|
+
GitHubMcpServer,
|
|
76
|
+
GitHubMcpServerConfig,
|
|
77
|
+
McpServer,
|
|
78
|
+
SandboxInfo,
|
|
79
|
+
SandboxInfoLifecycle,
|
|
80
|
+
SandboxMetrics,
|
|
81
|
+
SandboxLifecycle,
|
|
82
|
+
SandboxOnTimeout,
|
|
83
|
+
SandboxNetworkInfo,
|
|
84
|
+
SandboxNetworkOpts,
|
|
85
|
+
SandboxNetworkRule,
|
|
86
|
+
SandboxNetworkRuleInfo,
|
|
87
|
+
SandboxNetworkRules,
|
|
88
|
+
SandboxNetworkSelector,
|
|
89
|
+
SandboxNetworkSelectorContext,
|
|
90
|
+
SandboxNetworkTransform,
|
|
91
|
+
SandboxNetworkUpdate,
|
|
92
|
+
SandboxQuery,
|
|
93
|
+
SandboxState,
|
|
94
|
+
SnapshotInfo,
|
|
95
|
+
)
|
|
96
|
+
from .sandbox_async.commands.command_handle import AsyncCommandHandle
|
|
97
|
+
from .sandbox_async.filesystem.watch_handle import AsyncWatchHandle
|
|
98
|
+
from .sandbox_async.main import AsyncSandbox
|
|
99
|
+
from .sandbox_async.paginator import AsyncSandboxPaginator, AsyncSnapshotPaginator
|
|
100
|
+
from .sandbox_async.utils import OutputHandler
|
|
101
|
+
from .sandbox_sync.commands.command_handle import CommandHandle
|
|
102
|
+
from .sandbox_sync.filesystem.watch_handle import WatchHandle
|
|
103
|
+
from .sandbox_sync.main import Sandbox
|
|
104
|
+
from .sandbox_sync.paginator import SandboxPaginator, SnapshotPaginator
|
|
105
|
+
from .template.logger import (
|
|
106
|
+
LogEntry,
|
|
107
|
+
LogEntryEnd,
|
|
108
|
+
LogEntryLevel,
|
|
109
|
+
LogEntryStart,
|
|
110
|
+
default_build_logger,
|
|
111
|
+
)
|
|
112
|
+
from .template.main import TemplateBase, TemplateClass
|
|
113
|
+
from .template.readycmd import (
|
|
114
|
+
ReadyCmd,
|
|
115
|
+
wait_for_file,
|
|
116
|
+
wait_for_port,
|
|
117
|
+
wait_for_process,
|
|
118
|
+
wait_for_timeout,
|
|
119
|
+
wait_for_url,
|
|
120
|
+
)
|
|
121
|
+
from .template.types import (
|
|
122
|
+
BuildInfo,
|
|
123
|
+
BuildStatusReason,
|
|
124
|
+
CopyItem,
|
|
125
|
+
TemplateBuildStatus,
|
|
126
|
+
TemplateBuildStatusResponse,
|
|
127
|
+
TemplateTag,
|
|
128
|
+
TemplateTagInfo,
|
|
129
|
+
)
|
|
130
|
+
from .template_async.main import AsyncTemplate
|
|
131
|
+
from .template_sync.main import Template
|
|
132
|
+
|
|
133
|
+
from .volume.volume_sync import Volume
|
|
134
|
+
from .volume.volume_async import AsyncVolume
|
|
135
|
+
from .volume.types import (
|
|
136
|
+
VolumeInfo,
|
|
137
|
+
VolumeAndToken,
|
|
138
|
+
VolumeEntryStat,
|
|
139
|
+
VolumeFileType,
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
__all__ = [
|
|
143
|
+
# API
|
|
144
|
+
"ApiClient",
|
|
145
|
+
"client",
|
|
146
|
+
# Connection config
|
|
147
|
+
"ConnectionConfig",
|
|
148
|
+
"VolumeConnectionConfig",
|
|
149
|
+
"ProxyTypes",
|
|
150
|
+
"ApiParams",
|
|
151
|
+
"VolumeApiParams",
|
|
152
|
+
"Username",
|
|
153
|
+
# Exceptions
|
|
154
|
+
"SandboxException",
|
|
155
|
+
"TimeoutException",
|
|
156
|
+
"NotFoundException",
|
|
157
|
+
"FileNotFoundException",
|
|
158
|
+
"SandboxNotFoundException",
|
|
159
|
+
"AuthenticationException",
|
|
160
|
+
"GitAuthException",
|
|
161
|
+
"GitUpstreamException",
|
|
162
|
+
"InvalidArgumentException",
|
|
163
|
+
"NotEnoughSpaceException",
|
|
164
|
+
"TemplateException",
|
|
165
|
+
"BuildException",
|
|
166
|
+
"FileUploadException",
|
|
167
|
+
"RateLimitException",
|
|
168
|
+
"VolumeException",
|
|
169
|
+
# Sandbox API
|
|
170
|
+
"SandboxInfo",
|
|
171
|
+
"SandboxInfoLifecycle",
|
|
172
|
+
"SandboxMetrics",
|
|
173
|
+
"ProcessInfo",
|
|
174
|
+
"SandboxQuery",
|
|
175
|
+
"SandboxState",
|
|
176
|
+
"SandboxMetrics",
|
|
177
|
+
"GitStatus",
|
|
178
|
+
"GitBranches",
|
|
179
|
+
"GitFileStatus",
|
|
180
|
+
"GitResetMode",
|
|
181
|
+
# Command handle
|
|
182
|
+
"CommandResult",
|
|
183
|
+
"Stderr",
|
|
184
|
+
"Stdout",
|
|
185
|
+
"CommandExitException",
|
|
186
|
+
"PtyOutput",
|
|
187
|
+
"PtySize",
|
|
188
|
+
# Filesystem
|
|
189
|
+
"FilesystemEvent",
|
|
190
|
+
"FilesystemEventType",
|
|
191
|
+
"EntryInfo",
|
|
192
|
+
"WriteInfo",
|
|
193
|
+
"FileType",
|
|
194
|
+
# Network
|
|
195
|
+
"SandboxNetworkOpts",
|
|
196
|
+
"SandboxNetworkInfo",
|
|
197
|
+
"SandboxNetworkSelector",
|
|
198
|
+
"SandboxNetworkSelectorContext",
|
|
199
|
+
"SandboxNetworkRule",
|
|
200
|
+
"SandboxNetworkRuleInfo",
|
|
201
|
+
"SandboxNetworkRules",
|
|
202
|
+
"SandboxNetworkTransform",
|
|
203
|
+
"SandboxNetworkUpdate",
|
|
204
|
+
"SandboxLifecycle",
|
|
205
|
+
"SandboxOnTimeout",
|
|
206
|
+
"ALL_TRAFFIC",
|
|
207
|
+
# Snapshot
|
|
208
|
+
"SnapshotInfo",
|
|
209
|
+
"SnapshotPaginator",
|
|
210
|
+
"AsyncSnapshotPaginator",
|
|
211
|
+
# Signature
|
|
212
|
+
"get_signature",
|
|
213
|
+
# Sync sandbox
|
|
214
|
+
"Sandbox",
|
|
215
|
+
"SandboxPaginator",
|
|
216
|
+
"WatchHandle",
|
|
217
|
+
"CommandHandle",
|
|
218
|
+
# Async sandbox
|
|
219
|
+
"OutputHandler",
|
|
220
|
+
"AsyncSandboxPaginator",
|
|
221
|
+
"AsyncSandbox",
|
|
222
|
+
"AsyncWatchHandle",
|
|
223
|
+
"AsyncCommandHandle",
|
|
224
|
+
# Template
|
|
225
|
+
"Template",
|
|
226
|
+
"AsyncTemplate",
|
|
227
|
+
"TemplateBase",
|
|
228
|
+
"TemplateClass",
|
|
229
|
+
"CopyItem",
|
|
230
|
+
"BuildInfo",
|
|
231
|
+
"BuildStatusReason",
|
|
232
|
+
"TemplateBuildStatus",
|
|
233
|
+
"TemplateBuildStatusResponse",
|
|
234
|
+
"TemplateTag",
|
|
235
|
+
"TemplateTagInfo",
|
|
236
|
+
"ReadyCmd",
|
|
237
|
+
"wait_for_file",
|
|
238
|
+
"wait_for_url",
|
|
239
|
+
"wait_for_port",
|
|
240
|
+
"wait_for_process",
|
|
241
|
+
"wait_for_timeout",
|
|
242
|
+
"LogEntry",
|
|
243
|
+
"LogEntryStart",
|
|
244
|
+
"LogEntryEnd",
|
|
245
|
+
"LogEntryLevel",
|
|
246
|
+
"default_build_logger",
|
|
247
|
+
# MCP
|
|
248
|
+
"McpServer",
|
|
249
|
+
"GitHubMcpServer",
|
|
250
|
+
"GitHubMcpServerConfig",
|
|
251
|
+
# Git
|
|
252
|
+
"Git",
|
|
253
|
+
# Volume
|
|
254
|
+
"Volume",
|
|
255
|
+
"AsyncVolume",
|
|
256
|
+
"VolumeInfo",
|
|
257
|
+
"VolumeAndToken",
|
|
258
|
+
"VolumeEntryStat",
|
|
259
|
+
"VolumeFileType",
|
|
260
|
+
]
|