[project] name = "cvisor" version = "0.2.0" description = "In-process Linux sandbox — Python SDK (ctypes FFI over libcvisor)" readme = "README.md" requires-python = ">=3.9" license = { text = "MIT" } authors = [{ name = "butter.dev" }] keywords = ["sandbox", "seccomp", "linux", "isolation"] classifiers = [ "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", ] # Pure-ctypes wrapper — no runtime dependencies. dependencies = [] [project.optional-dependencies] # Rich interactive console (`cvisor`). Without it the console falls back to the # stdlib REPL. console = ["ipython>=8"] [project.scripts] # `cvisor` (or `python -m cvisor`) launches the interactive console. cvisor = "cvisor.console:main" [project.urls] Homepage = "https://github.com/tsirysndr/cVisor" Repository = "https://github.com/tsirysndr/cVisor" [build-system] requires = ["hatchling"] build-backend = "hatchling.build" # The compiled libcvisor-.so is placed in cvisor/_native/ by the build # step (`cargo xtask ffi`). The directory is gitignored, and hatchling drops # VCS-ignored files unless they are declared as artifacts — without this the # sdist omits the .so and building a wheel from it fails. [tool.hatch.build.targets.sdist] artifacts = ["cvisor/_native/*.so"] # The wheel's .so selection and platform tag are handled by hatch_build.py: # CVISOR_ARCH=aarch64|x86_64 builds a musllinux wheel with that arch's .so; # unset, it builds a fat py3-none-any wheel with both (dev convenience). # _native is excluded here so inclusion doesn't depend on gitignore state # (present in the worktree, absent inside an unpacked sdist). [tool.hatch.build.targets.wheel] packages = ["cvisor"] exclude = ["cvisor/_native"] [tool.hatch.build.targets.wheel.hooks.custom] path = "hatch_build.py" [dependency-groups] dev = ["pytest>=8"] [tool.uv] package = true