gismap 0.4.0__py3-none-any.whl → 0.4.1__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.
gismap/sources/models.py CHANGED
@@ -6,11 +6,43 @@ from gismap.utils.common import LazyRepr
6
6
 
7
7
  @dataclass(repr=False)
8
8
  class Author(LazyRepr):
9
+ """
10
+ Base class for authors in the database system.
11
+
12
+ Authors are identified primarily by their name and may have
13
+ database-specific subclasses with additional attributes like keys and aliases.
14
+
15
+ Parameters
16
+ ----------
17
+ name : :class:`str`
18
+ The author's name.
19
+ """
20
+
9
21
  name: str
10
22
 
11
23
 
12
24
  @dataclass(repr=False)
13
25
  class Publication(LazyRepr):
26
+ """
27
+ Base class for publications in the database system.
28
+
29
+ Publications contain metadata about academic papers including title,
30
+ authors, venue, type, and publication year.
31
+
32
+ Parameters
33
+ ----------
34
+ title : :class:`str`
35
+ The publication title.
36
+ authors : :class:`list`
37
+ List of :class:`Author` objects.
38
+ venue : :class:`str`
39
+ Publication venue (journal, conference, etc.).
40
+ type : :class:`str`
41
+ Publication type (e.g., 'journal', 'conference', 'book').
42
+ year : :class:`int`
43
+ Year of publication.
44
+ """
45
+
14
46
  title: str
15
47
  authors: list
16
48
  venue: str
@@ -20,18 +52,69 @@ class Publication(LazyRepr):
20
52
 
21
53
  @dataclass(repr=False)
22
54
  class DB(LazyRepr):
55
+ """
56
+ Abstract base class for database backends.
57
+
58
+ Provides the interface for searching authors and retrieving publications.
59
+ Subclasses must implement :meth:`search_author` and :meth:`from_author`.
60
+
61
+ Attributes
62
+ ----------
63
+ db_name : :class:`str`
64
+ Identifier for the database backend (e.g., 'hal', 'dblp', 'ldb').
65
+ """
66
+
23
67
  db_name: ClassVar[str] = None
24
68
 
25
69
  @classmethod
26
70
  def search_author(cls, name):
71
+ """
72
+ Search for authors matching the given name.
73
+
74
+ Parameters
75
+ ----------
76
+ name : :class:`str`
77
+ Name to search for.
78
+
79
+ Returns
80
+ -------
81
+ :class:`list`
82
+ List of matching :class:`Author` objects.
83
+ """
27
84
  raise NotImplementedError
28
85
 
29
86
  @classmethod
30
87
  def from_author(cls, a):
88
+ """
89
+ Retrieve publications for a given author.
90
+
91
+ Parameters
92
+ ----------
93
+ a : :class:`Author`
94
+ The author whose publications to retrieve.
95
+
96
+ Returns
97
+ -------
98
+ :class:`list`
99
+ List of :class:`Publication` objects.
100
+ """
31
101
  raise NotImplementedError
32
102
 
33
103
 
34
104
  def db_class_to_auth_class(db_class):
105
+ """
106
+ Find the Author subclass associated with a given DB class.
107
+
108
+ Parameters
109
+ ----------
110
+ db_class : :class:`type`
111
+ A DB subclass (e.g., HAL, DBLP, LDB).
112
+
113
+ Returns
114
+ -------
115
+ :class:`type` or None
116
+ The corresponding Author subclass, or None if not found.
117
+ """
35
118
  for subclass in Author.__subclasses__():
36
119
  if db_class in subclass.__mro__:
37
120
  return subclass
gismap/sources/multi.py CHANGED
@@ -8,6 +8,22 @@ from gismap.utils.text import clean_aliases
8
8
 
9
9
 
10
10
  def score_author_source(dbauthor):
11
+ """
12
+ Compute a quality score for an author source.
13
+
14
+ Higher scores indicate more reliable author identification.
15
+ HAL idHal keys are preferred, followed by HAL pid, then DBLP/LDB.
16
+
17
+ Parameters
18
+ ----------
19
+ dbauthor: :class:`~gismap.sources.models.Author`
20
+ A database-specific author object.
21
+
22
+ Returns
23
+ -------
24
+ :class:`int`
25
+ Score value (higher is better).
26
+ """
11
27
  if dbauthor.db_name == "hal":
12
28
  if dbauthor.key_type == "fullname":
13
29
  return -1
@@ -22,11 +38,38 @@ def score_author_source(dbauthor):
22
38
 
23
39
 
24
40
  def sort_author_sources(sources):
41
+ """
42
+ Sort author sources by quality score in descending order.
43
+
44
+ Parameters
45
+ ----------
46
+ sources: :class:`list`
47
+ List of database-specific author objects.
48
+
49
+ Returns
50
+ -------
51
+ :class:`list`
52
+ Sorted list with highest-quality sources first.
53
+ """
25
54
  return sorted(sources, key=score_author_source, reverse=True)
26
55
 
27
56
 
28
57
  @dataclass(repr=False)
29
58
  class SourcedAuthor(Author):
59
+ """
60
+ An author aggregated from multiple database sources.
61
+
62
+ Combines author information from HAL, DBLP, and/or LDB into a single entity.
63
+ The primary source (first in the sorted list) determines the author's key.
64
+
65
+ Parameters
66
+ ----------
67
+ name: :class:`str`
68
+ The author's name.
69
+ sources: :class:`list`
70
+ List of database-specific author objects (HALAuthor, DBLPAuthor, LDBAuthor).
71
+ """
72
+
30
73
  sources: list = field(default_factory=list)
31
74
 
32
75
  @property
@@ -89,6 +132,28 @@ def sort_publication_sources(sources):
89
132
 
90
133
  @dataclass(repr=False)
91
134
  class SourcedPublication(Publication):
135
+ """
136
+ A publication aggregated from multiple database sources.
137
+
138
+ Combines publication entries from HAL, DBLP, and/or LDB that refer
139
+ to the same paper. The primary source determines the publication's metadata.
140
+
141
+ Parameters
142
+ ----------
143
+ title: :class:`str`
144
+ Publication title.
145
+ authors: :class:`list`
146
+ List of author objects.
147
+ venue: :class:`str`
148
+ Publication venue.
149
+ type: :class:`str`
150
+ Publication type.
151
+ year: :class:`int`
152
+ Publication year.
153
+ sources: :class:`list`
154
+ List of database-specific publication objects.
155
+ """
156
+
92
157
  sources: list = field(default_factory=list)
93
158
 
94
159
  @property
gismap/utils/common.py CHANGED
@@ -1,9 +1,14 @@
1
+ from dataclasses import dataclass
2
+
1
3
  HIDDEN_KEYS = {"sources", "aliases", "abstract", "metadata"}
2
4
 
3
5
 
4
6
  class LazyRepr:
5
7
  """
6
- MixIn that hides empty fields in dataclasses repr's.
8
+ MixIn that provides a clean repr for dataclasses.
9
+
10
+ Hides empty fields and fields in HIDDEN_KEYS from the repr string.
11
+ Private attributes (starting with '_') are also hidden.
7
12
  """
8
13
 
9
14
  def __repr__(self):
@@ -108,3 +113,55 @@ def list_of_objects(clss, dico, default=None):
108
113
  return [cls for lcls in clss for cls in list_of_objects(lcls, dico, default)]
109
114
  else:
110
115
  return [clss]
