12
12
from ..parsers import ParserSet
13
13
from ..utils import is_url_ish
14
14
from .errors import UnsupportedUrlScheme
15
- from .readers import HttpSchemaReader , LocalSchemaReader
15
+ from .readers import HttpSchemaReader , LocalSchemaReader , StdinSchemaReader
16
16
from .resolver import make_reference_registry
17
17
18
18
@@ -47,7 +47,7 @@ def set_defaults_then_validate(
47
47
class SchemaLoaderBase :
48
48
def get_validator (
49
49
self ,
50
- path : pathlib .Path ,
50
+ path : pathlib .Path | str ,
51
51
instance_doc : dict [str , t .Any ],
52
52
format_opts : FormatOptions ,
53
53
fill_defaults : bool ,
@@ -82,15 +82,22 @@ def __init__(
82
82
self ._parsers = ParserSet ()
83
83
84
84
# setup a schema reader lazily, when needed
85
- self ._reader : LocalSchemaReader | HttpSchemaReader | None = None
85
+ self ._reader : LocalSchemaReader | HttpSchemaReader | StdinSchemaReader | None = (
86
+ None
87
+ )
86
88
87
89
@property
88
- def reader (self ) -> LocalSchemaReader | HttpSchemaReader :
90
+ def reader (self ) -> LocalSchemaReader | HttpSchemaReader | StdinSchemaReader :
89
91
if self ._reader is None :
90
92
self ._reader = self ._get_schema_reader ()
91
93
return self ._reader
92
94
93
- def _get_schema_reader (self ) -> LocalSchemaReader | HttpSchemaReader :
95
+ def _get_schema_reader (
96
+ self ,
97
+ ) -> LocalSchemaReader | HttpSchemaReader | StdinSchemaReader :
98
+ if self .schemafile == "-" :
99
+ return StdinSchemaReader ()
100
+
94
101
if self .url_info is None or self .url_info .scheme in ("file" , "" ):
95
102
return LocalSchemaReader (self .schemafile )
96
103
@@ -117,7 +124,7 @@ def get_schema(self) -> dict[str, t.Any]:
117
124
118
125
def get_validator (
119
126
self ,
120
- path : pathlib .Path ,
127
+ path : pathlib .Path | str ,
121
128
instance_doc : dict [str , t .Any ],
122
129
format_opts : FormatOptions ,
123
130
fill_defaults : bool ,
@@ -189,7 +196,7 @@ def __init__(self, base_uri: str | None = None) -> None:
189
196
190
197
def get_validator (
191
198
self ,
192
- path : pathlib .Path ,
199
+ path : pathlib .Path | str ,
193
200
instance_doc : dict [str , t .Any ],
194
201
format_opts : FormatOptions ,
195
202
fill_defaults : bool ,
0 commit comments