lean-runtime 4.25.0__tar.gz → 4.26.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.
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/CHANGELOG.md +10 -0
- {lean_runtime-4.25.0/lean_runtime.egg-info → lean_runtime-4.26.0}/PKG-INFO +1 -1
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/runtime.py +17 -2
- {lean_runtime-4.25.0 → lean_runtime-4.26.0/lean_runtime.egg-info}/PKG-INFO +1 -1
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/pyproject.toml +1 -1
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_cli.py +37 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_runtime.py +65 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/LICENSE +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/MANIFEST.in +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/README.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/environments.toml +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/core-v4.32.2.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/leancert-v4.30.0.5.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/leancert-v4.31.0.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/leancert-v4.32.2.4.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/leancert-v4.33.0.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/mathlib-v4.30.0.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/mathlib-v4.31.0.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/mathlib-v4.32.2.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/mathlib-v4.33.0.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/catalog/locks/mathlib-v4.33.1.lock.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/compatibility/README.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/compatibility/lake-artifact-cache-4.33.0.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/compatibility/mathlib-4.32.2.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/compatibility/mathlib-4.32.2.toml +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/compatibility/mathlib-4.33.0.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/compatibility/mathlib-4.33.0.toml +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/concepts/context-selection.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/index.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/reference/commands.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/reference/python-advanced.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/reference/python-api.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/reference/storage.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/trust.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/tutorial.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/workflows/check-files.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/docs/workflows/lake-projects.md +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/examples/mathlib.toml +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/__init__.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/__main__.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/_git.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/_paths.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/backends.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/bundles.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/capsules.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/cli.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/comparison.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/console.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/context_resolution.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/decisions.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/declaration_index.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/declaration_index_build.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/declaration_index_oci.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/diagnostics.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/__init__.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/analyzer.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/api.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/candidate.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/catalog.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/catalog_build.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/catalog_cli.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/catalog_manifest.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/data/catalog.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/defaults.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/engine.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/errors.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/history.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/memo.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/module_inventory.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/planner.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/policy.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/probe.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/py.typed +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/result.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schema_resources.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schemas/catalog-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schemas/plan-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schemas/result-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/environments.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/errors.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/events.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/facade.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/frontmatter.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/header_cache.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/health.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/identifier_resolver.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/import_syntax.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/lake.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/lake_cache.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/lockfiles.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/locking.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/matrix.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/models.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/oci.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/oci_protocol.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/packs.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/policies.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/profiling.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/programs.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/project_execution.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/project_sharing.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/projects.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/publisher_verification.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/py.typed +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/references.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/resolver.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/run_cli.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/schema_resources.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/serialization.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/shared_projects.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/specs.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/store.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/timings.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/toolchain_oci.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/toolchain_slim.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/toolchains.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/verification.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/wire.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime.egg-info/SOURCES.txt +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime.egg-info/dependency_links.txt +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime.egg-info/entry_points.txt +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime.egg-info/requires.txt +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime.egg-info/top_level.txt +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/mkdocs.yml +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/attestation-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/check-batch-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/cleanup-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/comparison-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/execution-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/inspect-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/matrix-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/plan-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/profile-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/publication-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/status-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/schemas/verify-v1.schema.json +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/announcement_gate.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/catalog_update.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/lake_cache_gate.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/prepare_declaration_index.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/publish_declaration_index.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/registry_preflight.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/run_compatibility.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/run_v1_case_study.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/scripts/smoke_wheel.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/setup.cfg +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/conftest.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/e2e/test_real_discovery.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_analyzer.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_catalog.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_catalog_build.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_discovery_schema_resources.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_engine.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_memo.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_planner.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_policy.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_announcement_gate.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_backend.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_bundles.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_capsules.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_console.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_context_resolution.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_declaration_index.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_diagnostics.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_environment_integration.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_events_health.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_facade.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_frontmatter.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_git.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_header_cache.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_identifier_resolver.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_interactive.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_lake_cache.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_lockfiles.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_locking.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_models.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_multifile.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_oci_protocol.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_packs.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_paths.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_prebuilt_policy.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_programs.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_project_bootstrap.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_project_publish.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_projects.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_references.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_run_cli.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_schema_resources.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_schemas.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_signatures.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_specs.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_store.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_toolchain_oci.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_toolchain_slim.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_toolchains.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_v1_precision.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_verification_inventory.py +0 -0
- {lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/test_verification_probe.py +0 -0
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 4.26.0 - 2026-08-26
|
|
6
|
+
|
|
7
|
+
- Stop `status` claiming a download is required for core-only files. A lock
|
|
8
|
+
without packages runs straight on the toolchain and never materializes an
|
|
9
|
+
environment in the store, so readiness and cost are now judged by the
|
|
10
|
+
toolchain alone: `status` reports `environment ready locally` and
|
|
11
|
+
`Download none` once the toolchain is installed, and `status --probe`
|
|
12
|
+
prices it as zero instead of `unknown`. Previously the store directory that
|
|
13
|
+
`check` never creates kept the row at `not local · Download required`.
|
|
14
|
+
|
|
5
15
|
## 4.25.0 - 2026-08-26
|
|
6
16
|
|
|
7
17
|
- Pin the Elan build that automatic bootstrap installs. Bootstrap now
|
|
@@ -569,8 +569,14 @@ class Runtime:
|
|
|
569
569
|
"""Report what opening a lock would cost, without acquiring anything."""
|
|
570
570
|
environment_id = environment_identity(lock, build_profile)
|
|
571
571
|
destination = self.store.environment_path(environment_id)
|
|
572
|
-
|
|
573
|
-
|
|
572
|
+
# A lock without packages runs straight on the toolchain: no environment
|
|
573
|
+
# is ever materialized in the store, so only the toolchain can cost anything.
|
|
574
|
+
core_only = not lock.packages
|
|
575
|
+
ready = core_only or destination.is_dir()
|
|
576
|
+
sparse = (
|
|
577
|
+
not core_only
|
|
578
|
+
and (destination / "workspace" / ".lean-runtime" / "capsule.json").is_file()
|
|
579
|
+
)
|
|
574
580
|
libraries: list[dict[str, Any]] = []
|
|
575
581
|
environment_download: int | None = 0 if ready and not sparse else None
|
|
576
582
|
if not ready or sparse:
|
|
@@ -659,6 +665,15 @@ class Runtime:
|
|
|
659
665
|
) -> bool:
|
|
660
666
|
"""Return whether a lock and import closure can check without acquisition."""
|
|
661
667
|
|
|
668
|
+
if not lock.packages:
|
|
669
|
+
# Core-only locks never touch the environment store; the toolchain is
|
|
670
|
+
# the whole environment. Do not call it ready for an external import,
|
|
671
|
+
# though: discovery uses this result for local-first ordering, and an
|
|
672
|
+
# installed core toolchain must not outrank the package that provides
|
|
673
|
+
# (for example) Mathlib.
|
|
674
|
+
core_roots = {"Init", "Lean", "Std"}
|
|
675
|
+
imports_are_core = all(module.split(".", 1)[0] in core_roots for module in import_roots)
|
|
676
|
+
return imports_are_core and self._toolchain_installed(lock.toolchain)
|
|
662
677
|
environment_id = environment_identity(lock)
|
|
663
678
|
if not self.store.environment_path(environment_id).is_dir():
|
|
664
679
|
return False
|
|
@@ -528,6 +528,43 @@ def test_standalone_status_reports_plan_not_selection_and_availability(
|
|
|
528
528
|
assert data["probe"] is None
|
|
529
529
|
|
|
530
530
|
|
|
531
|
+
def test_core_only_status_needs_no_download_once_the_toolchain_is_installed(
|
|
532
|
+
tmp_path: Path, capsys: pytest.CaptureFixture[str], monkeypatch: pytest.MonkeyPatch
|
|
533
|
+
) -> None:
|
|
534
|
+
# A core-only file never materializes a store environment, so status must
|
|
535
|
+
# judge it by the toolchain alone rather than by a store directory that
|
|
536
|
+
# `check` will never create.
|
|
537
|
+
source = tmp_path / "Core.lean"
|
|
538
|
+
source.write_text("example : True := by trivial\n")
|
|
539
|
+
monkeypatch.setattr("lean_runtime.cli.Runtime._toolchain_installed", lambda _self, _t: True)
|
|
540
|
+
assert main(["--home", str(tmp_path / "home"), "status", str(source)]) == 0
|
|
541
|
+
output = capsys.readouterr().out
|
|
542
|
+
assert "Imports none (core Lean only)" in output
|
|
543
|
+
assert "environment ready locally · toolchain installed" in output
|
|
544
|
+
assert "Download none: core-" in output
|
|
545
|
+
assert "required" not in output
|
|
546
|
+
|
|
547
|
+
assert main(["--home", str(tmp_path / "home"), "status", str(source), "--probe"]) == 0
|
|
548
|
+
output = capsys.readouterr().out
|
|
549
|
+
assert "Download none: environment and toolchain are already local" in output
|
|
550
|
+
|
|
551
|
+
assert main(["--home", str(tmp_path / "home"), "status", str(source), "--json"]) == 0
|
|
552
|
+
data = json.loads(capsys.readouterr().out)["data"]
|
|
553
|
+
assert data["availability"][data["planned_first"]]["local"] is True
|
|
554
|
+
|
|
555
|
+
|
|
556
|
+
def test_core_only_status_still_needs_the_toolchain_when_it_is_missing(
|
|
557
|
+
tmp_path: Path, capsys: pytest.CaptureFixture[str], monkeypatch: pytest.MonkeyPatch
|
|
558
|
+
) -> None:
|
|
559
|
+
source = tmp_path / "Core.lean"
|
|
560
|
+
source.write_text("example : True := by trivial\n")
|
|
561
|
+
monkeypatch.setattr("lean_runtime.cli.Runtime._toolchain_installed", lambda _self, _t: False)
|
|
562
|
+
assert main(["--home", str(tmp_path / "home"), "status", str(source)]) == 0
|
|
563
|
+
output = capsys.readouterr().out
|
|
564
|
+
assert "environment not local · toolchain not installed" in output
|
|
565
|
+
assert "Download required for core-" in output
|
|
566
|
+
|
|
567
|
+
|
|
531
568
|
def test_status_reports_unowned_file_beneath_declarative_project_as_standalone(
|
|
532
569
|
tmp_path: Path, capsys: pytest.CaptureFixture[str]
|
|
533
570
|
) -> None:
|
|
@@ -274,3 +274,68 @@ def test_full_environment_build_installs_a_lake_capable_toolchain(tmp_path: Path
|
|
|
274
274
|
environment = runtime.open_toolchain("v4.32.2")
|
|
275
275
|
environment.build(("Demo",))
|
|
276
276
|
assert toolchains.full_installs == ["leanprover/lean4:v4.32.2"]
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
class InstalledToolchains(FakeToolchains):
|
|
280
|
+
def __init__(self, home: Path, installed: str) -> None:
|
|
281
|
+
super().__init__(home)
|
|
282
|
+
self.installed = installed
|
|
283
|
+
|
|
284
|
+
def is_available_locally(self, toolchain: str) -> bool:
|
|
285
|
+
return toolchain == self.installed
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
def _core_lock(toolchain: str) -> EnvironmentLock:
|
|
289
|
+
return EnvironmentLock(
|
|
290
|
+
toolchain=toolchain,
|
|
291
|
+
spec_digest="spec_" + "c" * 64,
|
|
292
|
+
root_lakefile='name = "core"\n',
|
|
293
|
+
root_module="",
|
|
294
|
+
manifest={"packages": []},
|
|
295
|
+
packages=(),
|
|
296
|
+
)
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
def test_core_lock_is_ready_locally_once_its_toolchain_is_installed(tmp_path: Path) -> None:
|
|
300
|
+
# Core-only checks run straight on the toolchain and never materialize an
|
|
301
|
+
# environment in the store, so the store must not decide their readiness.
|
|
302
|
+
runtime = Runtime(
|
|
303
|
+
home=tmp_path / "home",
|
|
304
|
+
toolchains=InstalledToolchains(tmp_path, "leanprover/lean4:v4.32.2"), # type: ignore[arg-type]
|
|
305
|
+
libraries=[],
|
|
306
|
+
)
|
|
307
|
+
assert runtime.exact_ready_locally(_core_lock("leanprover/lean4:v4.32.2")) is True
|
|
308
|
+
assert (
|
|
309
|
+
runtime.exact_ready_locally(
|
|
310
|
+
_core_lock("leanprover/lean4:v4.32.2"), import_roots=("Lean.Elab", "Std.Data.HashMap")
|
|
311
|
+
)
|
|
312
|
+
is True
|
|
313
|
+
)
|
|
314
|
+
assert (
|
|
315
|
+
runtime.exact_ready_locally(
|
|
316
|
+
_core_lock("leanprover/lean4:v4.32.2"), import_roots=("Mathlib",)
|
|
317
|
+
)
|
|
318
|
+
is False
|
|
319
|
+
)
|
|
320
|
+
assert runtime.exact_ready_locally(_core_lock("leanprover/lean4:v4.31.0")) is False
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
def test_core_lock_plan_costs_nothing_once_its_toolchain_is_installed(tmp_path: Path) -> None:
|
|
324
|
+
runtime = Runtime(
|
|
325
|
+
home=tmp_path / "home",
|
|
326
|
+
toolchains=InstalledToolchains(tmp_path, "leanprover/lean4:v4.32.2"), # type: ignore[arg-type]
|
|
327
|
+
libraries=[],
|
|
328
|
+
)
|
|
329
|
+
plan = runtime.plan_exact(_core_lock("leanprover/lean4:v4.32.2"))
|
|
330
|
+
assert plan["environment_ready"] is True
|
|
331
|
+
assert plan["environment_download_bytes"] == 0
|
|
332
|
+
assert plan["toolchain_download_bytes"] == 0
|
|
333
|
+
assert plan["download_bytes"] == 0
|
|
334
|
+
assert plan["download_bytes_complete"] is True
|
|
335
|
+
assert plan["libraries"] == []
|
|
336
|
+
|
|
337
|
+
missing = runtime.plan_exact(_core_lock("leanprover/lean4:v4.31.0"))
|
|
338
|
+
assert missing["environment_ready"] is True
|
|
339
|
+
assert missing["environment_download_bytes"] == 0
|
|
340
|
+
assert missing["toolchain_installed"] is False
|
|
341
|
+
assert missing["download_bytes_complete"] is False
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schemas/catalog-v1.schema.json
RENAMED
|
File without changes
|
{lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schemas/plan-v1.schema.json
RENAMED
|
File without changes
|
{lean_runtime-4.25.0 → lean_runtime-4.26.0}/lean_runtime/discovery/schemas/result-v1.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
|
{lean_runtime-4.25.0 → lean_runtime-4.26.0}/tests/discovery/test_discovery_schema_resources.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
|