A fast, cross-platform multi-language linter and formatter
Project description
linthis
A fast, cross-platform multi-language linter and formatter written in Rust.
Features
- 🚀 Single Command: Run both linting and formatting simultaneously
- 🌍 Multi-Language Support: Rust, Python, TypeScript, JavaScript, Go, Java, C++, Swift, Kotlin, Lua, and more
- 🎯 Auto-Detection: Automatically detect programming languages used in your project
- ⚙️ Flexible Configuration: Support for project config, global config, and CLI parameters
- 📦 Plugin System: Share and reuse configurations via Git repositories
- 🎨 Format Presets: Support for popular code styles like Google, Airbnb, Standard
- ⚡ Parallel Processing: Leverage multi-core CPU for faster file processing
Installation
Method 1: Install via PyPI (Recommended for Python users)
# Using pip
pip install linthis
# Using uv (recommended)
# pip install uv
uv pip install linthis
Method 2: Install via Cargo (Recommended for Rust users)
cargo install linthis
Method 3: Build from Source
git clone https://github.com/zhlinh/linthis.git
cd linthis
cargo build --release
Quick Start
Initialize Configuration (Optional)
# Create project configuration file
linthis init
# Create global configuration file
linthis init -g
# Install pre-commit hooks (project-level)
linthis hook install --type prek
linthis hook install --type pre-commit
linthis hook install --type git
# Install pre-push hook
linthis hook install --type git --event pre-push
# Install commit-msg hook
linthis hook install --type git --event commit-msg
# Force overwrite existing files
linthis init --force
linthis hook install --type prek --force
Basic Usage
# Check and format current directory (default behavior)
linthis
# Check and format specific directories
linthis -i src/
linthis --include src/ --include lib/
# Check only, no formatting
linthis -c
linthis --check-only
# Format only, no checking
linthis -f
linthis --format-only
# Check Git staged files (suitable for pre-commit hook)
linthis -s
linthis --staged
Specify Languages
# Check specific language
linthis -l python
linthis --lang rust
# Check multiple languages
linthis -l python,rust,cpp
linthis --lang "python,javascript,go"
Exclude Files
# Exclude specific patterns
linthis -e "*.test.js" -e "dist/**"
linthis --exclude "target/**" --exclude "node_modules/**"
Plugin System
linthis supports Git-based configuration plugins for easy sharing of code standards across projects and teams.
Add Plugin
# Add plugin to project config (.linthis.toml)
linthis plugin add <alias> <git-url>
# Example: Add a custom plugin
linthis plugin add myplugin https://github.com/zhlinh/linthis-plugin.git
# Add to global config (~/.linthis/config.toml)
linthis plugin add -g <alias> <git-url>
linthis plugin add --global <alias> <git-url>
Use Plugin
Plugins are automatically loaded when running linthis. After adding a plugin:
# Plugin configs are auto-loaded
linthis
# Combine with other options
linthis -i src/
# Check only
linthis -c
# Format only
linthis -f
# Check and format files staged
linthis -s
Remove Plugin
# Remove plugin from project config
linthis plugin remove <alias>
linthis plugin remove myplugin
# Remove plugin from global config
linthis plugin remove -g <alias>
linthis plugin remove --global myplugin
# Supports flexible parameter ordering
linthis plugin remove --global myplugin
View and Manage Plugins
# View project config plugins
linthis plugin list
# View global config plugins
linthis plugin list -g
linthis plugin list --global
# Sync (update) plugins
linthis plugin sync # Sync local plugins
linthis plugin sync --global # Sync global plugins
# Initialize new plugin
linthis plugin init my-config
# Validate plugin structure
linthis plugin validate /path/to/plugin
# Clean plugin cache
linthis plugin clean # Interactive cleanup
linthis plugin clean --all # Clean all caches
Configuration Files
Project Configuration
Create .linthis.toml in your project root:
# Specify languages to check (omit for auto-detection)
languages = ["rust", "python", "javascript"]
# Exclude files and directories
excludes = [
"target/**",
"node_modules/**",
"*.generated.rs",
"dist/**"
]
# Maximum cyclomatic complexity
max_complexity = 20
# Format preset
preset = "google" # Options: google, airbnb, standard
# Configure plugins
[plugins]
sources = [
{ name = "official" },
{ name = "myplugin", url = "https://github.com/zhlinh/linthis-plugin.git", ref = "main" }
]
# Language-specific configuration
# [rust]
# max_complexity = 15
# [python]
# excludes = ["*_test.py"]
Global Configuration
Global configuration file is located at ~/.linthis/config.toml, with the same format as project config.
Configuration Priority
Configuration merge priority (from high to low):
- CLI Parameters:
--option value - Project Config:
.linthis.toml - Global Config:
~/.linthis/config.toml - Plugin Config: Plugins in sources array (later ones override earlier ones)
- Built-in Defaults
Configuration Management
linthis provides a config subcommand for convenient command-line configuration management without manual TOML editing.
Array Field Operations
Supported array fields: includes, excludes, languages
Add Values (add)
# Add to project config
linthis config add includes "src/**"
linthis config add excludes "*.log"
linthis config add languages "rust"
# Add to global config (-g or --global)
linthis config add -g includes "lib/**"
linthis config add --global excludes "node_modules/**"
# Add multiple values (automatically deduped)
linthis config add includes "src/**"
linthis config add includes "lib/**"
Remove Values (remove)
# Remove from project config
linthis config remove excludes "*.log"
linthis config remove languages "python"
# Remove from global config
linthis config remove -g includes "lib/**"
linthis config remove --global excludes "target/**"
Clear Field (clear)
# Clear project config field
linthis config clear languages
linthis config clear includes
# Clear global config field
linthis config clear -g excludes
linthis config clear --global languages
Scalar Field Operations
Supported scalar fields: max_complexity, preset, verbose
Set Value (set)
# Set complexity limit
linthis config set max_complexity 15
linthis config set max_complexity 30 -g
# Set format preset (google, standard, airbnb)
linthis config set preset google
linthis config set preset airbnb --global
# Set verbose output
linthis config set verbose true
linthis config set verbose false -g
Unset Value (unset)
# Remove field from project config
linthis config unset max_complexity
linthis config unset preset
# Remove field from global config
linthis config unset -g verbose
linthis config unset --global max_complexity
Query Operations
Get Single Field Value (get)
# View project config field
linthis config get includes
linthis config get max_complexity
linthis config get preset
# View global config field
linthis config get -g excludes
linthis config get --global languages
List All Configuration (list)
# List project config
linthis config list
# List global config
linthis config list -g
linthis config list --global
# Verbose mode (show all fields including empty values)
linthis config list -v
linthis config list --verbose
linthis config list --global --verbose
Configuration Management Examples
# Initialize project config
linthis config add includes "src/**"
linthis config add includes "lib/**"
linthis config add excludes "target/**"
linthis config add excludes "*.log"
linthis config add languages "rust"
linthis config add languages "python"
linthis config set max_complexity 20
linthis config set preset google
# View config
linthis config list
# Adjust config
linthis config set max_complexity 15
linthis config remove excludes "*.log"
linthis config add excludes "*.tmp"
# Set global defaults
linthis config set -g max_complexity 20
linthis config add -g excludes "node_modules/**"
linthis config add -g excludes ".git/**"
Configuration Migration
linthis can automatically detect and migrate existing linter/formatter configurations to linthis format.
Supported Tools
| Tool | Detected Files |
|---|---|
| ESLint | .eslintrc.js, .eslintrc.json, .eslintrc.yml, .eslintrc, eslint.config.js, package.json[eslintConfig] |
| Prettier | .prettierrc, .prettierrc.json, .prettierrc.yml, .prettierrc.js, prettier.config.js, package.json[prettier] |
| Black | pyproject.toml[tool.black] |
| isort | pyproject.toml[tool.isort] |
Migration Commands
# Auto-detect and migrate all configs
linthis config migrate
# Migrate specific tool only
linthis config migrate --from eslint
linthis config migrate --from prettier
linthis config migrate --from black
linthis config migrate --from isort
# Preview changes without applying
linthis config migrate --dry-run
# Create backup of original files
linthis config migrate --backup
# Verbose output
linthis config migrate --verbose
Migration Output
Migrated configurations are placed in .linthis/configs/{language}/:
- ESLint →
.linthis/configs/javascript/.eslintrc.js - Prettier →
.linthis/configs/javascript/prettierrc.js - Black/isort →
.linthis/configs/python/ruff.toml
Initialize Configuration File
Use the init subcommand to explicitly create configuration files:
# Create project config (.linthis.toml)
linthis init
# Create global config (~/.linthis/config.toml)
linthis init -g
linthis init --global
# Backward compatible: can also use --init flag
linthis --init
Auto-Create Configuration Files
When using the config command, configuration files are automatically created if they don't exist:
- Project Config: Creates
.linthis.tomlin current directory - Global Config: Creates
config.tomlin~/.linthis/directory
All modifications preserve TOML file format and comments.
Command Line Options
Main Command Options
| Short | Long | Description | Example |
|---|---|---|---|
-i |
--include |
Specify files or directories to check | -i src -i lib |
-e |
--exclude |
Exclude patterns (can be used multiple times) | -e "*.test.js" |
-c |
--check-only |
Check only, no formatting | -c |
-f |
--format-only |
Format only, no checking | -f |
-s |
--staged |
Check only Git staged files | -s |
-l |
--lang |
Specify languages (comma-separated) | -l python,rust |
-o |
--output |
Output format: human, json, github-actions | -o json |
-v |
--verbose |
Verbose output | -v |
-q |
--quiet |
Quiet mode (errors only) | -q |
--config |
Specify config file path | --config custom.toml |
|
--init |
Initialize .linthis.toml config file | --init |
|
--preset |
Format preset | --preset google |
|
--no-default-excludes |
Disable default exclude rules | --no-default-excludes |
|
--no-gitignore |
Disable .gitignore rules | --no-gitignore |
|
--no-plugin |
Skip loading plugins, use default config | --no-plugin |
Plugin Management Subcommands
| Command | Short | Long | Description |
|---|---|---|---|
plugin add <alias> <url> |
-g |
--global |
Add to global config |
--ref |
Specify Git reference | ||
plugin remove <alias> |
-g |
--global |
Remove from global config |
plugin list |
-g |
--global |
Show global config plugins |
-v |
--verbose |
Show detailed info | |
plugin clean |
--all |
Clean all caches | |
plugin init <name> |
Initialize new plugin | ||
plugin validate <path> |
Validate plugin structure |
Configuration Management Subcommands
| Command | Short | Long | Description |
|---|---|---|---|
config add <field> <value> |
-g |
--global |
Add value to array field |
config remove <field> <value> |
-g |
--global |
Remove value from array field |
config clear <field> |
-g |
--global |
Clear array field |
config set <field> <value> |
-g |
--global |
Set scalar field value |
config unset <field> |
-g |
--global |
Remove scalar field |
config get <field> |
-g |
--global |
Get field value |
config list |
-g |
--global |
List all configuration |
-v |
--verbose |
Show detailed info (including empty values) | |
config migrate |
--from |
Migrate from specific tool | |
--dry-run |
Preview changes without applying | ||
--backup |
Create backup of original files | ||
-v |
--verbose |
Show detailed output |
Supported array fields: includes, excludes, languages
Supported scalar fields: max_complexity, preset, verbose
Init Subcommand
| Command | Short | Long | Description |
|---|---|---|---|
init |
-g |
--global |
Create global config file |
--with-hook |
Also install git hook after init | ||
--force |
Force overwrite existing files |
Created configuration files:
- Without
-g: Creates.linthis.toml(current directory) - With
-g: Creates~/.linthis/config.toml(global config)
Hook Subcommand
| Command | Short | Long | Description |
|---|---|---|---|
hook install |
--type |
Hook type (prek/pre-commit/git) | |
--event |
Hook event (pre-commit/pre-push/commit-msg) | ||
-c |
--check-only |
Hook only runs check | |
-f |
--format-only |
Hook only runs format | |
--force |
Force overwrite existing hook | ||
-y |
--yes |
Non-interactive mode | |
hook uninstall |
--event |
Hook event to uninstall | |
-y |
--yes |
Non-interactive mode | |
hook status |
Show git hook status | ||
hook check |
Check for hook conflicts |
Hook types:
prek: Rust-based pre-commit tool (faster)pre-commit: Python-based standard toolgit: Traditional git hook
Hook events:
pre-commit: Run before commit (default, checks staged files)pre-push: Run before push (checks all files)commit-msg: Validate commit message format
Supported Languages
| Language | Linter | Formatter |
|---|---|---|
| Rust | clippy | rustfmt |
| Python | pylint, flake8, ruff | black, ruff |
| TypeScript | eslint | prettier |
| JavaScript | eslint | prettier |
| Go | golangci-lint | gofmt |
| Java | checkstyle | google-java-format |
| C++ | cpplint, cppcheck | clang-format |
| Swift | swiftlint | swift-format |
| Kotlin | detekt | ktlint |
| Lua | luacheck | stylua |
| Dart | dart analyze | dart format |
Editor Plugins
linthis provides official plugins for popular editors, offering seamless integration with format-on-save, manual lint/format commands, and configurable settings.
VSCode
Install from VS Marketplace or search "linthis" in VSCode Extensions.
Features:
- Format on Save (configurable)
- Manual Lint/Format commands via Command Palette
- Configurable executable path and additional arguments
- Status bar integration
Installation via Command Palette:
ext install zhlinh.linthis
Configuration (settings.json):
{
"linthis.formatOnSave": true,
"linthis.executable.path": "",
"linthis.executable.additionalArguments": ""
}
📁 Source: vscode-linthis
JetBrains (IntelliJ IDEA, WebStorm, PyCharm, etc.)
Install from JetBrains Marketplace or search "linthis" in IDE Settings → Plugins.
Features:
- Format on Save (configurable)
- Manual Lint/Format via Tools menu
- Configurable executable path and additional arguments
- Settings UI in Preferences → Tools → Linthis
Installation:
- Open Settings/Preferences → Plugins
- Search for "linthis"
- Click Install and restart IDE
Configuration:
- Settings → Tools → Linthis
- Enable/disable Format on Save
- Set custom executable path
- Add additional command-line arguments
📁 Source: jetbrains-linthis
Neovim
Install using your favorite plugin manager. Distributed via GitHub.
lazy.nvim (Recommended)
-- For monorepo (plugin in subdirectory)
{
"zhlinh/linthis",
subdir = "nvim-linthis",
config = function()
require("linthis").setup()
end,
}
-- For standalone repository
{
"zhlinh/nvim-linthis",
config = function()
require("linthis").setup()
end,
}
packer.nvim
-- For monorepo
use {
"zhlinh/linthis",
rtp = "nvim-linthis",
config = function()
require("linthis").setup()
end,
}
vim-plug
" For monorepo
Plug 'zhlinh/linthis', { 'rtp': 'nvim-linthis' }
Features:
- Format on Save (configurable)
- Commands:
:LinthisLint,:LinthisFormat,:LinthisLintFormat - Configurable via
setup()options
Configuration:
require("linthis").setup({
format_on_save = true,
executable = "linthis",
additional_args = {},
})
📁 Source: nvim-linthis
Usage Scenarios
Pre-commit Hook
Method 1: Using prek (Recommended for Teams)
prek is a high-performance Git hooks manager written in Rust, fully compatible with pre-commit config format but much faster.
Install prek:
# Using cargo
cargo install prek
# Or using pip
pip install prek
Create .pre-commit-config.yaml in your project:
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: linthis
name: linthis
entry: linthis --staged --check-only
language: system
pass_filenames: false
Install hook:
prek install
Method 2: Traditional Git Hook (Project-level)
Add to .git/hooks/pre-commit:
#!/bin/sh
linthis --staged --check-only
Or use linthis to create it automatically:
linthis hook install --type git
Method 3: Using pre-commit Framework
Using the pre-commit framework:
# .pre-commit-config.yaml
repos:
- repo: local
hooks:
- id: linthis
name: linthis
entry: linthis --staged --check-only
language: system
pass_filenames: false
CI/CD Integration
GitHub Actions
name: Lint
on: [push, pull_request]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install linthis
run: pip install linthis
- name: Run linthis
run: linthis --check-only --output github-actions
GitLab CI
lint:
image: rust:latest
script:
- cargo install linthis
- linthis --check-only
Creating Custom Plugins
1. Initialize Plugin
linthis plugin init my-company-standards
cd my-company-standards
2. Edit Plugin Configuration
Edit linthis-plugin.toml:
[plugin]
name = "my-company-standards"
version = "1.0.0"
description = "My company's coding standards"
["language.python"]
config_count = 2
["language.python".tools.flake8]
priority = "P0"
files = [".flake8"]
["language.python".tools.black]
priority = "P1"
files = ["pyproject.toml"]
3. Add Configuration Files
mkdir -p python
# Add your config files to corresponding language directories
cp /path/to/.flake8 python/
cp /path/to/pyproject.toml python/
4. Publish to Git
git init
git add .
git commit -m "feat: Initial commit of my company coding standards"
git remote add origin git@github.com:mycompany/linthis-standards.git
git push -u origin main
5. Use Your Plugin
linthis plugin add company https://github.com/mycompany/linthis-standards.git
linthis # Plugin configs are auto-loaded
FAQ
Q: How to specify multiple paths?
linthis -i src -i lib -i tests
Q: How to check only specific file types?
linthis -l python # Only check Python files
Q: Where is the plugin cache?
- macOS:
~/Library/Caches/linthis/plugins - Linux:
~/.cache/linthis/plugins - Windows:
%LOCALAPPDATA%\linthis\cache\plugins
Q: How to update plugins?
linthis plugin sync # Sync local plugins
linthis plugin sync --global # Sync global plugins
Q: What is the plugin Git reference (ref) used for?
The ref can specify:
- Branch name:
--ref main - Tag:
--ref v1.0.0 - Commit hash:
--ref abc1234
This allows you to lock plugin versions or use development versions.
Documentation
- Plugin Auto-Sync - Automatic plugin synchronization (inspired by oh-my-zsh)
- Self Auto-Update - Automatic self-update functionality
Development
Build
cargo build
Test
cargo test
Release
cargo build --release
Contributing
Issues and Pull Requests are welcome!
License
MIT License - See LICENSE file for details
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file linthis-0.0.13.tar.gz.
File metadata
- Download URL: linthis-0.0.13.tar.gz
- Upload date:
- Size: 822.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d18c45d51cbf29428b8fbc0012e33d249f2653231a1e79f4e9578f11a807172
|
|
| MD5 |
477e8885ca95679da76edb7f0bfd706f
|
|
| BLAKE2b-256 |
e6fe688dbac31e6169a7b454c334c6d87015e6b9a73d7a54f9f7d64319542158
|
Provenance
The following attestation bundles were made for linthis-0.0.13.tar.gz:
Publisher:
release.yml on zhlinh/linthis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
linthis-0.0.13.tar.gz -
Subject digest:
1d18c45d51cbf29428b8fbc0012e33d249f2653231a1e79f4e9578f11a807172 - Sigstore transparency entry: 843373049
- Sigstore integration time:
-
Permalink:
zhlinh/linthis@e12411ee118cedd83127be565a061d0b20f7784a -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/zhlinh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e12411ee118cedd83127be565a061d0b20f7784a -
Trigger Event:
push
-
Statement type:
File details
Details for the file linthis-0.0.13-py3-none-win_amd64.whl.
File metadata
- Download URL: linthis-0.0.13-py3-none-win_amd64.whl
- Upload date:
- Size: 4.1 MB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9ce3b448e7597fa88d538d86e33464ddcf78cf13e7e69127c5cbf5355a3b586
|
|
| MD5 |
6cff6f3cbb68d18b7d479b4dc5b75a51
|
|
| BLAKE2b-256 |
80a56ae490c653d9c962069d066b1a05a34f43d804663c3e121393185e81c4c3
|
Provenance
The following attestation bundles were made for linthis-0.0.13-py3-none-win_amd64.whl:
Publisher:
release.yml on zhlinh/linthis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
linthis-0.0.13-py3-none-win_amd64.whl -
Subject digest:
e9ce3b448e7597fa88d538d86e33464ddcf78cf13e7e69127c5cbf5355a3b586 - Sigstore transparency entry: 843373102
- Sigstore integration time:
-
Permalink:
zhlinh/linthis@e12411ee118cedd83127be565a061d0b20f7784a -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/zhlinh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e12411ee118cedd83127be565a061d0b20f7784a -
Trigger Event:
push
-
Statement type:
File details
Details for the file linthis-0.0.13-py3-none-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: linthis-0.0.13-py3-none-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 3.9 MB
- Tags: Python 3, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
68012d066f253fa2e60c08facb98bc3a2f2db2979e67203a77213bd1cb0c2cb7
|
|
| MD5 |
7d8d7dac2625f41b3f298926cfe39e46
|
|
| BLAKE2b-256 |
7a4823c23bcc9cd8989cd22ee9fbe4771c549cc93b320979d765c1f779b3eed8
|
Provenance
The following attestation bundles were made for linthis-0.0.13-py3-none-manylinux_2_28_x86_64.whl:
Publisher:
release.yml on zhlinh/linthis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
linthis-0.0.13-py3-none-manylinux_2_28_x86_64.whl -
Subject digest:
68012d066f253fa2e60c08facb98bc3a2f2db2979e67203a77213bd1cb0c2cb7 - Sigstore transparency entry: 843373061
- Sigstore integration time:
-
Permalink:
zhlinh/linthis@e12411ee118cedd83127be565a061d0b20f7784a -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/zhlinh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e12411ee118cedd83127be565a061d0b20f7784a -
Trigger Event:
push
-
Statement type:
File details
Details for the file linthis-0.0.13-py3-none-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: linthis-0.0.13-py3-none-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 3.7 MB
- Tags: Python 3, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b128c532e02c9dfaacebbb767410e85d0299c7f074df4a7ab2b04ccd3f195f99
|
|
| MD5 |
a98bd28b2f7e9b9ce78af0a82bb7aab3
|
|
| BLAKE2b-256 |
4173ee6b3b17e45030cd98d530d36a5d7200e8fbfdfa2c264598285cc89b622a
|
Provenance
The following attestation bundles were made for linthis-0.0.13-py3-none-manylinux_2_28_aarch64.whl:
Publisher:
release.yml on zhlinh/linthis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
linthis-0.0.13-py3-none-manylinux_2_28_aarch64.whl -
Subject digest:
b128c532e02c9dfaacebbb767410e85d0299c7f074df4a7ab2b04ccd3f195f99 - Sigstore transparency entry: 843373077
- Sigstore integration time:
-
Permalink:
zhlinh/linthis@e12411ee118cedd83127be565a061d0b20f7784a -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/zhlinh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e12411ee118cedd83127be565a061d0b20f7784a -
Trigger Event:
push
-
Statement type:
File details
Details for the file linthis-0.0.13-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: linthis-0.0.13-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d063249979f0d43e8b497c78c593bd4d563210cf127fcf00c350ac5b010c60d5
|
|
| MD5 |
4cf4b15aa8c8edd30adace87ed4dc8b6
|
|
| BLAKE2b-256 |
15ed27fae3c022f5c91c15d2eb173a4adf02a3722ce4fd6a75ea6350c5157106
|
Provenance
The following attestation bundles were made for linthis-0.0.13-py3-none-macosx_11_0_arm64.whl:
Publisher:
release.yml on zhlinh/linthis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
linthis-0.0.13-py3-none-macosx_11_0_arm64.whl -
Subject digest:
d063249979f0d43e8b497c78c593bd4d563210cf127fcf00c350ac5b010c60d5 - Sigstore transparency entry: 843373070
- Sigstore integration time:
-
Permalink:
zhlinh/linthis@e12411ee118cedd83127be565a061d0b20f7784a -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/zhlinh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e12411ee118cedd83127be565a061d0b20f7784a -
Trigger Event:
push
-
Statement type:
File details
Details for the file linthis-0.0.13-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: linthis-0.0.13-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 3.7 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b42044e3db5f174d0762c8c91111cdf4a85903d4b2d5e5ab27d87bbf3d3bc974
|
|
| MD5 |
1701a5679fb4fd201d5aa66289a8597e
|
|
| BLAKE2b-256 |
15f2ce3b314a5ae9996473470d842432919d3ff6e06f372d50afc2d4cf2cce9e
|
Provenance
The following attestation bundles were made for linthis-0.0.13-py3-none-macosx_10_12_x86_64.whl:
Publisher:
release.yml on zhlinh/linthis
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
linthis-0.0.13-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
b42044e3db5f174d0762c8c91111cdf4a85903d4b2d5e5ab27d87bbf3d3bc974 - Sigstore transparency entry: 843373091
- Sigstore integration time:
-
Permalink:
zhlinh/linthis@e12411ee118cedd83127be565a061d0b20f7784a -
Branch / Tag:
refs/tags/v0.0.13 - Owner: https://github.com/zhlinh
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@e12411ee118cedd83127be565a061d0b20f7784a -
Trigger Event:
push
-
Statement type: