https://github.com/adriangb/routrie
https://github.com/adriangb/routrie
Last synced: 6 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/adriangb/routrie
- Owner: adriangb
- License: mit
- Created: 2022-01-12T00:23:11.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-14T23:10:59.000Z (about 2 years ago)
- Last Synced: 2025-04-15T19:50:19.025Z (10 days ago)
- Language: Jupyter Notebook
- Size: 63.5 KB
- Stars: 17
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# routrie

A Python wrapper for Rust's `path-tree` router ([path-tree repo], [path-tree crate]).
This is a blazingly fast HTTP URL router with support for matching path parameters and catch-all URLs.
Usage:
```python
from routrie import Router, Param# the generic parameter is the value being stored
# normally this will be an endpoint / route instance
router = Router(
{
"/users": 1,
"/users/:id": 2,
"/user/repo/*any": 3,
}
)matched = router.find("/foo-bar-baz")
assert matched is Nonematched = router.find("/users/routrie")
assert matched is not None
value, params = matched
assert value == 2
assert params[0].name == "id"
assert params[0].value == "routrie"matched = router.find("/users")
assert matched is not None
value, params = matched
assert value == 1
assert params == []matched = router.find("/users/repos/)
assert matched is not None
value, params = matched
assert value == 3
assert params == []matched = router.find("/users/repos/something)
assert matched is not None
value, params = matched
assert value == 3
assert params[0].name = "any"
assert params[0].value = "something"
```## Contributing
1. Clone the repo.
1. Run `make init`
1. Run `make test`
1. Make your changes
1. Push and open a pull request
1. Wait for CI to run.If your pull request gets approved and merged, it will automatically be relased to PyPi (every commit to `main` is released).
[path-tree repo]: https://github.com/viz-rs/path-tree
[path-tree crate]: https://crates.io/crates/path-tree/0.1.8/dependencies