MCPcopy Create free account
hub / github.com/python-hyper/uritemplate / Operator

Class Operator

uritemplate/variable.py:43–169  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

41
42
43class Operator(enum.Enum):
44 # Section 2.2. Expressions
45 # expression = "{" [ operator ] variable-list "}"
46 # operator = op-level2 / op-level3 / op-reserve
47 # op-level2 = "+" / "#"
48 # op-level3 = "." / "/" / ";" / "?" / "&"
49 # op-reserve = "=" / "," / "!" / "@" / "|"
50 default = "" # 3.2.2. Simple String Expansiona: {var}
51 # Operator Level 2 (op-level2)
52 reserved = "+" # 3.2.3. Reserved Expansion: {+var}
53 fragment = "#" # 3.2.4. Fragment Expansion: {#var}
54 # Operator Level 3 (op-level3)
55 # 3.2.5. Label Expansion with Dot-Prefix: {.var}
56 label_with_dot_prefix = "."
57 path_segment = "/" # 3.2.6. Path Segment Expansion: {/var}
58 path_style_parameter = (
59 ";" # 3.2.7. Path-Style Parameter Expansion: {;var}
60 )
61 form_style_query = "?" # 3.2.8. Form-Style Query Expansion: {?var}
62 # 3.2.9. Form-Style Query Continuation: {&var}
63 form_style_query_continuation = "&"
64 # Reserved Operators (op-reserve)
65 reserved_eq = "="
66 reserved_comma = ","
67 reserved_bang = "!"
68 reserved_at = "@"
69 reserved_pipe = "|"
70
71 def reserved_characters(self) -> str:
72 # TODO: Re-enable after un-commenting 3.9
73 # match self:
74 # case Operator.reserved:
75 # return _RESERVED_CHARACTERS + "%"
76 # # case Operator.default | Operator.reserved | Operator.fragment:
77 # case Operator.fragment:
78 # return _RESERVED_CHARACTERS
79 # case _:
80 # return ""
81 if self == Operator.reserved:
82 return _RESERVED_CHARACTERS + "%"
83 if self == Operator.fragment:
84 return _RESERVED_CHARACTERS
85 return ""
86
87 def expansion_separator(self) -> str:
88 """Identify the separator used during expansion.
89
90 Per `Section 3.2.1. Variable Expansion`_:
91
92 ====== =========== =========
93 Type Separator
94 ====== =========== =========
95 ``","`` (default)
96 ``+`` ``","``
97 ``#`` ``","``
98 ``.`` ``"."``
99 ``/`` ``"/"``
100 ``;`` ``";"``

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…