213
213
ZeroOrOne = "?"
214
214
215
215
216
+ def _n3 (
217
+ arg : Union ["URIRef" , "Path" ], namespace_manager : Optional ["NamespaceManager" ] = None
218
+ ) -> str :
219
+ # type error: Item "Path" of "Union[Path, URIRef]" has no attribute "n3" [union-attr]
220
+ if isinstance (arg , (SequencePath , AlternativePath )) and len (arg .args ) > 1 :
221
+ return "(%s)" % arg .n3 (namespace_manager )
222
+ return arg .n3 (namespace_manager ) # type: ignore[union-attr]
223
+
224
+
216
225
@total_ordering
217
226
class Path :
218
227
__or__ : Callable [["Path" , Union ["URIRef" , "Path" ]], "AlternativePath" ]
@@ -260,8 +269,7 @@ def __repr__(self) -> str:
260
269
return "Path(~%s)" % (self .arg ,)
261
270
262
271
def n3 (self , namespace_manager : Optional ["NamespaceManager" ] = None ) -> str :
263
- # type error: Item "Path" of "Union[Path, URIRef]" has no attribute "n3" [union-attr]
264
- return "^%s" % self .arg .n3 (namespace_manager ) # type: ignore[union-attr]
272
+ return "^%s" % _n3 (self .arg , namespace_manager )
265
273
266
274
267
275
class SequencePath (Path ):
@@ -318,8 +326,7 @@ def __repr__(self) -> str:
318
326
return "Path(%s)" % " / " .join (str (x ) for x in self .args )
319
327
320
328
def n3 (self , namespace_manager : Optional ["NamespaceManager" ] = None ) -> str :
321
- # type error: Item "Path" of "Union[Path, URIRef]" has no attribute "n3" [union-attr]
322
- return "/" .join (a .n3 (namespace_manager ) for a in self .args ) # type: ignore[union-attr]
329
+ return "/" .join (_n3 (a , namespace_manager ) for a in self .args )
323
330
324
331
325
332
class AlternativePath (Path ):
@@ -345,8 +352,7 @@ def __repr__(self) -> str:
345
352
return "Path(%s)" % " | " .join (str (x ) for x in self .args )
346
353
347
354
def n3 (self , namespace_manager : Optional ["NamespaceManager" ] = None ) -> str :
348
- # type error: Item "Path" of "Union[Path, URIRef]" has no attribute "n3" [union-attr]
349
- return "|" .join (a .n3 (namespace_manager ) for a in self .args ) # type: ignore[union-attr]
355
+ return "|" .join (_n3 (a , namespace_manager ) for a in self .args )
350
356
351
357
352
358
class MulPath (Path ):
@@ -470,8 +476,7 @@ def __repr__(self) -> str:
470
476
return "Path(%s%s)" % (self .path , self .mod )
471
477
472
478
def n3 (self , namespace_manager : Optional ["NamespaceManager" ] = None ) -> str :
473
- # type error: Item "Path" of "Union[Path, URIRef]" has no attribute "n3" [union-attr]
474
- return "%s%s" % (self .path .n3 (namespace_manager ), self .mod ) # type: ignore[union-attr]
479
+ return "%s%s" % (_n3 (self .path , namespace_manager ), self .mod )
475
480
476
481
477
482
class NegatedPath (Path ):
@@ -505,8 +510,7 @@ def __repr__(self) -> str:
505
510
return "Path(! %s)" % "," .join (str (x ) for x in self .args )
506
511
507
512
def n3 (self , namespace_manager : Optional ["NamespaceManager" ] = None ) -> str :
508
- # type error: Item "Path" of "Union[Path, URIRef]" has no attribute "n3" [union-attr]
509
- return "!(%s)" % ("|" .join (arg .n3 (namespace_manager ) for arg in self .args )) # type: ignore[union-attr]
513
+ return "!(%s)" % ("|" .join (_n3 (arg , namespace_manager ) for arg in self .args ))
510
514
511
515
512
516
class PathList (list ):
0 commit comments