trackparse 0.3.1__tar.gz → 0.3.3__tar.gz

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 (36) hide show
  1. {trackparse-0.3.1 → trackparse-0.3.3}/PKG-INFO +37 -5
  2. {trackparse-0.3.1 → trackparse-0.3.3}/README.md +34 -3
  3. {trackparse-0.3.1 → trackparse-0.3.3}/pyproject.toml +3 -2
  4. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/__init__.py +1 -1
  5. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_data.py +1 -1
  6. {trackparse-0.3.1 → trackparse-0.3.3}/.gitignore +0 -0
  7. {trackparse-0.3.1 → trackparse-0.3.3}/LICENSE +0 -0
  8. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_artists.py +0 -0
  9. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_assemble.py +0 -0
  10. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_classify.py +0 -0
  11. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_context.py +0 -0
  12. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_credits.py +0 -0
  13. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_digits.py +0 -0
  14. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_format.py +0 -0
  15. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_mode.py +0 -0
  16. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_normalize.py +0 -0
  17. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_parser.py +0 -0
  18. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_prefix.py +0 -0
  19. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_scanner.py +0 -0
  20. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_separator.py +0 -0
  21. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tables.py +0 -0
  22. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_title.py +0 -0
  23. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_edits.py +0 -0
  24. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_kinds.py +0 -0
  25. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_options.py +0 -0
  26. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_parse.py +0 -0
  27. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_positions.py +0 -0
  28. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_split.py +0 -0
  29. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_times.py +0 -0
  30. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_types.py +0 -0
  31. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_warnings.py +0 -0
  32. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_words.py +0 -0
  33. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/options.py +0 -0
  34. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/py.typed +0 -0
  35. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/tracklist.py +0 -0
  36. {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/types.py +0 -0
@@ -1,8 +1,9 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: trackparse
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Spec-driven parser for music track titles and tracklists: artists, feat, remixes, versions, junk, positions, times.
5
- Project-URL: Homepage, https://github.com/4matic/trackparse
5
+ Project-URL: Homepage, https://4matic.github.io/trackparse/
6
+ Project-URL: Documentation, https://4matic.github.io/trackparse/start/getting-started/
6
7
  Project-URL: Repository, https://github.com/4matic/trackparse
7
8
  Project-URL: Issues, https://github.com/4matic/trackparse/issues
8
9
  Project-URL: Changelog, https://github.com/4matic/trackparse/blob/main/python/CHANGELOG.md
@@ -37,6 +38,8 @@ Description-Content-Type: text/markdown
37
38
  [![python](https://img.shields.io/github/actions/workflow/status/4matic/trackparse/python.yml?branch=main&label=tests&logo=github)](https://github.com/4matic/trackparse/actions/workflows/python.yml)
38
39
  [![license](https://img.shields.io/badge/license-MIT-blue)](https://github.com/4matic/trackparse/blob/main/LICENSE)
39
40
 
41
+ **[Documentation](https://4matic.github.io/trackparse/)** · **[Getting started](https://4matic.github.io/trackparse/start/getting-started/)** · **[Playground](https://4matic.github.io/trackparse/playground/)**
42
+
40
43
  **Turn messy track names into structured data: who made it, who's featured, who remixed it, and
41
44
  what's just noise.**
42
45
 
@@ -69,6 +72,8 @@ uv add trackparse
69
72
 
70
73
  ## Quick start
71
74
 
75
+ **Docs:** [Getting started](https://4matic.github.io/trackparse/start/getting-started/)
76
+
72
77
  ```python
73
78
  from trackparse import format_track, parse
74
79
 
@@ -140,6 +145,8 @@ print(json.dumps(track.to_dict(), indent=2))
140
145
 
141
146
  ## API
142
147
 
148
+ **Docs:** [Other functions](https://4matic.github.io/trackparse/reference/functions/)
149
+
143
150
  ```python
144
151
  parse(input, *, mode="auto", uploader=None, known_artists=(), split_and="auto", keywords=None) -> ParsedTrack
145
152
  parse_artists(input, *, <same options>) -> list[Artist]
@@ -153,6 +160,8 @@ SPEC_VERSION, __version__
153
160
 
154
161
  ### `parse(input, **options)`
155
162
 
163
+ **Docs:** [parse and ParsedTrack](https://4matic.github.io/trackparse/reference/parse/) · [Options](https://4matic.github.io/trackparse/reference/options/)
164
+
156
165
  | Option | Default | |
157
166
  |---|---|---|
158
167
  | `mode` | `"auto"` | `"clean"`, `"youtube"`, `"filename"`, `"tracklist"`, or `"auto"` to detect from the string |
@@ -193,6 +202,8 @@ the defaults. Passing something that isn't a `str` raises `TypeError`.
193
202
 
194
203
  ### `ParsedTrack`
195
204
 
205
+ **Docs:** [ParsedTrack fields](https://4matic.github.io/trackparse/reference/parse/#parsedtrack)
206
+
196
207
  | Attribute | Type | |
197
208
  |---|---|---|
198
209
  | `input` | `str` | The original string, untouched |
@@ -229,12 +240,14 @@ parse("Queen - Bohemian Rhapsody (Live at Wembley 1986)").versions[0]
229
240
  ```
230
241
 
231
242
  Version types, junk kinds and warnings are listed in the
232
- [main README](https://github.com/4matic/trackparse#api) and typed as `Literal` aliases
243
+ [API reference](https://4matic.github.io/trackparse/reference/parse/) and typed as `Literal` aliases
233
244
  (`VersionType`, `JunkKind`, `Warning`, `ArtistRole`, `ArtistSource`, `Mode`, `ModeOption`,
234
245
  `VersionDelimiter`).
235
246
 
236
247
  ### `to_dict()` and `from_dict()`
237
248
 
249
+ **Docs:** [JSON and Python objects](https://4matic.github.io/trackparse/reference/parse/#json-and-python-objects)
250
+
238
251
  Every result class has `to_dict()`, which returns plain dicts and lists matching
239
252
  [`parsed-track.schema.json`](https://github.com/4matic/trackparse/blob/main/spec/schema/parsed-track.schema.json)
240
253
  (`fullTitle`, `unknownArtist`, ...). With `json.dumps(track.to_dict(), separators=(",", ":"),
@@ -247,6 +260,8 @@ ParsedTrack.from_dict(track.to_dict()) == track # True
247
260
 
248
261
  ### `parse_artists(input, **options)`
249
262
 
263
+ **Docs:** [parseArtists](https://4matic.github.io/trackparse/reference/functions/#parseartistsinput-options)
264
+
250
265
  Splits a bare artist string. Takes the same options as `parse`.
251
266
 
252
267
  ```python
@@ -258,6 +273,8 @@ from trackparse import parse_artists
258
273
 
259
274
  ### `format_track(track, **options)`
260
275
 
276
+ **Docs:** [format](https://4matic.github.io/trackparse/reference/functions/#formattrack-options) · [Formatting](https://4matic.github.io/trackparse/guides/formatting/)
277
+
261
278
  Renders a track back to a string.
262
279
 
263
280
  | Option | Default | |
@@ -287,6 +304,8 @@ format_track(track, position=True)
287
304
 
288
305
  ### `normalize(s)`
289
306
 
307
+ **Docs:** [normalize](https://4matic.github.io/trackparse/reference/functions/#normalizeinput)
308
+
290
309
  The Unicode cleanup every function runs first: NFC, invisible characters, and dash, bracket and
291
310
  quote variants.
292
311
 
@@ -299,6 +318,8 @@ normalize("Noisia​ – Stigma (VIP)")
299
318
 
300
319
  ### `all_artists(track)`
301
320
 
321
+ **Docs:** [allArtists](https://4matic.github.io/trackparse/reference/functions/#allartiststrack)
322
+
302
323
  Credits plus every remixer, deduplicated.
303
324
 
304
325
  ```python
@@ -310,6 +331,8 @@ from trackparse import all_artists
310
331
 
311
332
  ### `create_parser(**options)`
312
333
 
334
+ **Docs:** [createParser](https://4matic.github.io/trackparse/reference/functions/#createparseroptions)
335
+
313
336
  Compiles the options once, for many calls. Per-call options are merged over the parser's: a value
314
337
  passed per call replaces the base one (`known_artists` included), `None` leaves it alone, and
315
338
  `keywords` dicts are merged.
@@ -332,6 +355,8 @@ released together and always share one version number.
332
355
 
333
356
  ## Modes
334
357
 
358
+ **Docs:** [Modes](https://4matic.github.io/trackparse/guides/modes/)
359
+
335
360
  | Mode | For | Adds |
336
361
  |---|---|---|
337
362
  | `clean` | Store metadata, tags | Only a spaced dash separates artist and title |
@@ -355,6 +380,8 @@ parse("Shelter", mode="youtube", uploader="Porter Robinson").artists
355
380
 
356
381
  ## Tracklists
357
382
 
383
+ **Docs:** [Tracklists](https://4matic.github.io/trackparse/guides/tracklists/) · [Editing tracklists](https://4matic.github.io/trackparse/guides/editing-tracklists/)
384
+
358
385
  `trackparse.tracklist` parses a whole tracklist, one entry per line, and checks it. Each entry
359
386
  keeps its line exactly as written plus its own line ending, so `"".join(e.raw + e.eol for e in
360
387
  tl.entries)` is always the input, CRLF or not.
@@ -447,7 +474,7 @@ Warning codes: `time-missing`, `time-out-of-order`, `time-duplicate`, `no-start-
447
474
  `position-duplicate`, `line-unparsed`. Edits: `set-time {line, seconds}`, `shift {seconds, lines? | from?}`
448
475
  (all timed lines when neither is given), `sort-by-time {}`, `set-rest {line, rest}`,
449
476
  `insert {after, text}` (`after: 0` inserts at the top), `delete {line}`. The
450
- [main README](https://github.com/4matic/trackparse#tracklist-api) explains each one.
477
+ [Tracklist API reference](https://4matic.github.io/trackparse/reference/tracklist/) explains each one.
451
478
  `to_dict()` gives the camelCase JSON from
452
479
  [`tracklist.schema.json`](https://github.com/4matic/trackparse/blob/main/spec/schema/tracklist.schema.json),
453
480
  byte-identical to the JS package's output.
@@ -464,6 +491,8 @@ parse("Electrosoul System - Liquid Metal", mode="tracklist").title
464
491
 
465
492
  ## Typing
466
493
 
494
+ **Docs:** [Types](https://4matic.github.io/trackparse/reference/parse/#types)
495
+
467
496
  The package ships `py.typed` and passes `mypy --strict`. `ParsedTrack`, `Artist`, `Version`,
468
497
  `Junk`, `Flags`, `Position` and `Timestamp` are frozen dataclasses with snake_case attributes, and
469
498
  so are the tracklist results in `trackparse.tracklist`.
@@ -492,8 +521,11 @@ same spec rule IDs. Behaviour changes start in the spec, not here: see
492
521
 
493
522
  ## Links
494
523
 
524
+ - [Documentation](https://4matic.github.io/trackparse/), with every example in Python and JavaScript, and a
525
+ [playground](https://4matic.github.io/trackparse/playground/) that runs the parser in your browser
495
526
  - [Spec](https://github.com/4matic/trackparse/blob/main/spec/SPEC.md)
496
- - [Project README](https://github.com/4matic/trackparse#readme), with a table of real outputs
527
+ - [Project README](https://github.com/4matic/trackparse#readme)
528
+ - [GitHub repository](https://github.com/4matic/trackparse)
497
529
  - [Changelog](https://github.com/4matic/trackparse/blob/main/python/CHANGELOG.md)
498
530
  - [npm package](https://www.npmjs.com/package/trackparse)
499
531
 
@@ -5,6 +5,8 @@
5
5
  [![python](https://img.shields.io/github/actions/workflow/status/4matic/trackparse/python.yml?branch=main&label=tests&logo=github)](https://github.com/4matic/trackparse/actions/workflows/python.yml)
6
6
  [![license](https://img.shields.io/badge/license-MIT-blue)](https://github.com/4matic/trackparse/blob/main/LICENSE)
7
7
 
8
+ **[Documentation](https://4matic.github.io/trackparse/)** · **[Getting started](https://4matic.github.io/trackparse/start/getting-started/)** · **[Playground](https://4matic.github.io/trackparse/playground/)**
9
+
8
10
  **Turn messy track names into structured data: who made it, who's featured, who remixed it, and
9
11
  what's just noise.**
10
12
 
@@ -37,6 +39,8 @@ uv add trackparse
37
39
 
38
40
  ## Quick start
39
41
 
42
+ **Docs:** [Getting started](https://4matic.github.io/trackparse/start/getting-started/)
43
+
40
44
  ```python
41
45
  from trackparse import format_track, parse
42
46
 
@@ -108,6 +112,8 @@ print(json.dumps(track.to_dict(), indent=2))
108
112
 
109
113
  ## API
110
114
 
115
+ **Docs:** [Other functions](https://4matic.github.io/trackparse/reference/functions/)
116
+
111
117
  ```python
112
118
  parse(input, *, mode="auto", uploader=None, known_artists=(), split_and="auto", keywords=None) -> ParsedTrack
113
119
  parse_artists(input, *, <same options>) -> list[Artist]
@@ -121,6 +127,8 @@ SPEC_VERSION, __version__
121
127
 
122
128
  ### `parse(input, **options)`
123
129
 
130
+ **Docs:** [parse and ParsedTrack](https://4matic.github.io/trackparse/reference/parse/) · [Options](https://4matic.github.io/trackparse/reference/options/)
131
+
124
132
  | Option | Default | |
125
133
  |---|---|---|
126
134
  | `mode` | `"auto"` | `"clean"`, `"youtube"`, `"filename"`, `"tracklist"`, or `"auto"` to detect from the string |
@@ -161,6 +169,8 @@ the defaults. Passing something that isn't a `str` raises `TypeError`.
161
169
 
162
170
  ### `ParsedTrack`
163
171
 
172
+ **Docs:** [ParsedTrack fields](https://4matic.github.io/trackparse/reference/parse/#parsedtrack)
173
+
164
174
  | Attribute | Type | |
165
175
  |---|---|---|
166
176
  | `input` | `str` | The original string, untouched |
@@ -197,12 +207,14 @@ parse("Queen - Bohemian Rhapsody (Live at Wembley 1986)").versions[0]
197
207
  ```
198
208
 
199
209
  Version types, junk kinds and warnings are listed in the
200
- [main README](https://github.com/4matic/trackparse#api) and typed as `Literal` aliases
210
+ [API reference](https://4matic.github.io/trackparse/reference/parse/) and typed as `Literal` aliases
201
211
  (`VersionType`, `JunkKind`, `Warning`, `ArtistRole`, `ArtistSource`, `Mode`, `ModeOption`,
202
212
  `VersionDelimiter`).
203
213
 
204
214
  ### `to_dict()` and `from_dict()`
205
215
 
216
+ **Docs:** [JSON and Python objects](https://4matic.github.io/trackparse/reference/parse/#json-and-python-objects)
217
+
206
218
  Every result class has `to_dict()`, which returns plain dicts and lists matching
207
219
  [`parsed-track.schema.json`](https://github.com/4matic/trackparse/blob/main/spec/schema/parsed-track.schema.json)
208
220
  (`fullTitle`, `unknownArtist`, ...). With `json.dumps(track.to_dict(), separators=(",", ":"),
@@ -215,6 +227,8 @@ ParsedTrack.from_dict(track.to_dict()) == track # True
215
227
 
216
228
  ### `parse_artists(input, **options)`
217
229
 
230
+ **Docs:** [parseArtists](https://4matic.github.io/trackparse/reference/functions/#parseartistsinput-options)
231
+
218
232
  Splits a bare artist string. Takes the same options as `parse`.
219
233
 
220
234
  ```python
@@ -226,6 +240,8 @@ from trackparse import parse_artists
226
240
 
227
241
  ### `format_track(track, **options)`
228
242
 
243
+ **Docs:** [format](https://4matic.github.io/trackparse/reference/functions/#formattrack-options) · [Formatting](https://4matic.github.io/trackparse/guides/formatting/)
244
+
229
245
  Renders a track back to a string.
230
246
 
231
247
  | Option | Default | |
@@ -255,6 +271,8 @@ format_track(track, position=True)
255
271
 
256
272
  ### `normalize(s)`
257
273
 
274
+ **Docs:** [normalize](https://4matic.github.io/trackparse/reference/functions/#normalizeinput)
275
+
258
276
  The Unicode cleanup every function runs first: NFC, invisible characters, and dash, bracket and
259
277
  quote variants.
260
278
 
@@ -267,6 +285,8 @@ normalize("Noisia​ – Stigma (VIP)")
267
285
 
268
286
  ### `all_artists(track)`
269
287
 
288
+ **Docs:** [allArtists](https://4matic.github.io/trackparse/reference/functions/#allartiststrack)
289
+
270
290
  Credits plus every remixer, deduplicated.
271
291
 
272
292
  ```python
@@ -278,6 +298,8 @@ from trackparse import all_artists
278
298
 
279
299
  ### `create_parser(**options)`
280
300
 
301
+ **Docs:** [createParser](https://4matic.github.io/trackparse/reference/functions/#createparseroptions)
302
+
281
303
  Compiles the options once, for many calls. Per-call options are merged over the parser's: a value
282
304
  passed per call replaces the base one (`known_artists` included), `None` leaves it alone, and
283
305
  `keywords` dicts are merged.
@@ -300,6 +322,8 @@ released together and always share one version number.
300
322
 
301
323
  ## Modes
302
324
 
325
+ **Docs:** [Modes](https://4matic.github.io/trackparse/guides/modes/)
326
+
303
327
  | Mode | For | Adds |
304
328
  |---|---|---|
305
329
  | `clean` | Store metadata, tags | Only a spaced dash separates artist and title |
@@ -323,6 +347,8 @@ parse("Shelter", mode="youtube", uploader="Porter Robinson").artists
323
347
 
324
348
  ## Tracklists
325
349
 
350
+ **Docs:** [Tracklists](https://4matic.github.io/trackparse/guides/tracklists/) · [Editing tracklists](https://4matic.github.io/trackparse/guides/editing-tracklists/)
351
+
326
352
  `trackparse.tracklist` parses a whole tracklist, one entry per line, and checks it. Each entry
327
353
  keeps its line exactly as written plus its own line ending, so `"".join(e.raw + e.eol for e in
328
354
  tl.entries)` is always the input, CRLF or not.
@@ -415,7 +441,7 @@ Warning codes: `time-missing`, `time-out-of-order`, `time-duplicate`, `no-start-
415
441
  `position-duplicate`, `line-unparsed`. Edits: `set-time {line, seconds}`, `shift {seconds, lines? | from?}`
416
442
  (all timed lines when neither is given), `sort-by-time {}`, `set-rest {line, rest}`,
417
443
  `insert {after, text}` (`after: 0` inserts at the top), `delete {line}`. The
418
- [main README](https://github.com/4matic/trackparse#tracklist-api) explains each one.
444
+ [Tracklist API reference](https://4matic.github.io/trackparse/reference/tracklist/) explains each one.
419
445
  `to_dict()` gives the camelCase JSON from
420
446
  [`tracklist.schema.json`](https://github.com/4matic/trackparse/blob/main/spec/schema/tracklist.schema.json),
421
447
  byte-identical to the JS package's output.
@@ -432,6 +458,8 @@ parse("Electrosoul System - Liquid Metal", mode="tracklist").title
432
458
 
433
459
  ## Typing
434
460
 
461
+ **Docs:** [Types](https://4matic.github.io/trackparse/reference/parse/#types)
462
+
435
463
  The package ships `py.typed` and passes `mypy --strict`. `ParsedTrack`, `Artist`, `Version`,
436
464
  `Junk`, `Flags`, `Position` and `Timestamp` are frozen dataclasses with snake_case attributes, and
437
465
  so are the tracklist results in `trackparse.tracklist`.
@@ -460,8 +488,11 @@ same spec rule IDs. Behaviour changes start in the spec, not here: see
460
488
 
461
489
  ## Links
462
490
 
491
+ - [Documentation](https://4matic.github.io/trackparse/), with every example in Python and JavaScript, and a
492
+ [playground](https://4matic.github.io/trackparse/playground/) that runs the parser in your browser
463
493
  - [Spec](https://github.com/4matic/trackparse/blob/main/spec/SPEC.md)
464
- - [Project README](https://github.com/4matic/trackparse#readme), with a table of real outputs
494
+ - [Project README](https://github.com/4matic/trackparse#readme)
495
+ - [GitHub repository](https://github.com/4matic/trackparse)
465
496
  - [Changelog](https://github.com/4matic/trackparse/blob/main/python/CHANGELOG.md)
466
497
  - [npm package](https://www.npmjs.com/package/trackparse)
467
498
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "trackparse"
7
- version = "0.3.1"
7
+ version = "0.3.3"
8
8
  description = "Spec-driven parser for music track titles and tracklists: artists, feat, remixes, versions, junk, positions, times."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.9"
@@ -44,7 +44,8 @@ classifiers = [
44
44
  dependencies = []
45
45
 
46
46
  [project.urls]
47
- Homepage = "https://github.com/4matic/trackparse"
47
+ Homepage = "https://4matic.github.io/trackparse/"
48
+ Documentation = "https://4matic.github.io/trackparse/start/getting-started/"
48
49
  Repository = "https://github.com/4matic/trackparse"
49
50
  Issues = "https://github.com/4matic/trackparse/issues"
50
51
  Changelog = "https://github.com/4matic/trackparse/blob/main/python/CHANGELOG.md"
@@ -33,7 +33,7 @@ from .types import (
33
33
  Warning,
34
34
  )
35
35
 
36
- __version__ = "0.3.1" # x-release-please-version
36
+ __version__ = "0.3.3" # x-release-please-version
37
37
 
38
38
  __all__ = [
39
39
  "SPEC_VERSION",
@@ -5,7 +5,7 @@ from __future__ import annotations
5
5
 
6
6
  from typing import Any
7
7
 
8
- SPEC_VERSION = "0.3.1" # x-release-please-version
8
+ SPEC_VERSION = "0.3.3" # x-release-please-version
9
9
 
10
10
  # spec/data/descriptors.json
11
11
  DESCRIPTORS_DATA: dict[str, Any] = {
File without changes
File without changes