Projects ¶
Module: lean_interact.project
This module provides classes for managing Lean projects, including local directories and git repositories.
It supports automatic building and dependency management using lake
, and can be used to create temporary projects
with specific configurations.
It is useful for setting up Lean environments for development, testing, or running benchmarks without manual setup.
LocalProject
dataclass
¶
LocalProject(
*,
directory: str | PathLike,
lake_path: str | PathLike = "lake",
auto_build: bool = True,
)
Bases: BaseProject
Configuration for using an existing local Lean project directory.
Examples:
# Use an existing local project
project = LocalProject(
directory="/path/to/my/lean/project",
auto_build=True # Build the project automatically
)
config = LeanREPLConfig(project=project)
lake_path
class-attribute
instance-attribute
¶
The path to the lake executable. Default is "lake", which assumes it is in the system PATH.
auto_build
class-attribute
instance-attribute
¶
Whether to automatically build the project after instantiation.
get_directory ¶
get_lean_version ¶
The Lean version used by this project.
build ¶
Build the Lean project using lake.
Args:
verbose: Whether to print building information to the console.
update: Whether to run lake update
before building.
_lock: (internal parameter) Whether to acquire a file lock (should be False if already locked by caller).
Source code in src/lean_interact/project.py
GitProject
dataclass
¶
GitProject(
*,
directory: str | PathLike | None = None,
lake_path: str | PathLike = "lake",
auto_build: bool = True,
url: str,
rev: str | None = None,
force_pull: bool = False,
)
Bases: BaseProject
Configuration for using an online git repository containing a Lean project.
Examples:
# Clone and use a Git repository
project = GitProject(
url="https://github.com/user/lean-project",
rev="main", # Optional: specific branch/tag/commit
directory="/custom/cache/dir", # Optional: custom directory
force_pull=False # Optional: force update on each use
)
config = LeanREPLConfig(project=project)
directory
class-attribute
instance-attribute
¶
The directory where the git project will be cloned. If None, a unique path inside the default LeanInteract cache directory will be used.
rev
class-attribute
instance-attribute
¶
The specific git revision (tag, branch, or commit hash) to checkout. If None, uses the default branch.
force_pull
class-attribute
instance-attribute
¶
Whether to force pull the latest changes from the remote repository, overwriting local changes.
lake_path
class-attribute
instance-attribute
¶
The path to the lake executable. Default is "lake", which assumes it is in the system PATH.
auto_build
class-attribute
instance-attribute
¶
Whether to automatically build the project after instantiation.
get_directory ¶
get_lean_version ¶
The Lean version used by this project.
build ¶
Build the Lean project using lake.
Args:
verbose: Whether to print building information to the console.
update: Whether to run lake update
before building.
_lock: (internal parameter) Whether to acquire a file lock (should be False if already locked by caller).
Source code in src/lean_interact/project.py
TemporaryProject
dataclass
¶
TemporaryProject(
*,
directory: str | PathLike | None = None,
lake_path: str | PathLike = "lake",
auto_build: bool = True,
lean_version: str,
verbose: bool = True,
content: str,
lakefile_type: Literal["lean", "toml"] = "lean",
)
Bases: BaseTempProject
Configuration for creating a temporary Lean project with custom lakefile content.
Examples:
# Create a temporary project with custom lakefile
project = TemporaryProject(
lean_version="v4.19.0",
content="""
import Lake
open Lake DSL
package "my_temp_project" where
version := v!"0.1.0"
require mathlib from git
"https://github.com/leanprover-community/mathlib4.git" @ "v4.19.0"
""",
lakefile_type="lean" # or "toml"
)
config = LeanREPLConfig(project=project)
content
instance-attribute
¶
The content to write to the lakefile (either lakefile.lean or lakefile.toml format).
lakefile_type
class-attribute
instance-attribute
¶
The type of lakefile to create. Either 'lean' for lakefile.lean or 'toml' for lakefile.toml.
directory
class-attribute
instance-attribute
¶
The directory where temporary Lean projects will be cached. If None, a unique path inside the default LeanInteract cache directory will be used.
lake_path
class-attribute
instance-attribute
¶
The path to the lake executable. Default is "lake", which assumes it is in the system PATH.
auto_build
class-attribute
instance-attribute
¶
Whether to automatically build the project after instantiation.
verbose
class-attribute
instance-attribute
¶
Whether to print additional information during the setup process.
get_directory ¶
get_lean_version ¶
The Lean version used by this project.
build ¶
Build the Lean project using lake.
Args:
verbose: Whether to print building information to the console.
update: Whether to run lake update
before building.
_lock: (internal parameter) Whether to acquire a file lock (should be False if already locked by caller).
Source code in src/lean_interact/project.py
TempRequireProject
dataclass
¶
TempRequireProject(
*,
directory: str | PathLike | None = None,
lake_path: str | PathLike = "lake",
auto_build: bool = True,
lean_version: str,
verbose: bool = True,
require: Literal["mathlib"]
| LeanRequire
| list[LeanRequire | Literal["mathlib"]],
)
Bases: BaseTempProject
Configuration for setting up a temporary project with specific dependencies.
As Mathlib is a common dependency, you can just set require="mathlib"
and a compatible
version of mathlib will be used. This feature has been developed mostly to be able to run
benchmarks using Mathlib as a dependency (such as ProofNet# or MiniF2F) without having
to manually set up a Lean project.
Examples:
# Create a temporary project with Mathlib
project = TempRequireProject(
lean_version="v4.19.0",
require="mathlib" # Shortcut for Mathlib
)
# Or with custom dependencies
project = TempRequireProject(
lean_version="v4.19.0",
require=[
LeanRequire("mathlib", "https://github.com/leanprover-community/mathlib4.git", "v4.19.0"),
LeanRequire("my_lib", "https://github.com/user/my-lib.git", "v1.0.0")
]
)
config = LeanREPLConfig(project=project)
require
instance-attribute
¶
require: (
Literal["mathlib"]
| LeanRequire
| list[LeanRequire | Literal["mathlib"]]
)
The dependencies to include in the project. Can be:
- "mathlib" for automatic Mathlib dependency matching the Lean version
- A single LeanRequire object for a custom dependency
- A list of dependencies (mix of "mathlib" and LeanRequire objects)
directory
class-attribute
instance-attribute
¶
The directory where temporary Lean projects will be cached. If None, a unique path inside the default LeanInteract cache directory will be used.
lake_path
class-attribute
instance-attribute
¶
The path to the lake executable. Default is "lake", which assumes it is in the system PATH.
auto_build
class-attribute
instance-attribute
¶
Whether to automatically build the project after instantiation.
verbose
class-attribute
instance-attribute
¶
Whether to print additional information during the setup process.
get_directory ¶
get_lean_version ¶
The Lean version used by this project.
build ¶
Build the Lean project using lake.
Args:
verbose: Whether to print building information to the console.
update: Whether to run lake update
before building.
_lock: (internal parameter) Whether to acquire a file lock (should be False if already locked by caller).