graphplug 0.2.2__tar.gz → 0.2.4__tar.gz
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.
- {graphplug-0.2.2 → graphplug-0.2.4}/PKG-INFO +19 -14
- {graphplug-0.2.2 → graphplug-0.2.4}/README.md +12 -12
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/__init__.py +1 -1
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug.egg-info/PKG-INFO +19 -14
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug.egg-info/requires.txt +1 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/pyproject.toml +10 -1
- {graphplug-0.2.2 → graphplug-0.2.4}/LICENSE +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_auth.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_errors.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_http.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_log.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_operations.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_request.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/__init__.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/base.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/calendar.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/files.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/mail.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/teams.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_resources/users.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/_scopes.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug/py.typed +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug.egg-info/SOURCES.txt +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug.egg-info/dependency_links.txt +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/graphplug.egg-info/top_level.txt +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/setup.cfg +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_errors_and_logging.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_files_teams_users.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_operations.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_redirect_and_construction.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_requests.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_resources.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_signin.py +0 -0
- {graphplug-0.2.2 → graphplug-0.2.4}/tests/test_transport.py +0 -0
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphplug
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Plug-and-play Graph API for Python: mail, calendar, files, teams, users and generic requests.
|
|
5
|
-
Author
|
|
5
|
+
Author: Vikram Balaji
|
|
6
6
|
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/VikramBalaji1/graphPlug
|
|
8
|
+
Project-URL: Documentation, https://github.com/VikramBalaji1/graphPlug#readme
|
|
9
|
+
Project-URL: Issues, https://github.com/VikramBalaji1/graphPlug/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/VikramBalaji1/graphPlug/releases
|
|
7
11
|
Keywords: microsoft-graph,entra-id,azure-ad,outlook,onedrive,teams,asyncio
|
|
8
12
|
Classifier: Development Status :: 4 - Beta
|
|
9
13
|
Classifier: Framework :: AsyncIO
|
|
@@ -25,6 +29,7 @@ License-File: LICENSE
|
|
|
25
29
|
Requires-Dist: azure-identity>=1.19
|
|
26
30
|
Requires-Dist: msgraph-core>=1.3
|
|
27
31
|
Requires-Dist: msal>=1.31
|
|
32
|
+
Requires-Dist: httpx>=0.28
|
|
28
33
|
Dynamic: license-file
|
|
29
34
|
|
|
30
35
|
# graphplug
|
|
@@ -80,7 +85,7 @@ async def main():
|
|
|
80
85
|
|
|
81
86
|
async with graph:
|
|
82
87
|
await graph.mail.send(
|
|
83
|
-
to="alice@
|
|
88
|
+
to="alice@example.com",
|
|
84
89
|
subject="Quarterly report",
|
|
85
90
|
body="<p>Attached.</p>", html=True,
|
|
86
91
|
attachments=["report.pdf"],
|
|
@@ -255,8 +260,8 @@ Delegated access. Works on the signed-in person's mailbox.
|
|
|
255
260
|
|
|
256
261
|
```python
|
|
257
262
|
await graph.mail.send(
|
|
258
|
-
to=["alice@
|
|
259
|
-
cc="team@
|
|
263
|
+
to=["alice@example.com", "bob@example.com"],
|
|
264
|
+
cc="team@example.com",
|
|
260
265
|
subject="Build finished",
|
|
261
266
|
body="<b>All green.</b>", html=True,
|
|
262
267
|
attachments=["results.csv"],
|
|
@@ -275,12 +280,12 @@ async for message in graph.mail.inbox(search="invoice"):
|
|
|
275
280
|
|
|
276
281
|
# Reply and forward
|
|
277
282
|
await graph.mail.reply(message_id, "Thanks, on it.", reply_all=True)
|
|
278
|
-
await graph.mail.forward(message_id, to="carol@
|
|
283
|
+
await graph.mail.forward(message_id, to="carol@example.com", comment="FYI")
|
|
279
284
|
|
|
280
285
|
# Send many at once; each entry takes the same arguments as send()
|
|
281
286
|
results = await graph.mail.send_many([
|
|
282
|
-
{"to": "a@
|
|
283
|
-
{"to": "b@
|
|
287
|
+
{"to": "a@example.com", "subject": "Hi A", "body": "..."},
|
|
288
|
+
{"to": "b@example.com", "subject": "Hi B", "body": "..."},
|
|
284
289
|
])
|
|
285
290
|
failed = [r for r in results if r["status"] >= 400]
|
|
286
291
|
```
|
|
@@ -327,14 +332,14 @@ start = datetime(2026, 10, 1, 14, 0, tzinfo=timezone.utc)
|
|
|
327
332
|
event = await graph.calendar.schedule(
|
|
328
333
|
subject="Design review",
|
|
329
334
|
start=start, end=start + timedelta(minutes=45),
|
|
330
|
-
attendees=["alice@
|
|
335
|
+
attendees=["alice@example.com", "bob@example.com"],
|
|
331
336
|
online=True,
|
|
332
337
|
reminder_minutes=10,
|
|
333
338
|
)
|
|
334
339
|
print(event["onlineMeeting"]["joinUrl"])
|
|
335
340
|
|
|
336
341
|
# Let Graph pick a time that suits everyone
|
|
337
|
-
suggestions = await graph.calendar.find_times(["alice@
|
|
342
|
+
suggestions = await graph.calendar.find_times(["alice@example.com", "bob@example.com"],
|
|
338
343
|
duration_minutes=30)
|
|
339
344
|
best = suggestions[0]["meetingTimeSlot"]
|
|
340
345
|
|
|
@@ -455,7 +460,7 @@ print(me["displayName"], me["jobTitle"])
|
|
|
455
460
|
async for person in graph.users.find("smith"):
|
|
456
461
|
print(person["displayName"], person["mail"])
|
|
457
462
|
|
|
458
|
-
alice = await graph.users.by_email("alice@
|
|
463
|
+
alice = await graph.users.by_email("alice@example.com")
|
|
459
464
|
boss = await graph.users.manager(alice["id"])
|
|
460
465
|
|
|
461
466
|
async for report in graph.users.reports():
|
|
@@ -580,7 +585,7 @@ gave**.
|
|
|
580
585
|
|
|
581
586
|
| Request form | Example |
|
|
582
587
|
|---|---|
|
|
583
|
-
| A tuple | `("GET", "/users/alice@
|
|
588
|
+
| A tuple | `("GET", "/users/alice@example.com")` |
|
|
584
589
|
| A dict | `{"method": "PATCH", "url": "/me/messages/ID", "body": {"isRead": True}, "headers": {"Content-Type": "application/json"}}` |
|
|
585
590
|
|
|
586
591
|
Each result has `id`, `status`, `body` and sometimes `headers`. Failures are reported in place,
|
|
@@ -636,7 +641,7 @@ or sign-in.
|
|
|
636
641
|
from graphplug import GraphError
|
|
637
642
|
|
|
638
643
|
try:
|
|
639
|
-
await graph.users.by_email("nobody@
|
|
644
|
+
await graph.users.by_email("nobody@example.com")
|
|
640
645
|
except GraphError as e:
|
|
641
646
|
if e.code == "itemNotFound":
|
|
642
647
|
print("no such user")
|
|
@@ -702,7 +707,7 @@ logged.
|
|
|
702
707
|
import asyncio
|
|
703
708
|
|
|
704
709
|
async with GraphClient.from_env(max_concurrency=8) as graph:
|
|
705
|
-
ids = ["alice@
|
|
710
|
+
ids = ["alice@example.com", "bob@example.com", "carol@example.com"]
|
|
706
711
|
people = await asyncio.gather(*(graph.users.get(i) for i in ids))
|
|
707
712
|
```
|
|
708
713
|
|
|
@@ -51,7 +51,7 @@ async def main():
|
|
|
51
51
|
|
|
52
52
|
async with graph:
|
|
53
53
|
await graph.mail.send(
|
|
54
|
-
to="alice@
|
|
54
|
+
to="alice@example.com",
|
|
55
55
|
subject="Quarterly report",
|
|
56
56
|
body="<p>Attached.</p>", html=True,
|
|
57
57
|
attachments=["report.pdf"],
|
|
@@ -226,8 +226,8 @@ Delegated access. Works on the signed-in person's mailbox.
|
|
|
226
226
|
|
|
227
227
|
```python
|
|
228
228
|
await graph.mail.send(
|
|
229
|
-
to=["alice@
|
|
230
|
-
cc="team@
|
|
229
|
+
to=["alice@example.com", "bob@example.com"],
|
|
230
|
+
cc="team@example.com",
|
|
231
231
|
subject="Build finished",
|
|
232
232
|
body="<b>All green.</b>", html=True,
|
|
233
233
|
attachments=["results.csv"],
|
|
@@ -246,12 +246,12 @@ async for message in graph.mail.inbox(search="invoice"):
|
|
|
246
246
|
|
|
247
247
|
# Reply and forward
|
|
248
248
|
await graph.mail.reply(message_id, "Thanks, on it.", reply_all=True)
|
|
249
|
-
await graph.mail.forward(message_id, to="carol@
|
|
249
|
+
await graph.mail.forward(message_id, to="carol@example.com", comment="FYI")
|
|
250
250
|
|
|
251
251
|
# Send many at once; each entry takes the same arguments as send()
|
|
252
252
|
results = await graph.mail.send_many([
|
|
253
|
-
{"to": "a@
|
|
254
|
-
{"to": "b@
|
|
253
|
+
{"to": "a@example.com", "subject": "Hi A", "body": "..."},
|
|
254
|
+
{"to": "b@example.com", "subject": "Hi B", "body": "..."},
|
|
255
255
|
])
|
|
256
256
|
failed = [r for r in results if r["status"] >= 400]
|
|
257
257
|
```
|
|
@@ -298,14 +298,14 @@ start = datetime(2026, 10, 1, 14, 0, tzinfo=timezone.utc)
|
|
|
298
298
|
event = await graph.calendar.schedule(
|
|
299
299
|
subject="Design review",
|
|
300
300
|
start=start, end=start + timedelta(minutes=45),
|
|
301
|
-
attendees=["alice@
|
|
301
|
+
attendees=["alice@example.com", "bob@example.com"],
|
|
302
302
|
online=True,
|
|
303
303
|
reminder_minutes=10,
|
|
304
304
|
)
|
|
305
305
|
print(event["onlineMeeting"]["joinUrl"])
|
|
306
306
|
|
|
307
307
|
# Let Graph pick a time that suits everyone
|
|
308
|
-
suggestions = await graph.calendar.find_times(["alice@
|
|
308
|
+
suggestions = await graph.calendar.find_times(["alice@example.com", "bob@example.com"],
|
|
309
309
|
duration_minutes=30)
|
|
310
310
|
best = suggestions[0]["meetingTimeSlot"]
|
|
311
311
|
|
|
@@ -426,7 +426,7 @@ print(me["displayName"], me["jobTitle"])
|
|
|
426
426
|
async for person in graph.users.find("smith"):
|
|
427
427
|
print(person["displayName"], person["mail"])
|
|
428
428
|
|
|
429
|
-
alice = await graph.users.by_email("alice@
|
|
429
|
+
alice = await graph.users.by_email("alice@example.com")
|
|
430
430
|
boss = await graph.users.manager(alice["id"])
|
|
431
431
|
|
|
432
432
|
async for report in graph.users.reports():
|
|
@@ -551,7 +551,7 @@ gave**.
|
|
|
551
551
|
|
|
552
552
|
| Request form | Example |
|
|
553
553
|
|---|---|
|
|
554
|
-
| A tuple | `("GET", "/users/alice@
|
|
554
|
+
| A tuple | `("GET", "/users/alice@example.com")` |
|
|
555
555
|
| A dict | `{"method": "PATCH", "url": "/me/messages/ID", "body": {"isRead": True}, "headers": {"Content-Type": "application/json"}}` |
|
|
556
556
|
|
|
557
557
|
Each result has `id`, `status`, `body` and sometimes `headers`. Failures are reported in place,
|
|
@@ -607,7 +607,7 @@ or sign-in.
|
|
|
607
607
|
from graphplug import GraphError
|
|
608
608
|
|
|
609
609
|
try:
|
|
610
|
-
await graph.users.by_email("nobody@
|
|
610
|
+
await graph.users.by_email("nobody@example.com")
|
|
611
611
|
except GraphError as e:
|
|
612
612
|
if e.code == "itemNotFound":
|
|
613
613
|
print("no such user")
|
|
@@ -673,7 +673,7 @@ logged.
|
|
|
673
673
|
import asyncio
|
|
674
674
|
|
|
675
675
|
async with GraphClient.from_env(max_concurrency=8) as graph:
|
|
676
|
-
ids = ["alice@
|
|
676
|
+
ids = ["alice@example.com", "bob@example.com", "carol@example.com"]
|
|
677
677
|
people = await asyncio.gather(*(graph.users.get(i) for i in ids))
|
|
678
678
|
```
|
|
679
679
|
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: graphplug
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.4
|
|
4
4
|
Summary: Plug-and-play Graph API for Python: mail, calendar, files, teams, users and generic requests.
|
|
5
|
-
Author
|
|
5
|
+
Author: Vikram Balaji
|
|
6
6
|
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/VikramBalaji1/graphPlug
|
|
8
|
+
Project-URL: Documentation, https://github.com/VikramBalaji1/graphPlug#readme
|
|
9
|
+
Project-URL: Issues, https://github.com/VikramBalaji1/graphPlug/issues
|
|
10
|
+
Project-URL: Changelog, https://github.com/VikramBalaji1/graphPlug/releases
|
|
7
11
|
Keywords: microsoft-graph,entra-id,azure-ad,outlook,onedrive,teams,asyncio
|
|
8
12
|
Classifier: Development Status :: 4 - Beta
|
|
9
13
|
Classifier: Framework :: AsyncIO
|
|
@@ -25,6 +29,7 @@ License-File: LICENSE
|
|
|
25
29
|
Requires-Dist: azure-identity>=1.19
|
|
26
30
|
Requires-Dist: msgraph-core>=1.3
|
|
27
31
|
Requires-Dist: msal>=1.31
|
|
32
|
+
Requires-Dist: httpx>=0.28
|
|
28
33
|
Dynamic: license-file
|
|
29
34
|
|
|
30
35
|
# graphplug
|
|
@@ -80,7 +85,7 @@ async def main():
|
|
|
80
85
|
|
|
81
86
|
async with graph:
|
|
82
87
|
await graph.mail.send(
|
|
83
|
-
to="alice@
|
|
88
|
+
to="alice@example.com",
|
|
84
89
|
subject="Quarterly report",
|
|
85
90
|
body="<p>Attached.</p>", html=True,
|
|
86
91
|
attachments=["report.pdf"],
|
|
@@ -255,8 +260,8 @@ Delegated access. Works on the signed-in person's mailbox.
|
|
|
255
260
|
|
|
256
261
|
```python
|
|
257
262
|
await graph.mail.send(
|
|
258
|
-
to=["alice@
|
|
259
|
-
cc="team@
|
|
263
|
+
to=["alice@example.com", "bob@example.com"],
|
|
264
|
+
cc="team@example.com",
|
|
260
265
|
subject="Build finished",
|
|
261
266
|
body="<b>All green.</b>", html=True,
|
|
262
267
|
attachments=["results.csv"],
|
|
@@ -275,12 +280,12 @@ async for message in graph.mail.inbox(search="invoice"):
|
|
|
275
280
|
|
|
276
281
|
# Reply and forward
|
|
277
282
|
await graph.mail.reply(message_id, "Thanks, on it.", reply_all=True)
|
|
278
|
-
await graph.mail.forward(message_id, to="carol@
|
|
283
|
+
await graph.mail.forward(message_id, to="carol@example.com", comment="FYI")
|
|
279
284
|
|
|
280
285
|
# Send many at once; each entry takes the same arguments as send()
|
|
281
286
|
results = await graph.mail.send_many([
|
|
282
|
-
{"to": "a@
|
|
283
|
-
{"to": "b@
|
|
287
|
+
{"to": "a@example.com", "subject": "Hi A", "body": "..."},
|
|
288
|
+
{"to": "b@example.com", "subject": "Hi B", "body": "..."},
|
|
284
289
|
])
|
|
285
290
|
failed = [r for r in results if r["status"] >= 400]
|
|
286
291
|
```
|
|
@@ -327,14 +332,14 @@ start = datetime(2026, 10, 1, 14, 0, tzinfo=timezone.utc)
|
|
|
327
332
|
event = await graph.calendar.schedule(
|
|
328
333
|
subject="Design review",
|
|
329
334
|
start=start, end=start + timedelta(minutes=45),
|
|
330
|
-
attendees=["alice@
|
|
335
|
+
attendees=["alice@example.com", "bob@example.com"],
|
|
331
336
|
online=True,
|
|
332
337
|
reminder_minutes=10,
|
|
333
338
|
)
|
|
334
339
|
print(event["onlineMeeting"]["joinUrl"])
|
|
335
340
|
|
|
336
341
|
# Let Graph pick a time that suits everyone
|
|
337
|
-
suggestions = await graph.calendar.find_times(["alice@
|
|
342
|
+
suggestions = await graph.calendar.find_times(["alice@example.com", "bob@example.com"],
|
|
338
343
|
duration_minutes=30)
|
|
339
344
|
best = suggestions[0]["meetingTimeSlot"]
|
|
340
345
|
|
|
@@ -455,7 +460,7 @@ print(me["displayName"], me["jobTitle"])
|
|
|
455
460
|
async for person in graph.users.find("smith"):
|
|
456
461
|
print(person["displayName"], person["mail"])
|
|
457
462
|
|
|
458
|
-
alice = await graph.users.by_email("alice@
|
|
463
|
+
alice = await graph.users.by_email("alice@example.com")
|
|
459
464
|
boss = await graph.users.manager(alice["id"])
|
|
460
465
|
|
|
461
466
|
async for report in graph.users.reports():
|
|
@@ -580,7 +585,7 @@ gave**.
|
|
|
580
585
|
|
|
581
586
|
| Request form | Example |
|
|
582
587
|
|---|---|
|
|
583
|
-
| A tuple | `("GET", "/users/alice@
|
|
588
|
+
| A tuple | `("GET", "/users/alice@example.com")` |
|
|
584
589
|
| A dict | `{"method": "PATCH", "url": "/me/messages/ID", "body": {"isRead": True}, "headers": {"Content-Type": "application/json"}}` |
|
|
585
590
|
|
|
586
591
|
Each result has `id`, `status`, `body` and sometimes `headers`. Failures are reported in place,
|
|
@@ -636,7 +641,7 @@ or sign-in.
|
|
|
636
641
|
from graphplug import GraphError
|
|
637
642
|
|
|
638
643
|
try:
|
|
639
|
-
await graph.users.by_email("nobody@
|
|
644
|
+
await graph.users.by_email("nobody@example.com")
|
|
640
645
|
except GraphError as e:
|
|
641
646
|
if e.code == "itemNotFound":
|
|
642
647
|
print("no such user")
|
|
@@ -702,7 +707,7 @@ logged.
|
|
|
702
707
|
import asyncio
|
|
703
708
|
|
|
704
709
|
async with GraphClient.from_env(max_concurrency=8) as graph:
|
|
705
|
-
ids = ["alice@
|
|
710
|
+
ids = ["alice@example.com", "bob@example.com", "carol@example.com"]
|
|
706
711
|
people = await asyncio.gather(*(graph.users.get(i) for i in ids))
|
|
707
712
|
```
|
|
708
713
|
|
|
@@ -12,7 +12,7 @@ readme = "README.md"
|
|
|
12
12
|
requires-python = ">=3.10"
|
|
13
13
|
license = "MIT"
|
|
14
14
|
license-files = ["LICENSE"]
|
|
15
|
-
authors = [{ name = "Vikram Balaji"
|
|
15
|
+
authors = [{ name = "Vikram Balaji"}]
|
|
16
16
|
keywords = ["microsoft-graph", "entra-id", "azure-ad", "outlook", "onedrive", "teams", "asyncio"]
|
|
17
17
|
classifiers = [
|
|
18
18
|
"Development Status :: 4 - Beta",
|
|
@@ -36,13 +36,22 @@ classifiers = [
|
|
|
36
36
|
# msgraph-core the supported middleware pipeline (retry, Retry-After, redirect, telemetry)
|
|
37
37
|
# msal the PKCE code exchange; already required by azure-identity, named because
|
|
38
38
|
# _auth.py imports it directly
|
|
39
|
+
# httpx the HTTP client under msgraph-core; named because _http.py and _errors.py
|
|
40
|
+
# import it directly
|
|
39
41
|
# msgraph-sdk is deliberately NOT used: its dependency tree does not resolve in practice.
|
|
40
42
|
dependencies = [
|
|
41
43
|
"azure-identity>=1.19",
|
|
42
44
|
"msgraph-core>=1.3",
|
|
43
45
|
"msal>=1.31",
|
|
46
|
+
"httpx>=0.28",
|
|
44
47
|
]
|
|
45
48
|
|
|
49
|
+
[project.urls]
|
|
50
|
+
Homepage = "https://github.com/VikramBalaji1/graphPlug"
|
|
51
|
+
Documentation = "https://github.com/VikramBalaji1/graphPlug#readme"
|
|
52
|
+
Issues = "https://github.com/VikramBalaji1/graphPlug/issues"
|
|
53
|
+
Changelog = "https://github.com/VikramBalaji1/graphPlug/releases"
|
|
54
|
+
|
|
46
55
|
[tool.setuptools.dynamic]
|
|
47
56
|
version = { attr = "graphplug.__version__" }
|
|
48
57
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|