code-sandboxes 1.9.8__tar.gz → 1.9.10__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.8 → code_sandboxes-1.9.10}/CHANGELOG.md +25 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/PKG-INFO +1 -1
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/__version__.py +1 -1
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/attest.py +30 -1
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_attest.py +38 -2
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.github/workflows/build.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.github/workflows/environments-live.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.github/workflows/py-code-style.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.github/workflows/py-tests.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.github/workflows/py-typing.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.github/workflows/reusable-python.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.gitignore +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.licenserc.yaml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.pre-commit-config.yaml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/.vscode/settings.json +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/Dockerfile +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/LICENSE +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/Makefile +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/README.md +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/build.log +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/__init__.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/base.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/bridge_mount.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/builds.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/cli.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/client.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/cloudflare_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/commands.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/console.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/contents.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/coreweave_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/datalayer_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/daytona_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/docker_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/e2b_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/__init__.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/__main__.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/accounts.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/__init__.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/datalayer.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/daytona.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/e2b.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/managed.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/modal.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/bases.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/breaker.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/build_secrets.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/builders.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/canonical.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/conformance.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/constraints/sandbox-contract-v1.txt +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/constraints/wheelhouse/README.md +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/constraints/wheelhouse/jupyter_server-2.21.0+datalayer.1-py3-none-any.whl +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/contract.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/doctor/__init__.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/doctor/build.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/doctor/datalayer_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/doctor/report.schema.json +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/errors.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/files.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/image_import.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/lifecycle.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/policy.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/redact.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/resolve.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/schema.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/spec.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/eval_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/exceptions.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/filesystem.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/google_colab.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/google_colab_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/interfaces.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/jupyter_ingress.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/jupyter_server_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/kaggle.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/kaggle_execute.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/kaggle_live.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/kaggle_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/lifecycle.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/manage.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/modal_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/models.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/monty_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/provider_ingress.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/providers.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docker/Dockerfile +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/.gitignore +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/LICENSE +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/Makefile +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/README.md +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/babel.config.js +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/api-reference/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/api-reference/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/cli/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/cli/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/contribute/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/contribute/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/environments/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/environments/contract.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/environments/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/environments/specification.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/environments/spike-2026-09.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/examples/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/examples/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/guide/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/guide/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/install/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/install/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/provider-ingress.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/_category_.yml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/cloudflare.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/coreweave.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/datalayer.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/daytona.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/docker.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/e2b.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/eval.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/google-colab.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/index.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/jupyter-server.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/kaggle.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/modal.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docs/providers/monty.mdx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/docusaurus.config.js +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/package.json +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/sidebars.js +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/components/HomepageRow1.js +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/components/HomepageRow1.module.css +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/components/HomepageRow2.js +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/components/HomepageRow2.module.css +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/components/HomepageRow3.js +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/components/HomepageRow3.module.css +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/css/custom.css +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/pages/index.module.css +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/pages/markdown-page.md +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/theme/CustomDocItem.tsx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/src/theme/IconsTitle.tsx +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/bricks.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/building-construction.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/cloud-sun.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/cloud.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/collaboration.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/copy-left.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/logo.png +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/logo.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/personas/business.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/personas/data-scientist.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/personas/devops.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/project/project-line.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/favicon.ico +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/jupyter.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/open-source.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/react-js.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/react-js2.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/ringed-planet.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/robot.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/rocket.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/shield.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/sparkles.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/streamlit.gif +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/super-hero.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/target.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/thumbs-up.svg +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/README.md +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/Makefile +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/cloudflare_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/coreweave_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/datalayer_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/daytona_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/docker_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/e2b_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/eval_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/google_colab_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/jupyter_server_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/kaggle_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/modal_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/exec/monty_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/Makefile +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/cloudflare_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/coreweave_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/datalayer_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/daytona_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/docker_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/e2b_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/eval_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/google_colab_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/jupyter_server_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/kaggle_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/modal_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/examples/repl/monty_sandbox_example.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/pyproject.toml +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/schemas/environment-v1alpha1.json +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/__init__.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/conftest.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_a_datalayer_sandbox_can_be_interrupted.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_bridge_mount.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_builds.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_cli_exec.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_cli_repl.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_client.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_client_contents.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_client_files.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_client_outcome_error_output.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_cloudflare.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_commands_envelope.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_console.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_contents_contract.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_contents_live_matrix.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_coreweave.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_datalayer_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_daytona.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_e2b.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_accounts.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_bases.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_breaker.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_build_secrets.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_builders.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_canonical.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_conformance.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_constraints.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_contract.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_cross_variant_report.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_datalayer_builder.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_daytona_builder.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_doctor.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_e2b_builder.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_errors.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_image_import.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_lifecycle.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_live_matrix.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_managed_builders.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_modal_builder.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_redact.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_resolve.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_environment_spec.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_eval.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_every_variant_has_a_real_interrupt.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_factory.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_google_colab.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_integration.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_jupyter_ingress.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_jupyter_server.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_jupyter_server_streaming.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_kaggle.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_kaggle_execute.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_kaggle_live.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_kaggle_session.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_kernel_client_compatibility.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_lifecycle_vocabulary.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_manage.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_manage_datalayer.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_modal_google_colab_sandbox.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_modal_session.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_models.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_output_line_fidelity.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_provider_catalog_names.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_provider_ingress.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_providers.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_sandboxes.py +0 -0
- {code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/tests/test_the_kill_relaunch_drill.py +0 -0
|
@@ -8,6 +8,31 @@
|
|
|
8
8
|
|
|
9
9
|
## Unreleased
|
|
10
10
|
|
|
11
|
+
## 1.9.10
|
|
12
|
+
|
|
13
|
+
- **cosign signs the legacy tag again, not just an OCI referrer**
|
|
14
|
+
(`environments.attest`; PLAN_ENV.md E1-09). cosign 3.1.3 defaults to the
|
|
15
|
+
OCI 1.1 referrers API for a signature's own storage, not the classic
|
|
16
|
+
`sha256-<hex>.sig` sidecar tag. Found live on r1, 2026-09-14: `cosign
|
|
17
|
+
sign` reported success — the first artifact this pipeline ever actually
|
|
18
|
+
signed — but pushed no such tag; `_signature_exists`'s own replay check
|
|
19
|
+
and the `signature_ref` this workflow records both assume one exists.
|
|
20
|
+
`--registry-referrers-mode=legacy` restores it. `cosign verify` needs no
|
|
21
|
+
matching flag: it already looks for the tag by default.
|
|
22
|
+
|
|
23
|
+
## 1.9.9
|
|
24
|
+
|
|
25
|
+
- **cosign gets the same registry credential the build pushed with**
|
|
26
|
+
(`environments.attest`; PLAN_ENV.md D-17, E1-09). cosign has no AWS
|
|
27
|
+
credential chain of its own for ECR, unlike the boto3 client the scan is
|
|
28
|
+
read with. Found live on r1, 2026-09-14: `cosign sign` reached the
|
|
29
|
+
repository anonymously and was refused, plain `401 Unauthorized`, on
|
|
30
|
+
every real artifact this pipeline ever tried to sign. `Attestor` takes a
|
|
31
|
+
`registry_auth` — the same `{"DOCKER_CONFIG": <dir>}` shape the resolver
|
|
32
|
+
and the builder already read off a `BuildCredential` — and sets it on
|
|
33
|
+
cosign's own subprocess, added to this process's own environment rather
|
|
34
|
+
than replacing it.
|
|
35
|
+
|
|
11
36
|
## 1.9.8
|
|
12
37
|
|
|
13
38
|
- **Every page of a scan's findings is read before deciding**
|
|
@@ -150,6 +150,15 @@ class Attestor:
|
|
|
150
150
|
policy
|
|
151
151
|
What the findings have to say. The owner's default unless an
|
|
152
152
|
organization tightened it (E3-06).
|
|
153
|
+
registry_auth
|
|
154
|
+
What cosign reads the repository with, to sign it (D-17): the same
|
|
155
|
+
`{"DOCKER_CONFIG": <dir>}` shape the resolver and the builder already
|
|
156
|
+
take off a `BuildCredential`, the one attribute name every caller
|
|
157
|
+
reads regardless of what kind of credential it holds. cosign has no
|
|
158
|
+
AWS credential chain of its own for ECR, unlike the boto3 client the
|
|
159
|
+
scan is read with — found live, 2026-09-14: with none, `cosign sign`
|
|
160
|
+
reached the registry anonymously and was refused, `401 Unauthorized`,
|
|
161
|
+
on every real artifact this pipeline ever tried to sign.
|
|
153
162
|
"""
|
|
154
163
|
|
|
155
164
|
def __init__(
|
|
@@ -166,6 +175,7 @@ class Attestor:
|
|
|
166
175
|
scan_timeout_seconds: float = DEFAULT_SCAN_TIMEOUT_SECONDS,
|
|
167
176
|
scan_interval_seconds: float = DEFAULT_SCAN_INTERVAL_SECONDS,
|
|
168
177
|
log: Callable[[str], None] | None = None,
|
|
178
|
+
registry_auth: Mapping[str, str] | None = None,
|
|
169
179
|
) -> None:
|
|
170
180
|
self._ecr = ecr
|
|
171
181
|
self._cosign = (shutil.which("cosign") or "") if cosign is None else cosign
|
|
@@ -178,6 +188,7 @@ class Attestor:
|
|
|
178
188
|
self._timeout = scan_timeout_seconds
|
|
179
189
|
self._interval = scan_interval_seconds
|
|
180
190
|
self._log = log or (lambda _line: None)
|
|
191
|
+
self._registry_auth = dict(registry_auth or {})
|
|
181
192
|
|
|
182
193
|
# -- the scan -------------------------------------------------------------
|
|
183
194
|
|
|
@@ -429,6 +440,13 @@ class Attestor:
|
|
|
429
440
|
# `--tlog-upload=false` already asks for, and needs no network
|
|
430
441
|
# call of its own to fetch one.
|
|
431
442
|
"--use-signing-config=false",
|
|
443
|
+
# cosign 3.1.3 defaults to the OCI 1.1 referrers API instead of
|
|
444
|
+
# the classic `sha256-<hex>.sig` sidecar tag — found live,
|
|
445
|
+
# 2026-09-14: `cosign sign` reported success, but no such tag
|
|
446
|
+
# ever existed, so `_signature_exists`'s own replay check (below)
|
|
447
|
+
# never found it and `signature_ref` named a tag nothing could
|
|
448
|
+
# pull. `legacy` restores the tag both of those already assume.
|
|
449
|
+
"--registry-referrers-mode=legacy",
|
|
432
450
|
"--key",
|
|
433
451
|
self._key,
|
|
434
452
|
reference,
|
|
@@ -459,9 +477,19 @@ class Attestor:
|
|
|
459
477
|
return bool(answer.get("imageDetails"))
|
|
460
478
|
|
|
461
479
|
def _invoke(self, command: Sequence[str]) -> subprocess.CompletedProcess[str]:
|
|
480
|
+
# `registry_auth` — same shape as the resolver's own — puts cosign's
|
|
481
|
+
# `DOCKER_CONFIG` beside the rest of this process's environment,
|
|
482
|
+
# never replacing it: `--key` alone still needs AWS's own chain to
|
|
483
|
+
# reach the KMS key, which this does not touch.
|
|
484
|
+
env = {**os.environ, **self._registry_auth} if self._registry_auth else None
|
|
462
485
|
try:
|
|
463
486
|
finished = self._run(
|
|
464
|
-
list(command),
|
|
487
|
+
list(command),
|
|
488
|
+
capture_output=True,
|
|
489
|
+
text=True,
|
|
490
|
+
check=False,
|
|
491
|
+
timeout=self._timeout,
|
|
492
|
+
env=env,
|
|
465
493
|
)
|
|
466
494
|
except subprocess.TimeoutExpired as expired:
|
|
467
495
|
raise EnvironmentsError(
|
|
@@ -552,6 +580,7 @@ def attest_artifact(
|
|
|
552
580
|
key=str(getattr(credential, "signing_key", "") or ""),
|
|
553
581
|
policy=policy,
|
|
554
582
|
log=log,
|
|
583
|
+
registry_auth=getattr(credential, "registry_auth", None),
|
|
555
584
|
)
|
|
556
585
|
return use.attest(
|
|
557
586
|
registry=registry,
|
|
@@ -168,14 +168,16 @@ class FakeEcr:
|
|
|
168
168
|
|
|
169
169
|
|
|
170
170
|
class Cosign:
|
|
171
|
-
"""A cosign whose argv
|
|
171
|
+
"""A cosign whose argv and env are read, and which can refuse."""
|
|
172
172
|
|
|
173
173
|
def __init__(self, returncode: int = 0) -> None:
|
|
174
174
|
self.returncode = returncode
|
|
175
175
|
self.argv: list[str] = []
|
|
176
|
+
self.env: dict[str, str] | None = None
|
|
176
177
|
|
|
177
|
-
def __call__(self, argv, **_kwargs) -> subprocess.CompletedProcess[str]:
|
|
178
|
+
def __call__(self, argv, *, env=None, **_kwargs) -> subprocess.CompletedProcess[str]:
|
|
178
179
|
self.argv = list(argv)
|
|
180
|
+
self.env = env
|
|
179
181
|
return subprocess.CompletedProcess(self.argv, self.returncode, "", "Pushing signature\n")
|
|
180
182
|
|
|
181
183
|
|
|
@@ -464,6 +466,11 @@ class TestTheSignature:
|
|
|
464
466
|
# `--tlog-upload=false` alone can no longer override (found live
|
|
465
467
|
# 2026-09-14): turned off so the plain flag is honored again.
|
|
466
468
|
"--use-signing-config=false",
|
|
469
|
+
# cosign 3.1.3 defaults to the OCI 1.1 referrers API rather than
|
|
470
|
+
# the classic sidecar tag: found live 2026-09-14, `cosign sign`
|
|
471
|
+
# reported success but pushed no tag `_signature_exists` or
|
|
472
|
+
# `signature_ref` could ever find. `legacy` restores it.
|
|
473
|
+
"--registry-referrers-mode=legacy",
|
|
467
474
|
"--key",
|
|
468
475
|
KEY,
|
|
469
476
|
f"{REGISTRY}/{REPOSITORY}@{DIGEST}",
|
|
@@ -471,6 +478,35 @@ class TestTheSignature:
|
|
|
471
478
|
assert reference == f"{REGISTRY}/{REPOSITORY}:{signature_tag(DIGEST)}"
|
|
472
479
|
assert signed_now is True
|
|
473
480
|
|
|
481
|
+
def test_no_registry_auth_leaves_cosigns_own_environment_untouched(self) -> None:
|
|
482
|
+
"""The common case — nothing to add — inherits this process's own
|
|
483
|
+
environment rather than replacing it with an empty one."""
|
|
484
|
+
cosign = Cosign()
|
|
485
|
+
an_attestor(run=cosign).sign(registry=REGISTRY, repository=REPOSITORY, digest=DIGEST)
|
|
486
|
+
assert cosign.env is None
|
|
487
|
+
|
|
488
|
+
def test_registry_auth_reaches_cosign_as_docker_config(self) -> None:
|
|
489
|
+
"""cosign has no AWS credential chain of its own for ECR, unlike the
|
|
490
|
+
boto3 client the scan is read with: found live, 2026-09-14, `cosign
|
|
491
|
+
sign` reached the registry anonymously and was refused with a plain
|
|
492
|
+
`401 Unauthorized` on every real artifact this pipeline tried to
|
|
493
|
+
sign. The same `{"DOCKER_CONFIG": <dir>}` the resolver and the
|
|
494
|
+
builder already take off a `BuildCredential` fixes it here too."""
|
|
495
|
+
docker_config = "/tmp/dl-docker-abc" # noqa: S108 - a build's own dir, never touched by this test
|
|
496
|
+
cosign = Cosign()
|
|
497
|
+
an_attestor(run=cosign, registry_auth={"DOCKER_CONFIG": docker_config}).sign(
|
|
498
|
+
registry=REGISTRY, repository=REPOSITORY, digest=DIGEST
|
|
499
|
+
)
|
|
500
|
+
assert cosign.env is not None
|
|
501
|
+
assert cosign.env["DOCKER_CONFIG"] == docker_config
|
|
502
|
+
# Added to this process's own environment, not instead of it — cosign
|
|
503
|
+
# still needs AWS's own chain to reach the KMS key with `--key`.
|
|
504
|
+
import os
|
|
505
|
+
|
|
506
|
+
for name in ("PATH", "HOME"):
|
|
507
|
+
if name in os.environ:
|
|
508
|
+
assert cosign.env[name] == os.environ[name]
|
|
509
|
+
|
|
474
510
|
def test_a_replay_finds_the_signature_instead_of_pushing_a_second(self) -> None:
|
|
475
511
|
"""Immutable tags would refuse the second, and two signatures are two words."""
|
|
476
512
|
ecr = FakeEcr(signed={signature_tag(DIGEST)})
|
|
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.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/__init__.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/datalayer.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/daytona.py
RENAMED
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/managed.py
RENAMED
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/adapters/modal.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.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/doctor/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/code_sandboxes/environments/doctor/report.schema.json
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
|
|
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.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/personas/business.svg
RENAMED
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/personas/data-scientist.svg
RENAMED
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/docs/static/img/datalayer/personas/devops.svg
RENAMED
|
File without changes
|
{code_sandboxes-1.9.8 → code_sandboxes-1.9.10}/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
|