Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/python-hyper/uritemplate
URI template parsing per RFC6570
https://github.com/python-hyper/uritemplate
python rfc6570 uri uritemplate
Last synced: 13 days ago
JSON representation
URI template parsing per RFC6570
- Host: GitHub
- URL: https://github.com/python-hyper/uritemplate
- Owner: python-hyper
- License: other
- Created: 2013-05-14T16:52:08.000Z (over 11 years ago)
- Default Branch: main
- Last Pushed: 2024-10-28T23:23:43.000Z (16 days ago)
- Last Synced: 2024-10-29T15:53:43.430Z (15 days ago)
- Topics: python, rfc6570, uri, uritemplate
- Language: Python
- Homepage: https://uritemplate.readthedocs.io/en/latest/
- Size: 234 KB
- Stars: 231
- Watchers: 13
- Forks: 32
- Open Issues: 11
-
Metadata Files:
- Readme: README.rst
- Changelog: HISTORY.rst
- License: LICENSE
- Authors: AUTHORS.rst
Awesome Lists containing this project
README
uritemplate
===========Documentation_ -- GitHub_ -- Travis-CI_
Simple python library to deal with `URI Templates`_. The API looks like
.. code-block:: python
from uritemplate import URITemplate, expand
# NOTE: URI params must be strings not integers
gist_uri = 'https://api.github.com/users/sigmavirus24/gists{/gist_id}'
t = URITemplate(gist_uri)
print(t.expand(gist_id='123456'))
# => https://api.github.com/users/sigmavirus24/gists/123456# or
print(expand(gist_uri, gist_id='123456'))# also
t.expand({'gist_id': '123456'})
print(expand(gist_uri, {'gist_id': '123456'}))Where it might be useful to have a class
.. code-block:: python
import requests
class GitHubUser(object):
url = URITemplate('https://api.github.com/user{/login}')
def __init__(self, name):
self.api_url = url.expand(login=name)
response = requests.get(self.api_url)
if response.status_code == 200:
self.__dict__.update(response.json())When the module containing this class is loaded, ``GitHubUser.url`` is
evaluated and so the template is created once. It's often hard to notice in
Python, but object creation can consume a great deal of time and so can the
``re`` module which uritemplate relies on. Constructing the object once should
reduce the amount of time your code takes to run.Installing
----------::
pip install uritemplate
License
-------Modified BSD license_
.. _Documentation: https://uritemplate.readthedocs.io/
.. _GitHub: https://github.com/python-hyper/uritemplate
.. _Travis-CI: https://travis-ci.org/python-hyper/uritemplate
.. _URI Templates: https://tools.ietf.org/html/rfc6570
.. _license: https://github.com/python-hyper/uritemplate/blob/master/LICENSE