@willbooster/tree-sitter-python 2.1.2 → 2.3.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.
package/grammar.js CHANGED
@@ -43,6 +43,12 @@ module.exports = grammar({
43
43
  extras: ($) => [$.comment, /[\s\f\uFEFF\u2060\u200B]|\r?\n/, $.line_continuation],
44
44
 
45
45
  conflicts: ($) => [
46
+ [$.default_type_parameter, $.primary_expression],
47
+ [$.primary_expression, $._default_type_primary],
48
+ [$.primary_expression, $._default_generic_type],
49
+ [$.primary_expression, $._default_member_type],
50
+ [$.list, $._default_type_list],
51
+ [$._type_parameter_expression, $.expression],
46
52
  [$.primary_expression, $.pattern],
47
53
  [$.primary_expression, $.list_splat_pattern],
48
54
  [$.tuple, $.tuple_pattern],
@@ -94,6 +100,8 @@ module.exports = grammar({
94
100
  $._expressions,
95
101
  $._left_hand_side,
96
102
  $.keyword_identifier,
103
+ $._type_parameter_name,
104
+ $._default_member_base,
97
105
  ],
98
106
 
99
107
  reserved: {
@@ -152,6 +160,7 @@ module.exports = grammar({
152
160
  choice(
153
161
  $.future_import_statement,
154
162
  $.import_statement,
163
+ $.lazy_import_statement,
155
164
  $.import_from_statement,
156
165
  $.print_statement,
157
166
  $.assert_statement,
@@ -170,6 +179,8 @@ module.exports = grammar({
170
179
 
171
180
  import_statement: ($) => seq('import', $._import_list),
172
181
 
182
+ lazy_import_statement: ($) => seq('lazy', choice($.import_statement, $.import_from_statement)),
183
+
173
184
  import_prefix: () => repeat1('.'),
174
185
 
175
186
  relative_import: ($) => seq($.import_prefix, optional($.dotted_name)),
@@ -390,7 +401,100 @@ module.exports = grammar({
390
401
  ':',
391
402
  field('body', $._suite)
392
403
  ),
393
- type_parameter: ($) => seq('[', commaSep1(choice($.type, $.splat_type)), optional(','), ']'),
404
+ type_parameter: ($) =>
405
+ seq('[', commaSep1(choice($.type, $.splat_type, $.default_type_parameter)), optional(','), ']'),
406
+
407
+ default_type_parameter: ($) =>
408
+ choice(
409
+ seq(
410
+ choice(
411
+ seq(
412
+ field('name', $._type_parameter_name),
413
+ optional(seq(':', field('bound', alias($._type_parameter_expression, $.type))))
414
+ ),
415
+ seq('**', field('name', $._type_parameter_name))
416
+ ),
417
+ '=',
418
+ field('value', alias($._type_parameter_expression, $.type))
419
+ ),
420
+ seq(
421
+ '*',
422
+ field('name', $._type_parameter_name),
423
+ '=',
424
+ field(
425
+ 'value',
426
+ choice(alias($._type_parameter_expression, $.type), alias($._default_splat_type, $.list_splat))
427
+ )
428
+ )
429
+ ),
430
+
431
+ _type_parameter_name: ($) =>
432
+ choice($.identifier, alias(choice('type', 'match', 'print', 'exec', 'lazy'), $.identifier)),
433
+
434
+ _default_member_base: ($) => choice($._type_parameter_name, alias($._default_member_type, $.member_type)),
435
+
436
+ _type_parameter_expression: ($) => choice($._expression_without_named_expression, prec.dynamic(1, $._default_type)),
437
+
438
+ _default_type: ($) => choice($._default_type_primary, alias($._default_union_type, $.union_type)),
439
+
440
+ _default_type_primary: ($) =>
441
+ choice(
442
+ $.identifier,
443
+ $.keyword_identifier,
444
+ $.none,
445
+ $.string,
446
+ alias($._default_member_type, $.member_type),
447
+ alias($._default_generic_type, $.generic_type),
448
+ alias($._default_type_list, $.list),
449
+ alias($._default_type_tuple, $.tuple),
450
+ alias($._default_parenthesized_type, $.parenthesized_expression)
451
+ ),
452
+
453
+ _default_member_type: ($) => seq($._default_member_base, '.', $.identifier),
454
+
455
+ _default_generic_type: ($) => seq($._default_member_base, alias($._default_type_arguments, $.type_parameter)),
456
+
457
+ _default_union_type: ($) =>
458
+ prec.left(PREC.bitwise_or, seq(alias($._default_type, $.type), '|', alias($._default_type_primary, $.type))),
459
+
460
+ _default_parenthesized_type: ($) => seq('(', alias($._default_type, $.type), ')'),
461
+
462
+ _default_type_arguments: ($) =>
463
+ seq(
464
+ '[',
465
+ commaSep1(
466
+ choice(
467
+ alias($._type_parameter_expression, $.type),
468
+ $.named_expression,
469
+ alias($._default_splat_argument, $.splat_type),
470
+ $.slice
471
+ )
472
+ ),
473
+ optional(','),
474
+ ']'
475
+ ),
476
+
477
+ _default_splat_argument: ($) => seq('*', alias($._type_parameter_expression, $.type)),
478
+
479
+ _default_type_list: ($) =>
480
+ prec.dynamic(
481
+ 1,
482
+ seq('[', optional(seq(commaSep1(alias($._type_parameter_expression, $.type)), optional(','))), ']')
483
+ ),
484
+
485
+ _default_type_tuple: ($) =>
486
+ prec.dynamic(
487
+ 1,
488
+ seq(
489
+ '(',
490
+ alias($._type_parameter_expression, $.type),
491
+ ',',
492
+ optional(seq(commaSep1(alias($._type_parameter_expression, $.type)), optional(','))),
493
+ ')'
494
+ )
495
+ ),
496
+
497
+ _default_splat_type: ($) => seq('*', choice($.primary_expression, prec.dynamic(1, alias($._default_type, $.type)))),
394
498
 
395
499
  _generic_type_arguments: ($) =>
396
500
  seq('[', commaSep1(choice($.type, alias($._list_splat_argument, $.splat_type))), optional(','), ']'),
@@ -913,7 +1017,7 @@ module.exports = grammar({
913
1017
  keyword_identifier: ($) =>
914
1018
  choice(
915
1019
  prec(-3, alias(choice('print', 'exec', 'async', 'await'), $.identifier)),
916
- alias(choice('type', 'match'), $.identifier)
1020
+ alias(choice('type', 'match', 'lazy'), $.identifier)
917
1021
  ),
918
1022
 
919
1023
  true: () => 'True',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@willbooster/tree-sitter-python",
3
- "version": "2.1.2",
3
+ "version": "2.3.0",
4
4
  "description": "Python grammar for tree-sitter",
5
5
  "keywords": [
6
6
  "incremental",
@@ -63,6 +63,9 @@
63
63
 
64
64
  (attribute attribute: (identifier) @property)
65
65
  (type (identifier) @type)
66
+ (member_type (identifier) @type)
67
+ (generic_type (identifier) @type)
68
+ (default_type_parameter name: (identifier) @type)
66
69
 
67
70
  ; Literals
68
71
 
@@ -164,3 +167,5 @@
164
167
  "match"
165
168
  "case"
166
169
  ] @keyword
170
+
171
+ (lazy_import_statement "lazy" @keyword)
@@ -720,6 +720,10 @@
720
720
  "type": "import_statement",
721
721
  "named": true
722
722
  },
723
+ {
724
+ "type": "lazy_import_statement",
725
+ "named": true
726
+ },
723
727
  {
724
728
  "type": "match_statement",
725
729
  "named": true
@@ -1303,6 +1307,46 @@
1303
1307
  }
1304
1308
  }
1305
1309
  },
1310
+ {
1311
+ "type": "default_type_parameter",
1312
+ "named": true,
1313
+ "fields": {
1314
+ "bound": {
1315
+ "multiple": false,
1316
+ "required": false,
1317
+ "types": [
1318
+ {
1319
+ "type": "type",
1320
+ "named": true
1321
+ }
1322
+ ]
1323
+ },
1324
+ "name": {
1325
+ "multiple": false,
1326
+ "required": true,
1327
+ "types": [
1328
+ {
1329
+ "type": "identifier",
1330
+ "named": true
1331
+ }
1332
+ ]
1333
+ },
1334
+ "value": {
1335
+ "multiple": false,
1336
+ "required": true,
1337
+ "types": [
1338
+ {
1339
+ "type": "list_splat",
1340
+ "named": true
1341
+ },
1342
+ {
1343
+ "type": "type",
1344
+ "named": true
1345
+ }
1346
+ ]
1347
+ }
1348
+ }
1349
+ },
1306
1350
  {
1307
1351
  "type": "delete_statement",
1308
1352
  "named": true,
@@ -1990,6 +2034,10 @@
1990
2034
  "type": "identifier",
1991
2035
  "named": true
1992
2036
  },
2037
+ {
2038
+ "type": "member_type",
2039
+ "named": true
2040
+ },
1993
2041
  {
1994
2042
  "type": "type_parameter",
1995
2043
  "named": true
@@ -2332,6 +2380,25 @@
2332
2380
  ]
2333
2381
  }
2334
2382
  },
2383
+ {
2384
+ "type": "lazy_import_statement",
2385
+ "named": true,
2386
+ "fields": {},
2387
+ "children": {
2388
+ "multiple": false,
2389
+ "required": true,
2390
+ "types": [
2391
+ {
2392
+ "type": "import_from_statement",
2393
+ "named": true
2394
+ },
2395
+ {
2396
+ "type": "import_statement",
2397
+ "named": true
2398
+ }
2399
+ ]
2400
+ }
2401
+ },
2335
2402
  {
2336
2403
  "type": "list",
2337
2404
  "named": true,
@@ -2347,6 +2414,10 @@
2347
2414
  {
2348
2415
  "type": "list_splat",
2349
2416
  "named": true
2417
+ },
2418
+ {
2419
+ "type": "type",
2420
+ "named": true
2350
2421
  }
2351
2422
  ]
2352
2423
  }
@@ -2435,6 +2506,10 @@
2435
2506
  {
2436
2507
  "type": "primary_expression",
2437
2508
  "named": true
2509
+ },
2510
+ {
2511
+ "type": "type",
2512
+ "named": true
2438
2513
  }
2439
2514
  ]
2440
2515
  }
@@ -2504,6 +2579,10 @@
2504
2579
  "type": "identifier",
2505
2580
  "named": true
2506
2581
  },
2582
+ {
2583
+ "type": "member_type",
2584
+ "named": true
2585
+ },
2507
2586
  {
2508
2587
  "type": "type",
2509
2588
  "named": true
@@ -2580,6 +2659,10 @@
2580
2659
  "type": "import_statement",
2581
2660
  "named": true
2582
2661
  },
2662
+ {
2663
+ "type": "lazy_import_statement",
2664
+ "named": true
2665
+ },
2583
2666
  {
2584
2667
  "type": "match_statement",
2585
2668
  "named": true
@@ -2758,6 +2841,10 @@
2758
2841
  "type": "expression",
2759
2842
  "named": true
2760
2843
  },
2844
+ {
2845
+ "type": "type",
2846
+ "named": true
2847
+ },
2761
2848
  {
2762
2849
  "type": "yield",
2763
2850
  "named": true
@@ -3002,6 +3089,10 @@
3002
3089
  {
3003
3090
  "type": "primary_expression",
3004
3091
  "named": true
3092
+ },
3093
+ {
3094
+ "type": "type",
3095
+ "named": true
3005
3096
  }
3006
3097
  ]
3007
3098
  }
@@ -3135,6 +3226,10 @@
3135
3226
  {
3136
3227
  "type": "list_splat",
3137
3228
  "named": true
3229
+ },
3230
+ {
3231
+ "type": "type",
3232
+ "named": true
3138
3233
  }
3139
3234
  ]
3140
3235
  }
@@ -3178,10 +3273,6 @@
3178
3273
  "type": "generic_type",
3179
3274
  "named": true
3180
3275
  },
