scitex 2.17.3__py3-none-any.whl → 2.17.4__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.
- scitex/_dev/_dashboard/_routes.py +13 -0
- scitex/_dev/_dashboard/_scripts.py +144 -23
- scitex/_dev/_dashboard/_styles.py +90 -0
- scitex/_dev/_dashboard/_templates.py +14 -1
- scitex/_dev/_rtd.py +122 -0
- scitex/_dev/_ssh.py +38 -8
- scitex/dev/plt/data/mpl/PLOTTING_FUNCTIONS.yaml +90 -0
- scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES.yaml +1571 -0
- scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES_DETAILED.yaml +6262 -0
- scitex/dev/plt/data/mpl/SIGNATURES_FLATTENED.yaml +1274 -0
- scitex/dev/plt/data/mpl/dir_ax.txt +459 -0
- scitex/scholar/_mcp/crossref_handlers.py +45 -7
- scitex/scholar/_mcp/openalex_handlers.py +45 -7
- scitex/scholar/config/default.yaml +2 -0
- scitex/scholar/data/.gitkeep +0 -0
- scitex/scholar/data/README.md +44 -0
- scitex/scholar/data/bib_files/bibliography.bib +1952 -0
- scitex/scholar/data/bib_files/neurovista.bib +277 -0
- scitex/scholar/data/bib_files/neurovista_enriched.bib +441 -0
- scitex/scholar/data/bib_files/neurovista_enriched_enriched.bib +441 -0
- scitex/scholar/data/bib_files/neurovista_processed.bib +338 -0
- scitex/scholar/data/bib_files/openaccess.bib +89 -0
- scitex/scholar/data/bib_files/pac-seizure_prediction_enriched.bib +2178 -0
- scitex/scholar/data/bib_files/pac.bib +698 -0
- scitex/scholar/data/bib_files/pac_enriched.bib +1061 -0
- scitex/scholar/data/bib_files/pac_processed.bib +0 -0
- scitex/scholar/data/bib_files/pac_titles.txt +75 -0
- scitex/scholar/data/bib_files/paywalled.bib +98 -0
- scitex/scholar/data/bib_files/related-papers-by-coauthors.bib +58 -0
- scitex/scholar/data/bib_files/related-papers-by-coauthors_enriched.bib +87 -0
- scitex/scholar/data/bib_files/seizure_prediction.bib +694 -0
- scitex/scholar/data/bib_files/seizure_prediction_processed.bib +0 -0
- scitex/scholar/data/bib_files/test_complete_enriched.bib +437 -0
- scitex/scholar/data/bib_files/test_final_enriched.bib +437 -0
- scitex/scholar/data/bib_files/test_seizure.bib +46 -0
- scitex/scholar/data/impact_factor/JCR_IF_2022.xlsx +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024.db +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024.xlsx +0 -0
- scitex/scholar/data/impact_factor/JCR_IF_2024_v01.db +0 -0
- scitex/scholar/data/impact_factor.db +0 -0
- scitex/scholar/local_dbs/__init__.py +5 -1
- scitex/scholar/local_dbs/export.py +93 -0
- scitex/scholar/local_dbs/unified.py +505 -0
- scitex/scholar/metadata_engines/ScholarEngine.py +11 -0
- scitex/scholar/metadata_engines/individual/OpenAlexLocalEngine.py +346 -0
- scitex/scholar/metadata_engines/individual/__init__.py +1 -0
- {scitex-2.17.3.dist-info → scitex-2.17.4.dist-info}/METADATA +1 -1
- {scitex-2.17.3.dist-info → scitex-2.17.4.dist-info}/RECORD +51 -22
- scitex/scholar/url_finder/.tmp/open_url/KNOWN_RESOLVERS.py +0 -462
- scitex/scholar/url_finder/.tmp/open_url/README.md +0 -223
- scitex/scholar/url_finder/.tmp/open_url/_DOIToURLResolver.py +0 -694
- scitex/scholar/url_finder/.tmp/open_url/_OpenURLResolver.py +0 -1160
- scitex/scholar/url_finder/.tmp/open_url/_ResolverLinkFinder.py +0 -344
- scitex/scholar/url_finder/.tmp/open_url/__init__.py +0 -24
- {scitex-2.17.3.dist-info → scitex-2.17.4.dist-info}/WHEEL +0 -0
- {scitex-2.17.3.dist-info → scitex-2.17.4.dist-info}/entry_points.txt +0 -0
- {scitex-2.17.3.dist-info → scitex-2.17.4.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# Timestamp: "2026-02-03"
|
|
3
|
+
# File: src/scitex/scholar/metadata_engines/individual/OpenAlexLocalEngine.py
|
|
4
|
+
# ----------------------------------------
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
|
|
9
|
+
__FILE__ = __file__
|
|
10
|
+
__DIR__ = os.path.dirname(__FILE__)
|
|
11
|
+
# ----------------------------------------
|
|
12
|
+
|
|
13
|
+
import json
|
|
14
|
+
from typing import Dict, List, Optional, Union
|
|
15
|
+
|
|
16
|
+
from scitex import logging
|
|
17
|
+
|
|
18
|
+
from ..utils import standardize_metadata
|
|
19
|
+
from ._BaseDOIEngine import BaseDOIEngine
|
|
20
|
+
|
|
21
|
+
logger = logging.getLogger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class OpenAlexLocalEngine(BaseDOIEngine):
|
|
25
|
+
"""OpenAlex Local Engine using local FastAPI or external public API
|
|
26
|
+
|
|
27
|
+
Supports both:
|
|
28
|
+
- Internal API: http://openalex:31292 (Docker network)
|
|
29
|
+
- External API: https://scitex.ai/scholar/api/openalex (Public internet)
|
|
30
|
+
|
|
31
|
+
Automatically detects API format and adjusts endpoints accordingly.
|
|
32
|
+
"""
|
|
33
|
+
|
|
34
|
+
def __init__(
|
|
35
|
+
self,
|
|
36
|
+
email: str = "research@example.com",
|
|
37
|
+
api_url: str = "http://127.0.0.1:31292",
|
|
38
|
+
):
|
|
39
|
+
super().__init__(email)
|
|
40
|
+
self.api_url = api_url.rstrip("/")
|
|
41
|
+
|
|
42
|
+
# Detect API type: external (public) vs internal (Docker/local)
|
|
43
|
+
self._is_external_api = (
|
|
44
|
+
"/api/openalex" in self.api_url or "scitex.ai" in self.api_url
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def name(self) -> str:
|
|
49
|
+
return "OpenAlexLocal"
|
|
50
|
+
|
|
51
|
+
@property
|
|
52
|
+
def rate_limit_delay(self) -> float:
|
|
53
|
+
return 0.01
|
|
54
|
+
|
|
55
|
+
def _build_endpoint_url(self, endpoint: str) -> str:
|
|
56
|
+
"""Build the correct endpoint URL based on API type
|
|
57
|
+
|
|
58
|
+
Args:
|
|
59
|
+
endpoint: Endpoint name (e.g., 'works', 'info')
|
|
60
|
+
|
|
61
|
+
Returns
|
|
62
|
+
-------
|
|
63
|
+
Full URL for the endpoint
|
|
64
|
+
|
|
65
|
+
Examples
|
|
66
|
+
--------
|
|
67
|
+
Internal: http://openalex:31292/works
|
|
68
|
+
External: https://scitex.ai/scholar/api/openalex/works
|
|
69
|
+
"""
|
|
70
|
+
if self._is_external_api:
|
|
71
|
+
# External API: base URL already includes /scholar/api/openalex
|
|
72
|
+
return f"{self.api_url}/{endpoint}"
|
|
73
|
+
else:
|
|
74
|
+
# Internal API: direct endpoint
|
|
75
|
+
return f"{self.api_url}/{endpoint}"
|
|
76
|
+
|
|
77
|
+
def search(
|
|
78
|
+
self,
|
|
79
|
+
title: Optional[str] = None,
|
|
80
|
+
year: Optional[Union[int, str]] = None,
|
|
81
|
+
authors: Optional[List[str]] = None,
|
|
82
|
+
doi: Optional[str] = None,
|
|
83
|
+
max_results=1,
|
|
84
|
+
return_as: Optional[str] = "dict",
|
|
85
|
+
**kwargs,
|
|
86
|
+
) -> Optional[Dict]:
|
|
87
|
+
"""Search using local OpenAlex API with all parameters"""
|
|
88
|
+
if doi:
|
|
89
|
+
return self._search_by_doi(doi, return_as)
|
|
90
|
+
else:
|
|
91
|
+
return self._search_by_metadata(title, year, authors, max_results, return_as)
|
|
92
|
+
|
|
93
|
+
def _search_by_doi(self, doi: str, return_as: str) -> Optional[Dict]:
|
|
94
|
+
"""Get work metadata by DOI"""
|
|
95
|
+
doi = doi.replace("https://doi.org/", "").replace("http://doi.org/", "")
|
|
96
|
+
url = self._build_endpoint_url(f"works/{doi}")
|
|
97
|
+
|
|
98
|
+
try:
|
|
99
|
+
assert return_as in [
|
|
100
|
+
"dict",
|
|
101
|
+
"json",
|
|
102
|
+
], "return_as must be either 'dict' or 'json'"
|
|
103
|
+
|
|
104
|
+
response = self.session.get(url, timeout=10)
|
|
105
|
+
if response.status_code == 404:
|
|
106
|
+
return self._create_minimal_metadata(doi=doi, return_as=return_as)
|
|
107
|
+
response.raise_for_status()
|
|
108
|
+
data = response.json()
|
|
109
|
+
|
|
110
|
+
return self._extract_metadata_from_work(data, return_as)
|
|
111
|
+
|
|
112
|
+
except Exception as e:
|
|
113
|
+
if "Connection refused" in str(e) or "Max retries exceeded" in str(e):
|
|
114
|
+
logger.warning(
|
|
115
|
+
f"OpenAlex Local server not available at {self.api_url} (connection refused)"
|
|
116
|
+
)
|
|
117
|
+
else:
|
|
118
|
+
logger.warning(f"OpenAlex Local DOI search error: {e}")
|
|
119
|
+
return self._create_minimal_metadata(doi=doi, return_as=return_as)
|
|
120
|
+
|
|
121
|
+
def _search_by_metadata(
|
|
122
|
+
self,
|
|
123
|
+
title: Optional[str],
|
|
124
|
+
year: Optional[Union[int, str]],
|
|
125
|
+
authors: Optional[List[str]],
|
|
126
|
+
max_results: int,
|
|
127
|
+
return_as: str,
|
|
128
|
+
) -> Optional[Dict]:
|
|
129
|
+
"""Search by metadata (title, year, authors)"""
|
|
130
|
+
if not title:
|
|
131
|
+
return self._create_minimal_metadata(
|
|
132
|
+
title=title,
|
|
133
|
+
year=year,
|
|
134
|
+
authors=authors,
|
|
135
|
+
return_as=return_as,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
# Build search query
|
|
139
|
+
query = title
|
|
140
|
+
if year:
|
|
141
|
+
query = f"{query} {year}"
|
|
142
|
+
if authors and isinstance(authors, list) and authors:
|
|
143
|
+
query = f"{query} {authors[0]}"
|
|
144
|
+
|
|
145
|
+
url = self._build_endpoint_url("works")
|
|
146
|
+
params = {"q": query, "limit": max(5, max_results)}
|
|
147
|
+
|
|
148
|
+
try:
|
|
149
|
+
assert return_as in [
|
|
150
|
+
"dict",
|
|
151
|
+
"json",
|
|
152
|
+
], "return_as must be either 'dict' or 'json'"
|
|
153
|
+
|
|
154
|
+
response = self.session.get(url, params=params, timeout=10)
|
|
155
|
+
response.raise_for_status()
|
|
156
|
+
data = response.json()
|
|
157
|
+
|
|
158
|
+
results = data.get("results", [])
|
|
159
|
+
if not results:
|
|
160
|
+
return self._create_minimal_metadata(
|
|
161
|
+
title=title,
|
|
162
|
+
year=year,
|
|
163
|
+
authors=authors,
|
|
164
|
+
return_as=return_as,
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
# Find best matching result
|
|
168
|
+
for work in results:
|
|
169
|
+
work_title = work.get("title", "")
|
|
170
|
+
if work_title and work_title.endswith("."):
|
|
171
|
+
work_title = work_title[:-1]
|
|
172
|
+
if work_title and self._is_title_match(title, work_title):
|
|
173
|
+
return self._extract_metadata_from_work(work, return_as)
|
|
174
|
+
|
|
175
|
+
# Return first result if no exact match
|
|
176
|
+
return self._extract_metadata_from_work(results[0], return_as)
|
|
177
|
+
|
|
178
|
+
except Exception as e:
|
|
179
|
+
if "Connection refused" in str(e) or "Max retries exceeded" in str(e):
|
|
180
|
+
logger.warning(
|
|
181
|
+
f"OpenAlex Local server not available at {self.api_url} (connection refused)"
|
|
182
|
+
)
|
|
183
|
+
else:
|
|
184
|
+
logger.warning(f"OpenAlex Local search error: {e}")
|
|
185
|
+
return self._create_minimal_metadata(
|
|
186
|
+
title=title,
|
|
187
|
+
year=year,
|
|
188
|
+
authors=authors,
|
|
189
|
+
return_as=return_as,
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
def _extract_metadata_from_work(self, data: dict, return_as: str) -> Optional[Dict]:
|
|
193
|
+
"""Extract metadata from OpenAlex work data"""
|
|
194
|
+
if not data:
|
|
195
|
+
return self._create_minimal_metadata(return_as=return_as)
|
|
196
|
+
|
|
197
|
+
# Extract title
|
|
198
|
+
title = data.get("title")
|
|
199
|
+
if title and title.endswith("."):
|
|
200
|
+
title = title[:-1]
|
|
201
|
+
|
|
202
|
+
# Extract DOI
|
|
203
|
+
doi = data.get("doi")
|
|
204
|
+
if doi:
|
|
205
|
+
doi = doi.replace("https://doi.org/", "").replace("http://doi.org/", "")
|
|
206
|
+
|
|
207
|
+
# Extract authors
|
|
208
|
+
authors = data.get("authors", [])
|
|
209
|
+
if not authors:
|
|
210
|
+
authors = []
|
|
211
|
+
|
|
212
|
+
# Extract publication info
|
|
213
|
+
year = data.get("year")
|
|
214
|
+
journal = data.get("source")
|
|
215
|
+
issn = data.get("issn")
|
|
216
|
+
volume = data.get("volume")
|
|
217
|
+
issue = data.get("issue")
|
|
218
|
+
pages = data.get("pages")
|
|
219
|
+
publisher = None # Not directly available in response
|
|
220
|
+
|
|
221
|
+
# Extract citation count
|
|
222
|
+
cited_by_count = data.get("cited_by_count")
|
|
223
|
+
|
|
224
|
+
# Extract concepts/keywords
|
|
225
|
+
concepts = data.get("concepts", [])
|
|
226
|
+
keywords = [c.get("name") for c in concepts if c.get("name")]
|
|
227
|
+
|
|
228
|
+
# Extract OA info
|
|
229
|
+
is_oa = data.get("is_oa", False)
|
|
230
|
+
oa_url = data.get("oa_url")
|
|
231
|
+
|
|
232
|
+
# Extract OpenAlex ID
|
|
233
|
+
openalex_id = data.get("openalex_id")
|
|
234
|
+
|
|
235
|
+
metadata = {
|
|
236
|
+
"id": {
|
|
237
|
+
"doi": doi if doi else None,
|
|
238
|
+
"doi_engines": [self.name] if doi else None,
|
|
239
|
+
"openalex_id": openalex_id if openalex_id else None,
|
|
240
|
+
"openalex_id_engines": [self.name] if openalex_id else None,
|
|
241
|
+
},
|
|
242
|
+
"basic": {
|
|
243
|
+
"title": title if title else None,
|
|
244
|
+
"title_engines": [self.name] if title else None,
|
|
245
|
+
"year": year if year else None,
|
|
246
|
+
"year_engines": [self.name] if year else None,
|
|
247
|
+
"authors": authors if authors else None,
|
|
248
|
+
"authors_engines": [self.name] if authors else None,
|
|
249
|
+
"keywords": keywords if keywords else None,
|
|
250
|
+
"keywords_engines": [self.name] if keywords else None,
|
|
251
|
+
},
|
|
252
|
+
"publication": {
|
|
253
|
+
"journal": journal if journal else None,
|
|
254
|
+
"journal_engines": [self.name] if journal else None,
|
|
255
|
+
"issn": issn if issn else None,
|
|
256
|
+
"issn_engines": [self.name] if issn else None,
|
|
257
|
+
"volume": volume if volume else None,
|
|
258
|
+
"volume_engines": [self.name] if volume else None,
|
|
259
|
+
"issue": issue if issue else None,
|
|
260
|
+
"issue_engines": [self.name] if issue else None,
|
|
261
|
+
"pages": pages if pages else None,
|
|
262
|
+
"pages_engines": [self.name] if pages else None,
|
|
263
|
+
},
|
|
264
|
+
"citation_count": {
|
|
265
|
+
"total": cited_by_count if cited_by_count else None,
|
|
266
|
+
"total_engines": [self.name] if cited_by_count else None,
|
|
267
|
+
},
|
|
268
|
+
"url": {
|
|
269
|
+
"doi": f"https://doi.org/{doi}" if doi else None,
|
|
270
|
+
"doi_engines": [self.name] if doi else None,
|
|
271
|
+
"pdf": oa_url if oa_url else None,
|
|
272
|
+
"pdf_engines": [self.name] if oa_url else None,
|
|
273
|
+
},
|
|
274
|
+
"open_access": {
|
|
275
|
+
"is_oa": is_oa,
|
|
276
|
+
"is_oa_engines": [self.name] if is_oa is not None else None,
|
|
277
|
+
"oa_url": oa_url if oa_url else None,
|
|
278
|
+
"oa_url_engines": [self.name] if oa_url else None,
|
|
279
|
+
},
|
|
280
|
+
"system": {
|
|
281
|
+
f"searched_by_{self.name}": True,
|
|
282
|
+
},
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
metadata = standardize_metadata(metadata)
|
|
286
|
+
|
|
287
|
+
if return_as == "dict":
|
|
288
|
+
return metadata
|
|
289
|
+
if return_as == "json":
|
|
290
|
+
return json.dumps(metadata, indent=2)
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
if __name__ == "__main__":
|
|
294
|
+
|
|
295
|
+
from scitex.scholar.metadata_engines.individual import OpenAlexLocalEngine
|
|
296
|
+
|
|
297
|
+
TITLE = "deep learning"
|
|
298
|
+
DOI = "10.1038/nature12373"
|
|
299
|
+
|
|
300
|
+
# Example 1: Internal API (Docker network or localhost)
|
|
301
|
+
print("\n" + "=" * 60)
|
|
302
|
+
print("INTERNAL API EXAMPLE")
|
|
303
|
+
print("=" * 60)
|
|
304
|
+
engine_internal = OpenAlexLocalEngine(
|
|
305
|
+
"test@example.com", api_url="http://openalex:31292"
|
|
306
|
+
)
|
|
307
|
+
print(f"API URL: {engine_internal.api_url}")
|
|
308
|
+
print(f"Is External: {engine_internal._is_external_api}")
|
|
309
|
+
print(f"Works endpoint: {engine_internal._build_endpoint_url('works')}")
|
|
310
|
+
|
|
311
|
+
# Example 2: External API (public internet)
|
|
312
|
+
print("\n" + "=" * 60)
|
|
313
|
+
print("EXTERNAL API EXAMPLE")
|
|
314
|
+
print("=" * 60)
|
|
315
|
+
engine_external = OpenAlexLocalEngine(
|
|
316
|
+
"test@example.com", api_url="https://scitex.ai/scholar/api/openalex"
|
|
317
|
+
)
|
|
318
|
+
print(f"API URL: {engine_external.api_url}")
|
|
319
|
+
print(f"Is External: {engine_external._is_external_api}")
|
|
320
|
+
print(f"Works endpoint: {engine_external._build_endpoint_url('works')}")
|
|
321
|
+
|
|
322
|
+
# Test search (use internal for demo)
|
|
323
|
+
print("\n" + "=" * 60)
|
|
324
|
+
print("SEARCH TEST")
|
|
325
|
+
print("=" * 60)
|
|
326
|
+
engine = OpenAlexLocalEngine("test@example.com")
|
|
327
|
+
result = engine.search(doi=DOI)
|
|
328
|
+
if result:
|
|
329
|
+
print(f"Title: {result.get('basic', {}).get('title')}")
|
|
330
|
+
print(f"DOI: {result.get('id', {}).get('doi')}")
|
|
331
|
+
print(f"Year: {result.get('basic', {}).get('year')}")
|
|
332
|
+
else:
|
|
333
|
+
print("No results found")
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
# Usage examples:
|
|
337
|
+
#
|
|
338
|
+
# Internal API (from NAS Docker):
|
|
339
|
+
# export SCITEX_SCHOLAR_OPENALEX_API_URL=http://openalex:31292
|
|
340
|
+
# python -m scitex.scholar.metadata_engines.individual.OpenAlexLocalEngine
|
|
341
|
+
#
|
|
342
|
+
# External API (from anywhere):
|
|
343
|
+
# export SCITEX_SCHOLAR_OPENALEX_API_URL=https://scitex.ai/scholar/api/openalex
|
|
344
|
+
# python -m scitex.scholar.metadata_engines.individual.OpenAlexLocalEngine
|
|
345
|
+
|
|
346
|
+
# EOF
|
|
@@ -2,6 +2,7 @@ from .ArXivEngine import ArXivEngine
|
|
|
2
2
|
from .CrossRefEngine import CrossRefEngine
|
|
3
3
|
from .CrossRefLocalEngine import CrossRefLocalEngine
|
|
4
4
|
from .OpenAlexEngine import OpenAlexEngine
|
|
5
|
+
from .OpenAlexLocalEngine import OpenAlexLocalEngine
|
|
5
6
|
from .PubMedEngine import PubMedEngine
|
|
6
7
|
from .SemanticScholarEngine import SemanticScholarEngine
|
|
7
8
|
from .URLDOIEngine import URLDOIEngine
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scitex
|
|
3
|
-
Version: 2.17.
|
|
3
|
+
Version: 2.17.4
|
|
4
4
|
Summary: A comprehensive Python library for scientific computing and data analysis
|
|
5
5
|
Project-URL: Homepage, https://github.com/ywatanabe1989/scitex-python
|
|
6
6
|
Project-URL: Documentation, https://scitex.readthedocs.io
|
|
@@ -12,14 +12,15 @@ scitex/_dev/__init__.py,sha256=ab6VDylil7CRDP9eHiD_nPeaMW5Ih5O-NpcN4-nd29M,2679
|
|
|
12
12
|
scitex/_dev/_config.py,sha256=_UdF7gaJo1Ifkm5kRrD1EZcHel21F0zo5xTqEJeihIs,10574
|
|
13
13
|
scitex/_dev/_ecosystem.py,sha256=b2J5XJBsGl4yiOeNSYM_Sue51CliHs_eyIfPZ9KL5OM,3394
|
|
14
14
|
scitex/_dev/_github.py,sha256=O3Pe754MPt9uoKCs4ppjvYC3Uxy3ydkUpMLYxlPsJxM,9412
|
|
15
|
-
scitex/_dev/
|
|
15
|
+
scitex/_dev/_rtd.py,sha256=TWD1pFoIGgsiOgir2WjCNT88TbpwJ_0aescSENpFEYI,3280
|
|
16
|
+
scitex/_dev/_ssh.py,sha256=z0n6-ozIFtpSga9RJN-yDkFoyVKWiv8ZfFdQYLGSbRQ,9327
|
|
16
17
|
scitex/_dev/_versions.py,sha256=JoBiRkx2Z9QB7UOQDKp-gd5iwiBkq0sdAWGRq01WUSc,7405
|
|
17
18
|
scitex/_dev/_dashboard/__init__.py,sha256=eApG1qoE7aWE1YZMkcMuzl585TbC5Di11DEC15twOVM,239
|
|
18
19
|
scitex/_dev/_dashboard/_app.py,sha256=Vcu9RQDrDWFA9_hdGt4TuoyevgAZm7k7SBvlkyOTci0,2014
|
|
19
|
-
scitex/_dev/_dashboard/_routes.py,sha256=
|
|
20
|
-
scitex/_dev/_dashboard/_scripts.py,sha256=
|
|
21
|
-
scitex/_dev/_dashboard/_styles.py,sha256=
|
|
22
|
-
scitex/_dev/_dashboard/_templates.py,sha256=
|
|
20
|
+
scitex/_dev/_dashboard/_routes.py,sha256=VLKwAoyNyf6D3pM55ZJTNeJeLNJx2ZlYxBoiUNlMX_E,5498
|
|
21
|
+
scitex/_dev/_dashboard/_scripts.py,sha256=mIi-NFRbiMD9bYZ9DDHcjMigY6NwTPlvXOxkG8NjwX8,16271
|
|
22
|
+
scitex/_dev/_dashboard/_styles.py,sha256=kxMykqAB0hMiC5J4Ro9ykIuXcW4nKrJXCetizPHW9PA,8139
|
|
23
|
+
scitex/_dev/_dashboard/_templates.py,sha256=u7Ubx4NH5BpoqIX_0WqzOFKZ14vzECBoYZQvaxdpT7Y,4140
|
|
23
24
|
scitex/_dev/_dashboard/static/version-dashboard-favicon.svg,sha256=CLYEFmmEQEkfx8ffoTmMQrRWjjRMGeeccYkvcSlyw9U,7578
|
|
24
25
|
scitex/_dev/_mcp/__init__.py,sha256=FdLB2ReZEHlIfVWFb1v41sm8L_ohZQSykXoC_Y6Uxeo,268
|
|
25
26
|
scitex/_dev/_mcp/handlers.py,sha256=07MQ6uOqUXfX4ykcwEXxYqe38nFblVTZMp2pXpL2RMs,4649
|
|
@@ -596,6 +597,11 @@ scitex/dev/plt/plot_stx_scatter.py,sha256=yJnZE0aL5Z0armnKyxCgdSIfmwSx0MO_BoDbzT
|
|
|
596
597
|
scitex/dev/plt/plot_stx_shaded_line.py,sha256=Ss4RD0qxO_uH1h_NL_meSH1-_ZXfOKnV1MAT48tegnI,718
|
|
597
598
|
scitex/dev/plt/plot_stx_violin.py,sha256=oEAWE4RwG7SQ3JlVuzfSbTFDF02VRb_vE4qBLU3tMu4,680
|
|
598
599
|
scitex/dev/plt/plot_stx_violinplot.py,sha256=wafuzIKs9WJRfXcH4bxxuigqCh75nxcZDfFq-9P1zxA,687
|
|
600
|
+
scitex/dev/plt/data/mpl/PLOTTING_FUNCTIONS.yaml,sha256=1E1RfxT1QtA3M5hrqn0zynwMrhIEIpaZSAHItRBIHdI,2843
|
|
601
|
+
scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES.yaml,sha256=ambH7kkBUivqVvo7thcMfs-ZvXAdaXtEEYuPTAvSOls,28660
|
|
602
|
+
scitex/dev/plt/data/mpl/PLOTTING_SIGNATURES_DETAILED.yaml,sha256=xzytlIhc9V3Aartc-HzzlDVvcOd7QGuzIkIe9X75sdk,181125
|
|
603
|
+
scitex/dev/plt/data/mpl/SIGNATURES_FLATTENED.yaml,sha256=kvV9iS2L3x3Et7LWK9Dyo_pQBnK2eTu13EXNS619ePM,27684
|
|
604
|
+
scitex/dev/plt/data/mpl/dir_ax.txt,sha256=HuMRJLF5pw58SaNrKkX8eeAj19k219bV7EVGzSPOCUU,5686
|
|
599
605
|
scitex/dev/plt/demo_plotters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
600
606
|
scitex/dev/plt/demo_plotters/plot_mpl_axhline.py,sha256=ECGTgIGgpU82llOHVqur0gzSl1NUHjvyaB85cZewKW8,707
|
|
601
607
|
scitex/dev/plt/demo_plotters/plot_mpl_axhspan.py,sha256=WetEGSzRbppTvn5VprGNglKuzLMoM8tFXg_N0jMFgFM,704
|
|
@@ -1305,12 +1311,12 @@ scitex/scholar/__main__.py,sha256=U7QKol30Vsvw_Xg4tVS5F1iFU4UluKnm1Z0Bs18zgCs,97
|
|
|
1305
1311
|
scitex/scholar/mcp_server.py,sha256=z_b4pD2z1H2bG1B6ATt3B6e8uNBMl-MLz6a3KLnaCiw,14934
|
|
1306
1312
|
scitex/scholar/_mcp/__init__.py,sha256=FJRAr90vUCg4PJ8Sv-WzsKuM7aY93m6UR87fhk843MU,73
|
|
1307
1313
|
scitex/scholar/_mcp/all_handlers.py,sha256=yALfZdQhDXWPlqUB1rcncENXyVVFNDnpGqhz5iCc-5Q,1856
|
|
1308
|
-
scitex/scholar/_mcp/crossref_handlers.py,sha256=
|
|
1314
|
+
scitex/scholar/_mcp/crossref_handlers.py,sha256=PxfuLacjKPTNk-rCQYZarT1nsDDWhYAfz9zFeYMuFJI,9228
|
|
1309
1315
|
scitex/scholar/_mcp/crossref_tool_schemas.py,sha256=v1VI3I2r_LWqt4IuEJo_JvXxtdY04eZ3zk6Kvqumou4,4748
|
|
1310
1316
|
scitex/scholar/_mcp/handlers.py,sha256=gMFBHPdqfWGRUDSu3wlllVBnJSzrkGm9ZUnUBhZXCY0,51088
|
|
1311
1317
|
scitex/scholar/_mcp/job_handlers.py,sha256=8ZkFRG1TOq20168DIpic3VMAMzTzieg1jnaE7eXQLlU,4970
|
|
1312
1318
|
scitex/scholar/_mcp/job_tool_schemas.py,sha256=xDTysuf3aLNxLO1O57sal5XcMeEstk0SB77wK9q6yVs,5777
|
|
1313
|
-
scitex/scholar/_mcp/openalex_handlers.py,sha256=
|
|
1319
|
+
scitex/scholar/_mcp/openalex_handlers.py,sha256=mffzi-D_MiM6bKFxwKKTcZmqutbZzWdeV0IcFcu9utc,7961
|
|
1314
1320
|
scitex/scholar/_mcp/openalex_tool_schemas.py,sha256=zu7--BZ7_aEnaJuEg-Sb1FiKNoeRthat70S9TZ70uL4,3194
|
|
1315
1321
|
scitex/scholar/_mcp/tool_schemas.py,sha256=ng_lGqhwa_2BxByASZriDgnZSHTewvqpF6jOzqRxEZ0,19818
|
|
1316
1322
|
scitex/scholar/_utils/__init__.py,sha256=leFMQOthrMMcnaoNvoP6oSYy0HSs0CXsg_Lr6yE2HnE,576
|
|
@@ -1383,7 +1389,7 @@ scitex/scholar/config/PublisherRules.py,sha256=wumxQXIaiFqG5gdSzd1_7bPytXZu2-WBp
|
|
|
1383
1389
|
scitex/scholar/config/README.md,sha256=318vSWix8XiZCNSjahq6Cswww7ZmHPKB3eYi54XyZfM,880
|
|
1384
1390
|
scitex/scholar/config/ScholarConfig.py,sha256=SgwR4r6mg8mE6OJ5nAnfeyV4_MVDT9HiIq_29XfBB2c,5178
|
|
1385
1391
|
scitex/scholar/config/__init__.py,sha256=YMIxrj09DczUL4b_nhV4cJl32ueitove8EcOEfinVeU,500
|
|
1386
|
-
scitex/scholar/config/default.yaml,sha256=
|
|
1392
|
+
scitex/scholar/config/default.yaml,sha256=2zMtDpbgd5Gd0fOoooMgHes4sknLcSDMe6PmbJdMoRE,18791
|
|
1387
1393
|
scitex/scholar/config/_categories/README.md,sha256=swb9Y-fSDK5IBst3bF96xH_syrRWpv7N8jz7gYQCyeQ,4806
|
|
1388
1394
|
scitex/scholar/config/_categories/api_keys.yaml,sha256=wo2fAxXqQYU6JLkAf4VxvcIiJPIc1qOjx2LMp2hK-k8,739
|
|
1389
1395
|
scitex/scholar/config/_categories/auth_gateway.yaml,sha256=resIZWaEyCRg0HIk0yJV194I4_Ur_OIQ2hLDswC-PqM,3448
|
|
@@ -1418,6 +1424,32 @@ scitex/scholar/core/_mixins/_savers.py,sha256=DonIcpCaobrRTs_LAuwurYEhsUTQE9otzX
|
|
|
1418
1424
|
scitex/scholar/core/_mixins/_search.py,sha256=8SyCtYtyyzTtMP85kFPrOZLK8PvL9dCCoOyI95N-SfI,3721
|
|
1419
1425
|
scitex/scholar/core/_mixins/_services.py,sha256=rnNtDTBES6RwKJzC0Wpi0G9Xiju2pudrdrSfrftB9dM,3228
|
|
1420
1426
|
scitex/scholar/core/_mixins/_url_finding.py,sha256=PawfItu2ienUW6Hj155fPT2KsKqm_sc7uukEYAXr-Rk,3241
|
|
1427
|
+
scitex/scholar/data/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1428
|
+
scitex/scholar/data/README.md,sha256=x38oaKofFr-9MdmYSX6etjt7c_37BtJ1HI2bVvGWxdc,1343
|
|
1429
|
+
scitex/scholar/data/impact_factor.db,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1430
|
+
scitex/scholar/data/bib_files/bibliography.bib,sha256=6cBOh0rNI9OpN4kOIOZMpE6jZuoEbfDJkFNgmcMDeVo,265769
|
|
1431
|
+
scitex/scholar/data/bib_files/neurovista.bib,sha256=NV7yU5UjkntfEJuLHSGdAzYR1GgddEQpngjQJWd5Pkc,12935
|
|
1432
|
+
scitex/scholar/data/bib_files/neurovista_enriched.bib,sha256=Bw7CiHo71OYVPRBO5l8bujzmy5xbExqO8Z7XYihqP98,62246
|
|
1433
|
+
scitex/scholar/data/bib_files/neurovista_enriched_enriched.bib,sha256=Bw7CiHo71OYVPRBO5l8bujzmy5xbExqO8Z7XYihqP98,62246
|
|
1434
|
+
scitex/scholar/data/bib_files/neurovista_processed.bib,sha256=CNL3LmRpLhp-qahyMEgfKRlQHuGYnDjUjitxVSiU3As,51469
|
|
1435
|
+
scitex/scholar/data/bib_files/openaccess.bib,sha256=73BIBSj5m0HbxeE-SrmI5hmDGCSbPhvbQioDXqb54Fc,3524
|
|
1436
|
+
scitex/scholar/data/bib_files/pac-seizure_prediction_enriched.bib,sha256=z5Rx7N_8wjQqYwPjwUbybeAp4fb1XyjbQ3X1LpuaqqU,272200
|
|
1437
|
+
scitex/scholar/data/bib_files/pac.bib,sha256=jxxGxT5CruEvKZfMcMQqt-48ZPcKSCuw-L4gJBUkvsc,27557
|
|
1438
|
+
scitex/scholar/data/bib_files/pac_enriched.bib,sha256=qYWT4aOp1694eEhdYUZZJ1e9uT5ZqjuSphZrmF1PwhU,142261
|
|
1439
|
+
scitex/scholar/data/bib_files/pac_processed.bib,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1440
|
+
scitex/scholar/data/bib_files/pac_titles.txt,sha256=KZI7uRGxSWCWitkI3E7dXxl3H46eeyBMJdJEavGb8Z4,7276
|
|
1441
|
+
scitex/scholar/data/bib_files/paywalled.bib,sha256=HeuYd4TxWBNFyn8BboC_SMrUe1PYhtVVZtdHM-A5UPI,3797
|
|
1442
|
+
scitex/scholar/data/bib_files/related-papers-by-coauthors.bib,sha256=sSXMtAA3zBYS2wG2yrDJSeF6li37tzO40nEXjZwgyRw,2917
|
|
1443
|
+
scitex/scholar/data/bib_files/related-papers-by-coauthors_enriched.bib,sha256=2ueaWK_0vl7seBYll5_t0BP-MjENYHDIedwod7jyZHI,12117
|
|
1444
|
+
scitex/scholar/data/bib_files/seizure_prediction.bib,sha256=SUbkEW6j10dRHNqPAtIUIKJUZIMuY6Q7eft-TJ0T0ec,27450
|
|
1445
|
+
scitex/scholar/data/bib_files/seizure_prediction_processed.bib,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1446
|
+
scitex/scholar/data/bib_files/test_complete_enriched.bib,sha256=Pmc3B9FkOXaFGdQZn3_G6kHDLGbTh5W-MLj6Rj-ejAo,60424
|
|
1447
|
+
scitex/scholar/data/bib_files/test_final_enriched.bib,sha256=Pmc3B9FkOXaFGdQZn3_G6kHDLGbTh5W-MLj6Rj-ejAo,60424
|
|
1448
|
+
scitex/scholar/data/bib_files/test_seizure.bib,sha256=vZcnnTVaDCPR1fpEBuYSv2RsrwmIbDx4ogIeObzJdis,1249
|
|
1449
|
+
scitex/scholar/data/impact_factor/JCR_IF_2022.xlsx,sha256=NJoAKC7RL3W_oBvv72j9mU5bZydEEAPDO8sza-R6JKE,929300
|
|
1450
|
+
scitex/scholar/data/impact_factor/JCR_IF_2024.db,sha256=hnpVDE8EY0OTXWtBy1NYietsglMxDcQTZs-IRsxHCjQ,2957312
|
|
1451
|
+
scitex/scholar/data/impact_factor/JCR_IF_2024.xlsx,sha256=2POoCl1Nf7WCG242KUjvU06J43RIoCpT4BEucCxIQBw,1756410
|
|
1452
|
+
scitex/scholar/data/impact_factor/JCR_IF_2024_v01.db,sha256=G5YuIOF0PJw0AeCxugL_cQvtFquH-MHoq1rXBrbnmSg,2875392
|
|
1421
1453
|
scitex/scholar/docs/00_SUMMARY.md,sha256=quFBhRq5WJ06u5Po5oSzR28A-WihrApquXZYeyqwoS8,4011
|
|
1422
1454
|
scitex/scholar/docs/01_STORAGE_ARCHITECTURE.md,sha256=sKQDAS3ejZVJ8W51GADV_BqfWnj8oI4dOpQ1XCiF4gc,3746
|
|
1423
1455
|
scitex/scholar/docs/02_PIPELINE_ORGANIZATION.md,sha256=8BS_j6S89TiLqDRiODACZsbEMs6EyOiLDj8CgILz4WU,8288
|
|
@@ -1500,11 +1532,13 @@ scitex/scholar/jobs/_JobManager.py,sha256=F06vxOZoYouqgeNVmlwKpDPkWWh-PU2aLp3pqu
|
|
|
1500
1532
|
scitex/scholar/jobs/__init__.py,sha256=dXdPmFUWf-Ypl41_Z6qsduYCofygfgq2UjiIZcYiGjQ,1779
|
|
1501
1533
|
scitex/scholar/jobs/_errors.py,sha256=V7Xv4q0CDBJIQ6NSg-lRb_skFcqT-jIZ_aI5gavjDds,10211
|
|
1502
1534
|
scitex/scholar/jobs/_executors.py,sha256=kWU9uuN_8cx6oPyGakjcypsiZoUwicrHL29_aF_iZUU,11807
|
|
1503
|
-
scitex/scholar/local_dbs/__init__.py,sha256=
|
|
1535
|
+
scitex/scholar/local_dbs/__init__.py,sha256=TlwFdJybybeQ81GjJMM6QeZiwweA9KB2aGjLU8TuL2w,962
|
|
1504
1536
|
scitex/scholar/local_dbs/crossref_scitex.py,sha256=Ib2JluhqyYjDPh0hZqENHNP7_eg21AQnkyWjl5pfXRs,748
|
|
1537
|
+
scitex/scholar/local_dbs/export.py,sha256=q2yEPK5inRAIgEwMC6gSsAGZxMZHEOmTp7WIVrU065o,2394
|
|
1505
1538
|
scitex/scholar/local_dbs/openalex_scitex.py,sha256=mnHHMnk2aJcSfXYWJh2wsbs818oU1fW63i_3VZG7wpI,748
|
|
1539
|
+
scitex/scholar/local_dbs/unified.py,sha256=AbFY4xFcUA5TpDQGM42F8ql_2voY-YDGpj2o52hbw6Q,15373
|
|
1506
1540
|
scitex/scholar/metadata_engines/README.md,sha256=wz1fTeru9sTgkGO5T8VdDBsd4FBaZu2t6-I8MTNGifw,919
|
|
1507
|
-
scitex/scholar/metadata_engines/ScholarEngine.py,sha256=
|
|
1541
|
+
scitex/scholar/metadata_engines/ScholarEngine.py,sha256=y0j50zY4W6FApW1SqWH2lU6fBs94DoYAC-S7vP3ZqD0,21178
|
|
1508
1542
|
scitex/scholar/metadata_engines/__init__.py,sha256=qjndZBrK2tXOMCRHFeEu2BJ9Ir8nbr7cHsV4xvXUwv4,749
|
|
1509
1543
|
scitex/scholar/metadata_engines/.combined-SemanticScholarSource/_SemanticScholarSource.py,sha256=RrjgRQ0C5DE_8_5SIxV3wsoiaOCuawwVJc8YGFUHxeI,10146
|
|
1510
1544
|
scitex/scholar/metadata_engines/.combined-SemanticScholarSource/_SemanticScholarSourceEnhanced.py,sha256=CLLXlSVgaujFvTsnDrWmAqTaUmJBtr9msFY-uYaxMZk,7604
|
|
@@ -1512,11 +1546,12 @@ scitex/scholar/metadata_engines/individual/ArXivEngine.py,sha256=YeB9sfZQGz0P_eF
|
|
|
1512
1546
|
scitex/scholar/metadata_engines/individual/CrossRefEngine.py,sha256=dAR2OVNl1i-p1I0UTsyEN4KV0L7vTqFtATe3KtVrntE,9974
|
|
1513
1547
|
scitex/scholar/metadata_engines/individual/CrossRefLocalEngine.py,sha256=thHe3k41EI9Td1vqeh3ebUfg9fjrq94QYnDtpwxlgNg,11147
|
|
1514
1548
|
scitex/scholar/metadata_engines/individual/OpenAlexEngine.py,sha256=fAXehDNdRMPBMcMcemw5cXUrBtyWSgZPpVBJfBAZXqQ,12149
|
|
1549
|
+
scitex/scholar/metadata_engines/individual/OpenAlexLocalEngine.py,sha256=K5VQVfCHCEqFT3Jg_3ZttRXMFZl87PGYiYuAqIjDBBo,12056
|
|
1515
1550
|
scitex/scholar/metadata_engines/individual/PubMedEngine.py,sha256=0FD9h_UCMZ9YrclW228YoFqlMClx-3r1SQC-TpcOS8Q,9923
|
|
1516
1551
|
scitex/scholar/metadata_engines/individual/SemanticScholarEngine.py,sha256=Ve6aADnN3CgPAftkRMbllMyUwy0YKEUq76BZU8C2y1k,15338
|
|
1517
1552
|
scitex/scholar/metadata_engines/individual/URLDOIEngine.py,sha256=HnUTo_BjFnKNKPz1vmaIX4EedlyKXWSgrzyTGppSnjc,14461
|
|
1518
1553
|
scitex/scholar/metadata_engines/individual/_BaseDOIEngine.py,sha256=tIu_a-O9Y_iJ_RnSI0oKHBzU0h4frm9B4p7TXvfsIyI,16427
|
|
1519
|
-
scitex/scholar/metadata_engines/individual/__init__.py,sha256=
|
|
1554
|
+
scitex/scholar/metadata_engines/individual/__init__.py,sha256=TM4zdBk9c_NG2TTf3j-BKBU_Ar3agYEh1HZTRWbKMEs,364
|
|
1520
1555
|
scitex/scholar/metadata_engines/utils/_PubMedConverter.py,sha256=OaWsznE66619Gelqdh3daMnl2yJ3O4fvxMfRvuxhnN8,14407
|
|
1521
1556
|
scitex/scholar/metadata_engines/utils/_URLDOIExtractor.py,sha256=fwQ0W8E7wSXd-33Ps3e_sIDqCKQdtGwDhpg9xwdtvBg,9175
|
|
1522
1557
|
scitex/scholar/metadata_engines/utils/__init__.py,sha256=7JNLEqNflajR16Vrm27mR0RnZnhwwya7ajOrsfV7rus,865
|
|
@@ -1572,12 +1607,6 @@ scitex/scholar/storage/_mixins/_symlink_handlers.py,sha256=m63ATAfDmAUDk4shsVf0a
|
|
|
1572
1607
|
scitex/scholar/url_finder/README.md,sha256=CGQpOktqpQF_5z_u-pIKMYBAeQZXT9Eh24XaPtfV6HM,2016
|
|
1573
1608
|
scitex/scholar/url_finder/ScholarURLFinder.py,sha256=C9lpYefs-9YoGcYYYBDB8GrGQyp27LmLTIv_WelDJgI,11840
|
|
1574
1609
|
scitex/scholar/url_finder/__init__.py,sha256=FV9ocQPE6520WUVVMV2u7hci_-2ha1KLJHzRUUlWGBw,93
|
|
1575
|
-
scitex/scholar/url_finder/.tmp/open_url/KNOWN_RESOLVERS.py,sha256=n37aHjOq6YrtgR0DGN0iznKy8EWCjzgBODVm7pINc-w,12926
|
|
1576
|
-
scitex/scholar/url_finder/.tmp/open_url/README.md,sha256=4CyiK7Zbdd23WjsYUU7J7FLPmhxwxA1PWc7enL9dGug,6836
|
|
1577
|
-
scitex/scholar/url_finder/.tmp/open_url/_DOIToURLResolver.py,sha256=C0cURB6BO78udjjsucqwM_rTxDy5XTaqyuxLBCNbyeU,23632
|
|
1578
|
-
scitex/scholar/url_finder/.tmp/open_url/_OpenURLResolver.py,sha256=yigbSuUZ2m6XmDFjhrIdn8Bva5ic7Y-DdwcMCUFlisA,43504
|
|
1579
|
-
scitex/scholar/url_finder/.tmp/open_url/_ResolverLinkFinder.py,sha256=s-2HZzAwBp7DxFtpqzEivLbvJ20J1pcBHSDXYmjmJ9A,11869
|
|
1580
|
-
scitex/scholar/url_finder/.tmp/open_url/__init__.py,sha256=d1umAnLQNFGYX7oui5Jl8JrjoDpwHkTmHwIiUbPbvBk,571
|
|
1581
1610
|
scitex/scholar/url_finder/docs/CORE_URL_TYPES.md,sha256=bRd2AfoypJiO4xgJBqpbC0GR6BhO4dEBo8D4fg7oDo0,6651
|
|
1582
1611
|
scitex/scholar/url_finder/docs/URL_SCHEMA.md,sha256=MDSUpqJzVwll9Mpspp2RhvYIv6bq_VCTktmTxk_DKk4,7696
|
|
1583
1612
|
scitex/scholar/url_finder/strategies/__init__.py,sha256=UIfUjfZbFhDZzfEHl3uCuIBUgMEdUMYaC9NbMEDG2Hs,1439
|
|
@@ -2592,8 +2621,8 @@ scitex/web/_summarize_url.py,sha256=PpWBk727pjC_yivI_RVNU_RMxjV_jrqlMNaD6kXQAPk,
|
|
|
2592
2621
|
scitex/web/download_images.py,sha256=g4sxWzg0ip5Wig7ElPo6fDz5DdXKyJnAsBFwIYoQI6g,9473
|
|
2593
2622
|
scitex/writer/README.md,sha256=RqUMOJD7wUiQjWoiLSf_hl_Y0IAE3_xPxhlp941zYe4,1299
|
|
2594
2623
|
scitex/writer/__init__.py,sha256=jQqdIyvQhknySoUAMKreBhAa1KwZ0ieW8SYCppBukts,3301
|
|
2595
|
-
scitex-2.17.
|
|
2596
|
-
scitex-2.17.
|
|
2597
|
-
scitex-2.17.
|
|
2598
|
-
scitex-2.17.
|
|
2599
|
-
scitex-2.17.
|
|
2624
|
+
scitex-2.17.4.dist-info/METADATA,sha256=eUYxZ5DFUiuuKXHwgRTipSiwu_Ajk44CdHVIoSimdqg,26557
|
|
2625
|
+
scitex-2.17.4.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
2626
|
+
scitex-2.17.4.dist-info/entry_points.txt,sha256=ZtDrHnPNMnsSmAnQoCHNmk0xKotNyR2X_YFDDteupW8,497
|
|
2627
|
+
scitex-2.17.4.dist-info/licenses/LICENSE,sha256=TfPDBt3ar0uv_f9cqCDMZ5rIzW3CY8anRRd4PkL6ejs,34522
|
|
2628
|
+
scitex-2.17.4.dist-info/RECORD,,
|