116
+
117
+
118
+ @dataclass(repr=False)
119
+ class Data(LazyRepr):
120
+ """
121
+ Easy-going converter of dict to dataclass. Useful when you want to use attribute access
122
+ and do not care about giving a full description.
123
+
124
+ Examples
125
+ --------
126
+
127
+ >>> data = Data({
128
+ ... 'name': 'Alice',
129
+ ... 'age': 30,
130
+ ... 'address': {'street': '123 Main', 'city': 'Paris'},
131
+ ... 'hobbies': [{'name': 'jazz', 'level': 5}, {'name': 'code'}]})
132
+ >>> data # doctest: +NORMALIZE_WHITESPACE
133
+ Data(name='Alice', age=30, address=Data(street='123 Main', city='Paris'),
134
+ hobbies=[Data(name='jazz', level=5), Data(name='code')])
135
+ >>> data.hobbies[0].name
136
+ 'jazz'
137
+ >>> data.todict() # doctest: +NORMALIZE_WHITESPACE
138
+ {'name': 'Alice', 'age': 30, 'address': {'street': '123 Main', 'city': 'Paris'},
139
+ 'hobbies': [{'name': 'jazz', 'level': 5}, {'name': 'code'}]}
140
+ """
141
+
142
+ def __init__(self, data):
143
+ self._wrap(data)
144
+
145
+ def _wrap(self, d):
146
+ for key, value in d.items():
147
+ wrapped = self._wrap_item(value)
148
+ setattr(self, key, wrapped)
149
+
150
+ def _wrap_item(self, item):
151
+ if isinstance(item, dict):
152
+ return Data(item)
153
+ elif isinstance(item, list):
154
+ return [self._wrap_item(subitem) for subitem in item]
155
+ return item
156
+
157
+ def todict(self):
158
+ res = {}
159
+ for key in self.__dict__:
160
+ value = getattr(self, key)
161
+ if hasattr(value, "todict"):
162
+ res[key] = value.todict()
163
+ elif isinstance(value, list):
164
+ res[key] = [v.todict() if hasattr(v, "todict") else v for v in value]
165
+ else:
166
+ res[key] = value
167
+ return res
gismap/utils/text.py CHANGED
@@ -98,7 +98,7 @@ def asciify(text):
98
98
  """
99
99
  Parameters
100
100
  ----------
101
- text::class:`str`
101
+ text: :class:`str`
102
102
  Some text (typically names) with annoying accents.
103
103
 
104
104
  Returns
gismap/utils/zlist.py CHANGED
@@ -9,13 +9,23 @@ cctx = zstd.ZstdCompressor()
9
9
 
10
10
  class ZList(MixInIO):
11
11
  """
12
- List compressed by frames of elements. Allows to store compressed data in memory with decent seek and scan.
12
+ Compressed list with frame-based storage.
13
+
14
+ Stores elements in compressed frames, allowing efficient memory usage
15
+ while maintaining random access. Uses zstandard compression.
16
+
17
+ Use as a context manager for building:
18
+
19
+ with ZList(frame_size=1000) as z:
20
+ for item in data:
21
+ z.append(item)
13
22
 
14
23
  Parameters
15
24
  ----------
