thailint 0.1.6__py3-none-any.whl → 0.2.0__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.
- src/__init__.py +7 -2
- src/analyzers/__init__.py +23 -0
- src/analyzers/typescript_base.py +148 -0
- src/api.py +1 -1
- src/cli.py +498 -141
- src/config.py +6 -31
- src/core/base.py +12 -0
- src/core/cli_utils.py +206 -0
- src/core/config_parser.py +99 -0
- src/core/linter_utils.py +168 -0
- src/core/registry.py +17 -92
- src/core/rule_discovery.py +132 -0
- src/core/violation_builder.py +122 -0
- src/linter_config/ignore.py +112 -40
- src/linter_config/loader.py +3 -13
- src/linters/dry/__init__.py +23 -0
- src/linters/dry/base_token_analyzer.py +76 -0
- src/linters/dry/block_filter.py +262 -0
- src/linters/dry/block_grouper.py +59 -0
- src/linters/dry/cache.py +218 -0
- src/linters/dry/cache_query.py +61 -0
- src/linters/dry/config.py +130 -0
- src/linters/dry/config_loader.py +44 -0
- src/linters/dry/deduplicator.py +120 -0
- src/linters/dry/duplicate_storage.py +126 -0
- src/linters/dry/file_analyzer.py +127 -0
- src/linters/dry/inline_ignore.py +140 -0
- src/linters/dry/linter.py +170 -0
- src/linters/dry/python_analyzer.py +517 -0
- src/linters/dry/storage_initializer.py +51 -0
- src/linters/dry/token_hasher.py +115 -0
- src/linters/dry/typescript_analyzer.py +590 -0
- src/linters/dry/violation_builder.py +74 -0
- src/linters/dry/violation_filter.py +91 -0
- src/linters/dry/violation_generator.py +174 -0
- src/linters/file_placement/config_loader.py +86 -0
- src/linters/file_placement/directory_matcher.py +80 -0
- src/linters/file_placement/linter.py +252 -472
- src/linters/file_placement/path_resolver.py +61 -0
- src/linters/file_placement/pattern_matcher.py +55 -0
- src/linters/file_placement/pattern_validator.py +106 -0
- src/linters/file_placement/rule_checker.py +229 -0
- src/linters/file_placement/violation_factory.py +177 -0
- src/linters/nesting/config.py +13 -3
- src/linters/nesting/linter.py +76 -152
- src/linters/nesting/typescript_analyzer.py +38 -102
- src/linters/nesting/typescript_function_extractor.py +130 -0
- src/linters/nesting/violation_builder.py +139 -0
- src/linters/srp/__init__.py +99 -0
- src/linters/srp/class_analyzer.py +113 -0
- src/linters/srp/config.py +76 -0
- src/linters/srp/heuristics.py +89 -0
- src/linters/srp/linter.py +225 -0
- src/linters/srp/metrics_evaluator.py +47 -0
- src/linters/srp/python_analyzer.py +72 -0
- src/linters/srp/typescript_analyzer.py +75 -0
- src/linters/srp/typescript_metrics_calculator.py +90 -0
- src/linters/srp/violation_builder.py +117 -0
- src/orchestrator/core.py +42 -7
- src/utils/__init__.py +4 -0
- src/utils/project_root.py +84 -0
- {thailint-0.1.6.dist-info → thailint-0.2.0.dist-info}/METADATA +414 -63
- thailint-0.2.0.dist-info/RECORD +75 -0
- src/.ai/layout.yaml +0 -48
- thailint-0.1.6.dist-info/RECORD +0 -28
- {thailint-0.1.6.dist-info → thailint-0.2.0.dist-info}/LICENSE +0 -0
- {thailint-0.1.6.dist-info → thailint-0.2.0.dist-info}/WHEEL +0 -0
- {thailint-0.1.6.dist-info → thailint-0.2.0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
src/__init__.py,sha256=f601zncODr2twrUHqTLS5wyOdZqZi9tMjAe2INhRKqU,2175
|
|
2
|
+
src/analyzers/__init__.py,sha256=fFloZtjkBGwYbAhKTxS3Qy3yDr2_3i3WSfKTw1mAioo,972
|
|
3
|
+
src/analyzers/typescript_base.py,sha256=4I7fAcMOAY9vY1AXh52QpohgFmguBECwOkvBRP4zCS4,5054
|
|
4
|
+
src/api.py,sha256=pJ5l3qxccKBEY-BkANwzTgLAl1ZFq7OP6hx6LSxbhDw,4664
|
|
5
|
+
src/cli.py,sha256=ihsUtuUSBnaxDZx1TqGVATIRa5ccfXZXyyyt615SU0M,31608
|
|
6
|
+
src/config.py,sha256=VCnsguO4BRTYlzmaD6lYJwgJNPcsquDg7P2Tn6Xa5nk,12333
|
|
7
|
+
src/core/__init__.py,sha256=5FtsDvhMt4SNRx3pbcGURrxn135XRbeRrjSUxiXwkNc,381
|
|
8
|
+
src/core/base.py,sha256=cFnFSK0K7JqYiXA31lr0JAKRoxvytdqzmlFpCz1tUJI,4787
|
|
9
|
+
src/core/cli_utils.py,sha256=rYOJz4mnr8RLP-nJdHOy-GJyxGNqkWtK3_rvKriHXj4,6083
|
|
10
|
+
src/core/config_parser.py,sha256=0PfLNSC0awV21SrpqdcJ2L8Cn2-B2YcwbA8znaC5YnE,3195
|
|
11
|
+
src/core/linter_utils.py,sha256=4jmC2YfpPvGhS_XHlHXa5SBIJh9CQlNj5zuW_GpdPKc,5273
|
|
12
|
+
src/core/registry.py,sha256=IMkic1ukmo8HCX1TY5YoKjwKT_IT-ZmVx6sdntC5X2M,3289
|
|
13
|
+
src/core/rule_discovery.py,sha256=smxJ9PEyMqEAIicsWaHOaSHD1PHUAOeFZT_a3DNRwgE,4163
|
|
14
|
+
src/core/types.py,sha256=dIYLaCDNtCAzVaplx5S5yxywkLIuX0BN9No_l2zCfV0,2887
|
|
15
|
+
src/core/violation_builder.py,sha256=7AQODqxwc3qp_4m1MPzknkeNGlht1LsDjPsTPpWAGJY,4678
|
|
16
|
+
src/linter_config/__init__.py,sha256=_I2VVlZlfKyT-tKukuUA5-aVcHLOe3m6C2cev43AiEc,298
|
|
17
|
+
src/linter_config/ignore.py,sha256=S2Ub0CCOOC-wpU5Y_EodMprciw18fgWcnp4z_h1MYNk,19638
|
|
18
|
+
src/linter_config/loader.py,sha256=HB09W-uVsEcgCbvUwUHS5Jm2n0bqBXA3744vMc4GAqk,2542
|
|
19
|
+
src/linters/__init__.py,sha256=-nnNsL8E5-2p9qlLKp_TaShHAjPH-NacOEU1sXmAR9k,77
|
|
20
|
+
src/linters/dry/__init__.py,sha256=p58tN3z_VbulfTkRm1kLZJ43Bemt66T2sro1teirUY8,826
|
|
21
|
+
src/linters/dry/base_token_analyzer.py,sha256=SgnsX4a4kUzOsA9hTkLkg4yB8I77ewAyiUp6cAybUrg,2684
|
|
22
|
+
src/linters/dry/block_filter.py,sha256=_ooo5g3PJMUUua_0-eu5NE9dFpEK42ZiundkzYQNyyY,8116
|
|
23
|
+
src/linters/dry/block_grouper.py,sha256=gBvSPgy8jumChZ53px3P7hDCJfi5PDrKhwxLTgNy7ig,1810
|
|
24
|
+
src/linters/dry/cache.py,sha256=QTQY5TSFU2OFFqua-uxazFzzylgkVawHTOyS3S5qdO8,6957
|
|
25
|
+
src/linters/dry/cache_query.py,sha256=NTBh4ISy76LJb9tJ6G94fE0R2OiE0eQ-zVvB08WG2bA,1802
|
|
26
|
+
src/linters/dry/config.py,sha256=CEcYK3SXZJP0kekiuX5us15xwCXDuU0k289A8vDV5Qs,5244
|
|
27
|
+
src/linters/dry/config_loader.py,sha256=wikqnigOp6p1h9jaAATV_3bDXSiaIUFaf9xg1jQMDpo,1313
|
|
28
|
+
src/linters/dry/deduplicator.py,sha256=a1TRvldxCszf5QByo1ihXF3W98dpGuyaRT74jPfQftM,3988
|
|
29
|
+
src/linters/dry/duplicate_storage.py,sha256=K-FDuFrRvSocSbFp-OuiTjOE36IKsy_8St0n30bHeuk,4376
|
|
30
|
+
src/linters/dry/file_analyzer.py,sha256=7bmXPMERsiI9uMVzuDYRzGVxdCeBxNM8txPLcveMLAY,4070
|
|
31
|
+
src/linters/dry/inline_ignore.py,sha256=ASfA-fp_1aPpkakN2e0T6qdTh8S7Jqj89ovxXJLmFlc,4439
|
|
32
|
+
src/linters/dry/linter.py,sha256=EmwDvjkapeoxazlkzC_FGcloftTUJYn5SuAO-tb_c1E,6127
|
|
33
|
+
src/linters/dry/python_analyzer.py,sha256=OdSemHuWiXofHUhZzFDRNJmO-BoOTbgsAG1gP80jcZQ,20937
|
|
34
|
+
src/linters/dry/storage_initializer.py,sha256=8FQPhnTOkU52QUrJVSH4qIo2v2uxwlp0X-KPmwqKnIU,1727
|
|
35
|
+
src/linters/dry/token_hasher.py,sha256=mCFuP0FQFALyKghBgZHcspsoOxgT7C7ZkfspnhFA5U4,3609
|
|
36
|
+
src/linters/dry/typescript_analyzer.py,sha256=n1rsQYp7nuPhgErbG8hWawkywRz-iFGhrGlQXDrIa14,21494
|
|
37
|
+
src/linters/dry/violation_builder.py,sha256=EUiEQIOZjzAoHEqZiIR8WZP8m4dgqJjcveR5mdMyClI,2803
|
|
38
|
+
src/linters/dry/violation_filter.py,sha256=lco3Gyt6qhxKMKQvNxdtoWsO03J9HicjCWg_gicEOAc,3013
|
|
39
|
+
src/linters/dry/violation_generator.py,sha256=cc6aKvTxtHSZm0F7Y-gL1bmD3JUphRmAvcbqk9aUzGg,6128
|
|
40
|
+
src/linters/file_placement/__init__.py,sha256=vJ43GZujcbAk-K3DwfsQZ0J3yP_5G35CKssatLyntXk,862
|
|
41
|
+
src/linters/file_placement/config_loader.py,sha256=Of5sTG2S-04efn3KOlXrSxpMcC1ipBpSvCjtJOMmWno,2640
|
|
42
|
+
src/linters/file_placement/directory_matcher.py,sha256=YaBeLGiT4bgqN_v4FmEmSASOBxkMC1lyEYpL17wLIDY,2607
|
|
43
|
+
src/linters/file_placement/linter.py,sha256=r3wnfGkss6HsPCqxQjBZ1dvyZdNdxppbSu9VRh0PMzw,13802
|
|
44
|
+
src/linters/file_placement/path_resolver.py,sha256=S6g7xOYsoSc0O_RDJh8j4Z2klcwzp16rSUfEAErGOTI,1972
|
|
45
|
+
src/linters/file_placement/pattern_matcher.py,sha256=3HZWYgQKXz_y13z3lO1YHn51khCaiGOrneGxKXGWGw0,1898
|
|
46
|
+
src/linters/file_placement/pattern_validator.py,sha256=eMt5GB5lgJMhhQACOlfDXQFfSfNrOY-wJN1JanGka6Q,3717
|
|
47
|
+
src/linters/file_placement/rule_checker.py,sha256=JONXcaYxZ8CM_7Zg6Th01p5cve1rJ8YkReAUJ44nfUg,7795
|
|
48
|
+
src/linters/file_placement/violation_factory.py,sha256=NkQmBcgpa3g3W2ZdFZNQ5djLVP4x9OKs65d7F1rCKvM,6040
|
|
49
|
+
src/linters/nesting/__init__.py,sha256=zBxZJPhxTO91ezWwXJ72wyxUS7i8t6lehjlJFJKRYvA,3134
|
|
50
|
+
src/linters/nesting/config.py,sha256=qU66jynd_GDVwFRFpk2S2--MhmLPoPdw1hj7oKpgoB0,2265
|
|
51
|
+
src/linters/nesting/linter.py,sha256=Mtbdbp-0rrfg4FMCt8Q8V78J-fEpgqUzE4qjIxJPiIE,6623
|
|
52
|
+
src/linters/nesting/python_analyzer.py,sha256=DF2lVnxYstakOpP_Zizox583Ypkb4eUpgQYEpu6x8gk,3078
|
|
53
|
+
src/linters/nesting/typescript_analyzer.py,sha256=up1Cf6W-NYCMZSX9YOvS2Uxm7-XrLtAi94lvL9UDemo,3774
|
|
54
|
+
src/linters/nesting/typescript_function_extractor.py,sha256=dDB1otJnFMCo-Pj4mTr4gekKe7V4ArOAtX6gV0dBDc4,4494
|
|
55
|
+
src/linters/nesting/violation_builder.py,sha256=sMHS45F2lrA1WYrG3Uug8HfeRPljnXcyJPHSe2F76Bs,4828
|
|
56
|
+
src/linters/srp/__init__.py,sha256=P3yHH57xUMVYncZ8kEkERbRn01AxDE9dColmYQqmbNU,3259
|
|
57
|
+
src/linters/srp/class_analyzer.py,sha256=wuwviwhN1F_VVPaQ3pZvffmY3e9ToxPNJhv6BjhsgZc,3761
|
|
58
|
+
src/linters/srp/config.py,sha256=idaPWd8QBFutzFgOYEg358s5inxqDlVmNqclm3Qvku4,3116
|
|
59
|
+
src/linters/srp/heuristics.py,sha256=Fwrro3I0qOV4o0epM0ZkqgQUU9bK1b2igxoxWjReljU,3185
|
|
60
|
+
src/linters/srp/linter.py,sha256=E23NPYpjHtu6JhyuJmE0ECy8mPWXJb-6uw2RVZoczqI,7404
|
|
61
|
+
src/linters/srp/metrics_evaluator.py,sha256=Prk_dPacas_dX7spAzV0g734srmzT5u0t5d4mTG9g2o,1606
|
|
62
|
+
src/linters/srp/python_analyzer.py,sha256=hA1gtiLJISier6B3rHJX5EkimQc8FJapy-XNtR7xaBQ,2621
|
|
63
|
+
src/linters/srp/typescript_analyzer.py,sha256=Wi0P_G1v5AnZYtMN3sNm1iHva84-8Kep2LZ5RmAS4c4,2885
|
|
64
|
+
src/linters/srp/typescript_metrics_calculator.py,sha256=2VLRux_tf1Cw645wwTuol3Z5A6-mkl4cgyW34myy00Q,2728
|
|
65
|
+
src/linters/srp/violation_builder.py,sha256=jaIjVtRYWUTs1SVJVwd0FxCojo0DxhPzfhyfMKmAroM,3881
|
|
66
|
+
src/orchestrator/__init__.py,sha256=XXLDJq2oaB-TpP2Y97GRnde9EkITGuFCmuLrDfxI9nY,245
|
|
67
|
+
src/orchestrator/core.py,sha256=zb4H4HtDNLmnsRCUXI3oNtfM3T-nTPW9Q2pAbI61VEs,8374
|
|
68
|
+
src/orchestrator/language_detector.py,sha256=rHyVMApit80NTTNyDH1ObD1usKD8LjGmH3DwqNAWYGc,2736
|
|
69
|
+
src/utils/__init__.py,sha256=NiBtKeQ09Y3kuUzeN4O1JNfUIYPQDS2AP1l5ODq-Dec,125
|
|
70
|
+
src/utils/project_root.py,sha256=ldv2-XeMT0IElpSgrHdTaP2CUfwmdZix8vQ2qXO1O5s,2735
|
|
71
|
+
thailint-0.2.0.dist-info/LICENSE,sha256=kxh1J0Sb62XvhNJ6MZsVNe8PqNVJ7LHRn_EWa-T3djw,1070
|
|
72
|
+
thailint-0.2.0.dist-info/METADATA,sha256=LOyjWZxLKsp2XmpyY4Ix7r4fqXT-SICr6pl9K5_gK_I,27109
|
|
73
|
+
thailint-0.2.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
74
|
+
thailint-0.2.0.dist-info/entry_points.txt,sha256=l7DQJgU18sVLDpSaXOXY3lLhnQHQIRrSJZTQjG1cEAk,62
|
|
75
|
+
thailint-0.2.0.dist-info/RECORD,,
|
src/.ai/layout.yaml
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
file-placement:
|
|
2
|
-
directories:
|
|
3
|
-
.ai:
|
|
4
|
-
allow:
|
|
5
|
-
- .*\\.(md|yaml|yml)$
|
|
6
|
-
.roadmap:
|
|
7
|
-
allow:
|
|
8
|
-
- .*\\.md$
|
|
9
|
-
docs:
|
|
10
|
-
allow:
|
|
11
|
-
- .*\\.(md|rst|txt|py)$
|
|
12
|
-
deny:
|
|
13
|
-
- ^(?!.*\\.(md|rst|txt|py)$).*
|
|
14
|
-
src:
|
|
15
|
-
allow:
|
|
16
|
-
- .*\\.py$
|
|
17
|
-
deny:
|
|
18
|
-
- test_.*\\.py$
|
|
19
|
-
- .*_test\\.py$
|
|
20
|
-
tests:
|
|
21
|
-
allow:
|
|
22
|
-
- test_.*\\.py$
|
|
23
|
-
- .*_test\\.py$
|
|
24
|
-
- conftest\\.py$
|
|
25
|
-
- __init__\\.py$
|
|
26
|
-
deny:
|
|
27
|
-
- ^(?!test_|.*_test\\.py|conftest\\.py|__init__\\.py).*\\.py$
|
|
28
|
-
global_patterns:
|
|
29
|
-
deny:
|
|
30
|
-
- message: Python files should be in src/, tests/, scripts/, docs/, .ai/, or .roadmap/
|
|
31
|
-
directories
|
|
32
|
-
pattern: ^(?!src/|tests/|scripts/|docs/|\\.ai/|\\.roadmap/).*\\.py$
|
|
33
|
-
ignore:
|
|
34
|
-
- __pycache__/
|
|
35
|
-
- '*.pyc'
|
|
36
|
-
- .git/
|
|
37
|
-
- .venv/
|
|
38
|
-
- venv/
|
|
39
|
-
- .pytest_cache/
|
|
40
|
-
- .mypy_cache/
|
|
41
|
-
- .ruff_cache/
|
|
42
|
-
- htmlcov/
|
|
43
|
-
- '*.egg-info/'
|
|
44
|
-
- dist/
|
|
45
|
-
- build/
|
|
46
|
-
nesting:
|
|
47
|
-
enabled: true
|
|
48
|
-
max_nesting_depth: 3
|
thailint-0.1.6.dist-info/RECORD
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
src/.ai/layout.yaml,sha256=yF79hvJOQDCm8Y75OpMfJzVr0ORR4n4MpokIh3Ff84w,953
|
|
2
|
-
src/__init__.py,sha256=OZ5CvL4rDK07lxwyB9g6ZFTY8cxKWlDkdoMH103sHWY,2042
|
|
3
|
-
src/api.py,sha256=C-Co8fjY8ewT0O5IttAX045Fhr34MuXz_YL0wT5Q0x4,4644
|
|
4
|
-
src/cli.py,sha256=s11vSyouEY4Jqu6bx7QyP-jvIefpTOso-JpkpiK7Bhk,20409
|
|
5
|
-
src/config.py,sha256=ANDs6EF3IQbwHyNEVWXbpnNQMEe9wDqP3Bm2w_4zTU8,13139
|
|
6
|
-
src/core/__init__.py,sha256=5FtsDvhMt4SNRx3pbcGURrxn135XRbeRrjSUxiXwkNc,381
|
|
7
|
-
src/core/base.py,sha256=x_3swLyVwaIjPgtCNisEFEuMR2caFAuV20izok5afN0,4323
|
|
8
|
-
src/core/registry.py,sha256=wjrxmyVyh0qW9q5ZOTDfCwVStcE_hFlVv8s4eUiJ3P4,6208
|
|
9
|
-
src/core/types.py,sha256=dIYLaCDNtCAzVaplx5S5yxywkLIuX0BN9No_l2zCfV0,2887
|
|
10
|
-
src/linter_config/__init__.py,sha256=_I2VVlZlfKyT-tKukuUA5-aVcHLOe3m6C2cev43AiEc,298
|
|
11
|
-
src/linter_config/ignore.py,sha256=Ffjq6zpjh15FrcoGxt09goXn67QmZb8E_stT4VQ4wls,16239
|
|
12
|
-
src/linter_config/loader.py,sha256=o3-ezigI9K3o4w478eR6l0fLVVLBQ_t11WwpOvePUvA,2879
|
|
13
|
-
src/linters/__init__.py,sha256=-nnNsL8E5-2p9qlLKp_TaShHAjPH-NacOEU1sXmAR9k,77
|
|
14
|
-
src/linters/file_placement/__init__.py,sha256=vJ43GZujcbAk-K3DwfsQZ0J3yP_5G35CKssatLyntXk,862
|
|
15
|
-
src/linters/file_placement/linter.py,sha256=xUD7Kb0aJNSj1Vc-sqTGTXUU5_cXxJcvkm1-OeKFHxk,21973
|
|
16
|
-
src/linters/nesting/__init__.py,sha256=zBxZJPhxTO91ezWwXJ72wyxUS7i8t6lehjlJFJKRYvA,3134
|
|
17
|
-
src/linters/nesting/config.py,sha256=SC-TbKvC_llhkU-_9sC7ya1K7fkH1nLf-1HUzbHXcs8,1755
|
|
18
|
-
src/linters/nesting/linter.py,sha256=h5lVuWgXqanwjg6F9AuWkEdRqYDYWosXGyTZP0qfb7c,9529
|
|
19
|
-
src/linters/nesting/python_analyzer.py,sha256=DF2lVnxYstakOpP_Zizox583Ypkb4eUpgQYEpu6x8gk,3078
|
|
20
|
-
src/linters/nesting/typescript_analyzer.py,sha256=rec4N0NccB9mQ2452g2hcz521-kHxSr5uItjCt1DlLs,6870
|
|
21
|
-
src/orchestrator/__init__.py,sha256=XXLDJq2oaB-TpP2Y97GRnde9EkITGuFCmuLrDfxI9nY,245
|
|
22
|
-
src/orchestrator/core.py,sha256=6LqaDcSBlH-hJmTpPRDTMo-tHTzEwVRQg4sZ0wyKdE0,7092
|
|
23
|
-
src/orchestrator/language_detector.py,sha256=rHyVMApit80NTTNyDH1ObD1usKD8LjGmH3DwqNAWYGc,2736
|
|
24
|
-
thailint-0.1.6.dist-info/LICENSE,sha256=kxh1J0Sb62XvhNJ6MZsVNe8PqNVJ7LHRn_EWa-T3djw,1070
|
|
25
|
-
thailint-0.1.6.dist-info/METADATA,sha256=HFsKO5KqCcnArj44bl71NlFcn9NqOANWf1zNAWV_ukE,17057
|
|
26
|
-
thailint-0.1.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
27
|
-
thailint-0.1.6.dist-info/entry_points.txt,sha256=l7DQJgU18sVLDpSaXOXY3lLhnQHQIRrSJZTQjG1cEAk,62
|
|
28
|
-
thailint-0.1.6.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|