mirror of
https://github.com/astral-sh/ty.git
synced 2025-07-07 19:45:00 +00:00
Setup pre-commit (#28)
This commit is contained in:
parent
85563be22d
commit
f3a0cea880
4 changed files with 145 additions and 6 deletions
20
.editorconfig
Normal file
20
.editorconfig
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
# Check http://editorconfig.org for more information
|
||||||
|
# This is the main config file for this project:
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
end_of_line = lf
|
||||||
|
indent_style = space
|
||||||
|
insert_final_newline = true
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.{rs,py,pyi}]
|
||||||
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
max_line_length = 100
|
||||||
|
|
||||||
|
[*.toml]
|
||||||
|
indent_size = 4
|
31
.markdownlint.yaml
Normal file
31
.markdownlint.yaml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
# default to true for all rules
|
||||||
|
default: true
|
||||||
|
|
||||||
|
# MD007/unordered-list-indent
|
||||||
|
MD007:
|
||||||
|
indent: 4
|
||||||
|
|
||||||
|
# MD033/no-inline-html
|
||||||
|
MD033: false
|
||||||
|
|
||||||
|
# MD041/first-line-h1
|
||||||
|
MD041: false
|
||||||
|
|
||||||
|
# MD013/line-length
|
||||||
|
MD013: false
|
||||||
|
|
||||||
|
# MD014/commands-show-output
|
||||||
|
MD014: false
|
||||||
|
|
||||||
|
# MD024/no-duplicate-heading
|
||||||
|
MD024:
|
||||||
|
# Allow when nested under different parents e.g. CHANGELOG.md
|
||||||
|
siblings_only: true
|
||||||
|
|
||||||
|
# MD046/code-block-style
|
||||||
|
#
|
||||||
|
# Ignore this because it conflicts with the code block style used in content
|
||||||
|
# tabs of mkdocs-material which is to add a blank line after the content title.
|
||||||
|
#
|
||||||
|
# Ref: https://github.com/astral-sh/ruff/pull/15011#issuecomment-2544790854
|
||||||
|
MD046: false
|
75
.pre-commit-config.yaml
Normal file
75
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
fail_fast: false
|
||||||
|
|
||||||
|
exclude: |
|
||||||
|
(?x)^(
|
||||||
|
.github/workflows/release.yml|
|
||||||
|
ruff/.*|
|
||||||
|
)$
|
||||||
|
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||||
|
rev: v5.0.0
|
||||||
|
hooks:
|
||||||
|
- id: check-merge-conflict
|
||||||
|
|
||||||
|
- repo: https://github.com/abravalheri/validate-pyproject
|
||||||
|
rev: v0.24.1
|
||||||
|
hooks:
|
||||||
|
- id: validate-pyproject
|
||||||
|
|
||||||
|
- repo: https://github.com/executablebooks/mdformat
|
||||||
|
rev: 0.7.22
|
||||||
|
hooks:
|
||||||
|
- id: mdformat
|
||||||
|
additional_dependencies:
|
||||||
|
- mdformat-mkdocs==4.0.0
|
||||||
|
- mdformat-footnote==0.1.1
|
||||||
|
|
||||||
|
- repo: https://github.com/igorshubovych/markdownlint-cli
|
||||||
|
rev: v0.44.0
|
||||||
|
hooks:
|
||||||
|
- id: markdownlint-fix
|
||||||
|
|
||||||
|
- repo: https://github.com/crate-ci/typos
|
||||||
|
rev: v1.32.0
|
||||||
|
hooks:
|
||||||
|
- id: typos
|
||||||
|
|
||||||
|
# Prettier
|
||||||
|
- repo: https://github.com/rbubley/mirrors-prettier
|
||||||
|
rev: v3.5.3
|
||||||
|
hooks:
|
||||||
|
- id: prettier
|
||||||
|
types: [yaml]
|
||||||
|
|
||||||
|
# zizmor detects security vulnerabilities in GitHub Actions workflows.
|
||||||
|
# Additional configuration for the tool is found in `.github/zizmor.yml`
|
||||||
|
- repo: https://github.com/woodruffw/zizmor-pre-commit
|
||||||
|
rev: v1.6.0
|
||||||
|
hooks:
|
||||||
|
- id: zizmor
|
||||||
|
|
||||||
|
- repo: https://github.com/python-jsonschema/check-jsonschema
|
||||||
|
rev: 0.33.0
|
||||||
|
hooks:
|
||||||
|
- id: check-github-workflows
|
||||||
|
|
||||||
|
# `actionlint` hook, for verifying correct syntax in GitHub Actions workflows.
|
||||||
|
# Some additional configuration for `actionlint` can be found in `.github/actionlint.yaml`.
|
||||||
|
- repo: https://github.com/rhysd/actionlint
|
||||||
|
rev: v1.7.7
|
||||||
|
hooks:
|
||||||
|
- id: actionlint
|
||||||
|
stages:
|
||||||
|
# This hook is disabled by default, since it's quite slow.
|
||||||
|
# To run all hooks *including* this hook, use `uvx pre-commit run -a --hook-stage=manual`.
|
||||||
|
# To run *just* this hook, use `uvx pre-commit run -a actionlint --hook-stage=manual`.
|
||||||
|
- manual
|
||||||
|
args:
|
||||||
|
- "-ignore=SC2129" # ignorable stylistic lint from shellcheck
|
||||||
|
- "-ignore=SC2016" # another shellcheck lint: seems to have false positives?
|
||||||
|
additional_dependencies:
|
||||||
|
# actionlint has a shellcheck integration which extracts shell scripts in `run:` steps from GitHub Actions
|
||||||
|
# and checks these with shellcheck. This is arguably its most useful feature,
|
||||||
|
# but the integration only works if shellcheck is installed
|
||||||
|
- "github.com/wasilibs/go-shellcheck/cmd/shellcheck@v0.10.0"
|
|
@ -17,21 +17,34 @@ The ty repository only includes code relevant to distributing the ty project.
|
||||||
|
|
||||||
Clone the repository:
|
Clone the repository:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
git clone https://github.com/astral-sh/ty.git
|
git clone https://github.com/astral-sh/ty.git
|
||||||
```
|
```
|
||||||
|
|
||||||
Then, ensure the submodule is initialized:
|
Then, ensure the submodule is initialized:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
git submodule update --init --recursive
|
git submodule update --init --recursive
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Prerequisites
|
||||||
|
|
||||||
|
You'll need [uv](https://docs.astral.sh/uv/getting-started/installation/) (or `pipx` and `pip`) to
|
||||||
|
run Python utility commands.
|
||||||
|
|
||||||
|
You can optionally install pre-commit hooks to automatically run the validation checks
|
||||||
|
when making a commit:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
uv tool install pre-commit
|
||||||
|
pre-commit install
|
||||||
|
```
|
||||||
|
|
||||||
## Building the Python package
|
## Building the Python package
|
||||||
|
|
||||||
The Python package can be built with any Python build frontend (Maturin is used as a backend), e.g.:
|
The Python package can be built with any Python build frontend (Maturin is used as a backend), e.g.:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
uv build
|
uv build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -39,19 +52,19 @@ uv build
|
||||||
|
|
||||||
To update the Ruff submodule to the latest commit:
|
To update the Ruff submodule to the latest commit:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
git -C ruff pull origin main
|
git -C ruff pull origin main
|
||||||
```
|
```
|
||||||
|
|
||||||
Or, to update the Ruff submodule to a specific commit:
|
Or, to update the Ruff submodule to a specific commit:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
git -C ruff checkout <commit>
|
git -C ruff checkout <commit>
|
||||||
```
|
```
|
||||||
|
|
||||||
To commit the changes:
|
To commit the changes:
|
||||||
|
|
||||||
```
|
```bash
|
||||||
commit=$(git -C ruff rev-parse --short HEAD)
|
commit=$(git -C ruff rev-parse --short HEAD)
|
||||||
git switch -c "sync/ruff-${commit}"
|
git switch -c "sync/ruff-${commit}"
|
||||||
git add ruff
|
git add ruff
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue