hyperpocket 0.3.5__py3-none-any.whl → 0.3.7__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- hyperpocket/auth/provider.py +2 -0
- hyperpocket/auth/semantic_scholar/__init__.py +0 -0
- hyperpocket/auth/semantic_scholar/context.py +12 -0
- hyperpocket/auth/semantic_scholar/token_context.py +11 -0
- hyperpocket/auth/semantic_scholar/token_handler.py +64 -0
- hyperpocket/auth/semantic_scholar/token_schema.py +7 -0
- hyperpocket/auth/zinc/__init__.py +0 -0
- hyperpocket/auth/zinc/context.py +12 -0
- hyperpocket/auth/zinc/token_context.py +11 -0
- hyperpocket/auth/zinc/token_handler.py +64 -0
- hyperpocket/auth/zinc/token_schema.py +7 -0
- hyperpocket/server/auth/semantic_scholar.py +27 -0
- hyperpocket/server/auth/zinc.py +27 -0
- {hyperpocket-0.3.5.dist-info → hyperpocket-0.3.7.dist-info}/METADATA +1 -1
- {hyperpocket-0.3.5.dist-info → hyperpocket-0.3.7.dist-info}/RECORD +17 -5
- {hyperpocket-0.3.5.dist-info → hyperpocket-0.3.7.dist-info}/WHEEL +0 -0
- {hyperpocket-0.3.5.dist-info → hyperpocket-0.3.7.dist-info}/entry_points.txt +0 -0
hyperpocket/auth/provider.py
CHANGED
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
from hyperpocket.auth.context import AuthContext
|
3
|
+
class SemanticScholarAuthContext(AuthContext):
|
4
|
+
_ACCESS_TOKEN_KEY: str = "SEMANTIC_SCHOLAR_TOKEN"
|
5
|
+
def to_dict(self) -> dict[str, str]:
|
6
|
+
return {
|
7
|
+
self._ACCESS_TOKEN_KEY: self.access_token,
|
8
|
+
}
|
9
|
+
def to_profiled_dict(self, profile: str) -> dict[str, str]:
|
10
|
+
return {
|
11
|
+
f"{profile.upper()}_{self._ACCESS_TOKEN_KEY}": self.access_token,
|
12
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from hyperpocket.auth.semantic_scholar.context import SemanticScholarAuthContext
|
2
|
+
from hyperpocket.auth.semantic_scholar.token_schema import SemanticScholarTokenResponse
|
3
|
+
class SemanticScholarTokenAuthContext(SemanticScholarAuthContext):
|
4
|
+
@classmethod
|
5
|
+
def from_semantic_scholar_token_response(cls, response: SemanticScholarTokenResponse):
|
6
|
+
description = f'SemanticScholar Token Context logged in'
|
7
|
+
return cls(
|
8
|
+
access_token=response.access_token,
|
9
|
+
description=description,
|
10
|
+
expires_at=None
|
11
|
+
)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
from urllib.parse import urljoin, urlencode
|
3
|
+
|
4
|
+
from hyperpocket.auth import AuthProvider
|
5
|
+
from hyperpocket.auth.context import AuthContext
|
6
|
+
from hyperpocket.auth.handler import AuthHandlerInterface, AuthenticateRequest
|
7
|
+
from hyperpocket.auth.semantic_scholar.token_context import SemanticScholarTokenAuthContext
|
8
|
+
from hyperpocket.auth.semantic_scholar.token_schema import SemanticScholarTokenResponse, SemanticScholarTokenRequest
|
9
|
+
from hyperpocket.config import config
|
10
|
+
from hyperpocket.futures import FutureStore
|
11
|
+
|
12
|
+
|
13
|
+
class SemanticScholarTokenAuthHandler(AuthHandlerInterface):
|
14
|
+
name: str = "semantic-scholar-token"
|
15
|
+
description: str = "This handler is used to authenticate users using the SemanticScholar token."
|
16
|
+
scoped: bool = False
|
17
|
+
|
18
|
+
_TOKEN_URL: str = urljoin(config().public_base_url + "/", f"{config().callback_url_rewrite_prefix}/auth/token")
|
19
|
+
|
20
|
+
@staticmethod
|
21
|
+
def provider() -> AuthProvider:
|
22
|
+
return AuthProvider.SEMANTIC_SCHOLAR
|
23
|
+
|
24
|
+
@staticmethod
|
25
|
+
def recommended_scopes() -> set[str]:
|
26
|
+
return set()
|
27
|
+
|
28
|
+
def prepare(self, auth_req: SemanticScholarTokenRequest, thread_id: str, profile: str,
|
29
|
+
future_uid: str, *args, **kwargs) -> str:
|
30
|
+
redirect_uri = urljoin(
|
31
|
+
config().public_base_url + "/",
|
32
|
+
f"{config().callback_url_rewrite_prefix}/auth/semantic_scholar/token/callback",
|
33
|
+
)
|
34
|
+
url = self._make_auth_url(auth_req=auth_req, redirect_uri=redirect_uri, state=future_uid)
|
35
|
+
FutureStore.create_future(future_uid, data={
|
36
|
+
"redirect_uri": redirect_uri,
|
37
|
+
"thread_id": thread_id,
|
38
|
+
"profile": profile,
|
39
|
+
})
|
40
|
+
|
41
|
+
return f'User needs to authenticate using the following URL: {url}'
|
42
|
+
|
43
|
+
async def authenticate(self, auth_req: SemanticScholarTokenRequest, future_uid: str, *args, **kwargs) -> AuthContext:
|
44
|
+
future_data = FutureStore.get_future(future_uid)
|
45
|
+
access_token = await future_data.future
|
46
|
+
|
47
|
+
response = SemanticScholarTokenResponse(access_token=access_token)
|
48
|
+
context = SemanticScholarTokenAuthContext.from_semantic_scholar_token_response(response)
|
49
|
+
|
50
|
+
return context
|
51
|
+
|
52
|
+
async def refresh(self, auth_req: SemanticScholarTokenRequest, context: AuthContext, *args, **kwargs) -> AuthContext:
|
53
|
+
raise Exception("SemanticScholar token doesn't support refresh")
|
54
|
+
|
55
|
+
def _make_auth_url(self, auth_req: SemanticScholarTokenRequest, redirect_uri: str, state: str):
|
56
|
+
params = {
|
57
|
+
"redirect_uri": redirect_uri,
|
58
|
+
"state": state,
|
59
|
+
}
|
60
|
+
auth_url = f"{self._TOKEN_URL}?{urlencode(params)}"
|
61
|
+
return auth_url
|
62
|
+
|
63
|
+
def make_request(self, auth_scopes: Optional[list[str]] = None, **kwargs) -> SemanticScholarTokenRequest:
|
64
|
+
return SemanticScholarTokenRequest()
|
@@ -0,0 +1,7 @@
|
|
1
|
+
from typing import List, Optional
|
2
|
+
from pydantic import BaseModel
|
3
|
+
from hyperpocket.auth.schema import AuthenticateRequest, AuthenticateResponse
|
4
|
+
class SemanticScholarTokenRequest(AuthenticateRequest):
|
5
|
+
pass
|
6
|
+
class SemanticScholarTokenResponse(AuthenticateResponse):
|
7
|
+
access_token: str
|
File without changes
|
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
from hyperpocket.auth.context import AuthContext
|
3
|
+
class ZincAuthContext(AuthContext):
|
4
|
+
_ACCESS_TOKEN_KEY: str = "ZINC_TOKEN"
|
5
|
+
def to_dict(self) -> dict[str, str]:
|
6
|
+
return {
|
7
|
+
self._ACCESS_TOKEN_KEY: self.access_token,
|
8
|
+
}
|
9
|
+
def to_profiled_dict(self, profile: str) -> dict[str, str]:
|
10
|
+
return {
|
11
|
+
f"{profile.upper()}_{self._ACCESS_TOKEN_KEY}": self.access_token,
|
12
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from hyperpocket.auth.zinc.context import ZincAuthContext
|
2
|
+
from hyperpocket.auth.zinc.token_schema import ZincTokenResponse
|
3
|
+
class ZincTokenAuthContext(ZincAuthContext):
|
4
|
+
@classmethod
|
5
|
+
def from_zinc_token_response(cls, response: ZincTokenResponse):
|
6
|
+
description = f'Zinc Token Context logged in'
|
7
|
+
return cls(
|
8
|
+
access_token=response.access_token,
|
9
|
+
description=description,
|
10
|
+
expires_at=None
|
11
|
+
)
|
@@ -0,0 +1,64 @@
|
|
1
|
+
from typing import Optional
|
2
|
+
from urllib.parse import urljoin, urlencode
|
3
|
+
|
4
|
+
from hyperpocket.auth import AuthProvider
|
5
|
+
from hyperpocket.auth.context import AuthContext
|
6
|
+
from hyperpocket.auth.handler import AuthHandlerInterface, AuthenticateRequest
|
7
|
+
from hyperpocket.auth.zinc.token_context import ZincTokenAuthContext
|
8
|
+
from hyperpocket.auth.zinc.token_schema import ZincTokenResponse, ZincTokenRequest
|
9
|
+
from hyperpocket.config import config
|
10
|
+
from hyperpocket.futures import FutureStore
|
11
|
+
|
12
|
+
|
13
|
+
class ZincTokenAuthHandler(AuthHandlerInterface):
|
14
|
+
name: str = "zinc-token"
|
15
|
+
description: str = "This handler is used to authenticate users using the Zinc token."
|
16
|
+
scoped: bool = False
|
17
|
+
|
18
|
+
_TOKEN_URL: str = urljoin(config().public_base_url + "/", f"{config().callback_url_rewrite_prefix}/auth/token")
|
19
|
+
|
20
|
+
@staticmethod
|
21
|
+
def provider() -> AuthProvider:
|
22
|
+
return AuthProvider.ZINC
|
23
|
+
|
24
|
+
@staticmethod
|
25
|
+
def recommended_scopes() -> set[str]:
|
26
|
+
return set()
|
27
|
+
|
28
|
+
def prepare(self, auth_req: ZincTokenRequest, thread_id: str, profile: str,
|
29
|
+
future_uid: str, *args, **kwargs) -> str:
|
30
|
+
redirect_uri = urljoin(
|
31
|
+
config().public_base_url + "/",
|
32
|
+
f"{config().callback_url_rewrite_prefix}/auth/zinc/token/callback",
|
33
|
+
)
|
34
|
+
url = self._make_auth_url(auth_req=auth_req, redirect_uri=redirect_uri, state=future_uid)
|
35
|
+
FutureStore.create_future(future_uid, data={
|
36
|
+
"redirect_uri": redirect_uri,
|
37
|
+
"thread_id": thread_id,
|
38
|
+
"profile": profile,
|
39
|
+
})
|
40
|
+
|
41
|
+
return f'User needs to authenticate using the following URL: {url}'
|
42
|
+
|
43
|
+
async def authenticate(self, auth_req: ZincTokenRequest, future_uid: str, *args, **kwargs) -> AuthContext:
|
44
|
+
future_data = FutureStore.get_future(future_uid)
|
45
|
+
access_token = await future_data.future
|
46
|
+
|
47
|
+
response = ZincTokenResponse(access_token=access_token)
|
48
|
+
context = ZincTokenAuthContext.from_zinc_token_response(response)
|
49
|
+
|
50
|
+
return context
|
51
|
+
|
52
|
+
async def refresh(self, auth_req: ZincTokenRequest, context: AuthContext, *args, **kwargs) -> AuthContext:
|
53
|
+
raise Exception("Zinc token doesn't support refresh")
|
54
|
+
|
55
|
+
def _make_auth_url(self, auth_req: ZincTokenRequest, redirect_uri: str, state: str):
|
56
|
+
params = {
|
57
|
+
"redirect_uri": redirect_uri,
|
58
|
+
"state": state,
|
59
|
+
}
|
60
|
+
auth_url = f"{self._TOKEN_URL}?{urlencode(params)}"
|
61
|
+
return auth_url
|
62
|
+
|
63
|
+
def make_request(self, auth_scopes: Optional[list[str]] = None, **kwargs) -> ZincTokenRequest:
|
64
|
+
return ZincTokenRequest()
|
@@ -0,0 +1,7 @@
|
|
1
|
+
from typing import List, Optional
|
2
|
+
from pydantic import BaseModel
|
3
|
+
from hyperpocket.auth.schema import AuthenticateRequest, AuthenticateResponse
|
4
|
+
class ZincTokenRequest(AuthenticateRequest):
|
5
|
+
pass
|
6
|
+
class ZincTokenResponse(AuthenticateResponse):
|
7
|
+
access_token: str
|
@@ -0,0 +1,27 @@
|
|
1
|
+
from fastapi import APIRouter
|
2
|
+
from starlette.responses import HTMLResponse
|
3
|
+
from hyperpocket.futures import FutureStore
|
4
|
+
|
5
|
+
semantic_scholar_auth_router = APIRouter(
|
6
|
+
prefix="/semantic_scholar"
|
7
|
+
)
|
8
|
+
|
9
|
+
|
10
|
+
@semantic_scholar_auth_router.get("/oauth2/callback")
|
11
|
+
async def semantic_scholar_oauth2_callback(state: str, code: str):
|
12
|
+
try:
|
13
|
+
FutureStore.resolve_future(state, code)
|
14
|
+
except ValueError:
|
15
|
+
return HTMLResponse(content="failed")
|
16
|
+
|
17
|
+
return HTMLResponse(content="success")
|
18
|
+
|
19
|
+
|
20
|
+
@semantic_scholar_auth_router.get("/token/callback")
|
21
|
+
async def semantic_scholar_token_callback(state: str, token: str):
|
22
|
+
try:
|
23
|
+
FutureStore.resolve_future(state, token)
|
24
|
+
except ValueError:
|
25
|
+
return HTMLResponse(content="failed")
|
26
|
+
|
27
|
+
return HTMLResponse(content="success")
|
@@ -0,0 +1,27 @@
|
|
1
|
+
from fastapi import APIRouter
|
2
|
+
from starlette.responses import HTMLResponse
|
3
|
+
from hyperpocket.futures import FutureStore
|
4
|
+
|
5
|
+
zinc_auth_router = APIRouter(
|
6
|
+
prefix="/zinc"
|
7
|
+
)
|
8
|
+
|
9
|
+
|
10
|
+
@zinc_auth_router.get("/oauth2/callback")
|
11
|
+
async def zinc_oauth2_callback(state: str, code: str):
|
12
|
+
try:
|
13
|
+
FutureStore.resolve_future(state, code)
|
14
|
+
except ValueError:
|
15
|
+
return HTMLResponse(content="failed")
|
16
|
+
|
17
|
+
return HTMLResponse(content="success")
|
18
|
+
|
19
|
+
|
20
|
+
@zinc_auth_router.get("/token/callback")
|
21
|
+
async def zinc_token_callback(state: str, token: str):
|
22
|
+
try:
|
23
|
+
FutureStore.resolve_future(state, token)
|
24
|
+
except ValueError:
|
25
|
+
return HTMLResponse(content="failed")
|
26
|
+
|
27
|
+
return HTMLResponse(content="success")
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: hyperpocket
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.7
|
4
4
|
Summary: Building AI agent with hyperpocket tool in a flash
|
5
5
|
Project-URL: Homepage, https://vessl-ai.github.io/hyperpocket
|
6
6
|
Project-URL: Repository, https://github.com/vessl-ai/hyperpocket
|
@@ -10,7 +10,7 @@ hyperpocket/auth/README.md,sha256=zn4QqnFZCA_4X3x8Wb6lE3OP5otYxpByZaCiUkBvaNs,11
|
|
10
10
|
hyperpocket/auth/__init__.py,sha256=pO8M6SAuq0EPqi848_Iy650wqaLekx98e3RRnEAM_r0,607
|
11
11
|
hyperpocket/auth/context.py,sha256=m-j2gDYUKBMsiakLHsu9thhM4dYyFiXP0Wp0S_iC0bU,1303
|
12
12
|
hyperpocket/auth/handler.py,sha256=5cusl9ANEyG3gORVFjqh709txC0alw6eKtxgV6wjf6k,6683
|
13
|
-
hyperpocket/auth/provider.py,sha256=
|
13
|
+
hyperpocket/auth/provider.py,sha256=bTJn6Atm4E9nm9vf8Ggudf7-XxAWMOIPo6xiZnGqDvM,2035
|
14
14
|
hyperpocket/auth/schema.py,sha256=pl4oRTNj8PdqQg6UVPWf8ei2uYQ4DtOmmD58cVFMYQw,537
|
15
15
|
hyperpocket/auth/activeloop/README.md,sha256=xp8n0itbY9VNt8XEvCAE4Ealvj4uf_f1uSZyWG4Q5FE,172
|
16
16
|
hyperpocket/auth/activeloop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -360,6 +360,11 @@ hyperpocket/auth/salesforce/context.py,sha256=JuxwHIBfubOi_7VWWy0d9tKN3XOV9bT2FY
|
|
360
360
|
hyperpocket/auth/salesforce/oauth2_context.py,sha256=7STo2n6yIHK-QHeFGf0t7MSxlJwCwvX-tuB34mi3vRU,1088
|
361
361
|
hyperpocket/auth/salesforce/oauth2_handler.py,sha256=2zZ58usN5DjxBbrynhN9DPMr2Vzmm8iAN8TpHEKuf-c,4717
|
362
362
|
hyperpocket/auth/salesforce/oauth2_schema.py,sha256=XY26_-pxxD8XMvks34-_G-FJb2xitFDSesIiuztw628,477
|
363
|
+
hyperpocket/auth/semantic_scholar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
364
|
+
hyperpocket/auth/semantic_scholar/context.py,sha256=wQzQLW0Hkv4DW1VC1bD6XZ4UsZw07f4rnuPmZFZKlac,442
|
365
|
+
hyperpocket/auth/semantic_scholar/token_context.py,sha256=t1F5iF0-Jte2pvFP5C74lL_OLH3CwywerikPmD1D-9I,551
|
366
|
+
hyperpocket/auth/semantic_scholar/token_handler.py,sha256=FTUBLEorMPJ8BjdL877SHRwIJ78dJK9ZeM2CpN511Lw,2800
|
367
|
+
hyperpocket/auth/semantic_scholar/token_schema.py,sha256=Kw8H6DozQ_NGekODhPvWXr5HX73HbDJCP7YSh2WkKX8,287
|
363
368
|
hyperpocket/auth/sendgrid/README.md,sha256=u_5Cg6OGV2EvwvV_jQp0ZmY1wvjuTAcVPaw_1W0k-WI,305
|
364
369
|
hyperpocket/auth/sendgrid/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
365
370
|
hyperpocket/auth/sendgrid/context.py,sha256=uaJoo7lS2KEtab9fUC1FgECe3kH2EqEfdnXyBWZ6iKU,431
|
@@ -435,6 +440,11 @@ hyperpocket/auth/x/context.py,sha256=5Ur9GI8og49E-8FToKlqR3TtPn6vWAdu1boLqYxJL8k
|
|
435
440
|
hyperpocket/auth/x/oauth2_context.py,sha256=q2HB14WENz2LU7Qe7KkE7-AtsEOtzXIj7n8alykac8M,955
|
436
441
|
hyperpocket/auth/x/oauth2_handler.py,sha256=kEnsbL1YIeIQUlMVPIZYqOswk9_t-sNGiaixj43M1Yc,5634
|
437
442
|
hyperpocket/auth/x/oauth2_schema.py,sha256=PKeaHccpxGLJjEd8RxP2wVcrIPCE-W9HEtP8EMzU4To,401
|
443
|
+
hyperpocket/auth/zinc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
444
|
+
hyperpocket/auth/zinc/context.py,sha256=nsjUnNcOVUB2C3tjN2jT94dWPI9wRagtpyrV452pieY,419
|
445
|
+
hyperpocket/auth/zinc/token_context.py,sha256=CG0aVRO-xEIk39zHLu2-IF46VMrKnKlxg4mqTtv2H-s,449
|
446
|
+
hyperpocket/auth/zinc/token_handler.py,sha256=S0if3Zb8TFRP52XwHpanm_AbthkojLmsnKaeJU8RyxA,2574
|
447
|
+
hyperpocket/auth/zinc/token_schema.py,sha256=18C50Wnr9Vq-YJBS4qzjUotoEJy5zLWqFKK2G7nmcMg,265
|
438
448
|
hyperpocket/auth/zoom/README.md,sha256=xzfcoAiWyFxUdHfOgnXwMXygt_RkaAsaZuCH3ylTcVQ,401
|
439
449
|
hyperpocket/auth/zoom/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
440
450
|
hyperpocket/auth/zoom/context.py,sha256=26S_aMbvtdzXYoXdDNpnHGJ-tmMcOSt0F15cMYwQZaM,423
|
@@ -533,6 +543,7 @@ hyperpocket/server/auth/posthog.py,sha256=Cdi9OeNn1icCeokrTbLc02oA2UMk-kx6nFTlYV
|
|
533
543
|
hyperpocket/server/auth/ravenseotools.py,sha256=StkE9c4nrm-9ftzbaqQ8gNb8lN_N2iIYw7Hn-3o7Cb4,469
|
534
544
|
hyperpocket/server/auth/reddit.py,sha256=UloBQNEdhU1_eXaF8qVSQ5ivq5xtWINsHvBDGwgFSLM,443
|
535
545
|
hyperpocket/server/auth/salesforce.py,sha256=MxwrS_2XkMJXA1UuHayHBHKVGgdBA-zmOrkSJit0XJY,739
|
546
|
+
hyperpocket/server/auth/semantic_scholar.py,sha256=H4FSPjHiZqLPI4eZU-zfjBt4nY3o4OoFtOhGZpP-9Ik,780
|
536
547
|
hyperpocket/server/auth/sendgrid.py,sha256=rOMHV76lVArwsFLuVrJ-nbC4oR-Fq3Xk-Yu11tDl8nA,449
|
537
548
|
hyperpocket/server/auth/serpapi.py,sha256=gHqEC93Sw3JI4-s9zxlL3FrvPEiGPLq5U7IaOKuXVWQ,445
|
538
549
|
hyperpocket/server/auth/slack.py,sha256=frMNtBEfe3fbeNzsQ8udapeau45NZmS8guATmS46qyA,710
|
@@ -546,6 +557,7 @@ hyperpocket/server/auth/trello.py,sha256=1T3ez62h8-KMvu2Zj1Tyv2afgqLUbtG2LM4QbIS
|
|
546
557
|
hyperpocket/server/auth/wandb.py,sha256=jfwg-lQVrr5TgEL7QETnaFucDvi057SJvVZlBe7cOqQ,709
|
547
558
|
hyperpocket/server/auth/workiom.py,sha256=0apFB5-3rmcJaQeEl1_XZ_QlsZORdq8kixJBGkTpZ3Y,445
|
548
559
|
hyperpocket/server/auth/x.py,sha256=CYCD_ajBY6Jt04E2bSEBZFRRIUZmNjF2gn6F0ZV5XuA,450
|
560
|
+
hyperpocket/server/auth/zinc.py,sha256=xgVV5lWP6YSEHTCmH0gipG5lh4Wvf716tHTnOvTTj3w,708
|
549
561
|
hyperpocket/server/auth/zoom.py,sha256=kWp4MB4i9FKMA4ZYcj4g4_90Y1ZMEoAQTTjbb0rsMRs,703
|
550
562
|
hyperpocket/server/tool/__init__.py,sha256=khNLe3H2W7WXKQlHjXuuvd9R87eHOAZhDsQmjDcbYsg,210
|
551
563
|
hyperpocket/server/tool/wasm.py,sha256=VJyp6RGsq8llKT_sY6DhV52wsETu-W9bzJ7C9wC17Oo,1698
|
@@ -581,7 +593,7 @@ hyperpocket/util/flatten_json_schema.py,sha256=iuNBEmMSKFtPi-uqo6fb3RWN0koHOAihW
|
|
581
593
|
hyperpocket/util/function_to_model.py,sha256=TXUs-qPbzL8C9-qqpz4Ad4D9MOPP61n_p0iPU6SoBeM,2318
|
582
594
|
hyperpocket/util/get_objects_from_subpackage.py,sha256=4mR_S8eaJSdU68YfCkiXeIcXxb6q7LjFGsY_IHeNIZw,929
|
583
595
|
hyperpocket/util/json_schema_to_model.py,sha256=PqI87pU5dWwcrQWB8eQxRdfgAEvvC1x_DKZnhcsRV-o,3586
|
584
|
-
hyperpocket-0.3.
|
585
|
-
hyperpocket-0.3.
|
586
|
-
hyperpocket-0.3.
|
587
|
-
hyperpocket-0.3.
|
596
|
+
hyperpocket-0.3.7.dist-info/METADATA,sha256=oZuYOmr2Tx0PdrjFsKiptOTJP5eUffygor8VdhNITOU,12958
|
597
|
+
hyperpocket-0.3.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
598
|
+
hyperpocket-0.3.7.dist-info/entry_points.txt,sha256=KpBleaYr0SaENXOa-dFvJ_cvFCHYFEQ4LMl11ShAcBI,61
|
599
|
+
hyperpocket-0.3.7.dist-info/RECORD,,
|
File without changes
|
File without changes
|