Skip to content

Commit e974b39

Browse files
committed
docs(CHANGES): Note addition of URL Parsers (experimental)
1 parent eda3dd2 commit e974b39

1 file changed

Lines changed: 37 additions & 0 deletions

File tree

CHANGES

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,43 @@ $ pip install --user --upgrade --pre libvcs
1313

1414
- _Add your latest changes from PRs here_
1515

16+
### What's new
17+
18+
- **Parser**: Experimental VCS URL parsing added ({issue}`376`):
19+
20+
VCS Parsers return {func}`dataclasses.dataclass` instances. The new tools support validation,
21+
parsing, mutating and exporting into URLs consumable by the VCS.
22+
23+
::: {warning}
24+
25+
APIs are unstable and subject to break until we get it right.
26+
27+
:::
28+
29+
- {mod}`libvcs.parse.git` - Parse git URLs
30+
31+
- {class}`~libvcs.parse.git.GitURL` - Parse git URLs
32+
- {meth}`~libvcs.parse.git.GitURL.is_valid`
33+
- {meth}`~libvcs.parse.git.GitURL.to_url` - export `git clone`-compatible URL
34+
35+
- {mod}`libvcs.parse.hg`
36+
37+
- {class}`~libvcs.parse.hg.HgURL` - Parse Mercurial URLs
38+
- {meth}`~libvcs.parse.hg.HgURL.is_valid`
39+
- {meth}`~libvcs.parse.hg.HgURL.to_url` - export `hg clone`-compatible URL
40+
41+
- {mod}`libvcs.parse.svn`
42+
43+
- {class}`~libvcs.parse.svn.SvnURL` - Parse Subversion URLs
44+
- {meth}`~libvcs.parse.svn.SvnURL.is_valid`
45+
- {meth}`~libvcs.parse.svn.SvnURL.to_url` - export `svn checkout`-compatible URL
46+
47+
Detection can be extended through writing {class}`~libvcs.parse.base.Matcher`s and adding them to
48+
the classes' {class}`~libvcs.parse.base.MatcherRegistry`
49+
50+
You can write your own VCS parser by implementing {class}`~libvcs.parse.base.URLProtocol`, but it
51+
would be most efficient if you studied the source of the `git(1)` parser to see how it's done.
52+
1653
### Breaking changes
1754

1855
- {issue}`379` Support for `git+git` URLs removed. Pip removed these in 21.0 due to them being

0 commit comments

Comments
 (0)