16
- frame_size: :class:`int`
17
- Size of each frame in number of elements.
25
+ frame_size : :class:`int`, default=1000
26
+ Number of elements per compressed frame.
18
27
  """
28
+
19
29
  def __init__(self, frame_size=1000):
20
30
  self.frame_size = frame_size
21
31
  self.frame = None
@@ -33,6 +43,14 @@ class ZList(MixInIO):
33
43
  self._batch = []
34
44
 
35
45
  def append(self, entry):
46
+ """
47
+ Add an element to the list.
48
+
49
+ Parameters
50
+ ----------
51
+ entry
52
+ Element to add.
53
+ """
36
54
  self._batch.append(entry)
37
55
  self._n += 1
38
56
  if len(self._batch) == self.frame_size:
@@ -55,7 +73,9 @@ class ZList(MixInIO):
55
73
  self._off = np.array(self._off, dtype=int)
56
74
 
57
75
  def load_frame(self, f):
58
- self.frame = pickle.loads(dctx.decompress(self._blob[self._off[f]:self._off[f + 1]]))
76
+ self.frame = pickle.loads(
77
+ dctx.decompress(self._blob[self._off[f] : self._off[f + 1]])
78
+ )
59
79
 
60
80
  def __getitem__(self, i):
61
81
  g, f = i // self.frame_size, i % self.frame_size
@@ -1,26 +1,26 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gismap
3
- Version: 0.4.0
4
- Summary: GisMap leverages DBLP and HAL databases to provide cartography tools for you and your lab.
3
+ Version: 0.4.1
4
+ Summary: GisMap: for researchers, by researchers. Research cartography tools leveraging DBLP and HAL.
5
5
  Project-URL: Repository, https://github.com/balouf/gismap
6
6
  Project-URL: Documentation, https://balouf.github.io/gismap
7
7
  Author-email: Fabien Mathieu <fabien.mathieu@normalesup.org>
8
8
  Maintainer-email: Fabien Mathieu <fabien.mathieu@normalesup.org>
9
9
  License-Expression: MIT
10
10
  License-File: AUTHORS.md
11
- Requires-Python: >=3.10
12
- Requires-Dist: beautifulsoup4>=4.14.2
13
- Requires-Dist: bof>=0.3.5
11
+ Requires-Python: <3.15,>=3.11
12
+ Requires-Dist: beautifulsoup4>=4.14.3
13
+ Requires-Dist: bof>=0.4.2
14
14
  Requires-Dist: distinctipy>=1.3.4
15
15
  Requires-Dist: domonic>=0.9.13
16
- Requires-Dist: gismo>=0.5.2
16
+ Requires-Dist: gismo>=0.5.4
17
17
  Requires-Dist: ipykernel>=6.30.1
18
18
  Requires-Dist: ipywidgets>=8.1.8
19
- Requires-Dist: platformdirs>=4.5.0
19
+ Requires-Dist: platformdirs>=4.5.1
20
20
  Requires-Dist: tqdm>=4.67.1
21
21
  Description-Content-Type: text/markdown
22
22
 
23
- # Generic Information Search: Mapping and Analysis of Publications
23
+ # GisMap: for researchers, by researchers
24
24
 
25
25
 
26
26
  [![PyPI Status](https://img.shields.io/pypi/v/gismap.svg)](https://pypi.python.org/pypi/gismap)
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
30
30
  [![License: MIT](https://img.shields.io/badge/license-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
31
31
  [![Code Coverage](https://codecov.io/gh/balouf/gismap/branch/main/graphs/badge.svg)](https://codecov.io/gh/balouf/gismap/tree/main)
32
32
 
33
- GisMap leverages DBLP and HAL databases to provide cartography tools for you and your lab.
33
+ GisMap (Generic Information Search: Mapping and Analysis of Publications) leverages DBLP and HAL databases to provide cartography tools for you and your lab.
34
34
 
35
35
  - Free software: MIT
36
36
  - Documentation: <https://balouf.github.io/gismap/>.
@@ -41,6 +41,7 @@ GisMap leverages DBLP and HAL databases to provide cartography tools for you and
41
41
  - Can be used by all researchers in Computer Science (DBLP endpoint) or based in France (HAL endpoint).
42
42
  - Aggregate publications from multiple databases, including multiple author keys inside the same database.
43
43
  - Automatically keeps track of a Lab/Department members and publications.
44
+ - DBLP database can be used locally (LDB endpoint) to improve speed and reliability.
44
45
  - Builds interactive collaboration graphs.
45
46
 
46
47
  ## Test GisMap online!
@@ -54,6 +55,7 @@ For example:
54
55
  - [Tutorial: Making EgoMaps](https://mybinder.org/v2/gh/balouf/gismap/HEAD?urlpath=%2Fdoc%2Ftree%2Fdocs%2Ftutorials%2Fegomap.ipynb)
55
56
  - [Jupyter Lab instance with GisMap installed](https://mybinder.org/v2/gh/balouf/gismap/HEAD)
56
57
 
58
+ **WARNING**: don't use LDB on `binder`, which does not provide enough memory yet. Only HAL and legacy DBLP work on binder.
57
59
 
58
60
  ## Quickstart
59
61
 
@@ -0,0 +1,43 @@
1
+ gismap/__init__.py,sha256=FHZLy3T2zFVrFRe3sqSRTuXkZ6DYise9HtXCWWfXrys,866
2
+ gismap/author.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ gismap/build.py,sha256=lyJgrlvf2xXD4vfYn8VjwKloPBL4DKnplWQuwo2Sh8w,693
4
+ gismap/gismap.py,sha256=h0hwdogXGFqerm-5ZPeT-irPn91pCcQRjiHThXsRzEk,19
5
+ gismap/gismo.py,sha256=oDAryl4XQzHE0tUmOWC-3G1n_zUgTeykPL-JWSDYwe0,6307
6
+ gismap/search.py,sha256=EQTts33P47WqbTBFNC0RwXXUJ0Teb6rJMru2gKRJP5k,6289
7
+ gismap/gisgraphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ gismap/gisgraphs/builder.py,sha256=GlyvKIfeUlkCD1Oap5qtY5dYBHTEQYT_YXnedt7IK44,3971
9
+ gismap/gisgraphs/graph.py,sha256=hipfxQ_l5lfIyOkrQAb8oVMERIbe8fcFiz2gASbcNsQ,7320
10
+ gismap/gisgraphs/groups.py,sha256=1E-7Xrv0uDw2SgqwtdjgeRLVBLaC7agUrrVics4jVLs,2405
11
+ gismap/gisgraphs/js.py,sha256=Gbz5nMWORabZkgIdyZAe1sMlnwJZ9jy7sLrx0vYStzI,6283
12
+ gismap/gisgraphs/options.py,sha256=lmUSnfSwrZQyJpGGs16JUGDIQNcJeX4Y0tA8cyC0nuM,817
13
+ gismap/gisgraphs/style.py,sha256=sXNUnv690kxiJiRQZ7lv4iKKrsxMqAfblheJbqesd48,4653
14
+ gismap/gisgraphs/widget.py,sha256=-wS98lHjewMYH6hEndAnb7MOe-mDOa9FVHeVUY0QRqY,5086
15
+ gismap/lab/__init__.py,sha256=ifyZqI9BpC5NRlMfSmJ671tnKWJDoXbo18iDoE-VR1s,181
16
+ gismap/lab/egomap.py,sha256=MFtuqvCHJCF6IG94uwHTdED1jwK6-BtQTLPfxk88GOQ,2071
17
+ gismap/lab/expansion.py,sha256=dmOHbbd69EGPaQ0gpH1bRW5q59fbG5T_K0tl8E6QmDg,7393
18
+ gismap/lab/filters.py,sha256=pG_g2POQXMbyUUw0aXOaeyiGBbiSc7M2NzxLCTQrALk,1875
19
+ gismap/lab/lab_author.py,sha256=RQWeAmprs_h1_RS7slR0ApWXkuh8iekV5dHQgPSj-rY,5123
20
+ gismap/lab/labmap.py,sha256=owvvDfOBNmyyp4K7lgmZAnF6gWl3SJTto1Qpr96Qu_c,6620
21
+ gismap/lab_examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
+ gismap/lab_examples/cedric.py,sha256=nsRR_dcnTp9PIXKe3A0Is5beG4IIDPtspNP79BlkYNc,1906
23
+ gismap/lab_examples/lamsade.py,sha256=SRv_kWN0WPKp0KEFwP7SmWRvKPCRMLG3ya_w9VIrjCM,1330
24
+ gismap/lab_examples/lincs.py,sha256=-mIVMGQMrtCtJ3N-oCU8j4Ko9mDuhEPB_pA0gaIw4QA,1126
25
+ gismap/lab_examples/lip6.py,sha256=K32Jqe3-o99QYI--akmwBDFAWKgq0HFEk_psC4akR60,1740
26
+ gismap/lab_examples/toulouse.py,sha256=Zg6xZFxGfl3FvBh9R5hJSMRyC16DL7aJwLU9H_9mkSA,2139
27
+ gismap/sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ gismap/sources/dblp.py,sha256=T6vLo4T7mB5IqHIl_Q7QTU2whkhzfR30H9ULjnLaNFw,5321
29
+ gismap/sources/dblp_ttl.py,sha256=B-gHxBfP0zIWIYNMqLbKrOnbu9ybqByU8G4FNj0NChg,5597
30
+ gismap/sources/hal.py,sha256=aHeX3C2al75NCMNKksTP2-4Jj6sAaI9iyKuL7F-V7UA,11278
31
+ gismap/sources/ldb.py,sha256=ub7ctY82YahvkOvn8XYTG643cyi4gXfTpMspGMhT5dE,23570
32
+ gismap/sources/models.py,sha256=xWQi4eOpiaVDsj6MvnLpu4auYUFNsJpw6OrF1LWTb3s,2823
33
+ gismap/sources/multi.py,sha256=G6HL0lep-b3_EdOo6aVUGUWCJV5bSUkWbSkwJobSqWA,6435
34
+ gismap/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
+ gismap/utils/common.py,sha256=tG1QHYj8F-HsgGTpUb3-R0gSki8CPgM0_L2vq2VvOz8,4960
36
+ gismap/utils/logger.py,sha256=zvOPJqC7V6GV4Ov8M9-tnK63c2poDAEcWq_UarOLcpg,117
37
+ gismap/utils/requests.py,sha256=ZSKYJ08MlEtJTHdKYi61KxK6RjYxTBNxWjEUH-EtbbI,1468
38
+ gismap/utils/text.py,sha256=l1PCmOH6q6zg9gJZfnCXQ4ZXcyRY5nazrNb4WGTZPBA,3811
39
+ gismap/utils/zlist.py,sha256=nliEOohgwTjEE4vrjxqXiM5vERE35s7ENM24o6t7I9A,2212
40
+ gismap-0.4.1.dist-info/METADATA,sha256=nsDZRC5rJp4ZesZsJi5dyDxA0QcGzj4CaRd2wbOZtPQ,4161
41
+ gismap-0.4.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
42
+ gismap-0.4.1.dist-info/licenses/AUTHORS.md,sha256=oDR4mptVUBMq0WKIpt19Km1Bdfz3cO2NAOVgwVfTO8g,131
43
+ gismap-0.4.1.dist-info/RECORD,,
@@ -1,43 +0,0 @@
1
- gismap/__init__.py,sha256=FHZLy3T2zFVrFRe3sqSRTuXkZ6DYise9HtXCWWfXrys,866
2
- gismap/author.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- gismap/build.py,sha256=1oNs3qjm2DNkOP19iVDPderF2Sx3w5qJH4SgirDHKcU,103
4
- gismap/gismap.py,sha256=h0hwdogXGFqerm-5ZPeT-irPn91pCcQRjiHThXsRzEk,19
5
- gismap/gismo.py,sha256=oDAryl4XQzHE0tUmOWC-3G1n_zUgTeykPL-JWSDYwe0,6307
6
- gismap/search.py,sha256=nsUoDsFGeEtvCZ0dB7ooRPC_6qsazkiWx_oM7dHdNV4,4932
7
- gismap/gisgraphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- gismap/gisgraphs/builder.py,sha256=La01_OczsSfZ1hu8sq6rdQN_TelBatN8wP3xLF7TwIg,3234
9
- gismap/gisgraphs/graph.py,sha256=RuUuWdPudrbrDyoGMj2V9SuJGkrsClL_4_4tUMptsjk,7028
10
- gismap/gisgraphs/groups.py,sha256=1E-7Xrv0uDw2SgqwtdjgeRLVBLaC7agUrrVics4jVLs,2405
11
- gismap/gisgraphs/js.py,sha256=Gbz5nMWORabZkgIdyZAe1sMlnwJZ9jy7sLrx0vYStzI,6283
12
- gismap/gisgraphs/options.py,sha256=lmUSnfSwrZQyJpGGs16JUGDIQNcJeX4Y0tA8cyC0nuM,817
13
- gismap/gisgraphs/style.py,sha256=sXNUnv690kxiJiRQZ7lv4iKKrsxMqAfblheJbqesd48,4653
14
- gismap/gisgraphs/widget.py,sha256=ccTgmfs1-23aVFnOv09aKMf07pfsEsgeLdcywVELzL8,4537
15
- gismap/lab/__init__.py,sha256=ifyZqI9BpC5NRlMfSmJ671tnKWJDoXbo18iDoE-VR1s,181
16
- gismap/lab/egomap.py,sha256=RabRJSWJ0xrG67l012En0rbi7ukr4R2lR0hc_K7Xp0o,1211
17
- gismap/lab/expansion.py,sha256=CMUsXqo-shRyb_MiuPRL5-ZgaitxAxjfbSY_fvzi_1E,6236
18
- gismap/lab/filters.py,sha256=pG_g2POQXMbyUUw0aXOaeyiGBbiSc7M2NzxLCTQrALk,1875
19
- gismap/lab/lab_author.py,sha256=tiv6Z2RUrmfba0zYNS83cPTwN2YyGj7_bcqN2Ak_JXk,4420
20
- gismap/lab/labmap.py,sha256=jDXFIxe0Jk89wUaweodPxN2thxMgi-hgnqSavhaapZc,5748
21
- gismap/lab_examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- gismap/lab_examples/cedric.py,sha256=AjgYy5dhzqh3vDsr9ia_hbtSc9_2Ic238rmJO198FMM,1764
23
- gismap/lab_examples/lamsade.py,sha256=m5uDT9IGpBT1ARknKl44WmFv5b_tLWfvtOjgOThp5fA,1294
24
- gismap/lab_examples/lincs.py,sha256=-mIVMGQMrtCtJ3N-oCU8j4Ko9mDuhEPB_pA0gaIw4QA,1126
25
- gismap/lab_examples/lip6.py,sha256=K32Jqe3-o99QYI--akmwBDFAWKgq0HFEk_psC4akR60,1740
26
- gismap/lab_examples/toulouse.py,sha256=OUKrK0uefn4uvW74qMsF792un203z3OUfKTquLPGBH4,2091
27
- gismap/sources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- gismap/sources/dblp.py,sha256=FXVsRhrPc0iqsd_a9cMzUYB5YdMxOC4ho3Ip4lCyjtE,4834
29
- gismap/sources/dblp_ttl.py,sha256=JI_1C7yv1T8TfXMfLNPSFBbCoghYMYoDY7s6K_2arUs,5456
30
- gismap/sources/hal.py,sha256=VOd7mEUeM0wcfetHYYsX5n4jXNVYQKP12G-iNQsa0XE,10313
31
- gismap/sources/ldb.py,sha256=KEHREkne7hUy-04VKJOlvzkJQhvKKZJADcvhEBLCgfY,16766
32
- gismap/sources/models.py,sha256=XlNrQWTF-DQbfIFaSLPsgWPN-c79_0rfr_2jDasgukM,713
33
- gismap/sources/multi.py,sha256=QlVtuQasznXSXSmJryWFWb2ZmaOOJFoEpgn2Js-IGcc,4709
34
- gismap/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- gismap/utils/common.py,sha256=6JhdB_EJnaXwnBGiJutPx5vFEr4wYEvsqKcivVDbGMk,3115
36
- gismap/utils/logger.py,sha256=zvOPJqC7V6GV4Ov8M9-tnK63c2poDAEcWq_UarOLcpg,117
37
- gismap/utils/requests.py,sha256=ZSKYJ08MlEtJTHdKYi61KxK6RjYxTBNxWjEUH-EtbbI,1468
38
- gismap/utils/text.py,sha256=1_9DlduAYh7Nz-yAg-MaCTmdKbPPmuIY20bb87t7JAQ,3810
39
- gismap/utils/zlist.py,sha256=F66rilTalbRgqiJaPIxDJxKs_2KFOp2ZEH8Ef_CRxYA,1810
40
- gismap-0.4.0.dist-info/METADATA,sha256=wrptTFqdKckSixC0KEzzQ8pVH5aes2vDfz-5NKFrS-A,3903
41
- gismap-0.4.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
42
- gismap-0.4.0.dist-info/licenses/AUTHORS.md,sha256=oDR4mptVUBMq0WKIpt19Km1Bdfz3cO2NAOVgwVfTO8g,131
43
- gismap-0.4.0.dist-info/RECORD,,
File without changes