| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- """
- uritemplate.api
- ===============
- This module contains the very simple API provided by uritemplate.
- """
- import typing as t
- from uritemplate import variable
- from uritemplate.orderedset import OrderedSet
- from uritemplate.template import URITemplate
- __all__ = ("OrderedSet", "URITemplate", "expand", "partial", "variables")
- def expand(
- uri: str,
- var_dict: t.Optional[variable.VariableValueDict] = None,
- **kwargs: variable.VariableValue,
- ) -> str:
- """Expand the template with the given parameters.
- :param str uri: The templated URI to expand
- :param dict var_dict: Optional dictionary with variables and values
- :param kwargs: Alternative way to pass arguments
- :returns: str
- Example::
- expand('https://api.github.com{/end}', {'end': 'users'})
- expand('https://api.github.com{/end}', end='gists')
- .. note:: Passing values by both parts, may override values in
- ``var_dict``. For example::
- expand('https://{var}', {'var': 'val1'}, var='val2')
- ``val2`` will be used instead of ``val1``.
- """
- return URITemplate(uri).expand(var_dict, **kwargs)
- def partial(
- uri: str,
- var_dict: t.Optional[variable.VariableValueDict] = None,
- **kwargs: variable.VariableValue,
- ) -> URITemplate:
- """Partially expand the template with the given parameters.
- If all of the parameters for the template are not given, return a
- partially expanded template.
- :param dict var_dict: Optional dictionary with variables and values
- :param kwargs: Alternative way to pass arguments
- :returns: :class:`URITemplate`
- Example::
- t = URITemplate('https://api.github.com{/end}')
- t.partial() # => URITemplate('https://api.github.com{/end}')
- """
- return URITemplate(uri).partial(var_dict, **kwargs)
- def variables(uri: str) -> OrderedSet:
- """Parse the variables of the template.
- This returns all of the variable names in the URI Template.
- :returns: Set of variable names
- :rtype: set
- Example::
- variables('https://api.github.com{/end})
- # => {'end'}
- variables('https://api.github.com/repos{/username}{/repository}')
- # => {'username', 'repository'}
- """
- return OrderedSet(URITemplate(uri).variable_names)
|