thailint 0.3.1__py3-none-any.whl → 0.3.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: thailint
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: The AI Linter - Enterprise-grade linting and governance for AI-generated code across multiple languages
5
5
  License: MIT
6
6
  Keywords: linter,ai,code-quality,static-analysis,file-placement,governance,multi-language,cli,docker,python
@@ -35,14 +35,25 @@ Description-Content-Type: text/markdown
35
35
 
36
36
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
37
37
  [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
38
- [![Tests](https://img.shields.io/badge/tests-317%2F317%20passing-brightgreen.svg)](tests/)
39
- [![Coverage](https://img.shields.io/badge/coverage-90%25-brightgreen.svg)](htmlcov/)
38
+ [![Tests](https://img.shields.io/badge/tests-253%2F253%20passing-brightgreen.svg)](tests/)
39
+ [![Coverage](https://img.shields.io/badge/coverage-88%25-brightgreen.svg)](htmlcov/)
40
40
 
41
41
  The AI Linter - Enterprise-ready linting and governance for AI-generated code across multiple languages.
42
42
 
43
43
  ## Overview
44
44
 
45
- thailint is a modern, enterprise-ready multi-language linter designed specifically for AI-generated code. It enforces project structure, file placement rules, and coding standards across Python, TypeScript, and other languages.
45
+ thailint is a modern, enterprise-ready multi-language linter designed specifically for AI-generated code. It focuses on common mistakes and anti-patterns that AI coding assistants frequently introduce—issues that existing linters don't catch or don't handle consistently across languages.
46
+
47
+ **Why thailint?**
48
+
49
+ We're not trying to replace the wonderful existing linters like Pylint, ESLint, or Ruff. Instead, thailint fills critical gaps:
50
+
51
+ - **AI-Specific Patterns**: AI assistants have predictable blind spots (excessive nesting, magic numbers, SRP violations) that traditional linters miss
52
+ - **Cross-Language Consistency**: Detects the same anti-patterns across Python, TypeScript, and JavaScript with unified rules
53
+ - **No Existing Solutions**: Issues like excessive nesting depth, file placement violations, and cross-project code duplication lack comprehensive multi-language detection
54
+ - **Governance Layer**: Enforces project-wide structure and organization patterns that AI can't infer from local context
55
+
56
+ thailint complements your existing linting stack by catching the patterns AI tools repeatedly miss.
46
57
 
47
58
  ## Features
48
59
 
@@ -917,49 +928,96 @@ def test_no_violations():
917
928
  ### Setup Development Environment
918
929
 
919
930
  ```bash
920
- # Install development dependencies
921
- pip install -e ".[dev]"
931
+ # Install dependencies and activate virtualenv
932
+ just init
922
933
 
923
- # Install pre-commit hooks (if using)
924
- pre-commit install
934
+ # Or manually:
935
+ poetry install
936
+ source $(poetry env info --path)/bin/activate
925
937
  ```
926
938
 
927
939
  ### Running Tests
928
940
 
929
941
  ```bash
930
- # Run all tests
931
- pytest
942
+ # Run all tests (parallel mode - fast)
943
+ just test
932
944
 
933
- # Run with coverage
934
- pytest --cov=src --cov-report=html
945
+ # Run with coverage (serial mode)
946
+ just test-coverage
935
947
 
936
948
  # Run specific test
937
- pytest tests/test_cli.py::test_hello_command
949
+ poetry run pytest tests/test_cli.py::test_hello_command -v
938
950
  ```
939
951
 
940
952
  ### Code Quality
941
953
 
942
954
  ```bash
943
- # Lint code
944
- ruff check src tests
955
+ # Fast linting (Ruff only - use during development)
956
+ just lint
957
+
958
+ # Comprehensive linting (Ruff + Pylint + Flake8 + MyPy)
959
+ just lint-all
960
+
961
+ # Security scanning
962
+ just lint-security
963
+
964
+ # Complexity analysis (Radon + Xenon + Nesting)
965
+ just lint-complexity
966
+
967
+ # SOLID principles (SRP)
968
+ just lint-solid
969
+
970
+ # DRY principles (duplicate code detection)
971
+ just lint-dry
972
+
973
+ # ALL quality checks (runs everything)
974
+ just lint-full
975
+
976
+ # Auto-fix formatting issues
977
+ just format
978
+ ```
979
+
980
+ ### Dogfooding (Lint Our Own Code)
981
+
982
+ ```bash
983
+ # Lint file placement
984
+ just lint-placement
945
985
 
946
- # Format code
947
- ruff format src tests
986
+ # Check nesting depth
987
+ just lint-nesting
948
988
 
949
- # Type checking
950
- mypy src/
989
+ # Check for magic numbers
990
+ poetry run thai-lint magic-numbers src/
951
991
  ```
952
992
 
953
- ### Building
993
+ ### Building and Publishing
954
994
 
955
995
  ```bash
956
996
  # Build Python package
957
997
  poetry build
958
998
 
959
- # Build Docker image locally (optional)
999
+ # Build Docker image locally
960
1000
  docker build -t washad/thailint:latest .
1001
+
1002
+ # Publish to PyPI and Docker Hub (runs tests + linting + version bump)
1003
+ just publish
961
1004
  ```
962
1005
 
1006
+ ### Quick Development Workflows
1007
+
1008
+ ```bash
1009
+ # Make changes, then run quality checks
1010
+ just lint-full
1011
+
1012
+ # Share changes for collaboration (skips hooks)
1013
+ just share "WIP: feature description"
1014
+
1015
+ # Clean up cache and artifacts
1016
+ just clean
1017
+ ```
1018
+
1019
+ See `just --list` or `just help` for all available commands.
1020
+
963
1021
  ## Docker Usage
964
1022
 
965
1023
  ```bash
@@ -75,8 +75,8 @@ src/orchestrator/core.py,sha256=zb4H4HtDNLmnsRCUXI3oNtfM3T-nTPW9Q2pAbI61VEs,8374
75
75
  src/orchestrator/language_detector.py,sha256=rHyVMApit80NTTNyDH1ObD1usKD8LjGmH3DwqNAWYGc,2736
76
76
  src/utils/__init__.py,sha256=NiBtKeQ09Y3kuUzeN4O1JNfUIYPQDS2AP1l5ODq-Dec,125
77
77
  src/utils/project_root.py,sha256=ldv2-XeMT0IElpSgrHdTaP2CUfwmdZix8vQ2qXO1O5s,2735
78
- thailint-0.3.1.dist-info/LICENSE,sha256=kxh1J0Sb62XvhNJ6MZsVNe8PqNVJ7LHRn_EWa-T3djw,1070
79
- thailint-0.3.1.dist-info/METADATA,sha256=iBzUfrCD01KiYQ5_s4y49pS9gxhJfeesm6uYXLlKBAs,31385
80
- thailint-0.3.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
81
- thailint-0.3.1.dist-info/entry_points.txt,sha256=l7DQJgU18sVLDpSaXOXY3lLhnQHQIRrSJZTQjG1cEAk,62
82
- thailint-0.3.1.dist-info/RECORD,,
78
+ thailint-0.3.2.dist-info/LICENSE,sha256=kxh1J0Sb62XvhNJ6MZsVNe8PqNVJ7LHRn_EWa-T3djw,1070
79
+ thailint-0.3.2.dist-info/METADATA,sha256=P46brGR5esX9nGSoCtedmac_zupk8pAN4iHS2dJhM_g,33249
80
+ thailint-0.3.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
81
+ thailint-0.3.2.dist-info/entry_points.txt,sha256=l7DQJgU18sVLDpSaXOXY3lLhnQHQIRrSJZTQjG1cEAk,62
82
+ thailint-0.3.2.dist-info/RECORD,,