pub-analyzer 0.2.0__py3-none-any.whl → 0.3.0__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.
Potentially problematic release.
This version of pub-analyzer might be problematic. Click here for more details.
- pub_analyzer/css/body.tcss +48 -35
- pub_analyzer/css/buttons.tcss +0 -4
- pub_analyzer/css/main.tcss +1 -1
- pub_analyzer/css/summary.tcss +75 -0
- pub_analyzer/internal/identifier.py +26 -0
- pub_analyzer/internal/report.py +73 -31
- pub_analyzer/internal/templates/author/{author_resume.typ → author_summary.typ} +4 -3
- pub_analyzer/internal/templates/author/report.typ +4 -3
- pub_analyzer/internal/templates/author/sources.typ +7 -5
- pub_analyzer/internal/templates/author/works.typ +12 -12
- pub_analyzer/internal/templates/author/works_extended.typ +4 -4
- pub_analyzer/main.py +3 -2
- pub_analyzer/models/author.py +9 -25
- pub_analyzer/models/concept.py +19 -0
- pub_analyzer/models/institution.py +11 -1
- pub_analyzer/models/report.py +14 -14
- pub_analyzer/models/source.py +59 -3
- pub_analyzer/models/topic.py +59 -0
- pub_analyzer/models/work.py +23 -0
- pub_analyzer/widgets/author/cards.py +6 -5
- pub_analyzer/widgets/author/core.py +11 -10
- pub_analyzer/widgets/common/summary.py +7 -0
- pub_analyzer/widgets/institution/core.py +10 -9
- pub_analyzer/widgets/report/cards.py +10 -11
- pub_analyzer/widgets/report/concept.py +47 -0
- pub_analyzer/widgets/report/core.py +14 -0
- pub_analyzer/widgets/report/grants.py +46 -0
- pub_analyzer/widgets/report/source.py +11 -4
- pub_analyzer/widgets/report/topic.py +55 -0
- pub_analyzer/widgets/report/work.py +45 -9
- pub_analyzer/widgets/search/results.py +8 -8
- pub_analyzer/widgets/sidebar.py +11 -2
- {pub_analyzer-0.2.0.dist-info → pub_analyzer-0.3.0.dist-info}/METADATA +8 -7
- pub_analyzer-0.3.0.dist-info/RECORD +69 -0
- {pub_analyzer-0.2.0.dist-info → pub_analyzer-0.3.0.dist-info}/WHEEL +1 -1
- pub_analyzer/css/author.tcss +0 -82
- pub_analyzer/css/institution.tcss +0 -82
- pub_analyzer-0.2.0.dist-info/RECORD +0 -64
- {pub_analyzer-0.2.0.dist-info → pub_analyzer-0.3.0.dist-info}/LICENSE +0 -0
- {pub_analyzer-0.2.0.dist-info → pub_analyzer-0.3.0.dist-info}/entry_points.txt +0 -0
|
@@ -9,7 +9,7 @@ from textual.containers import VerticalScroll
|
|
|
9
9
|
from textual.widgets import Static
|
|
10
10
|
|
|
11
11
|
from pub_analyzer.models.report import AuthorReport, InstitutionReport
|
|
12
|
-
from pub_analyzer.models.source import
|
|
12
|
+
from pub_analyzer.models.source import Source
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class SourcesTable(Static):
|
|
@@ -22,7 +22,7 @@ class SourcesTable(Static):
|
|
|
22
22
|
}
|
|
23
23
|
"""
|
|
24
24
|
|
|
25
|
-
def __init__(self, sources_list: list[
|
|
25
|
+
def __init__(self, sources_list: list[Source]) -> None:
|
|
26
26
|
self.sources_list = sources_list
|
|
27
27
|
super().__init__()
|
|
28
28
|
|
|
@@ -36,7 +36,9 @@ class SourcesTable(Static):
|
|
|
36
36
|
sources_table.add_column("Publisher or institution", ratio=2)
|
|
37
37
|
sources_table.add_column("Type")
|
|
38
38
|
sources_table.add_column("ISSN-L")
|
|
39
|
-
sources_table.add_column("
|
|
39
|
+
sources_table.add_column("Impact factor")
|
|
40
|
+
sources_table.add_column("h-index")
|
|
41
|
+
sources_table.add_column("Is OA")
|
|
40
42
|
|
|
41
43
|
for idx, source in enumerate(self.sources_list):
|
|
42
44
|
if source.host_organization_name:
|
|
@@ -49,6 +51,9 @@ class SourcesTable(Static):
|
|
|
49
51
|
title = f"""[@click=app.open_link('{quote(str(source.id))}')][u]{source.display_name}[/u][/]"""
|
|
50
52
|
type_source = source.type
|
|
51
53
|
issn_l = source.issn_l if source.issn_l else "-"
|
|
54
|
+
impact_factor = f"{source.summary_stats.two_yr_mean_citedness:.3f}"
|
|
55
|
+
h_index = f"{source.summary_stats.h_index}"
|
|
56
|
+
|
|
52
57
|
is_open_access = "[#909d63]True[/]" if source.is_oa else "[#bc5653]False[/]"
|
|
53
58
|
|
|
54
59
|
sources_table.add_row(
|
|
@@ -57,6 +62,8 @@ class SourcesTable(Static):
|
|
|
57
62
|
Text.from_markup(host_organization),
|
|
58
63
|
Text.from_markup(type_source),
|
|
59
64
|
Text.from_markup(issn_l),
|
|
65
|
+
Text.from_markup(impact_factor),
|
|
66
|
+
Text.from_markup(h_index),
|
|
60
67
|
Text.from_markup(is_open_access),
|
|
61
68
|
)
|
|
62
69
|
|
|
@@ -80,4 +87,4 @@ class SourcesReportPane(VerticalScroll):
|
|
|
80
87
|
|
|
81
88
|
def compose(self) -> ComposeResult:
|
|
82
89
|
"""Compose content pane."""
|
|
83
|
-
yield SourcesTable(sources_list=self.report.
|
|
90
|
+
yield SourcesTable(sources_list=self.report.sources_summary.sources)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Topics Widgets."""
|
|
2
|
+
|
|
3
|
+
from urllib.parse import quote
|
|
4
|
+
|
|
5
|
+
from rich.table import Table
|
|
6
|
+
from rich.text import Text
|
|
7
|
+
from textual.app import ComposeResult
|
|
8
|
+
from textual.widgets import Static
|
|
9
|
+
|
|
10
|
+
from pub_analyzer.models.topic import DehydratedTopic
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class TopicsTable(Static):
|
|
14
|
+
"""All Topics from a work in a table."""
|
|
15
|
+
|
|
16
|
+
DEFAULT_CSS = """
|
|
17
|
+
TopicsTable .topics-table {
|
|
18
|
+
height: auto;
|
|
19
|
+
padding: 1 2 0 2;
|
|
20
|
+
}
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
def __init__(self, topics_list: list[DehydratedTopic]) -> None:
|
|
24
|
+
self.topics_list = topics_list
|
|
25
|
+
super().__init__()
|
|
26
|
+
|
|
27
|
+
def compose(self) -> ComposeResult:
|
|
28
|
+
"""Compose Table."""
|
|
29
|
+
topics_table = Table(title="Topics", expand=True, show_lines=True)
|
|
30
|
+
|
|
31
|
+
# Define Columns
|
|
32
|
+
topics_table.add_column("", justify="center", vertical="middle")
|
|
33
|
+
topics_table.add_column("Name", ratio=3)
|
|
34
|
+
topics_table.add_column("Score", ratio=1)
|
|
35
|
+
topics_table.add_column("Domain", ratio=1)
|
|
36
|
+
topics_table.add_column("Field", ratio=1)
|
|
37
|
+
topics_table.add_column("SubField", ratio=1)
|
|
38
|
+
|
|
39
|
+
for idx, topic in enumerate(self.topics_list):
|
|
40
|
+
name = f"""[@click=app.open_link('{quote(str(topic.id))}')][u]{topic.display_name}[/u][/]"""
|
|
41
|
+
|
|
42
|
+
domain = f"""[@click=app.open_link('{quote(str(topic.domain.id))}')][u]{topic.domain.display_name}[/u][/]"""
|
|
43
|
+
field = f"""[@click=app.open_link('{quote(str(topic.field.id))}')][u]{topic.field.display_name}[/u][/]"""
|
|
44
|
+
subfield = f"""[@click=app.open_link('{quote(str(topic.subfield.id))}')][u]{topic.subfield.display_name}[/u][/]"""
|
|
45
|
+
|
|
46
|
+
topics_table.add_row(
|
|
47
|
+
str(idx),
|
|
48
|
+
Text.from_markup(name, overflow="ellipsis"),
|
|
49
|
+
Text.from_markup(f"{topic.score:.2f}"),
|
|
50
|
+
Text.from_markup(domain),
|
|
51
|
+
Text.from_markup(field),
|
|
52
|
+
Text.from_markup(subfield),
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
yield Static(topics_table, classes="topics-table")
|
|
@@ -17,12 +17,15 @@ from pub_analyzer.widgets.report.cards import (
|
|
|
17
17
|
AuthorshipCard,
|
|
18
18
|
CitationMetricsCard,
|
|
19
19
|
OpenAccessCard,
|
|
20
|
-
|
|
20
|
+
OpenAccessSummaryCard,
|
|
21
21
|
ReportCitationMetricsCard,
|
|
22
|
-
|
|
22
|
+
WorksTypeSummaryCard,
|
|
23
23
|
)
|
|
24
24
|
|
|
25
|
+
from .concept import ConceptsTable
|
|
26
|
+
from .grants import GrantsTable
|
|
25
27
|
from .locations import LocationsTable
|
|
28
|
+
from .topic import TopicsTable
|
|
26
29
|
|
|
27
30
|
|
|
28
31
|
class CitedByTable(Static):
|
|
@@ -108,22 +111,40 @@ class WorkModal(Modal[None]):
|
|
|
108
111
|
yield CitationMetricsCard(work_report=self.work_report)
|
|
109
112
|
|
|
110
113
|
with TabbedContent(id="tables-container"):
|
|
114
|
+
# Abtract if exists
|
|
115
|
+
if self.work_report.work.abstract:
|
|
116
|
+
with TabPane("Abstract"):
|
|
117
|
+
yield Label(self.work_report.work.abstract, classes="abstract")
|
|
111
118
|
# Citations Table
|
|
112
119
|
with TabPane("Cited By Works"):
|
|
113
120
|
if len(self.work_report.cited_by):
|
|
114
121
|
yield CitedByTable(citations_list=self.work_report.cited_by)
|
|
115
122
|
else:
|
|
116
123
|
yield Label("No works found.")
|
|
124
|
+
# Concepts Table
|
|
125
|
+
with TabPane("Concepts"):
|
|
126
|
+
if len(self.work_report.work.concepts):
|
|
127
|
+
yield ConceptsTable(self.work_report.work.concepts)
|
|
128
|
+
else:
|
|
129
|
+
yield Label("No Concepts found.")
|
|
130
|
+
# Grants Table
|
|
131
|
+
with TabPane("Grants"):
|
|
132
|
+
if len(self.work_report.work.grants):
|
|
133
|
+
yield GrantsTable(self.work_report.work.grants)
|
|
134
|
+
else:
|
|
135
|
+
yield Label("No Grants found.")
|
|
117
136
|
# Locations Table
|
|
118
137
|
with TabPane("Locations"):
|
|
119
138
|
if len(self.work_report.work.locations):
|
|
120
139
|
yield LocationsTable(self.work_report.work.locations)
|
|
121
140
|
else:
|
|
122
141
|
yield Label("No sources found.")
|
|
123
|
-
#
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
yield
|
|
142
|
+
# Topics Table
|
|
143
|
+
with TabPane("Topics"):
|
|
144
|
+
if len(self.work_report.work.topics):
|
|
145
|
+
yield TopicsTable(self.work_report.work.topics)
|
|
146
|
+
else:
|
|
147
|
+
yield Label("No Topics found.")
|
|
127
148
|
|
|
128
149
|
|
|
129
150
|
class WorksTable(Static):
|
|
@@ -136,8 +157,9 @@ class WorksTable(Static):
|
|
|
136
157
|
}
|
|
137
158
|
"""
|
|
138
159
|
|
|
139
|
-
def __init__(self, report: AuthorReport | InstitutionReport) -> None:
|
|
160
|
+
def __init__(self, report: AuthorReport | InstitutionReport, show_empty_works: bool = True) -> None:
|
|
140
161
|
self.report = report
|
|
162
|
+
self.show_empty_works = show_empty_works
|
|
141
163
|
super().__init__()
|
|
142
164
|
|
|
143
165
|
class _WorksTableRenderer(Static):
|
|
@@ -174,6 +196,9 @@ class WorksTable(Static):
|
|
|
174
196
|
|
|
175
197
|
for idx, work_report in enumerate(self.report.works):
|
|
176
198
|
work = work_report.work
|
|
199
|
+
if not self.show_empty_works and len(work_report.cited_by) < 1:
|
|
200
|
+
continue
|
|
201
|
+
|
|
177
202
|
doi = work.ids.doi
|
|
178
203
|
doi_url = f"""[@click=app.open_link("{quote(str(doi))}")]DOI[/]""" if doi else "-"
|
|
179
204
|
|
|
@@ -204,12 +229,23 @@ class WorkReportPane(VerticalScroll):
|
|
|
204
229
|
self.report = report
|
|
205
230
|
super().__init__()
|
|
206
231
|
|
|
232
|
+
async def toggle_empty_works(self) -> None:
|
|
233
|
+
"""Hide/show works if cites are cero."""
|
|
234
|
+
report_works_status: bool = self.app.query_one("ReportWidget").show_empty_works # type: ignore
|
|
235
|
+
table_works_status = self.query_one(WorksTable).show_empty_works
|
|
236
|
+
|
|
237
|
+
if self.report.works and (report_works_status != table_works_status):
|
|
238
|
+
self.loading = True
|
|
239
|
+
await self.query_one(WorksTable).remove()
|
|
240
|
+
await self.mount(WorksTable(report=self.report, show_empty_works=report_works_status))
|
|
241
|
+
self.loading = False
|
|
242
|
+
|
|
207
243
|
def compose(self) -> ComposeResult:
|
|
208
244
|
"""Compose content pane."""
|
|
209
245
|
with Horizontal(classes="cards-container"):
|
|
210
246
|
yield ReportCitationMetricsCard(report=self.report)
|
|
211
|
-
yield
|
|
212
|
-
yield
|
|
247
|
+
yield WorksTypeSummaryCard(report=self.report)
|
|
248
|
+
yield OpenAccessSummaryCard(report=self.report)
|
|
213
249
|
|
|
214
250
|
if self.report.works:
|
|
215
251
|
yield WorksTable(report=self.report)
|
|
@@ -8,8 +8,8 @@ from textual.widgets import Button, Label, Static
|
|
|
8
8
|
|
|
9
9
|
from pub_analyzer.models.author import AuthorResult
|
|
10
10
|
from pub_analyzer.models.institution import InstitutionResult
|
|
11
|
-
from pub_analyzer.widgets.author.core import
|
|
12
|
-
from pub_analyzer.widgets.institution.core import
|
|
11
|
+
from pub_analyzer.widgets.author.core import AuthorSummaryWidget
|
|
12
|
+
from pub_analyzer.widgets.institution.core import InstitutionSummaryWidget
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
class ResultWidget(Static):
|
|
@@ -39,14 +39,14 @@ class AuthorResultWidget(ResultWidget):
|
|
|
39
39
|
yield Label(self.author_result.hint or "", classes="text-hint")
|
|
40
40
|
|
|
41
41
|
async def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
42
|
-
"""Go to the Author
|
|
42
|
+
"""Go to the Author summary page."""
|
|
43
43
|
from pub_analyzer.widgets.body import MainContent
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
author_summary_widget = AuthorSummaryWidget(author_result=self.author_result)
|
|
46
46
|
|
|
47
47
|
main_content = self.app.query_one(MainContent)
|
|
48
48
|
main_content.update_title(title=self.author_result.display_name)
|
|
49
|
-
await main_content.mount(
|
|
49
|
+
await main_content.mount(author_summary_widget)
|
|
50
50
|
|
|
51
51
|
await self.app.query_one("FinderWidget").remove()
|
|
52
52
|
|
|
@@ -74,13 +74,13 @@ class InstitutionResultWidget(ResultWidget):
|
|
|
74
74
|
yield Label(self.institution_result.hint or "", classes="text-hint")
|
|
75
75
|
|
|
76
76
|
async def on_button_pressed(self, event: Button.Pressed) -> None:
|
|
77
|
-
"""Go to the Institution
|
|
77
|
+
"""Go to the Institution summary page."""
|
|
78
78
|
from pub_analyzer.widgets.body import MainContent
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
institution_summary_widget = InstitutionSummaryWidget(institution_result=self.institution_result)
|
|
81
81
|
|
|
82
82
|
main_content = self.app.query_one(MainContent)
|
|
83
83
|
main_content.update_title(title=self.institution_result.display_name)
|
|
84
|
-
await main_content.mount(
|
|
84
|
+
await main_content.mount(institution_summary_widget)
|
|
85
85
|
|
|
86
86
|
await self.app.query_one("FinderWidget").remove()
|
pub_analyzer/widgets/sidebar.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"""Sidebar components and options."""
|
|
2
|
+
|
|
2
3
|
from enum import Enum
|
|
4
|
+
from importlib.metadata import version
|
|
3
5
|
|
|
4
6
|
from textual import on
|
|
5
7
|
from textual.app import ComposeResult
|
|
@@ -25,19 +27,26 @@ class SideBar(Static):
|
|
|
25
27
|
|
|
26
28
|
def compose(self) -> ComposeResult:
|
|
27
29
|
"""Compose dynamically the sidebar options."""
|
|
30
|
+
pub_analyzer_version = version("pub-analyzer")
|
|
31
|
+
|
|
28
32
|
with Vertical(classes="sidebar-options-column"):
|
|
29
33
|
yield Label("Menu", id="sidebar-title")
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
with Vertical(classes="sidebar-buttons-column"):
|
|
36
|
+
yield Button(SideBarOptionsName.SEARCH.value, variant="primary", id="search-sidebar-button", classes="sidebar-option")
|
|
37
|
+
yield Button(SideBarOptionsName.LOAD_REPORT.value, variant="primary", id="load-sidebar-button", classes="sidebar-option")
|
|
38
|
+
|
|
39
|
+
yield Label(f"v{pub_analyzer_version}", id="module-version-label")
|
|
33
40
|
|
|
34
41
|
def toggle(self) -> None:
|
|
35
42
|
"""Show/Hide Sidebar."""
|
|
36
43
|
if self.has_class("-hidden"):
|
|
37
44
|
self.remove_class("-hidden")
|
|
45
|
+
self.styles.animate("width", value=20, duration=0.5)
|
|
38
46
|
else:
|
|
39
47
|
if self.query("*:focus"):
|
|
40
48
|
self.screen.set_focus(None)
|
|
49
|
+
self.styles.animate("width", value=0, duration=0.5)
|
|
41
50
|
self.add_class("-hidden")
|
|
42
51
|
|
|
43
52
|
async def _replace_main_content(self, new_title: str, new_widget: Widget) -> None:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pub-analyzer
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.3.0
|
|
4
4
|
Summary: A text user interface, written in python, which automates the generation of scientific production reports using OpenAlex
|
|
5
5
|
Home-page: https://github.com/alejandrgaspar/pub-analyzer
|
|
6
6
|
License: MIT
|
|
@@ -20,12 +20,13 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
20
20
|
Classifier: Programming Language :: Python :: 3
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.10
|
|
22
22
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
23
24
|
Classifier: Typing :: Typed
|
|
24
|
-
Requires-Dist: httpx (==0.
|
|
25
|
-
Requires-Dist: jinja2 (==3.1.
|
|
26
|
-
Requires-Dist: pydantic (==2.
|
|
27
|
-
Requires-Dist: textual (==0.
|
|
28
|
-
Requires-Dist: typst (==0.
|
|
25
|
+
Requires-Dist: httpx (==0.27.0)
|
|
26
|
+
Requires-Dist: jinja2 (==3.1.3)
|
|
27
|
+
Requires-Dist: pydantic (==2.7.1)
|
|
28
|
+
Requires-Dist: textual (==0.58.0)
|
|
29
|
+
Requires-Dist: typst (==0.11.0)
|
|
29
30
|
Project-URL: Documentation, https://pub-analyzer.com/
|
|
30
31
|
Project-URL: Repository, https://github.com/alejandrgaspar/pub-analyzer
|
|
31
32
|
Description-Content-Type: text/markdown
|
|
@@ -33,7 +34,7 @@ Description-Content-Type: text/markdown
|
|
|
33
34
|
# Pub Analyzer
|
|
34
35
|
|
|
35
36
|
<p align="center">
|
|
36
|
-
<img src="docs/assets/img/logo.png" alt="PubAnalyzer" width="275">
|
|
37
|
+
<img src="https://raw.githubusercontent.com/alejandrgaspar/pub-analyzer/main/docs/assets/img/logo.png" alt="PubAnalyzer splash image" width="275">
|
|
37
38
|
</p>
|
|
38
39
|
|
|
39
40
|
<p align="center">
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
pub_analyzer/__init__.py,sha256=8xDULqkSyOBAa5bvzcnteo5nW1sqXB6pR9fSc9DpXFo,40
|
|
2
|
+
pub_analyzer/css/body.tcss,sha256=Yw9bx5eWABVQPKWDAfWk8AdSXnBAg396JB9Lm4LXD-o,1682
|
|
3
|
+
pub_analyzer/css/buttons.tcss,sha256=FruJ39dXmKnZm3_y0CxAJByKHrbmt6RQky0T0uM906g,546
|
|
4
|
+
pub_analyzer/css/checkbox.tcss,sha256=FblyIHns-r1K0ikOnSJtoTMz57C6iDEcscdFAsJ7s48,506
|
|
5
|
+
pub_analyzer/css/collapsible.tcss,sha256=Rh-L5PcIMhnZ7RhY1udd_BcYC1mfCMew2m6o6ty3juE,605
|
|
6
|
+
pub_analyzer/css/datatable.tcss,sha256=JgdMUPc4fYmZlXi_FxbuD88pegK6Pi4FgDHIfA_TKxo,994
|
|
7
|
+
pub_analyzer/css/main.tcss,sha256=wL8KD2gwRDrE_u0EbZrvu5s3eTFwWLtbP8RMLgCv2Sk,834
|
|
8
|
+
pub_analyzer/css/report.tcss,sha256=5v-h4Y5gUdonLQTVkVm-HYrYT1xDS-4NYHVZDYghVEs,2066
|
|
9
|
+
pub_analyzer/css/search.tcss,sha256=rovbWjp4pYfCF_OyAC_QrV_0WdMUlsYoQ3vbs9pGw7g,1326
|
|
10
|
+
pub_analyzer/css/summary.tcss,sha256=i4ixICwoQFj2BToW9NVmJGUIYk5upbukbTCnDgT40ds,1350
|
|
11
|
+
pub_analyzer/css/tabs.tcss,sha256=dS7y6ZZmo1Vw7Wqpx66-O-oE7zeqPE9reWqIhQ1KcZs,311
|
|
12
|
+
pub_analyzer/css/tree.tcss,sha256=5BSabX9ZmRL3VTz0Gya2RRJnWrwdIF9cTf6dXj2R4kE,818
|
|
13
|
+
pub_analyzer/internal/__init__.py,sha256=9aqrBJDedUiBO5kEO81kSAuPbOSFoaDZZK8w5NydPhs,22
|
|
14
|
+
pub_analyzer/internal/identifier.py,sha256=LDYew25TLuwqJHmLg9iRNTURWynN27ZbTxTVGbuOUD0,2939
|
|
15
|
+
pub_analyzer/internal/render.py,sha256=gq5dScWs507tne3glJbTQ-PekmALvtcZPB1p_mVAkE0,2144
|
|
16
|
+
pub_analyzer/internal/report.py,sha256=zeDn4mR8G7-NA0SxelIhanZ2e4mLecbiuVqlv2_hMb8,16320
|
|
17
|
+
pub_analyzer/internal/templates/author/author_summary.typ,sha256=0qyS2C075wpj3mOxY4Ka5-aNjQ5RAjoJskkIb8tnLFE,2478
|
|
18
|
+
pub_analyzer/internal/templates/author/report.typ,sha256=izdq5Z-504hkLwI_C47RsqDDu_K8N74h_3KCetzSies,1444
|
|
19
|
+
pub_analyzer/internal/templates/author/sources.typ,sha256=_yFNDuYPu1casCy73JVL7l9qZ_YYRqTGLLgr5tnQW5A,814
|
|
20
|
+
pub_analyzer/internal/templates/author/works.typ,sha256=wKgg4EoPYLzY2q3UBsBKZADOmTy4-1r8CD1pt8A3VYo,1980
|
|
21
|
+
pub_analyzer/internal/templates/author/works_extended.typ,sha256=B38IHOwlBuPzUA6SewoHEp5eU-9kEH3yH5KvK7Nm7a0,3527
|
|
22
|
+
pub_analyzer/main.py,sha256=-yv34eVkLT8cyJ-wCl3vuoprMmqpsMhc3arGAnytCuY,2201
|
|
23
|
+
pub_analyzer/models/__init__.py,sha256=hvR6m379slQw7gSwnl_OFY21Ytv90mmmOe7bp8vZYkk,59
|
|
24
|
+
pub_analyzer/models/author.py,sha256=9DzBQY4JoDv5ilBNOLyquOqnlwbXCTpmZq25cQLCgYU,1900
|
|
25
|
+
pub_analyzer/models/concept.py,sha256=yNvajKWTn6uBalNoJmlobitvbFBOjF80jlZnjKjwDRw,677
|
|
26
|
+
pub_analyzer/models/institution.py,sha256=kjS3U0w454SBCZNsZ03-XZqciZR0ubwsCRo2ix6RojM,3067
|
|
27
|
+
pub_analyzer/models/report.py,sha256=zrAkUYgGCGnDzvQYbidyf1cmi7iXbXxsskfqZaeurbw,2574
|
|
28
|
+
pub_analyzer/models/source.py,sha256=o3ich4iDYB_PH_cVbrZtVRFVLQlPS3W5ajgBQQGzYqM,2730
|
|
29
|
+
pub_analyzer/models/topic.py,sha256=3MBQV-njnjfmOVvgmFZxy8fFU7sMj5yxUW8EHFAjlD4,1825
|
|
30
|
+
pub_analyzer/models/work.py,sha256=vN2mSB6oiPbkhaGy0pjWGc2meWjkkHAz5Eubed3BO6w,4115
|
|
31
|
+
pub_analyzer/widgets/__init__.py,sha256=JALs1yGE06XYwjoY_0AG-Wt_pMknI1WEWNYK3atQaEA,18
|
|
32
|
+
pub_analyzer/widgets/author/__init__.py,sha256=oiJibt7YiuGpovOnFIAlC9YwLO-0LN3SDgPWFL-LVPQ,22
|
|
33
|
+
pub_analyzer/widgets/author/cards.py,sha256=JWZxYy4Oen5fToiSBgvfEgmBJlrIVXCWpT-XjkLbxY4,2445
|
|
34
|
+
pub_analyzer/widgets/author/core.py,sha256=XaqjOajU0zz8rtraF5Y9vjjiLyMKJmke8GblFaa6UwU,5069
|
|
35
|
+
pub_analyzer/widgets/author/tables.py,sha256=kowgw5_NIRKdLvL9b97q9PSugHQ__eMcLWfahKETZdA,793
|
|
36
|
+
pub_analyzer/widgets/body.py,sha256=wN9cMcm1MaRTjuHYt8RWrG8D_ngg5cn-hVllvmzPX_o,972
|
|
37
|
+
pub_analyzer/widgets/common/__init__.py,sha256=Fx5Gl17Rd_wueZjNElBtI1kCn-4DMSbC3lEA8u7PSto,287
|
|
38
|
+
pub_analyzer/widgets/common/card.py,sha256=GGSaeuZt6AqY7kAvcVnWNMrhNPzr7do66YRQOYNSYvU,595
|
|
39
|
+
pub_analyzer/widgets/common/filesystem.py,sha256=i0S3D6JJzPkF1Sqm83SSQlmYFKRf82SnoFgKVE6BdYI,6460
|
|
40
|
+
pub_analyzer/widgets/common/filters.py,sha256=7KNRcSAED0EGxIZp6o1zxmGpzbmEM2yozDeYw-5ysSM,3373
|
|
41
|
+
pub_analyzer/widgets/common/input.py,sha256=tK_UCtLDGHlI_NKpKjGkVu4gWiwMAIHixT9Im--Un4c,2649
|
|
42
|
+
pub_analyzer/widgets/common/modal.py,sha256=otLQZotdTRTlSeTBknIxqRyduVY6lRZ5yW5u20SLcwI,882
|
|
43
|
+
pub_analyzer/widgets/common/selector.py,sha256=Jh5bsn-zYmHGfEE3eO9XL6BsgKpLMGfg8FJur4gQmH0,1493
|
|
44
|
+
pub_analyzer/widgets/common/summary.py,sha256=Qj-FRfAVgJmCaVUJI-jQrHX2sGKHTP2b75KukuJWlog,165
|
|
45
|
+
pub_analyzer/widgets/institution/__init__.py,sha256=T_WDTDistaaq2obl1Cy_wZI5nTBiJNUnB-_OwBOLFTE,27
|
|
46
|
+
pub_analyzer/widgets/institution/cards.py,sha256=OgLWP8M0xENa5NnY9NtmwjdqOwZJUN77fXSHFNT3BYU,2862
|
|
47
|
+
pub_analyzer/widgets/institution/core.py,sha256=q21GXawR9g-pN68YgdiHc3r_ZxiKq5JYbakeLvdu4dk,5332
|
|
48
|
+
pub_analyzer/widgets/institution/tables.py,sha256=tXjrop9HGSkZGjYIOGQEOKVoyoeIGPd-8oSh08iuTRw,838
|
|
49
|
+
pub_analyzer/widgets/report/__init__.py,sha256=oolRVss3JKaQHaQVDncjtxbLINRJ5Rd1ulW1uk7MLhc,54
|
|
50
|
+
pub_analyzer/widgets/report/author.py,sha256=orlq-YSHeRcEyCXrQHiRpp2tdPC9SO1MjQ9uhNpU0-k,1227
|
|
51
|
+
pub_analyzer/widgets/report/cards.py,sha256=NtsGCdlAqsuocun_QwE7dJeZetfAqKAjduHYpVtq-ic,4826
|
|
52
|
+
pub_analyzer/widgets/report/concept.py,sha256=xiGXy_RXO_XmdqnlePkOozYPmQrsDdqKPMRXHsZbDP0,1485
|
|
53
|
+
pub_analyzer/widgets/report/core.py,sha256=V4fwBHnSqkUzC1da8sGYqzsPKQRofA7GqpEhbEXsk4s,11436
|
|
54
|
+
pub_analyzer/widgets/report/export.py,sha256=EQzF5fMZgHtLv3f5hITDgf9WW2XytRX_foeLWwcIHkM,4762
|
|
55
|
+
pub_analyzer/widgets/report/grants.py,sha256=m183W6djVhucAuYs-EhjkHuA9heqpGwsW_iRouVQsns,1347
|
|
56
|
+
pub_analyzer/widgets/report/institution.py,sha256=PDPE9fK18l9kKKch5sJrbnHHDss0kJ6bgVhM4hTyrAo,1297
|
|
57
|
+
pub_analyzer/widgets/report/locations.py,sha256=s6O5v_jX_oPsKOf2fEujtDxLHQRVsqrIcgN4rZkRKkg,2892
|
|
58
|
+
pub_analyzer/widgets/report/source.py,sha256=WJhJc0_sZOcAtkmh9-VjbgugoArZgxKoXlITqVaBYK0,3045
|
|
59
|
+
pub_analyzer/widgets/report/topic.py,sha256=SI3STTBFlpR-VJcsNhJyu6vc9uyytU_ASKuWXb-qr60,1969
|
|
60
|
+
pub_analyzer/widgets/report/work.py,sha256=8PwuEkTN-cvteMv9xULLfaDrTZpogX6z0DBiOjN0JKA,9590
|
|
61
|
+
pub_analyzer/widgets/search/__init__.py,sha256=8C3IQtFkiIL8hlQbhJ_fAHM59-TAoe29wBAM2ptozhw,239
|
|
62
|
+
pub_analyzer/widgets/search/core.py,sha256=4NvowtBcrH1fmob9kuF7v9Tq3Nd99jzB2S7xaD8OYeI,3861
|
|
63
|
+
pub_analyzer/widgets/search/results.py,sha256=6Sl-shkGCf-jcMmalXpk1n8oBHk1aZNzFPJfHSRP1gA,3702
|
|
64
|
+
pub_analyzer/widgets/sidebar.py,sha256=XlIshlCVW5Bb3MXFPnU9is0qQrUrGdT6xlkKiYNEcAM,2704
|
|
65
|
+
pub_analyzer-0.3.0.dist-info/LICENSE,sha256=OPopoEowTMKqIea8Kbxk3TKdCQ97YkLvIknjTHE5oCI,1080
|
|
66
|
+
pub_analyzer-0.3.0.dist-info/METADATA,sha256=sMpAloa5JJUR1k3N7lgpLATfrn4Q8lZqERK5_NBYPaE,4508
|
|
67
|
+
pub_analyzer-0.3.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
68
|
+
pub_analyzer-0.3.0.dist-info/entry_points.txt,sha256=mVb_gUNX_-aVWHlNKLjcMAS8YLgNnSq9JLRXVJGIF2c,54
|
|
69
|
+
pub_analyzer-0.3.0.dist-info/RECORD,,
|
pub_analyzer/css/author.tcss
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/* COLORS */
|
|
2
|
-
$bg-main-color: white;
|
|
3
|
-
$bg-secondary-color: #e5e7eb;
|
|
4
|
-
$bg-secondary-color-accent: #d1d5db;
|
|
5
|
-
$text-primary-color: black;
|
|
6
|
-
|
|
7
|
-
$bg-main-color-darken: #1e293b;
|
|
8
|
-
$bg-secondary-color-darken: #0f172a;
|
|
9
|
-
$text-primary-color-darken: black;
|
|
10
|
-
|
|
11
|
-
AuthorResumeWidget {
|
|
12
|
-
height: 1fr;
|
|
13
|
-
margin: 1 2;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.-dark-mode AuthorResumeWidget {
|
|
17
|
-
color: $text-primary-color-darken;
|
|
18
|
-
background: $bg-secondary-color;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/* Main Container */
|
|
22
|
-
AuthorResumeWidget #main-container{
|
|
23
|
-
height: 1fr;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/* Block Container */
|
|
27
|
-
AuthorResumeWidget .block-container {
|
|
28
|
-
padding: 1;
|
|
29
|
-
height: auto;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
AuthorResumeWidget .block-title {
|
|
33
|
-
text-align: center;
|
|
34
|
-
width: 100%;
|
|
35
|
-
border-bottom: solid $text-primary-color;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* Info Container */
|
|
39
|
-
AuthorResumeWidget .info-container {
|
|
40
|
-
height: auto;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
AuthorResumeWidget .info-container Label {
|
|
44
|
-
text-align: center;
|
|
45
|
-
width: 1fr;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* Filter Container */
|
|
49
|
-
AuthorResumeWidget CollapsibleTitle {
|
|
50
|
-
padding: 0;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
AuthorResumeWidget .filter-collapsible {
|
|
54
|
-
margin-top: 1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
AuthorResumeWidget .filter-collapsible DateRangeFilter {
|
|
58
|
-
margin-top: 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Cards */
|
|
62
|
-
AuthorResumeWidget .cards-container {
|
|
63
|
-
height: auto;
|
|
64
|
-
margin: 1 0 0 0 ;
|
|
65
|
-
|
|
66
|
-
layout: grid;
|
|
67
|
-
grid-size: 3 1;
|
|
68
|
-
grid-rows: 11;
|
|
69
|
-
grid-columns: 1fr;
|
|
70
|
-
grid-gutter: 1 2;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* Table */
|
|
74
|
-
AuthorResumeWidget .table-container {
|
|
75
|
-
height: auto;
|
|
76
|
-
margin: 1 0 0 0;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* Buttons */
|
|
80
|
-
AuthorResumeWidget .button-container {
|
|
81
|
-
align: center middle;
|
|
82
|
-
}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/* COLORS */
|
|
2
|
-
$bg-main-color: white;
|
|
3
|
-
$bg-secondary-color: #e5e7eb;
|
|
4
|
-
$bg-secondary-color-accent: #d1d5db;
|
|
5
|
-
$text-primary-color: black;
|
|
6
|
-
|
|
7
|
-
$bg-main-color-darken: #1e293b;
|
|
8
|
-
$bg-secondary-color-darken: #0f172a;
|
|
9
|
-
$text-primary-color-darken: black;
|
|
10
|
-
|
|
11
|
-
InstitutionResumeWidget {
|
|
12
|
-
height: 1fr;
|
|
13
|
-
margin: 1 2;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.-dark-mode InstitutionResumeWidget {
|
|
17
|
-
color: $text-primary-color-darken;
|
|
18
|
-
background: $bg-secondary-color;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
/* Main Container */
|
|
22
|
-
InstitutionResumeWidget #main-container{
|
|
23
|
-
height: 1fr;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/* Block Container */
|
|
27
|
-
InstitutionResumeWidget .block-container {
|
|
28
|
-
padding: 1;
|
|
29
|
-
height: auto;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
InstitutionResumeWidget .block-title {
|
|
33
|
-
text-align: center;
|
|
34
|
-
width: 100%;
|
|
35
|
-
border-bottom: solid $text-primary-color;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/* Info Container */
|
|
39
|
-
InstitutionResumeWidget .info-container {
|
|
40
|
-
height: auto;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
InstitutionResumeWidget .info-container Label {
|
|
44
|
-
text-align: center;
|
|
45
|
-
width: 1fr;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/* Filter Container */
|
|
49
|
-
InstitutionResumeWidget CollapsibleTitle {
|
|
50
|
-
padding: 0;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
InstitutionResumeWidget .filter-collapsible {
|
|
54
|
-
margin-top: 1;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
InstitutionResumeWidget .filter-collapsible DateRangeFilter {
|
|
58
|
-
margin-top: 1;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Cards */
|
|
62
|
-
InstitutionResumeWidget .cards-container {
|
|
63
|
-
height: auto;
|
|
64
|
-
margin: 1 0 0 0 ;
|
|
65
|
-
|
|
66
|
-
layout: grid;
|
|
67
|
-
grid-size: 3 1;
|
|
68
|
-
grid-rows: 14;
|
|
69
|
-
grid-columns: 1fr;
|
|
70
|
-
grid-gutter: 1 2;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* Table */
|
|
74
|
-
InstitutionResumeWidget .table-container {
|
|
75
|
-
height: auto;
|
|
76
|
-
margin: 1 0 0 0 ;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/* Buttons */
|
|
80
|
-
InstitutionResumeWidget .button-container {
|
|
81
|
-
align: center middle;
|
|
82
|
-
}
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
pub_analyzer/__init__.py,sha256=8xDULqkSyOBAa5bvzcnteo5nW1sqXB6pR9fSc9DpXFo,40
|
|
2
|
-
pub_analyzer/css/author.tcss,sha256=EIzhIqDYcldo9ARncp5fIBa9YxD66RZl7hdnqT-tH-M,1461
|
|
3
|
-
pub_analyzer/css/body.tcss,sha256=6pMQ8wUYb8auIC2MZYJgdBNOsj2nabdIzsBD2BpOxBA,1400
|
|
4
|
-
pub_analyzer/css/buttons.tcss,sha256=mQWyJ4tI1AqDaH2ANDLyxw67bBCbwqLPjA22dOoaAYE,581
|
|
5
|
-
pub_analyzer/css/checkbox.tcss,sha256=FblyIHns-r1K0ikOnSJtoTMz57C6iDEcscdFAsJ7s48,506
|
|
6
|
-
pub_analyzer/css/collapsible.tcss,sha256=Rh-L5PcIMhnZ7RhY1udd_BcYC1mfCMew2m6o6ty3juE,605
|
|
7
|
-
pub_analyzer/css/datatable.tcss,sha256=JgdMUPc4fYmZlXi_FxbuD88pegK6Pi4FgDHIfA_TKxo,994
|
|
8
|
-
pub_analyzer/css/institution.tcss,sha256=t6KAz6EAfLxU8M4a4ny-fQlZw16GHf0rxFIqrd8KG9A,1527
|
|
9
|
-
pub_analyzer/css/main.tcss,sha256=rq_tH2JPlmaHFjN5PtipjKOqRSJhkdbBRwde2aNcxQI,816
|
|
10
|
-
pub_analyzer/css/report.tcss,sha256=5v-h4Y5gUdonLQTVkVm-HYrYT1xDS-4NYHVZDYghVEs,2066
|
|
11
|
-
pub_analyzer/css/search.tcss,sha256=rovbWjp4pYfCF_OyAC_QrV_0WdMUlsYoQ3vbs9pGw7g,1326
|
|
12
|
-
pub_analyzer/css/tabs.tcss,sha256=dS7y6ZZmo1Vw7Wqpx66-O-oE7zeqPE9reWqIhQ1KcZs,311
|
|
13
|
-
pub_analyzer/css/tree.tcss,sha256=5BSabX9ZmRL3VTz0Gya2RRJnWrwdIF9cTf6dXj2R4kE,818
|
|
14
|
-
pub_analyzer/internal/__init__.py,sha256=9aqrBJDedUiBO5kEO81kSAuPbOSFoaDZZK8w5NydPhs,22
|
|
15
|
-
pub_analyzer/internal/identifier.py,sha256=7jkl7u0-6XTkuv7SdeKhjqwQCOtLrTIH5rIEPxBs594,2268
|
|
16
|
-
pub_analyzer/internal/render.py,sha256=gq5dScWs507tne3glJbTQ-PekmALvtcZPB1p_mVAkE0,2144
|
|
17
|
-
pub_analyzer/internal/report.py,sha256=bxxjpt928a9c6ZXymsg9n47ZShP-0tweL-ivd_FYFTI,14666
|
|
18
|
-
pub_analyzer/internal/templates/author/author_resume.typ,sha256=hF6SjfUfOjijJQGUCRH5QGQEQSVu8lAqCAzWeWpXyqs,2407
|
|
19
|
-
pub_analyzer/internal/templates/author/report.typ,sha256=qwyD3aeVeQ4D5-oy3-zdmIzoRDA3FVgQl6qXVBRw2MQ,1378
|
|
20
|
-
pub_analyzer/internal/templates/author/sources.typ,sha256=TQkohC5ZW4ZupymFRJGe1v6QVln9c17_H9rwQBnSFDY,593
|
|
21
|
-
pub_analyzer/internal/templates/author/works.typ,sha256=aPV4woC55YpQT9qNh7h6Gu1bx-ypp_59f02_6D96zYA,1966
|
|
22
|
-
pub_analyzer/internal/templates/author/works_extended.typ,sha256=iNxPyg1rKJDOPx5-zWf-94HXR-1HY9KR9Lt6VMO-vFU,3436
|
|
23
|
-
pub_analyzer/main.py,sha256=gU3RfDWODRL7ID8yBmBzkY2aPZvHHAwiXkyUAjCjgcY,2204
|
|
24
|
-
pub_analyzer/models/__init__.py,sha256=hvR6m379slQw7gSwnl_OFY21Ytv90mmmOe7bp8vZYkk,59
|
|
25
|
-
pub_analyzer/models/author.py,sha256=9cZL4x2nVlJOQrPAccanAYthlgpe41ikN4pfT9eh__k,2435
|
|
26
|
-
pub_analyzer/models/institution.py,sha256=g_2xs2Mq7tPY-48Prw3ooUe0RU2xh6SPA4gwVy6xCHs,2826
|
|
27
|
-
pub_analyzer/models/report.py,sha256=8c-A8sX0a_smqjlirWRyTK9YbAAHLqPU5GNiGJcntAI,2575
|
|
28
|
-
pub_analyzer/models/source.py,sha256=Fq6M5Wut7pOMoe2qATxasGLpaORleUuMXBaKDaFwiLc,453
|
|
29
|
-
pub_analyzer/models/work.py,sha256=0Vd2UOajmzcFEWI-gtX7mcESSt8rRdpYc-fXglTd9GA,3593
|
|
30
|
-
pub_analyzer/widgets/__init__.py,sha256=JALs1yGE06XYwjoY_0AG-Wt_pMknI1WEWNYK3atQaEA,18
|
|
31
|
-
pub_analyzer/widgets/author/__init__.py,sha256=oiJibt7YiuGpovOnFIAlC9YwLO-0LN3SDgPWFL-LVPQ,22
|
|
32
|
-
pub_analyzer/widgets/author/cards.py,sha256=O6QIr5V47mxb4sDLnTeRNvZErS1RpYkFK6GoQsHn4GI,2416
|
|
33
|
-
pub_analyzer/widgets/author/core.py,sha256=URX0Z5afkyITCwEuMbKAcf5r0koFsV9tPwOsOma9C7U,5032
|
|
34
|
-
pub_analyzer/widgets/author/tables.py,sha256=kowgw5_NIRKdLvL9b97q9PSugHQ__eMcLWfahKETZdA,793
|
|
35
|
-
pub_analyzer/widgets/body.py,sha256=wN9cMcm1MaRTjuHYt8RWrG8D_ngg5cn-hVllvmzPX_o,972
|
|
36
|
-
pub_analyzer/widgets/common/__init__.py,sha256=Fx5Gl17Rd_wueZjNElBtI1kCn-4DMSbC3lEA8u7PSto,287
|
|
37
|
-
pub_analyzer/widgets/common/card.py,sha256=GGSaeuZt6AqY7kAvcVnWNMrhNPzr7do66YRQOYNSYvU,595
|
|
38
|
-
pub_analyzer/widgets/common/filesystem.py,sha256=i0S3D6JJzPkF1Sqm83SSQlmYFKRf82SnoFgKVE6BdYI,6460
|
|
39
|
-
pub_analyzer/widgets/common/filters.py,sha256=7KNRcSAED0EGxIZp6o1zxmGpzbmEM2yozDeYw-5ysSM,3373
|
|
40
|
-
pub_analyzer/widgets/common/input.py,sha256=tK_UCtLDGHlI_NKpKjGkVu4gWiwMAIHixT9Im--Un4c,2649
|
|
41
|
-
pub_analyzer/widgets/common/modal.py,sha256=otLQZotdTRTlSeTBknIxqRyduVY6lRZ5yW5u20SLcwI,882
|
|
42
|
-
pub_analyzer/widgets/common/selector.py,sha256=Jh5bsn-zYmHGfEE3eO9XL6BsgKpLMGfg8FJur4gQmH0,1493
|
|
43
|
-
pub_analyzer/widgets/institution/__init__.py,sha256=T_WDTDistaaq2obl1Cy_wZI5nTBiJNUnB-_OwBOLFTE,27
|
|
44
|
-
pub_analyzer/widgets/institution/cards.py,sha256=OgLWP8M0xENa5NnY9NtmwjdqOwZJUN77fXSHFNT3BYU,2862
|
|
45
|
-
pub_analyzer/widgets/institution/core.py,sha256=N6Rqy2aIeTdJXLc9KAVMrewdg4DOens3BPuXDYybaRQ,5279
|
|
46
|
-
pub_analyzer/widgets/institution/tables.py,sha256=tXjrop9HGSkZGjYIOGQEOKVoyoeIGPd-8oSh08iuTRw,838
|
|
47
|
-
pub_analyzer/widgets/report/__init__.py,sha256=oolRVss3JKaQHaQVDncjtxbLINRJ5Rd1ulW1uk7MLhc,54
|
|
48
|
-
pub_analyzer/widgets/report/author.py,sha256=orlq-YSHeRcEyCXrQHiRpp2tdPC9SO1MjQ9uhNpU0-k,1227
|
|
49
|
-
pub_analyzer/widgets/report/cards.py,sha256=uTcwFNXe2vQKjBxNZ9uxX8mrZYExTTdgKfZrtzXi__4,4818
|
|
50
|
-
pub_analyzer/widgets/report/core.py,sha256=6ZO2mL0vKYbY3IQUQN1zh1KArjn_P6SgrVLOAoCqhJc,10902
|
|
51
|
-
pub_analyzer/widgets/report/export.py,sha256=EQzF5fMZgHtLv3f5hITDgf9WW2XytRX_foeLWwcIHkM,4762
|
|
52
|
-
pub_analyzer/widgets/report/institution.py,sha256=PDPE9fK18l9kKKch5sJrbnHHDss0kJ6bgVhM4hTyrAo,1297
|
|
53
|
-
pub_analyzer/widgets/report/locations.py,sha256=s6O5v_jX_oPsKOf2fEujtDxLHQRVsqrIcgN4rZkRKkg,2892
|
|
54
|
-
pub_analyzer/widgets/report/source.py,sha256=Clb9kR3YvihgmscavxSIsLvr4NGPjZGHLnUzWCtPOeM,2750
|
|
55
|
-
pub_analyzer/widgets/report/work.py,sha256=T_5EwxL39R1aM_gsdwycxtiNsN7gZVR-0UsJi8Xoi8k,7873
|
|
56
|
-
pub_analyzer/widgets/search/__init__.py,sha256=8C3IQtFkiIL8hlQbhJ_fAHM59-TAoe29wBAM2ptozhw,239
|
|
57
|
-
pub_analyzer/widgets/search/core.py,sha256=4NvowtBcrH1fmob9kuF7v9Tq3Nd99jzB2S7xaD8OYeI,3861
|
|
58
|
-
pub_analyzer/widgets/search/results.py,sha256=NPgglQEC7ZteO7VLv2WnI-fzoUdwpPPpTHJMD5zL-nI,3692
|
|
59
|
-
pub_analyzer/widgets/sidebar.py,sha256=4SUuhiZQMC8zuyCfg00D4a2nK_KV23xp88xRGp9Qaig,2330
|
|
60
|
-
pub_analyzer-0.2.0.dist-info/LICENSE,sha256=OPopoEowTMKqIea8Kbxk3TKdCQ97YkLvIknjTHE5oCI,1080
|
|
61
|
-
pub_analyzer-0.2.0.dist-info/METADATA,sha256=ObcxRx67dmL54FHcpjpLeb1-qNop6uXGY0uIHAyXVWc,4376
|
|
62
|
-
pub_analyzer-0.2.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
63
|
-
pub_analyzer-0.2.0.dist-info/entry_points.txt,sha256=mVb_gUNX_-aVWHlNKLjcMAS8YLgNnSq9JLRXVJGIF2c,54
|
|
64
|
-
pub_analyzer-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|