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.
- {trackparse-0.3.1 → trackparse-0.3.3}/PKG-INFO +37 -5
- {trackparse-0.3.1 → trackparse-0.3.3}/README.md +34 -3
- {trackparse-0.3.1 → trackparse-0.3.3}/pyproject.toml +3 -2
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/__init__.py +1 -1
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_data.py +1 -1
- {trackparse-0.3.1 → trackparse-0.3.3}/.gitignore +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/LICENSE +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_artists.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_assemble.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_classify.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_context.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_credits.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_digits.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_format.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_mode.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_normalize.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_parser.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_prefix.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_scanner.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_separator.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tables.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_title.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_edits.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_kinds.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_options.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_parse.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_positions.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_split.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_times.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_types.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_tracklist_warnings.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/_words.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/options.py +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/py.typed +0 -0
- {trackparse-0.3.1 → trackparse-0.3.3}/src/trackparse/tracklist.py +0 -0
- {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.
|
|
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.
|
|
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
|
[](https://github.com/4matic/trackparse/actions/workflows/python.yml)
|
|
38
39
|
[](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
|
-
[
|
|
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
|
-
[
|
|
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)
|
|
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
|
[](https://github.com/4matic/trackparse/actions/workflows/python.yml)
|
|
6
6
|
[](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
|
-
[
|
|
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
|
-
[
|
|
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)
|
|
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.
|
|
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.
|
|
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"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|