@shakibkhatri/idiolect-core 0.0.1 → 0.1.0

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.
Files changed (47) hide show
  1. package/dist/analyzer-go.js +3 -5
  2. package/dist/analyzer-go.js.map +1 -1
  3. package/dist/analyzer-py.js +3 -5
  4. package/dist/analyzer-py.js.map +1 -1
  5. package/dist/analyzer.d.ts +3 -1
  6. package/dist/analyzer.js +10 -5
  7. package/dist/analyzer.js.map +1 -1
  8. package/dist/baseline.js +3 -2
  9. package/dist/baseline.js.map +1 -1
  10. package/dist/check.d.ts +5 -0
  11. package/dist/check.js +6 -5
  12. package/dist/check.js.map +1 -1
  13. package/dist/collector.d.ts +1 -0
  14. package/dist/collector.js +18 -7
  15. package/dist/collector.js.map +1 -1
  16. package/dist/config.d.ts +21 -0
  17. package/dist/config.js +13 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/index.d.ts +5 -3
  20. package/dist/index.js +5 -3
  21. package/dist/index.js.map +1 -1
  22. package/dist/llm.js +46 -29
  23. package/dist/llm.js.map +1 -1
  24. package/dist/metrics.js +1 -0
  25. package/dist/metrics.js.map +1 -1
  26. package/dist/profile.d.ts +10 -0
  27. package/dist/profile.js +16 -2
  28. package/dist/profile.js.map +1 -1
  29. package/dist/render.d.ts +1 -0
  30. package/dist/render.js +55 -9
  31. package/dist/render.js.map +1 -1
  32. package/dist/served.d.ts +8 -0
  33. package/dist/served.js +39 -0
  34. package/dist/served.js.map +1 -0
  35. package/dist/styles.d.ts +39 -0
  36. package/dist/styles.js +76 -0
  37. package/dist/styles.js.map +1 -0
  38. package/dist/unbot.js +2 -2
  39. package/dist/unbot.js.map +1 -1
  40. package/dist/writer.d.ts +4 -3
  41. package/dist/writer.js +14 -5
  42. package/dist/writer.js.map +1 -1
  43. package/package.json +2 -1
  44. package/styles/go-caddy.json +1368 -0
  45. package/styles/kotlin-tivi.json +1505 -0
  46. package/styles/python-httpx.json +1052 -0
  47. package/styles/typescript-vue.json +1473 -0
