tclint 
tclint is a collection of modern dev tools for Tcl. It includes a linter, a formatter, and a language server that provides Tcl support to your editor of choice.
Features
- Editor integration for VS Code, Neovim, and Emacs
- Linting for common Tcl errors
- Formatter that enforces a consistent, readable style
- Plugin system that supports Tcl variants
- More features coming soon!
Getting Started
Install tclint from PyPI using pipx (recommended):
pipx install tclint
Or with pip:
pip install tclint
Run tclint on a Tcl source file by providing its path as a positional argument:
tclint example.tcl
If the file contains any lint violations, they will be printed and tclint will return a non-zero exit code. Otherwise, the output will be empty and tclint will exit successfully.
Example
$ cat example.tcl
if { [expr {$input > 10}] } {
puts $input is greater than 10!
}
$ tclint example.tcl
data/example.tcl:1:6: unnecessary command substitution within expression [redundant-expr]
data/example.tcl:2:3: too many args for puts: got 5, expected no more than 3 [command-args]
Usage
tclint is a command-line utility. It takes a list of paths as positional arguments, which may either be direct paths to source files, or directories which will be recursively searched for files ending in .tcl, .sdc, .xdc, or .upf.
Collected files will be checked for lint violations. See the
Violations documentation page for a description of all
lint violations tclint may report.
Aspects of tclint's behavior can be controlled by a configuration file.
By default, tclint will search for a file named tclint.toml or .tclint by walking the parent directories of source files, but a path to an alternate configuration file can be provided using the -c or --config flag.
See Configuration for documentation on the configuration file.
tclint includes a plugin system for checking EDA tool-specific commands. See the Plugins documentation page for more info.
Contributing
tclint welcomes community contributions. The best way to help the project is to open an issue if you find a bug or have a feature request.
PRs are also welcome, but for non-trivial changes please open an issue first to solicit feedback. This helps avoid wasted effort.
Use the following steps to set up tclint for local development:
$ git clone https://github.com/nmoroze/tclint.git # or URL to fork
$ cd tclint
$ python3 -m venv .venv # set up a venv to ensure clean environment
$ source .venv/bin/activate
(venv) $ pip install --upgrade pip # development requires pip >= 25.1
(venv) $ pip install -e . --group dev
Please format, lint, and run tests before submitting changes:
$ source .venv/bin/activate
(venv) $ black .
(venv) $ ./util/pre-commit
License
This project is copyright Noah Moroze, released under the MIT license.
Metadata
Release files for tclint 0.9.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tclint-0.9.0.tar.gz | 100.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tclint-0.9.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 158.5 kB
Release files / tclint-0.9.0.tar.gz
| Download URL | tclint-0.9.0.tar.gz |
|---|---|
| Size | 100.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
15517ecb8193e3fd72b657459b633853ba9a60c2124b421c95f613914b89654b
|
|
BLAKE2b-256 checksum How to use checksums |
85d8ebee2778ef596bb6038381299142923f7dbd8e021f2d5711b201a56a5c13
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.
Transparency logRelease files / tclint-0.9.0-py3-none-any.whl
| Download URL | tclint-0.9.0-py3-none-any.whl |
|---|---|
| Size | 58.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e4f0eb6b263161190a502184425fdd3ab046d09112da8089ddb767e7de198583
|
|
BLAKE2b-256 checksum How to use checksums |
46d6d1cf5cad5bb11d79546785972f04f6cb51e4415f25eba8957d405c1f8148
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.12.8
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 1, 2026.
Transparency log