|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
3 | 3 | from string.templatelib import Template |
4 | | -from typing import Protocol, cast |
| 4 | +from typing import Annotated, Protocol, cast |
5 | 5 |
|
6 | 6 | from . import tstring_bindings as _bindings |
7 | 7 | from ._profiles import ( |
|
14 | 14 | ) |
15 | 15 | from ._types import JsonValue, TomlValue, YamlValue |
16 | 16 |
|
| 17 | +type JsonTemplate = Annotated[Template, "json"] |
| 18 | +type TomlTemplate = Annotated[Template, "toml"] |
| 19 | +type YamlTemplate = Annotated[Template, "yaml"] |
| 20 | + |
17 | 21 |
|
18 | 22 | class _RenderJson(Protocol): |
19 | | - def __call__(self, template: Template, profile: JsonProfile) -> JsonValue: ... |
| 23 | + def __call__(self, template: JsonTemplate, profile: JsonProfile) -> JsonValue: ... |
20 | 24 |
|
21 | 25 |
|
22 | 26 | class _RenderJsonText(Protocol): |
23 | | - def __call__(self, template: Template, profile: JsonProfile) -> str: ... |
| 27 | + def __call__(self, template: JsonTemplate, profile: JsonProfile) -> str: ... |
24 | 28 |
|
25 | 29 |
|
26 | 30 | class _RenderToml(Protocol): |
27 | | - def __call__(self, template: Template, profile: TomlProfile) -> TomlValue: ... |
| 31 | + def __call__(self, template: TomlTemplate, profile: TomlProfile) -> TomlValue: ... |
28 | 32 |
|
29 | 33 |
|
30 | 34 | class _RenderTomlText(Protocol): |
31 | | - def __call__(self, template: Template, profile: TomlProfile) -> str: ... |
| 35 | + def __call__(self, template: TomlTemplate, profile: TomlProfile) -> str: ... |
32 | 36 |
|
33 | 37 |
|
34 | 38 | class _RenderYaml(Protocol): |
35 | | - def __call__(self, template: Template, profile: YamlProfile) -> YamlValue: ... |
| 39 | + def __call__(self, template: YamlTemplate, profile: YamlProfile) -> YamlValue: ... |
36 | 40 |
|
37 | 41 |
|
38 | 42 | class _RenderYamlText(Protocol): |
39 | | - def __call__(self, template: Template, profile: YamlProfile) -> str: ... |
| 43 | + def __call__(self, template: YamlTemplate, profile: YamlProfile) -> str: ... |
40 | 44 |
|
41 | 45 |
|
42 | 46 | class _BindingsContract(Protocol): |
@@ -101,37 +105,37 @@ def _require_extension_contract() -> _BindingsContract: |
101 | 105 |
|
102 | 106 |
|
103 | 107 | def render_json( |
104 | | - template: Template, *, profile: JsonProfile | str | None = None |
| 108 | + template: JsonTemplate, *, profile: JsonProfile | str | None = None |
105 | 109 | ) -> JsonValue: |
106 | 110 | return _render_json(template, resolve_json_profile(profile)) |
107 | 111 |
|
108 | 112 |
|
109 | 113 | def render_json_text( |
110 | | - template: Template, *, profile: JsonProfile | str | None = None |
| 114 | + template: JsonTemplate, *, profile: JsonProfile | str | None = None |
111 | 115 | ) -> str: |
112 | 116 | return _render_json_text(template, resolve_json_profile(profile)) |
113 | 117 |
|
114 | 118 |
|
115 | 119 | def render_toml( |
116 | | - template: Template, *, profile: TomlProfile | str | None = None |
| 120 | + template: TomlTemplate, *, profile: TomlProfile | str | None = None |
117 | 121 | ) -> TomlValue: |
118 | 122 | return _render_toml(template, resolve_toml_profile(profile)) |
119 | 123 |
|
120 | 124 |
|
121 | 125 | def render_toml_text( |
122 | | - template: Template, *, profile: TomlProfile | str | None = None |
| 126 | + template: TomlTemplate, *, profile: TomlProfile | str | None = None |
123 | 127 | ) -> str: |
124 | 128 | return _render_toml_text(template, resolve_toml_profile(profile)) |
125 | 129 |
|
126 | 130 |
|
127 | 131 | def render_yaml( |
128 | | - template: Template, *, profile: YamlProfile | str | None = None |
| 132 | + template: YamlTemplate, *, profile: YamlProfile | str | None = None |
129 | 133 | ) -> YamlValue: |
130 | 134 | return _render_yaml(template, resolve_yaml_profile(profile)) |
131 | 135 |
|
132 | 136 |
|
133 | 137 | def render_yaml_text( |
134 | | - template: Template, *, profile: YamlProfile | str | None = None |
| 138 | + template: YamlTemplate, *, profile: YamlProfile | str | None = None |
135 | 139 | ) -> str: |
136 | 140 | return _render_yaml_text(template, resolve_yaml_profile(profile)) |
137 | 141 |
|
|
0 commit comments