@@ -0,0 +1,1052 @@
1
+ {
2
+ "version": 1,
3
+ "id": "python-httpx",
4
+ "title": "HTTPX",
5
+ "language": "python",
6
+ "experimental": true,
7
+ "source": {
8
+ "project": "github.com/encode/httpx",
9
+ "license": "BSD-3-Clause",
10
+ "commit": "dd5304d3eb97f0aad7126a45f3fd7041dfee0ac2",
11
+ "snapshot": "2023-12-28T13:10:37Z",
12
+ "lines": 9945
13
+ },
14
+ "stats": {
15
+ "files": 53,
16
+ "loc": 9945,
17
+ "functions": {
18
+ "count": 769,
19
+ "blockBody": 769,
20
+ "expressionBody": 0,
21
+ "lengthLines": {
22
+ "2": 76,
23
+ "3": 66,
24
+ "4": 65,
25
+ "5": 50,
26
+ "6": 61,
27
+ "7": 42,
28
+ "8": 40,
29
+ "9": 30,
30
+ "10": 37,
31
+ "11": 24,
32
+ "12": 32,
33
+ "13": 28,
34
+ "14": 25,
35
+ "15": 18,
36
+ "16": 11,
37
+ "17": 6,
38
+ "18": 8,
39
+ "19": 10,
40
+ "20": 16,
41
+ "21": 7,
42
+ "22": 5,
43
+ "23": 7,
44
+ "24": 5,
45
+ "25": 9,
46
+ "26": 4,
47
+ "27": 2,
48
+ "28": 9,
49
+ "29": 7,
50
+ "30": 2,
51
+ "31": 3,
52
+ "33": 7,
53
+ "34": 2,
54
+ "35": 4,
55
+ "36": 8,
56
+ "37": 3,
57
+ "38": 5,
58
+ "40": 1,
59
+ "43": 3,
60
+ "44": 2,
61
+ "45": 1,
62
+ "47": 2,
63
+ "48": 3,
64
+ "50": 4,
65
+ "52": 1,
66
+ "53": 1,
67
+ "54": 4,
68
+ "55": 1,
69
+ "59": 1,
70
+ "60": 1,
71
+ "63": 1,
72
+ "75": 1,
73
+ "77": 1,
74
+ "78": 1,
75
+ "89": 1,
76
+ "92": 1,
77
+ "94": 2,
78
+ "106": 1,
79
+ "133": 1
80
+ },
81
+ "params": {
82
+ "0": 453,
83
+ "1": 185,
84
+ "2": 46,
85
+ "3": 28,
86
+ "4": 12,
87
+ "5": 4,
88
+ "6": 1,
89
+ "7": 2,
90
+ "8": 10,
91
+ "11": 6,
92
+ "12": 10,
93
+ "13": 4,
94
+ "16": 3,
95
+ "17": 3,
96
+ "21": 2
97
+ },
98
+ "maxNesting": {
99
+ "0": 484,
100
+ "1": 197,
101
+ "2": 64,
102
+ "3": 18,
103
+ "4": 4,
104
+ "5": 2
105
+ },
106
+ "earlyReturn": 75
107
+ },
108
+ "naming": {
109
+ "casing": {
110
+ "function": {
111
+ "camel": 108,
112
+ "pascal": 0,
113
+ "snake": 140,
114
+ "screaming": 0,
115
+ "backtick": 0,
116
+ "other": 0
117
+ },
118
+ "class": {
119
+ "camel": 1,
120
+ "pascal": 87,
121
+ "snake": 0,
122
+ "screaming": 1,
123
+ "backtick": 0,
124
+ "other": 0
125
+ },
126
+ "property": {
127
+ "camel": 133,
128
+ "pascal": 7,
129
+ "snake": 47,
130
+ "screaming": 76,
131
+ "backtick": 0,
132
+ "other": 1
133
+ },
134
+ "local": {
135
+ "camel": 1059,
136
+ "pascal": 2,
137
+ "snake": 229,
138
+ "screaming": 2,
139
+ "backtick": 0,
140
+ "other": 0
141
+ },
142
+ "parameter": {
143
+ "camel": 0,
144
+ "pascal": 0,
145
+ "snake": 0,
146
+ "screaming": 0,
147
+ "backtick": 0,
148
+ "other": 0
149
+ },
150
+ "constant": {
151
+ "camel": 2,
152
+ "pascal": 0,
153
+ "snake": 0,
154
+ "screaming": 8,
155
+ "backtick": 0,
156
+ "other": 2
157
+ }
158
+ },
159
+ "nameLength": {
160
+ "function": {
161
+ "3": 14,
162
+ "4": 18,
163
+ "5": 23,
164
+ "6": 27,
165
+ "7": 14,
166
+ "8": 21,
167
+ "9": 10,
168
+ "10": 9,
169
+ "11": 16,
170
+ "12": 4,
171
+ "13": 7,
172
+ "14": 18,
173
+ "15": 13,
174
+ "16": 7,
175
+ "17": 8,
176
+ "18": 6,
177
+ "19": 2,
178
+ "20": 9,
179
+ "21": 5,
180
+ "22": 6,
181
+ "23": 7,
182
+ "24": 2,
183
+ "26": 1,
184
+ "27": 1
185
+ },
186
+ "class": {
187
+ "3": 2,
188
+ "4": 2,
189
+ "5": 3,
190
+ "6": 1,
191
+ "7": 4,
192
+ "8": 1,
193
+ "9": 12,
194
+ "10": 5,
195
+ "11": 9,
196
+ "12": 6,
197
+ "13": 9,
198
+ "14": 8,
199
+ "15": 8,
200
+ "16": 6,
201
+ "18": 5,
202
+ "19": 3,
203
+ "20": 3,
204
+ "21": 1,
205
+ "23": 1
206
+ },
207
+ "property": {
208
+ "1": 4,
209
+ "2": 1,
210
+ "3": 8,
211
+ "4": 15,
212
+ "5": 23,
213
+ "6": 30,
214
+ "7": 27,
215
+ "8": 22,
216
+ "9": 21,
217
+ "10": 14,
218
+ "11": 11,
219
+ "12": 13,
220
+ "13": 7,
221
+ "14": 5,
222
+ "15": 10,
223
+ "16": 9,
224
+ "17": 4,
225
+ "18": 8,
226
+ "19": 9,
227
+ "20": 5,
228
+ "21": 5,
229
+ "22": 3,
230
+ "23": 2,
231
+ "24": 1,
232
+ "25": 1,
233
+ "26": 1,
234
+ "29": 2,
235
+ "31": 3
236
+ },
237
+ "local": {
238
+ "1": 34,
239
+ "2": 1,
240
+ "3": 165,
241
+ "4": 90,
242
+ "5": 58,
243
+ "6": 150,
244
+ "7": 300,
245
+ "8": 247,
246
+ "9": 38,
247
+ "10": 33,
248
+ "11": 57,
249
+ "12": 32,
250
+ "13": 22,
251
+ "14": 22,
252
+ "15": 13,
253
+ "16": 14,
254
+ "17": 8,
255
+ "18": 2,
256
+ "19": 1,
257
+ "21": 2,
258
+ "22": 3
259
+ },
260
+ "parameter": {},
261
+ "constant": {
262
+ "3": 1,
263
+ "6": 1,
264
+ "9": 1,
265
+ "10": 2,
266
+ "14": 1,
267
+ "15": 2,
268
+ "16": 1,
269
+ "18": 1,
270
+ "21": 1,
271
+ "33": 1
272
+ }
273
+ },
274
+ "functionVerb": {
275
+ "main": 2,
276
+ "request": 3,
277
+ "stream": 3,
278
+ "get": 18,
279
+ "options": 3,
280
+ "head": 3,
281
+ "post": 3,
282
+ "put": 3,
283
+ "patch": 3,
284
+ "delete": 3,
285
+ "auth": 5,
286
+ "build": 4,
287
+ "parse": 1,
288
+ "resolve": 1,
289
+ "close": 7,
290
+ "aclose": 5,
291
+ "enforce": 1,
292
+ "event": 1,
293
+ "base": 2,
294
+ "merge": 4,
295
+ "redirect": 4,
296
+ "init": 4,
297
+ "transport": 2,
298
+ "send": 8,
299
+ "load": 3,
300
+ "create": 1,
301
+ "as": 1,
302
+ "raw": 5,
303
+ "encode": 9,
304
+ "decode": 9,
305
+ "flush": 9,
306
+ "print": 4,
307
+ "format": 3,
308
+ "download": 1,
309
+ "validate": 3,
310
+ "handle": 9,
311
+ "encoding": 4,
312
+ "prepare": 2,
313
+ "content": 2,
314
+ "read": 2,
315
+ "aread": 2,
316
+ "elapsed": 2,
317
+ "http": 1,
318
+ "reason": 1,
319
+ "url": 1,
320
+ "text": 1,
321
+ "charset": 1,
322
+ "is": 16,
323
+ "has": 1,
324
+ "cookies": 1,
325
+ "iter": 3,
326
+ "aiter": 1,
327
+ "extract": 1,
328
+ "set": 3,
329
+ "add": 2,
330
+ "info": 1,
331
+ "render": 6,
332
+ "map": 1,
333
+ "start": 1,
334
+ "authority": 1,
335
+ "netloc": 2,
336
+ "copy": 6,
337
+ "urlparse": 1,
338
+ "normalize": 4,
339
+ "percent": 2,
340
+ "quote": 1,
341
+ "urlencode": 1,
342
+ "scheme": 1,
343
+ "userinfo": 1,
344
+ "username": 1,
345
+ "password": 1,
346
+ "host": 1,
347
+ "port": 2,
348
+ "path": 1,
349
+ "query": 1,
350
+ "params": 1,
351
+ "fragment": 1,
352
+ "join": 1,
353
+ "multi": 1,
354
+ "remove": 1,
355
+ "primitive": 1,
356
+ "replacer": 1,
357
+ "same": 1,
358
+ "to": 1,
359
+ "peek": 1,
360
+ "sync": 2,
361
+ "async": 2,
362
+ "matches": 1
363
+ },
364
+ "booleanPrefix": {
365
+ "requires": 1,
366
+ "eq": 6,
367
+ "is": 26,
368
+ "first": 2,
369
+ "contains": 2,
370
+ "has": 1,
371
+ "bool": 2,
372
+ "response": 2,
373
+ "same": 1,
374
+ "matches": 1,
375
+ "stream": 2,
376
+ "more": 2
377
+ },
378
+ "abbreviated": 52,
379
+ "identifiers": 1905,
380
+ "testNames": {},
381
+ "genericNames": 4
382
+ },
383
+ "tests": {
384
+ "files": 30,
385
+ "loc": 4345,
386
+ "functions": 423
387
+ },
388
+ "comments": {
389
+ "line": 488,
390
+ "block": 0,
391
+ "doc": 244,
392
+ "chars": 61142,
393
+ "lowercaseStart": 185,
394
+ "trailingPeriod": 391,
395
+ "todo": {},
396
+ "tells": {
397
+ "restates": 5,
398
+ "buzzword": 17
399
+ },
400
+ "publicDecls": 899,
401
+ "publicDocumented": 221,
402
+ "privateDecls": 37,
403
+ "privateDocumented": 18
404
+ },
405
+ "errors": {
406
+ "tryCatch": 44,
407
+ "runCatching": 0,
408
+ "resultType": 0,
409
+ "forceUnwrap": 0
410
+ },
411
+ "kotlin": {
412
+ "when3": 0,
413
+ "ifElseChain3": 0,
414
+ "sealedInterface": 0,
415
+ "sealedClass": 0,
416
+ "extensionFunctions": 0,
417
+ "dataClasses": 0,
418
+ "composables": 0,
419
+ "modifierParamFirst": 0,
420
+ "modifierParamLater": 0,
421
+ "remember": 0
422
+ },
423
+ "typescript": {
424
+ "arrowFunctions": 0,
425
+ "functionDeclarations": 0,
426
+ "typeAliases": 0,
427
+ "interfaces": 0,
428
+ "optionalChains": 0,
429
+ "anyTypes": 0
430
+ },
431
+ "python": {
432
+ "typeHinted": 387,
433
+ "fStrings": 103,
434
+ "formatCalls": 0,
435
+ "comprehensions": 79,
436
+ "bareExcepts": 0,
437
+ "dataclasses": 0
438
+ },
439
+ "go": {
440
+ "errChecks": 0,
441
+ "namedReturns": 0,
442
+ "structs": 0,
443
+ "interfaces": 0,
444
+ "panics": 0
445
+ }
446
+ },
447
+ "commitStats": {
448
+ "count": 632,
449
+ "subjectLength": {
450
+ "5": 4,
451
+ "7": 3,
452
+ "8": 1,
453
+ "9": 1,
454
+ "10": 5,
455
+ "11": 7,
456
+ "12": 6,
457
+ "13": 31,
458
+ "14": 7,
459
+ "15": 8,
460
+ "16": 35,
461
+ "17": 12,
462
+ "18": 14,
463
+ "19": 17,
464
+ "20": 15,
465
+ "21": 11,
466
+ "22": 39,
467
+ "23": 15,
468
+ "24": 12,
469
+ "25": 12,
470
+ "26": 17,
471
+ "27": 15,
472
+ "28": 15,
473
+ "29": 12,
474
+ "30": 13,
475
+ "31": 10,
476
+ "32": 15,
477
+ "33": 11,
478
+ "34": 10,
479
+ "35": 17,
480
+ "36": 15,
481
+ "37": 10,
482
+ "38": 8,
483
+ "39": 11,
484
+ "40": 7,
485
+ "41": 9,
486
+ "42": 6,
487
+ "43": 8,
488
+ "44": 6,
489
+ "45": 8,
490
+ "46": 10,
491
+ "47": 4,
492
+ "48": 6,
493
+ "49": 9,
494
+ "50": 4,
495
+ "51": 9,
496
+ "52": 7,
497
+ "53": 4,
498
+ "54": 4,
499
+ "55": 7,
500
+ "56": 10,
501
+ "57": 5,
502
+ "58": 4,
503
+ "59": 6,
504
+ "60": 4,
505
+ "61": 4,
506
+ "62": 2,
507
+ "63": 4,
508
+ "64": 3,
509
+ "65": 2,
510
+ "66": 3,
511
+ "67": 4,
512
+ "68": 2,
513
+ "69": 4,
514
+ "70": 1,
515
+ "71": 4,
516
+ "72": 3,
517
+ "73": 1,
518
+ "74": 4,
519
+ "75": 1,
520
+ "76": 3,
521
+ "77": 1,
522
+ "78": 1,
523
+ "79": 2,
524
+ "80": 3,
525
+ "83": 1,
526
+ "84": 1,
527
+ "87": 1,
528
+ "88": 2,
529
+ "96": 2,
530
+ "98": 1,
531
+ "116": 1
532
+ },
533
+ "lowercaseStart": 12,
534
+ "conventionalPrefix": 0,
535
+ "trailingPeriod": 2,
536
+ "withBody": 232,
537
+ "bodyLines": 1055,
538
+ "bodyLinesWrapped": 1037,
539
+ "tense": {
540
+ "imperative": 608,
541
+ "thirdPerson": 18,
542
+ "past": 6
543
+ }
544
+ },
545
+ "rules": [
546
+ {
547
+ "id": "python.functions.length-p50.value",
548
+ "scope": "personal",
549
+ "language": "python",
550
+ "category": "structure",
551
+ "kind": "voice",
552
+ "text": "Keep functions short. Typical length is 8 lines, 90% are under 28 lines.",
553
+ "evidence": {
554
+ "metric": {
555
+ "name": "functions.length-p50",
556
+ "value": 8,
557
+ "sampleSize": 769
558
+ },
559
+ "examples": []
560
+ },
561
+ "confidence": 0.8,
562
+ "status": "auto"
563
+ },
564
+ {
565
+ "id": "python.functions.params-p90.value",
566
+ "scope": "personal",
567
+ "language": "python",
568
+ "category": "structure",
569
+ "kind": "voice",
570
+ "text": "Functions take at most 3 parameters in 90% of cases.",
571
+ "evidence": {
572
+ "metric": {
573
+ "name": "functions.params-p90",
574
+ "value": 3,
575
+ "sampleSize": 769
576
+ },
577
+ "examples": []
578
+ },
579
+ "confidence": 0.8,
580
+ "status": "auto"
581
+ },
582
+ {
583
+ "id": "python.functions.nesting-p90.value",
584
+ "scope": "personal",
585
+ "language": "python",
586
+ "category": "structure",
587
+ "kind": "voice",
588
+ "text": "Keep nesting shallow. 90% of functions nest at most 2 levels deep.",
589
+ "evidence": {
590
+ "metric": {
591
+ "name": "functions.nesting-p90",
592
+ "value": 2,
593
+ "sampleSize": 769
594
+ },
595
+ "examples": []
596
+ },
597
+ "confidence": 0.8,
598
+ "status": "auto"
599
+ },
600
+ {
601
+ "id": "python.naming.abbreviation-ratio.low",
602
+ "scope": "personal",
603
+ "language": "python",
604
+ "category": "naming",
605
+ "kind": "voice",
606
+ "text": "Spell names out. Avoid abbreviations.",
607
+ "evidence": {
608
+ "metric": {
609
+ "name": "naming.abbreviation-ratio",
610
+ "value": 0.027,
611
+ "sampleSize": 1905
612
+ },
613
+ "examples": []
614
+ },
615
+ "confidence": 0.96,
616
+ "status": "auto"
617
+ },
618
+ {
619
+ "id": "python.comments.per-100-loc.value",
620
+ "scope": "personal",
621
+ "language": "python",
622
+ "category": "comments",
623
+ "kind": "voice",
624
+ "text": "Comment sparingly. About 7.4 comments per 100 lines of code.",
625
+ "evidence": {
626
+ "metric": {
627
+ "name": "comments.per-100-loc",
628
+ "value": 7.36,
629
+ "sampleSize": 9945
630
+ },
631
+ "examples": []
632
+ },
633
+ "confidence": 0.8,
634
+ "status": "auto"
635
+ },
636
+ {
637
+ "id": "python.comments.avg-chars.value",
638
+ "scope": "personal",
639
+ "language": "python",
640
+ "category": "comments",
641
+ "kind": "voice",
642
+ "text": "Comments average 84 characters.",
643
+ "evidence": {
644
+ "metric": {
645
+ "name": "comments.avg-chars",
646
+ "value": 84,
647
+ "sampleSize": 732
648
+ },
649
+ "examples": []
650
+ },
651
+ "confidence": 0.8,
652
+ "status": "auto"
653
+ },
654
+ {
655
+ "id": "python.python.fstring-ratio.high",
656
+ "scope": "personal",
657
+ "language": "python",
658
+ "category": "structure",
659
+ "kind": "idiom",
660
+ "text": "Format strings with f-strings, not .format().",
661
+ "evidence": {
662
+ "metric": {
663
+ "name": "python.fstring-ratio",
664
+ "value": 1,
665
+ "sampleSize": 103
666
+ },
667
+ "examples": []
668
+ },
669
+ "confidence": 0.96,
670
+ "status": "auto"
671
+ },
672
+ {
673
+ "id": "python.python.comprehension-per-kloc.value",
674
+ "scope": "personal",
675
+ "language": "python",
676
+ "category": "structure",
677
+ "kind": "idiom",
678
+ "text": "Comprehensions are common, about 7.9 per 1000 lines.",
679
+ "evidence": {
680
+ "metric": {
681
+ "name": "python.comprehension-per-kloc",
682
+ "value": 7.944,
683
+ "sampleSize": 9945
684
+ },
685
+ "examples": []
686
+ },
687
+ "confidence": 0.8,
688
+ "status": "auto"
689
+ },
690
+ {
691
+ "id": "avoid.python.comments.buzzwords",
692
+ "scope": "personal",
693
+ "language": "python",
694
+ "category": "avoid",
695
+ "kind": "voice",
696
+ "text": "Do not use words like robust, seamless, leverage, comprehensive, utilize, streamline, crucial or delve in comments.",
697
+ "evidence": {
698
+ "metric": {
699
+ "name": "comments.buzzword-ratio",
700
+ "value": 0.023,
701
+ "sampleSize": 732
702
+ },
703
+ "examples": []
704
+ },
705
+ "confidence": 0.96,
706
+ "status": "auto"
707
+ },
708
+ {
709
+ "id": "avoid.python.comments.restating",
710
+ "scope": "personal",
711
+ "language": "python",
712
+ "category": "avoid",
713
+ "kind": "voice",
714
+ "text": "Do not start comments with \"This function\", \"This method\" or \"This class\". Say what is not obvious from the code, or write nothing.",
715
+ "evidence": {
716
+ "metric": {
717
+ "name": "comments.restates-ratio",
718
+ "value": 0.007,
719
+ "sampleSize": 732
720
+ },
721
+ "examples": []
722
+ },
723
+ "confidence": 0.98,
724
+ "status": "auto"
725
+ },
726
+ {
727
+ "id": "avoid.python.comments.emoji",
728
+ "scope": "personal",
729
+ "language": "python",
730
+ "category": "avoid",
731
+ "kind": "voice",
732
+ "text": "No emoji in comments.",
733
+ "evidence": {
734
+ "metric": {
735
+ "name": "comments.emoji-ratio",
736
+ "value": 0,
737
+ "sampleSize": 732
738
+ },
739
+ "examples": []
740
+ },
741
+ "confidence": 0.99,
742
+ "status": "auto"
743
+ },
744
+ {
745
+ "id": "avoid.python.naming.generic",
746
+ "scope": "personal",
747
+ "language": "python",
748
+ "category": "avoid",
749
+ "kind": "voice",
750
+ "text": "No generic names like handleData, processItem, result2 or helper. Name the thing after what it is.",
751
+ "evidence": {
752
+ "metric": {
753
+ "name": "naming.generic-ratio",
754
+ "value": 0.016,
755
+ "sampleSize": 248
756
+ },
757
+ "examples": []
758
+ },
759
+ "confidence": 0.96,
760
+ "status": "auto"
761
+ },
762
+ {
763
+ "id": "avoid.python.errors.bare-except",
764
+ "scope": "personal",
765
+ "language": "python",
766
+ "category": "avoid",
767
+ "kind": "voice",
768
+ "text": "Do not use a bare except. Catch the exception you expect.",
769
+ "evidence": {
770
+ "metric": {
771
+ "name": "python.bare-except-per-kloc",
772
+ "value": 0,
773
+ "sampleSize": 9945
774
+ },
775
+ "examples": []
776
+ },
777
+ "confidence": 1,
778
+ "status": "auto"
779
+ },
780
+ {
781
+ "id": "avoid.python.comments.todo",
782
+ "scope": "personal",
783
+ "language": "python",
784
+ "category": "avoid",
785
+ "kind": "voice",
786
+ "text": "Do not leave TODO comments.",
787
+ "evidence": {
788
+ "metric": {
789
+ "name": "comments.todo-ratio",
790
+ "value": 0,
791
+ "sampleSize": 732
792
+ },
793
+ "examples": []
794
+ },
795
+ "confidence": 0.99,
796
+ "status": "auto"
797
+ },
798
+ {
799
+ "id": "any.commits.conventional-ratio.low",
800
+ "scope": "personal",
801
+ "language": "any",
802
+ "category": "commits",
803
+ "kind": "voice",
804
+ "text": "No conventional commit prefixes. Plain sentences.",
805
+ "evidence": {
806
+ "metric": {
807
+ "name": "commits.conventional-ratio",
808
+ "value": 0,
809
+ "sampleSize": 632
810
+ },
811
+ "examples": []
812
+ },
813
+ "confidence": 0.99,
814
+ "status": "auto"
815
+ },
816
+ {
817
+ "id": "any.commits.lowercase-ratio.low",
818
+ "scope": "personal",
819
+ "language": "any",
820
+ "category": "commits",
821
+ "kind": "voice",
822
+ "text": "Commit subjects start with a capital letter.",
823
+ "evidence": {
824
+ "metric": {
825
+ "name": "commits.lowercase-ratio",
826
+ "value": 0.019,
827
+ "sampleSize": 632
828
+ },
829
+ "examples": []
830
+ },
831
+ "confidence": 0.97,
832
+ "status": "auto"
833
+ },
834
+ {
835
+ "id": "any.commits.imperative-ratio.high",
836
+ "scope": "personal",
837
+ "language": "any",
838
+ "category": "commits",
839
+ "kind": "voice",
840
+ "text": "Write commit subjects in the imperative: Add, Fix, Remove.",
841
+ "evidence": {
842
+ "metric": {
843
+ "name": "commits.imperative-ratio",
844
+ "value": 0.962,
845
+ "sampleSize": 632
846
+ },
847
+ "examples": []
848
+ },
849
+ "confidence": 0.94,
850
+ "status": "auto"
851
+ },
852
+ {
853
+ "id": "any.commits.trailing-period-ratio.low",
854
+ "scope": "personal",
855
+ "language": "any",
856
+ "category": "commits",
857
+ "kind": "voice",
858
+ "text": "No period at the end of a commit subject.",
859
+ "evidence": {
860
+ "metric": {
861
+ "name": "commits.trailing-period-ratio",
862
+ "value": 0.003,
863
+ "sampleSize": 632
864
+ },
865
+ "examples": []
866
+ },
867
+ "confidence": 0.99,
868
+ "status": "auto"
869
+ },
870
+ {
871
+ "id": "any.commits.body-wrap-ratio.high",
872
+ "scope": "personal",
873
+ "language": "any",
874
+ "category": "commits",
875
+ "kind": "voice",
876
+ "text": "Hard-wrap commit body lines at 72 characters.",
877
+ "evidence": {
878
+ "metric": {
879
+ "name": "commits.body-wrap-ratio",
880
+ "value": 0.983,
881
+ "sampleSize": 1055
882
+ },
883
+ "examples": []
884
+ },
885
+ "confidence": 0.97,
886
+ "status": "auto"
887
+ },
888
+ {
889
+ "id": "any.commits.subject-p50.value",
890
+ "scope": "personal",
891
+ "language": "any",
892
+ "category": "commits",
893
+ "kind": "voice",
894
+ "text": "Commit subjects are about 30 characters.",
895
+ "evidence": {
896
+ "metric": {
897
+ "name": "commits.subject-p50",
898
+ "value": 30,
899
+ "sampleSize": 632
900
+ },
901
+ "examples": []
902
+ },
903
+ "confidence": 0.8,
904
+ "status": "auto"
905
+ },
906
+ {
907
+ "id": "python.comments.test-case-outcome-sentence",
908
+ "scope": "personal",
909
+ "language": "python",
910
+ "category": "comments",
911
+ "kind": "voice",
912
+ "text": "In tests, introduce each case with a one-line comment stating the expected outcome as a plain sentence, e.g. \"Not proxied if NO_PROXY matches URL.\" or \"If the port matches the scheme default it is normalized to None.\" Group sections with a terse heading like \"Tests for invalid URLs\".",
913
+ "evidence": {
914
+ "examples": [
915
+ {
916
+ "file": "tests/client/test_proxies.py",
917
+ "line": 210,
918
+ "snippet": ""
919
+ },
920
+ {
921
+ "file": "tests/models/test_url.py",
922
+ "line": 247,
923
+ "snippet": ""
924
+ },
925
+ {
926
+ "file": "tests/models/test_url.py",
927
+ "line": 299,
928
+ "snippet": ""
929
+ }
930
+ ]
931
+ },
932
+ "confidence": 0.8,
933
+ "status": "auto"
934
+ },
935
+ {
936
+ "id": "python.comments.quote-literals",
937
+ "scope": "personal",
938
+ "language": "python",
939
+ "category": "comments",
940
+ "kind": "voice",
941
+ "text": "Wrap literal values, header names, keyword arguments and symbols in single quotes or backticks inside comments: \"'WWW-Authenticate: Digest ...'\", \"`httpx.ReadTimeout`\", \"'query' may be 'None'\". Never leave a code token bare in prose.",
942
+ "evidence": {
943
+ "examples": [
944
+ {
945
+ "file": "httpx/_auth.py",
946
+ "line": 213,
947
+ "snippet": ""
948
+ },
949
+ {
950
+ "file": "httpx/_transports/default.py",
951
+ "line": 76,
952
+ "snippet": ""
953
+ },
954
+ {
955
+ "file": "httpx/_urlparse.py",
956
+ "line": 219,
957
+ "snippet": ""
958
+ }
959
+ ]
960
+ },
961
+ "confidence": 0.65,
962
+ "status": "auto"
963
+ },
964
+ {
965
+ "id": "any.commits.drop-tweak-tidy-verbs",
966
+ "scope": "personal",
967
+ "language": "any",
968
+ "category": "commits",
969
+ "kind": "voice",
970
+ "text": "Use \"Drop\" for removals (\"Drop wait_closed\", \"Drop RawURL\"), and \"Tweak\" or \"Tidy up\" for small adjustments (\"Tweak QueryParams implementation\", \"Tidy up redirect tests\"). Avoid \"Remove\", \"Refactor\" and \"Clean up\" for these.",
971
+ "evidence": {
972
+ "examples": [
973
+ {
974
+ "file": "commit:4ed3a8a",
975
+ "line": 0,
976
+ "snippet": ""
977
+ },
978
+ {
979
+ "file": "commit:8fe32c5",
980
+ "line": 0,
981
+ "snippet": ""
982
+ },
983
+ {
984
+ "file": "commit:e40b0bf",
985
+ "line": 0,
986
+ "snippet": ""
987
+ }
988
+ ]
989
+ },
990
+ "confidence": 0.7,
991
+ "status": "auto"
992
+ },
993
+ {
994
+ "id": "any.commits.call-signature-notation",
995
+ "scope": "personal",
996
+ "language": "any",
997
+ "category": "commits",
998
+ "kind": "voice",
999
+ "text": "Name APIs in commit subjects using call-signature notation with elided arguments, like \"Add Client(http_versions=...) support\" or \"Support `Response(content=<bytes iterator>)`\", wrapping the code in backticks or single quotes.",
1000
+ "evidence": {
1001
+ "examples": [
1002
+ {
1003
+ "file": "commit:b343ee4",
1004
+ "line": 0,
1005
+ "snippet": ""
1006
+ },
1007
+ {
1008
+ "file": "commit:5ee6135",
1009
+ "line": 0,
1010
+ "snippet": ""
1011
+ },
1012
+ {
1013
+ "file": "commit:59914c7",
1014
+ "line": 0,
1015
+ "snippet": ""
1016
+ }
1017
+ ]
1018
+ },
1019
+ "confidence": 0.5,
1020
+ "status": "auto"
1021
+ },
1022
+ {
1023
+ "id": "any.commits.x-not-y-contrast",
1024
+ "scope": "personal",
1025
+ "language": "any",
1026
+ "category": "commits",
1027
+ "kind": "voice",
1028
+ "text": "When a change swaps one behaviour or name for another, phrase the subject as a contrast with a trailing \", not Y\" clause: \"params argument on URL should merge, not replace.\", \"URL.port becomes Optional[int], not int\".",
1029
+ "evidence": {
1030
+ "examples": [
1031
+ {
1032
+ "file": "commit:74e5115",
1033
+ "line": 0,
1034
+ "snippet": ""
1035
+ },
1036
+ {
1037
+ "file": "commit:c089480",
1038
+ "line": 0,
1039
+ "snippet": ""
1040
+ },
1041
+ {
1042
+ "file": "commit:d98e9e7",
1043
+ "line": 0,
1044
+ "snippet": ""
1045
+ }
1046
+ ]
1047
+ },
1048
+ "confidence": 0.4,
1049
+ "status": "auto"
1050
+ }
1051
+ ]
1052
+ }