3181
- {
3182
- "type": "identifier",
3183
- "named": true
3184
- },
3185
3276
  {
3186
3277
  "type": "member_type",
3187
3278
  "named": true
@@ -3227,6 +3318,18 @@
3227
3318
  "multiple": true,
3228
3319
  "required": true,
3229
3320
  "types": [
3321
+ {
3322
+ "type": "default_type_parameter",
3323
+ "named": true
3324
+ },
3325
+ {
3326
+ "type": "named_expression",
3327
+ "named": true
3328
+ },
3329
+ {
3330
+ "type": "slice",
3331
+ "named": true
3332
+ },
3230
3333
  {
3231
3334
  "type": "splat_type",
3232
3335
  "named": true
@@ -3858,6 +3961,10 @@
3858
3961
  "type": "lambda",
3859
3962
  "named": false
3860
3963
  },
3964
+ {
3965
+ "type": "lazy",
3966
+ "named": false
3967
+ },
3861
3968
  {
3862
3969
  "type": "line_continuation",
3863
3970
  "named": true,
Binary file
package/tree-sitter.json CHANGED
@@ -19,7 +19,7 @@
19
19
  }
20
20
  ],
21
21
  "metadata": {
22
- "version": "2.1.2",
22
+ "version": "2.3.0",
23
23
  "license": "MIT",
24
24
  "description": "Python grammar for tree-sitter",
25
25
  "authors": [