iolanta 2.1.15__py3-none-any.whl → 2.1.16__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- iolanta/entry_points.py +5 -8
- iolanta/errors.py +11 -6
- iolanta/facets/facet.py +8 -11
- iolanta/facets/textual_browser/app.py +26 -27
- iolanta/facets/textual_browser/history.py +3 -3
- iolanta/facets/textual_browser/page_switcher.py +16 -11
- iolanta/node_to_qname.py +3 -3
- iolanta/plugin.py +15 -14
- {iolanta-2.1.15.dist-info → iolanta-2.1.16.dist-info}/METADATA +1 -1
- {iolanta-2.1.15.dist-info → iolanta-2.1.16.dist-info}/RECORD +12 -12
- {iolanta-2.1.15.dist-info → iolanta-2.1.16.dist-info}/WHEEL +0 -0
- {iolanta-2.1.15.dist-info → iolanta-2.1.16.dist-info}/entry_points.txt +0 -0
iolanta/entry_points.py
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import sys
|
|
2
|
-
from typing import List,
|
|
2
|
+
from typing import List, TypeVar
|
|
3
3
|
|
|
4
|
-
PluginClass = TypeVar(
|
|
4
|
+
PluginClass = TypeVar("PluginClass")
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
if sys.version_info < (3, 10):
|
|
7
|
+
if sys.version_info < (3, 10): # pragma: no cover
|
|
8
8
|
from importlib_metadata import entry_points
|
|
9
|
-
else:
|
|
9
|
+
else: # pragma: no cover
|
|
10
10
|
from importlib.metadata import entry_points
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def plugins(group_name: str) -> List[PluginClass]:
|
|
14
14
|
"""List of plugin classes by group name."""
|
|
15
|
-
return [
|
|
16
|
-
entry_point.load() # type: ignore
|
|
17
|
-
for entry_point in entry_points(group=group_name) # type: ignore
|
|
18
|
-
]
|
|
15
|
+
return [entry_point.load() for entry_point in entry_points(group=group_name)]
|
iolanta/errors.py
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
from dataclasses import dataclass
|
|
2
|
-
from typing import Optional
|
|
4
|
+
from typing import TYPE_CHECKING, Optional
|
|
3
5
|
|
|
4
6
|
from documented import DocumentedError
|
|
5
7
|
from rdflib.term import Node
|
|
6
8
|
|
|
7
9
|
from iolanta.models import LDContext
|
|
8
10
|
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from iolanta.iolanta import Iolanta
|
|
13
|
+
|
|
9
14
|
|
|
10
15
|
@dataclass
|
|
11
16
|
class InsufficientDataForRender(DocumentedError):
|
|
@@ -14,7 +19,7 @@ class InsufficientDataForRender(DocumentedError):
|
|
|
14
19
|
"""
|
|
15
20
|
|
|
16
21
|
node: Node
|
|
17
|
-
iolanta:
|
|
22
|
+
iolanta: Iolanta
|
|
18
23
|
|
|
19
24
|
@property
|
|
20
25
|
def is_hopeless(self) -> bool:
|
|
@@ -22,9 +27,9 @@ class InsufficientDataForRender(DocumentedError):
|
|
|
22
27
|
|
|
23
28
|
if hopeless:
|
|
24
29
|
self.iolanta.logger.error(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
"%s could not be rendered, we could not retrieve describing "
|
|
31
|
+
"data "
|
|
32
|
+
"from the Web.",
|
|
28
33
|
self.node,
|
|
29
34
|
)
|
|
30
35
|
|
|
@@ -52,5 +57,5 @@ class UnresolvedIRI(DocumentedError):
|
|
|
52
57
|
|
|
53
58
|
iri: str
|
|
54
59
|
prefix: str
|
|
55
|
-
file: Optional[str] = None
|
|
60
|
+
file: Optional[str] = None # noqa: WPS110
|
|
56
61
|
context: Optional[LDContext] = None
|
iolanta/facets/facet.py
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import inspect
|
|
2
4
|
from dataclasses import dataclass, field
|
|
3
5
|
from functools import cached_property
|
|
4
6
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
7
|
+
from typing import TYPE_CHECKING, Generic, Optional, TypeVar, Union
|
|
6
8
|
|
|
7
9
|
from rdflib.term import Literal, Node
|
|
8
10
|
|
|
9
11
|
from iolanta.models import NotLiteralNode
|
|
10
12
|
from iolanta.query_result import QueryResult, SPARQLQueryArgument
|
|
11
13
|
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from iolanta.iolanta import Iolanta
|
|
16
|
+
|
|
12
17
|
FacetOutput = TypeVar("FacetOutput")
|
|
13
18
|
|
|
14
19
|
|
|
@@ -17,17 +22,9 @@ class Facet(Generic[FacetOutput]): # noqa: WPS214
|
|
|
17
22
|
"""Base facet class."""
|
|
18
23
|
|
|
19
24
|
this: Node
|
|
20
|
-
iolanta:
|
|
25
|
+
iolanta: Iolanta = field(repr=False)
|
|
21
26
|
as_datatype: Optional[NotLiteralNode] = None
|
|
22
27
|
|
|
23
|
-
def __post_init__(self):
|
|
24
|
-
if not isinstance(self.this, Node):
|
|
25
|
-
facet_name = self.__class__.__name__
|
|
26
|
-
this_type = type(self.this).__name__
|
|
27
|
-
raise ValueError(
|
|
28
|
-
f"Facet {facet_name} received a non-Node as this: {self.this} (type: {this_type})"
|
|
29
|
-
)
|
|
30
|
-
|
|
31
28
|
@property
|
|
32
29
|
def stored_queries_path(self) -> Path:
|
|
33
30
|
"""Construct directory for stored queries for this facet."""
|
|
@@ -50,7 +47,7 @@ class Facet(Generic[FacetOutput]): # noqa: WPS214
|
|
|
50
47
|
self,
|
|
51
48
|
node: Union[str, Node],
|
|
52
49
|
as_datatype: NotLiteralNode,
|
|
53
|
-
) ->
|
|
50
|
+
) -> object:
|
|
54
51
|
"""Shortcut to render something via iolanta."""
|
|
55
52
|
return self.iolanta.render(
|
|
56
53
|
node=node,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
from concurrent.futures import ThreadPoolExecutor
|
|
3
|
+
from typing import Any, cast
|
|
3
4
|
|
|
4
5
|
from rdflib.term import Node
|
|
5
6
|
from rich.console import RenderableType
|
|
@@ -14,7 +15,7 @@ from iolanta.facets.textual_browser.page_switcher import (
|
|
|
14
15
|
)
|
|
15
16
|
from iolanta.iolanta import Iolanta
|
|
16
17
|
|
|
17
|
-
POPUP_TIMEOUT = 30
|
|
18
|
+
POPUP_TIMEOUT = 30 # seconds
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class DevConsoleHandler(logging.Handler):
|
|
@@ -31,9 +32,10 @@ class DevConsoleHandler(logging.Handler):
|
|
|
31
32
|
self.console.write(message)
|
|
32
33
|
|
|
33
34
|
|
|
34
|
-
def _log_message_to_dev_console(app: App):
|
|
35
|
+
def _log_message_to_dev_console(app: App[None]):
|
|
35
36
|
"""Log a message to the dev console."""
|
|
36
|
-
|
|
37
|
+
|
|
38
|
+
def log_message_to_dev_console(message: str): # noqa: WPS430
|
|
37
39
|
try:
|
|
38
40
|
app.query_one(DevConsole).write(message)
|
|
39
41
|
except NoMatches:
|
|
@@ -42,7 +44,7 @@ def _log_message_to_dev_console(app: App):
|
|
|
42
44
|
return log_message_to_dev_console
|
|
43
45
|
|
|
44
46
|
|
|
45
|
-
class IolantaBrowser(App): # noqa: WPS214, WPS230
|
|
47
|
+
class IolantaBrowser(App[None]): # noqa: WPS214, WPS230
|
|
46
48
|
"""Browse Linked Data."""
|
|
47
49
|
|
|
48
50
|
def __init__(self, iolanta: Iolanta, this: Node):
|
|
@@ -53,19 +55,18 @@ class IolantaBrowser(App): # noqa: WPS214, WPS230
|
|
|
53
55
|
super().__init__()
|
|
54
56
|
|
|
55
57
|
BINDINGS = [ # noqa: WPS115
|
|
56
|
-
(
|
|
57
|
-
('q', 'quit', 'Quit'),
|
|
58
|
+
("q", "quit", "Quit"),
|
|
58
59
|
]
|
|
59
60
|
|
|
60
61
|
def compose(self) -> ComposeResult:
|
|
61
62
|
"""Compose widgets."""
|
|
62
|
-
yield Header(icon=
|
|
63
|
+
yield Header(icon="👁️")
|
|
63
64
|
yield Footer()
|
|
64
|
-
yield ConsoleSwitcher()
|
|
65
|
+
yield ConsoleSwitcher() # type: ignore[no-untyped-call]
|
|
65
66
|
|
|
66
67
|
def on_mount(self):
|
|
67
68
|
"""Set title."""
|
|
68
|
-
self.title =
|
|
69
|
+
self.title = "Iolanta"
|
|
69
70
|
|
|
70
71
|
logging.basicConfig(
|
|
71
72
|
level=logging.INFO,
|
|
@@ -79,38 +80,36 @@ class IolantaBrowser(App): # noqa: WPS214, WPS230
|
|
|
79
80
|
)
|
|
80
81
|
|
|
81
82
|
# Disable stderr logging, to not break the TUI.
|
|
82
|
-
# Remove only the stderr handler, keep file handler
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
# Remove only the stderr handler, keep file handler (loguru API)
|
|
84
|
+
loguru_logger = cast(Any, self.iolanta.logger)
|
|
85
|
+
logger_core = loguru_logger._core
|
|
86
|
+
for handler_id in list(logger_core.handlers.keys()):
|
|
87
|
+
log_handler = logger_core.handlers[handler_id]
|
|
88
|
+
if hasattr(log_handler, "sink") and str(log_handler.sink) == "<stderr>":
|
|
89
|
+
loguru_logger.remove(handler_id)
|
|
87
90
|
|
|
88
91
|
# Log to the dev console.
|
|
89
|
-
|
|
92
|
+
loguru_logger.add(
|
|
90
93
|
_log_message_to_dev_console(self),
|
|
91
|
-
level=
|
|
92
|
-
format=
|
|
94
|
+
level="INFO",
|
|
95
|
+
format="{time} {level} {message}",
|
|
93
96
|
)
|
|
94
97
|
|
|
95
|
-
|
|
98
|
+
loguru_logger.add(
|
|
96
99
|
lambda msg: self.notify(
|
|
97
100
|
msg,
|
|
98
|
-
severity=
|
|
101
|
+
severity="warning",
|
|
99
102
|
timeout=POPUP_TIMEOUT,
|
|
100
103
|
),
|
|
101
|
-
level=
|
|
102
|
-
format=
|
|
104
|
+
level="WARNING",
|
|
105
|
+
format="{message}",
|
|
103
106
|
)
|
|
104
107
|
|
|
105
|
-
def action_toggle_dark(self) -> None:
|
|
106
|
-
"""Toggle dark mode."""
|
|
107
|
-
self.dark = not self.dark
|
|
108
|
-
|
|
109
108
|
def action_goto(
|
|
110
109
|
self,
|
|
111
|
-
destination: str,
|
|
110
|
+
destination: Node | str,
|
|
112
111
|
facet_iri: str | None = None,
|
|
113
|
-
):
|
|
112
|
+
) -> None:
|
|
114
113
|
"""Go to an IRI."""
|
|
115
114
|
self.query_one(PageSwitcher).action_goto(destination, facet_iri)
|
|
116
115
|
|
|
@@ -2,16 +2,16 @@ from collections import deque
|
|
|
2
2
|
from dataclasses import dataclass, field
|
|
3
3
|
from typing import Generic, TypeVar
|
|
4
4
|
|
|
5
|
-
LocationType = TypeVar(
|
|
5
|
+
LocationType = TypeVar("LocationType")
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
@dataclass
|
|
9
9
|
class NavigationHistory(Generic[LocationType]):
|
|
10
10
|
"""Navigation history."""
|
|
11
11
|
|
|
12
|
-
past: deque = field(default_factory=deque)
|
|
12
|
+
past: deque[LocationType] = field(default_factory=deque)
|
|
13
13
|
current: LocationType | None = None
|
|
14
|
-
future: deque = field(default_factory=deque)
|
|
14
|
+
future: deque[LocationType] = field(default_factory=deque)
|
|
15
15
|
|
|
16
16
|
def goto(self, location: LocationType) -> LocationType:
|
|
17
17
|
"""Go to a location."""
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# noqa: WPS201
|
|
1
2
|
import functools
|
|
2
3
|
import threading
|
|
3
4
|
import uuid
|
|
@@ -21,6 +22,8 @@ from iolanta.models import NotLiteralNode
|
|
|
21
22
|
from iolanta.namespaces import DATATYPES
|
|
22
23
|
from iolanta.widgets.mixin import IolantaWidgetMixin
|
|
23
24
|
|
|
25
|
+
RENDER_IRI_WORKER_NAME = "render_iri"
|
|
26
|
+
|
|
24
27
|
|
|
25
28
|
@dataclass
|
|
26
29
|
class RenderResult:
|
|
@@ -37,7 +40,7 @@ class RenderResult:
|
|
|
37
40
|
is_reload: bool
|
|
38
41
|
|
|
39
42
|
|
|
40
|
-
class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
43
|
+
class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214, WPS338
|
|
41
44
|
"""
|
|
42
45
|
Container for open pages.
|
|
43
46
|
|
|
@@ -157,7 +160,7 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
|
157
160
|
renderable=renderable,
|
|
158
161
|
flip_options=flip_options,
|
|
159
162
|
facet_iri=facet_iri,
|
|
160
|
-
is_reload=is_reload,
|
|
163
|
+
is_reload=is_reload,git
|
|
161
164
|
)
|
|
162
165
|
|
|
163
166
|
def on_worker_state_changed( # noqa: WPS210
|
|
@@ -208,7 +211,7 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
|
208
211
|
def is_loading(self) -> bool:
|
|
209
212
|
"""Determine if the app is presently loading something."""
|
|
210
213
|
for worker in self.workers:
|
|
211
|
-
if worker.name ==
|
|
214
|
+
if worker.name == RENDER_IRI_WORKER_NAME:
|
|
212
215
|
return True
|
|
213
216
|
|
|
214
217
|
return False
|
|
@@ -229,7 +232,7 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
|
229
232
|
),
|
|
230
233
|
thread=True,
|
|
231
234
|
exclusive=True,
|
|
232
|
-
name=
|
|
235
|
+
name=RENDER_IRI_WORKER_NAME,
|
|
233
236
|
)
|
|
234
237
|
self.refresh_bindings()
|
|
235
238
|
|
|
@@ -241,7 +244,7 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
|
241
244
|
)
|
|
242
245
|
|
|
243
246
|
for worker in self.workers:
|
|
244
|
-
if worker.name ==
|
|
247
|
+
if worker.name == RENDER_IRI_WORKER_NAME:
|
|
245
248
|
worker.cancel()
|
|
246
249
|
break
|
|
247
250
|
|
|
@@ -268,9 +271,9 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
|
268
271
|
|
|
269
272
|
def action_goto(
|
|
270
273
|
self,
|
|
271
|
-
this: Node,
|
|
274
|
+
this: Node | str,
|
|
272
275
|
facet_iri: str | None = None,
|
|
273
|
-
):
|
|
276
|
+
) -> None:
|
|
274
277
|
"""Go to an IRI."""
|
|
275
278
|
# Convert string to Node if needed.
|
|
276
279
|
# This happens when called via Textual action strings (from keyboard bindings
|
|
@@ -293,21 +296,23 @@ class PageSwitcher(IolantaWidgetMixin, ContentSwitcher): # noqa: WPS214
|
|
|
293
296
|
),
|
|
294
297
|
thread=True,
|
|
295
298
|
exclusive=True,
|
|
296
|
-
name=
|
|
299
|
+
name=RENDER_IRI_WORKER_NAME,
|
|
297
300
|
)
|
|
298
301
|
self.refresh_bindings()
|
|
299
302
|
|
|
300
303
|
def action_back(self):
|
|
301
304
|
"""Go backward."""
|
|
302
305
|
self.current = self.history.back().page_id
|
|
303
|
-
|
|
306
|
+
page = self.visible_content
|
|
307
|
+
if page:
|
|
304
308
|
page.focus()
|
|
305
309
|
|
|
306
310
|
def action_forward(self):
|
|
307
311
|
"""Go forward."""
|
|
308
312
|
self.current = self.history.forward().page_id
|
|
309
313
|
self.focus()
|
|
310
|
-
|
|
314
|
+
page = self.visible_content
|
|
315
|
+
if page:
|
|
311
316
|
page.focus()
|
|
312
317
|
|
|
313
318
|
|
|
@@ -330,7 +335,7 @@ class ConsoleSwitcher(ContentSwitcher):
|
|
|
330
335
|
class DevConsole(RichLog):
|
|
331
336
|
"""Development console."""
|
|
332
337
|
|
|
333
|
-
BINDINGS = [
|
|
338
|
+
BINDINGS = [ # noqa: WPS115
|
|
334
339
|
("f12,escape", "close", "Close Console"),
|
|
335
340
|
]
|
|
336
341
|
|
iolanta/node_to_qname.py
CHANGED
|
@@ -22,16 +22,16 @@ def _object_to_qname(node: URIRef, graph: Graph):
|
|
|
22
22
|
@node_to_qname.instance(URIRef)
|
|
23
23
|
def _uriref_to_qname(node: URIRef, graph: Graph):
|
|
24
24
|
try:
|
|
25
|
-
qname = ComputedQName(*graph.compute_qname(node))
|
|
25
|
+
qname = ComputedQName(*graph.compute_qname(node))
|
|
26
26
|
|
|
27
27
|
except ValueError:
|
|
28
28
|
return node
|
|
29
29
|
|
|
30
30
|
except NameError as err:
|
|
31
|
-
logger.exception(f
|
|
31
|
+
logger.exception(f"NameError! On: {node} Error: {err}")
|
|
32
32
|
return node
|
|
33
33
|
|
|
34
|
-
if qname.namespace_name.startswith(
|
|
34
|
+
if qname.namespace_name.startswith("ns"):
|
|
35
35
|
return node
|
|
36
36
|
|
|
37
37
|
return qname
|
iolanta/plugin.py
CHANGED
|
@@ -1,43 +1,44 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
1
3
|
import inspect
|
|
2
4
|
from abc import ABC
|
|
3
5
|
from dataclasses import dataclass, field
|
|
4
6
|
from logging import Logger
|
|
5
7
|
from pathlib import Path
|
|
6
|
-
from typing import
|
|
7
|
-
|
|
8
|
-
from rdflib.term import Node
|
|
9
|
-
from typer import Typer
|
|
8
|
+
from typing import TYPE_CHECKING, Optional
|
|
10
9
|
|
|
11
10
|
from iolanta.models import TripleTemplate
|
|
12
11
|
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from typer import Typer # noqa: F401
|
|
14
|
+
|
|
15
|
+
from iolanta.iolanta import Iolanta
|
|
16
|
+
|
|
13
17
|
|
|
14
18
|
@dataclass
|
|
15
19
|
class Plugin(ABC):
|
|
16
20
|
"""Base Iolanta plugin."""
|
|
17
21
|
|
|
18
|
-
iolanta:
|
|
22
|
+
iolanta: Iolanta = field(repr=False)
|
|
19
23
|
|
|
20
24
|
@property
|
|
21
25
|
def logger(self) -> Logger:
|
|
22
26
|
return self.iolanta.logger
|
|
23
27
|
|
|
24
|
-
@property
|
|
25
|
-
def typer_app(self) -> Optional[Typer]:
|
|
26
|
-
"""Typer app for this plugin's CLI."""
|
|
27
|
-
return None
|
|
28
|
-
|
|
29
28
|
@property
|
|
30
29
|
def files_directory(self) -> Path:
|
|
31
|
-
return Path(inspect.getfile(self.__class__)).parent /
|
|
30
|
+
return Path(inspect.getfile(self.__class__)).parent / "data"
|
|
32
31
|
|
|
33
32
|
@property
|
|
34
33
|
def context_path(self) -> Optional[Path]:
|
|
35
|
-
|
|
34
|
+
context_path = self.files_directory / "context.yaml"
|
|
35
|
+
if context_path.is_file():
|
|
36
36
|
return context_path
|
|
37
37
|
|
|
38
38
|
@property
|
|
39
|
-
def data_files(self):
|
|
39
|
+
def data_files(self) -> Path:
|
|
40
|
+
"""Directory containing plugin data files."""
|
|
40
41
|
return self.files_directory
|
|
41
42
|
|
|
42
|
-
def retrieve_triple(self, triple_template: TripleTemplate):
|
|
43
|
+
def retrieve_triple(self, triple_template: TripleTemplate) -> None:
|
|
43
44
|
"""Save datasets which might describe the given node into project."""
|
|
@@ -20,8 +20,8 @@ iolanta/declension/data/declension.yamlld,sha256=xpHW458GS6Q2NQJxOzGxqeX-awvtlk6
|
|
|
20
20
|
iolanta/declension/facet.py,sha256=7SsPACjeIGnONLhfjB4KBjqt-FRISVpZenshJzqC0A8,1349
|
|
21
21
|
iolanta/declension/sparql/declension.sparql,sha256=T84bfCNDXodmFEH26S45DyOJHoWz3T4cC7hSwtAcFSw,185
|
|
22
22
|
iolanta/ensure_is_context.py,sha256=9aok8asyEx7KPesOR28VBDb3Ch9kfc3eoCpQSJwj07U,717
|
|
23
|
-
iolanta/entry_points.py,sha256=
|
|
24
|
-
iolanta/errors.py,sha256=
|
|
23
|
+
iolanta/entry_points.py,sha256=a7ZIUDNmZJFab1Xr8FqdJlQJB3J3wQN2QF4ajq3BvAo,440
|
|
24
|
+
iolanta/errors.py,sha256=3PSyhV3-XS89rCWvrjJrZZVUkNqiBtiCE4fDDfTlklE,1348
|
|
25
25
|
iolanta/facets/__init__.py,sha256=u0Ff76kmsXTaaFB8sCEfrgA_fP79rBxSqllh47d8Y0o,39
|
|
26
26
|
iolanta/facets/cli/__init__.py,sha256=3XfuW-qgis0sS66lt36R2inY_NGIjNg5oGWK8fchffs,150
|
|
27
27
|
iolanta/facets/cli/base.py,sha256=Fdb5PH_fPHRNexa1UgFChY4-ZFkxxVpGbAkW6yxXuIs,307
|
|
@@ -30,7 +30,7 @@ iolanta/facets/cli/record.py,sha256=-nIhe6hXkoI5LJtZhqBoT8ZkYGxlLwMDbPc-xmwNhrE,
|
|
|
30
30
|
iolanta/facets/cli/sparql/link.sparql,sha256=WtWEfLAvdGc2gP0IhZil6Vglkydc3VO24vk4GwRnR5I,163
|
|
31
31
|
iolanta/facets/cli/sparql/record.sparql,sha256=GBWkmNelvaSDbvl7v0-LsJHdjFPbsSAW49kNFOUeoGQ,63
|
|
32
32
|
iolanta/facets/errors.py,sha256=sEBmnzhFcRIgOT18hfNwyMMjry0waa6IB-jC2NVTA50,4124
|
|
33
|
-
iolanta/facets/facet.py,sha256=
|
|
33
|
+
iolanta/facets/facet.py,sha256=RpAUIISV61MinKlFJT15zSQTfG4aj5nKeTWrpSIOMT4,2178
|
|
34
34
|
iolanta/facets/foaf_person_title/__init__.py,sha256=oj4MNVQvv8Dysb27xiWjtZCii8-nT7-WFa3WMWUwbtU,67
|
|
35
35
|
iolanta/facets/foaf_person_title/facet.py,sha256=_lKtRosZWuKpjKZ3Ssdq79jVhiLE53jaf22Rnq4HCxs,634
|
|
36
36
|
iolanta/facets/foaf_person_title/sparql/names.sparql,sha256=p_2hHZXhEaJ8IwGlvLoN0vb0vhGqo44uAVRpDyTzflU,107
|
|
@@ -73,14 +73,14 @@ iolanta/facets/query/select_result_csv.py,sha256=Js5h_MJ-DgWGJbhypuLoJ0UiW7wsS8r
|
|
|
73
73
|
iolanta/facets/query/select_result_json.py,sha256=gajYXgROSWphYeimfO0W1xumsMLdpy_d57QgYQEI3a4,614
|
|
74
74
|
iolanta/facets/query/select_result_table.py,sha256=ePeUydu4bV7MZciZriPreIKgshrtfd8qn9qQC59hsBg,1236
|
|
75
75
|
iolanta/facets/textual_browser/__init__.py,sha256=sKgDvXOwib9n9d63kdtKCEv26-FoL0VN6zxDmfcheZ8,104
|
|
76
|
-
iolanta/facets/textual_browser/app.py,sha256=
|
|
76
|
+
iolanta/facets/textual_browser/app.py,sha256=YzS5rGA8euHM-tNjn2PlHPLaX0DttUDQuVHQeVsXDp4,3508
|
|
77
77
|
iolanta/facets/textual_browser/facet.py,sha256=5mX1l6P-Ga7buzXmItxSpta6G_D4Fvwv8H6mU8-3g80,742
|
|
78
|
-
iolanta/facets/textual_browser/history.py,sha256=
|
|
78
|
+
iolanta/facets/textual_browser/history.py,sha256=8QMFVWgoNjAcWokr_AuLeG50KldfjMG7LcE19I3c570,1115
|
|
79
79
|
iolanta/facets/textual_browser/home.py,sha256=GfDD1G2HiwdLkPkNdcYRqVIxDl5tWH9fewh_FJb8G-I,384
|
|
80
80
|
iolanta/facets/textual_browser/location.py,sha256=qWa7xUgaWKYOmiQuwI1TbyvujpKRb1pxJJZ8lFDcjKk,259
|
|
81
81
|
iolanta/facets/textual_browser/models.py,sha256=DqTBjhkkTt5mNwqr4DzNbPSqzV-QtNqfKj7wpn6T3ao,173
|
|
82
82
|
iolanta/facets/textual_browser/page.py,sha256=NkcQ5rSKZRbp63C8ozgsR_iVhcKHGv_SytUCQyGa7ss,786
|
|
83
|
-
iolanta/facets/textual_browser/page_switcher.py,sha256=
|
|
83
|
+
iolanta/facets/textual_browser/page_switcher.py,sha256=zVZroradbWKOdg2Gxopxd7k3_vumKq1HuzUuwCL4QVc,10617
|
|
84
84
|
iolanta/facets/textual_class/__init__.py,sha256=tiL0p-3JspGcBRj4qa3rmoBFAuadk71l2ja2lJN6CEs,75
|
|
85
85
|
iolanta/facets/textual_class/facets.py,sha256=MiGTapgt30ME2fapwdrD_yQj4mhkdmyMAjzxaoLW5Dk,6087
|
|
86
86
|
iolanta/facets/textual_class/sparql/instances.sparql,sha256=Wx3xThlEgwz8gqH5Fnv789p1CiBRJGLOhRpChtFq1Us,139
|
|
@@ -145,9 +145,9 @@ iolanta/mermaid/sparql/graph.sparql,sha256=mDGf05od3CUFhzI6rcqt5ZMVy-gSKDu-WxmV_
|
|
|
145
145
|
iolanta/mermaid/sparql/subgraphs.sparql,sha256=VuoOYr_ZtKXXRrBpAEJek0mBRzR9EV-KnKENgAbkzCs,71
|
|
146
146
|
iolanta/models.py,sha256=2VrJGQE1YXbbVB1K5McCXe2CLAlzOUhA8FvbRI10nCc,3131
|
|
147
147
|
iolanta/namespaces.py,sha256=S4fSjWrL33jylItDf6y2_CIJ4B-RQXDhBsZkB-SV9mw,1107
|
|
148
|
-
iolanta/node_to_qname.py,sha256=
|
|
148
|
+
iolanta/node_to_qname.py,sha256=Pbl2qu3xqyRGkcMfuc6gV37lLlgVTWpeicLeUhjvn68,777
|
|
149
149
|
iolanta/parse_quads.py,sha256=ZYohKUh4WN3emq5xr6Sgf5gIw3_NFoUgYTZ3DOL-rQY,4876
|
|
150
|
-
iolanta/plugin.py,sha256=
|
|
150
|
+
iolanta/plugin.py,sha256=_L8x6tfdI388coU4jxfiS-otYtOlnf9TArsh83b2buc,1141
|
|
151
151
|
iolanta/query_result.py,sha256=VLLBkewUEymtzfB0jeIeRE3Np6pAgo959RPgNsEmiq8,1545
|
|
152
152
|
iolanta/reformat_blank_nodes.py,sha256=MAVcXusUioKzAoTEHAMume5Gt9vBEpxJGrngqFzmkJI,712
|
|
153
153
|
iolanta/resolvers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -165,7 +165,7 @@ iolanta/sparqlspace/sparqlspace.py,sha256=Y8_ZPXwuGEXbEes6XQjaQWA2Zv9y8SWxMPDFdq
|
|
|
165
165
|
iolanta/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
166
166
|
iolanta/widgets/description.py,sha256=98Qd3FwT9r8sYqKjl9ZEptaVX9jJ2ULWf0uy3j52p5o,800
|
|
167
167
|
iolanta/widgets/mixin.py,sha256=nDRCOc-gizCf1a5DAcYs4hW8eZEd6pHBPFsfm0ncv7E,251
|
|
168
|
-
iolanta-2.1.
|
|
169
|
-
iolanta-2.1.
|
|
170
|
-
iolanta-2.1.
|
|
171
|
-
iolanta-2.1.
|
|
168
|
+
iolanta-2.1.16.dist-info/METADATA,sha256=1IqMfNdfWnF3lfICdMKUtPMaP_siZwurX4MWYLQ8eeI,2349
|
|
169
|
+
iolanta-2.1.16.dist-info/WHEEL,sha256=3ny-bZhpXrU6vSQ1UPG34FoxZBp3lVcvK0LkgUz6VLk,88
|
|
170
|
+
iolanta-2.1.16.dist-info/entry_points.txt,sha256=Z1f3OaNruE2a6eprkiLgcPw-lZCah_cRT-PTlDD-Y1s,2569
|
|
171
|
+
iolanta-2.1.16.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|