Newer
Older
use scikit-build-core to setup a python-cmake project that can be installed with `pip install -e .`
- package name has nothing to do with the import path. pacakge named my_package is installed with `pip install .`, uninstalled with `pip uninstall my_package`, but can be used as `import kk.ss as ks`.
```
[tool.scikit-build]
wheel.install-dir = "kk/ss"
```
```
[tool.scikit-build.wheel.packages]
"mm/tt" = "python/myproj/simulation"
[tool.scikit-build]
wheel.exclude = ["CMakeLists.txt","*.cc","*.h"]
```
## special variable
- `${SKBUILD_PLATLIB_DIR}`: The original platlib directory. Anything here goes
directly to site-packages when a wheel is installed.
- `${SKBUILD_DATA_DIR}`: The data directory. Anything here goes to the root of
the environment when a wheel is installed (use with care).
- `${SKBUILD_HEADERS_DIR}`: The header directory. Anything in here gets
installed to Python's header directory.
- `${SKBUILD_SCRIPTS_DIR}`: The scripts directory. Anything placed in here will
go to `bin` (Unix) or `Scripts` (Windows).
- `${SKBUILD_METADATA_DIR}`: The dist-info directory. Licenses go in the
`licenses` subdirectory. _Note that CMake is not run in the
`prepare_metadata_\*` hooks, so anything written to this directory will only
be present when writing wheels.\_
- `${SKBUILD_NULL_DIR}`: Anything installed here will not be placed in the
wheel.
- repo: https://gitlab.cern.ch/pre-commit-hook-mirrors/kynan/nbstripout
rev: 0.8.0
```
Name: clangd
Id: llvm-vs-code-extensions.vscode-clangd
Description: C/C++ completion, navigation, and insights
Version: 0.1.30
Publisher: LLVM
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd
```
```json
"[cpp]": {
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
}
```
Name: Black Formatter
Id: ms-python.black-formatter
Description: Formatting support for Python files using the Black formatter.
Version: 2024.4.0
Publisher: Microsoft
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=ms-python.black-formatter
```yaml
- repo: https://gitlab.cern.ch/pre-commit-hook-mirrors/pre-commit/mirrors-clang-format
rev: v19.1.3
hooks:
- id: clang-format
files: \.(cpp|hpp|c|h)$
```
### python formatting
Name: Ruff
Id: charliermarsh.ruff
Description: A Visual Studio Code extension with support for the Ruff linter.
Version: 2024.56.0
Publisher: Astral Software
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
"source.fixAll": "explicit",
"source.organizeImports": "explicit"
"notebook.codeActionsOnSave": {
"notebook.source.fixAll": "explicit",
"notebook.source.organizeImports": "explicit"
},
"notebook.formatOnSave.enabled": true,
```
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.7.4 # Use the latest version
- id: ruff
args: ["--fix", "--exit-non-zero-on-fix", "--show-fixes"]
- id: ruff-formatp
```python
@nox.session(venv_backend="none")
def dev(session: nox.Session) -> None:
"""
Prepare a .venv folder.
"""
library_output_dir = DIR / "python" / "myproj" / "simulation" / "_csrc"
session.run(sys.executable, "-m", "venv", ".venv")
session.run(
".venv/bin/pip",
"install",
"scikit-build-core[pyproject]",
"pybind11",
"pip>=23",
)
session.run(
".venv/bin/pip",
"install",
"--no-build-isolation",
"--check-build-dependencies",
"-ve",
".",
"-Ccmake.define.CMAKE_EXPORT_COMPILE_COMMANDS=1",
f"-Ccmake.define.CMAKE_LIBRARY_OUTPUT_DIRECTORY={library_output_dir}",
"-Cbuild-dir=build",
)
@nox.session(reuse_venv=True)
def cpp_lint(session: nox.Session) -> None:
cpp_files = glob.glob("**/*.cc", recursive=True)
session.install("clangd-tidy")
session.run("clangd-tidy", "-p", "build", *cpp_files)
```
```
Name: clangd
Id: llvm-vs-code-extensions.vscode-clangd
Description: C/C++ completion, navigation, and insights
Version: 0.1.30
Publisher: LLVM
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd
```
```json
"clangd.arguments": [
"--log=info",
"--pretty",
"--all-scopes-completion",
"--completion-style=bundled",
"--header-insertion=iwyu",
"--header-insertion-decorators",
"--background-index",
"--clang-tidy",
"-j=20",
"--pch-storage=disk",
"--function-arg-placeholders=false",
"--compile-commands-dir=build"
],
"clangd.path": "clangd-17"
```
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.7.3 # Use the latest version
hooks:
- id: ruff
args: ["--fix", "--show-fixes"]
```
Name: Ruff
Id: charliermarsh.ruff
Description: A Visual Studio Code extension with support for the Ruff linter.
Version: 2024.54.0
Publisher: Astral Software
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff
```
```
Name: isort
Id: ms-python.isort
Description: Import organization support for Python files using isort.
Version: 2023.10.1
Publisher: Microsoft
VS Marketplace Link: https://marketplace.visualstudio.com/items?itemName=ms-python.isort
```