code-sandboxes 1.9.27__tar.gz → 1.9.28__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.
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/PKG-INFO +1 -1
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/__version__.py +1 -1
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/jupyter_server_sandbox.py +11 -7
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_jupyter_server.py +28 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.github/workflows/build.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.github/workflows/environments-live.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.github/workflows/py-code-style.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.github/workflows/py-tests.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.github/workflows/py-typing.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.github/workflows/reusable-python.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.gitignore +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.licenserc.yaml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.pre-commit-config.yaml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/.vscode/settings.json +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/CHANGELOG.md +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/Dockerfile +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/LICENSE +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/Makefile +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/README.md +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/__init__.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/base.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/bridge_mount.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/builds.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/cli.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/client.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/cloudflare_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/commands.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/console.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/contents.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/coreweave_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/datalayer_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/daytona_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/docker_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/e2b_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/__init__.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/__main__.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/accounts.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/__init__.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/datalayer.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/daytona.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/e2b.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/managed.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/modal.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/attest.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/bases.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/breaker.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/build_secrets.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/builders.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/canonical.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/conformance.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/constraints/sandbox-contract-v1.txt +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/constraints/wheelhouse/README.md +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/constraints/wheelhouse/jupyter_server-2.21.0+datalayer.1-py3-none-any.whl +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/contract.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/doctor/__init__.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/doctor/build.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/doctor/datalayer_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/doctor/report.schema.json +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/errors.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/files.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/image_import.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/lifecycle.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/policy.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/redact.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/resolve.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/resolve_conda.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/schema.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/spec.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/eval_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/exceptions.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/filesystem.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/google_colab.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/google_colab_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/interfaces.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/jupyter_ingress.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/kaggle.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/kaggle_execute.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/kaggle_live.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/kaggle_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/lifecycle.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/manage.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/modal_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/models.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/monty_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/provider_ingress.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/providers.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docker/Dockerfile +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/.gitignore +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/LICENSE +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/Makefile +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/README.md +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/babel.config.js +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/api-reference/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/api-reference/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/cli/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/cli/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/contribute/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/contribute/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/environments/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/environments/contract.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/environments/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/environments/specification.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/environments/spike-2026-09.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/examples/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/examples/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/guide/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/guide/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/install/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/install/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/provider-ingress.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/_category_.yml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/cloudflare.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/coreweave.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/datalayer.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/daytona.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/docker.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/e2b.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/eval.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/google-colab.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/index.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/jupyter-server.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/kaggle.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/modal.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docs/providers/monty.mdx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/docusaurus.config.js +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/package.json +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/sidebars.js +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/components/HomepageRow1.js +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/components/HomepageRow1.module.css +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/components/HomepageRow2.js +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/components/HomepageRow2.module.css +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/components/HomepageRow3.js +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/components/HomepageRow3.module.css +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/css/custom.css +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/pages/index.module.css +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/pages/markdown-page.md +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/theme/CustomDocItem.tsx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/src/theme/IconsTitle.tsx +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/bricks.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/building-construction.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/cloud-sun.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/cloud.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/collaboration.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/copy-left.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/logo.png +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/logo.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/personas/business.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/personas/data-scientist.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/personas/devops.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/project/project-line.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/favicon.ico +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/jupyter.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/open-source.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/react-js.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/react-js2.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/ringed-planet.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/robot.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/rocket.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/shield.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/sparkles.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/streamlit.gif +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/super-hero.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/target.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/thumbs-up.svg +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/README.md +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/Makefile +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/cloudflare_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/coreweave_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/datalayer_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/daytona_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/docker_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/e2b_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/eval_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/google_colab_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/jupyter_server_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/kaggle_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/modal_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/monty_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/Makefile +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/cloudflare_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/coreweave_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/datalayer_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/daytona_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/docker_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/e2b_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/eval_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/google_colab_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/jupyter_server_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/kaggle_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/modal_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/monty_sandbox_example.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/pyproject.toml +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/schemas/environment-v1alpha1.json +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/__init__.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/conftest.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_a_datalayer_sandbox_can_be_interrupted.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_bridge_mount.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_builds.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_cli_exec.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_cli_repl.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_client.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_client_contents.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_client_files.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_client_outcome_error_output.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_cloudflare.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_commands_envelope.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_console.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_contents_contract.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_contents_live_matrix.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_coreweave.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_datalayer_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_daytona.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_e2b.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_accounts.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_attest.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_bases.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_breaker.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_build_secrets.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_builders.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_canonical.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_conformance.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_constraints.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_contract.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_cross_variant_report.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_datalayer_builder.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_daytona_builder.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_doctor.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_e2b_builder.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_errors.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_image_import.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_lifecycle.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_live_matrix.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_managed_builders.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_modal_builder.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_organization_policy.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_redact.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_resolve.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_resolve_conda.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_spec.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_spec_organization_policy.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_eval.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_every_variant_has_a_real_interrupt.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_factory.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_google_colab.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_integration.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_jupyter_ingress.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_jupyter_server_streaming.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_kaggle.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_kaggle_execute.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_kaggle_live.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_kaggle_session.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_kernel_client_compatibility.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_lifecycle_vocabulary.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_manage.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_manage_datalayer.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_modal_google_colab_sandbox.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_modal_session.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_models.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_output_line_fidelity.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_provider_catalog_names.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_provider_ingress.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_providers.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_sandboxes.py +0 -0
- {code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_the_kill_relaunch_drill.py +0 -0
|
@@ -650,13 +650,17 @@ class JupyterServerSandbox(Sandbox):
|
|
|
650
650
|
"Failed to restart Jupyter kernel: the server answered %s", response.status_code
|
|
651
651
|
)
|
|
652
652
|
return False
|
|
653
|
-
# The websocket
|
|
654
|
-
#
|
|
655
|
-
#
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
with
|
|
659
|
-
|
|
653
|
+
# **The websocket is kept, never reconnected.** jupyter-server binds a
|
|
654
|
+
# kernel's websocket to the kernel id, not to its process, and moves
|
|
655
|
+
# it onto the restarted kernel itself — which is how JupyterLab's own
|
|
656
|
+
# restart works. Reconnecting here broke every restart instead:
|
|
657
|
+
# `jupyter_kernel_client` caches its shell and IOPub channels bound to
|
|
658
|
+
# the socket they were built with, so after `stop()` and `start()` the
|
|
659
|
+
# client held a new socket while its channels still wrote to the
|
|
660
|
+
# closed one. The next execution answered `ok` with no output — found
|
|
661
|
+
# on r1, 2026-09-18, as checks 7, 8 and 9 all failing together, and
|
|
662
|
+
# reproduced against the approved base itself, with the deployed
|
|
663
|
+
# client. Swallowing both calls' errors is what hid it.
|
|
660
664
|
return True
|
|
661
665
|
|
|
662
666
|
@marks_execution
|
|
@@ -559,6 +559,34 @@ class TestRestartingTheKernelRatherThanTheConnection:
|
|
|
559
559
|
finally:
|
|
560
560
|
sandbox.stop()
|
|
561
561
|
|
|
562
|
+
def test_the_connection_is_kept_across_the_restart(self, monkeypatch):
|
|
563
|
+
"""jupyter-server moves a kernel's websocket onto the restarted kernel.
|
|
564
|
+
|
|
565
|
+
Reconnecting broke it: `jupyter_kernel_client`'s channels stay bound
|
|
566
|
+
to the socket they were built with, so after a `stop()` and `start()`
|
|
567
|
+
every execution answered `ok` with no output (r1, 2026-09-18).
|
|
568
|
+
"""
|
|
569
|
+
sandbox = _started_sandbox(monkeypatch, kernel_id="kernel-1")
|
|
570
|
+
lifecycle: list[str] = []
|
|
571
|
+
client = sandbox._client
|
|
572
|
+
monkeypatch.setattr(client, "stop", lambda *a, **k: lifecycle.append("stop"))
|
|
573
|
+
monkeypatch.setattr(client, "start", lambda *a, **k: lifecycle.append("start"))
|
|
574
|
+
|
|
575
|
+
class _Response:
|
|
576
|
+
ok = True
|
|
577
|
+
status_code = 200
|
|
578
|
+
|
|
579
|
+
monkeypatch.setattr(
|
|
580
|
+
"code_sandboxes.jupyter_server_sandbox.requests.post",
|
|
581
|
+
lambda *args, **kwargs: _Response(),
|
|
582
|
+
)
|
|
583
|
+
try:
|
|
584
|
+
assert sandbox.restart_kernel() is True
|
|
585
|
+
assert lifecycle == []
|
|
586
|
+
assert sandbox._client is client
|
|
587
|
+
finally:
|
|
588
|
+
sandbox.stop()
|
|
589
|
+
|
|
562
590
|
def test_a_server_that_refuses_the_restart_is_reported_not_raised(self, monkeypatch):
|
|
563
591
|
sandbox = _started_sandbox(monkeypatch, kernel_id="kernel-1")
|
|
564
592
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/__init__.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/datalayer.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/daytona.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/managed.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/adapters/modal.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/build_secrets.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/doctor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/code_sandboxes/environments/resolve_conda.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/personas/business.svg
RENAMED
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/personas/devops.svg
RENAMED
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/docs/static/img/datalayer/project/project-line.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/google_colab_sandbox_example.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/exec/jupyter_server_sandbox_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/google_colab_sandbox_example.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/examples/repl/jupyter_server_sandbox_example.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_a_datalayer_sandbox_can_be_interrupted.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_cross_variant_report.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_organization_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_environment_spec_organization_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.27 → code_sandboxes-1.9.28}/tests/test_every_variant_has_a_real_interrupt.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|