lamindb_setup 1.3.0__py3-none-any.whl → 1.3.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.
- lamindb_setup/__init__.py +1 -1
- lamindb_setup/_connect_instance.py +1 -1
- lamindb_setup/_init_instance.py +14 -1
- lamindb_setup/_migrate.py +18 -7
- lamindb_setup/_register_instance.py +1 -2
- lamindb_setup/core/_hub_client.py +34 -0
- lamindb_setup/core/_hub_core.py +39 -6
- lamindb_setup/core/_settings_instance.py +5 -1
- lamindb_setup/core/_settings_load.py +3 -0
- lamindb_setup/core/_settings_save.py +1 -0
- lamindb_setup/core/_settings_storage.py +2 -2
- lamindb_setup/core/_settings_store.py +1 -0
- lamindb_setup/core/django.py +6 -1
- {lamindb_setup-1.3.0.dist-info → lamindb_setup-1.3.1.dist-info}/METADATA +2 -2
- {lamindb_setup-1.3.0.dist-info → lamindb_setup-1.3.1.dist-info}/RECORD +17 -17
- {lamindb_setup-1.3.0.dist-info → lamindb_setup-1.3.1.dist-info}/LICENSE +0 -0
- {lamindb_setup-1.3.0.dist-info → lamindb_setup-1.3.1.dist-info}/WHEEL +0 -0
lamindb_setup/__init__.py
CHANGED
|
@@ -168,6 +168,7 @@ def _connect_instance(
|
|
|
168
168
|
schema_id=None
|
|
169
169
|
if (schema_id := instance_result["schema_id"]) is None
|
|
170
170
|
else UUID(schema_id),
|
|
171
|
+
fine_grained_access=instance_result.get("fine_grained_access", False),
|
|
171
172
|
)
|
|
172
173
|
else:
|
|
173
174
|
if hub_result != "anonymous-user":
|
|
@@ -205,7 +206,6 @@ def connect(instance: str | None = None, **kwargs) -> str | tuple | None:
|
|
|
205
206
|
for kwarg in kwargs:
|
|
206
207
|
if kwarg not in valid_kwargs:
|
|
207
208
|
raise TypeError(f"connect() got unexpected keyword argument '{kwarg}'")
|
|
208
|
-
|
|
209
209
|
isettings: InstanceSettings = None # type: ignore
|
|
210
210
|
# _db is still needed because it is called in init
|
|
211
211
|
_db: str | None = kwargs.get("_db", None)
|
lamindb_setup/_init_instance.py
CHANGED
|
@@ -6,6 +6,7 @@ import uuid
|
|
|
6
6
|
from typing import TYPE_CHECKING, Literal
|
|
7
7
|
from uuid import UUID
|
|
8
8
|
|
|
9
|
+
import click
|
|
9
10
|
from django.core.exceptions import FieldError
|
|
10
11
|
from django.db.utils import OperationalError, ProgrammingError
|
|
11
12
|
from lamin_utils import logger
|
|
@@ -25,6 +26,11 @@ if TYPE_CHECKING:
|
|
|
25
26
|
from .core.types import UPathStr
|
|
26
27
|
|
|
27
28
|
|
|
29
|
+
class InstanceNotCreated(click.ClickException):
|
|
30
|
+
def show(self, file=None):
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
|
|
28
34
|
def get_schema_module_name(module_name, raise_import_error: bool = True) -> str | None:
|
|
29
35
|
import importlib.util
|
|
30
36
|
|
|
@@ -242,7 +248,7 @@ def init(
|
|
|
242
248
|
raise CannotSwitchDefaultInstance(MESSAGE_CANNOT_SWITCH_DEFAULT_INSTANCE)
|
|
243
249
|
elif _write_settings:
|
|
244
250
|
close_instance(mute=True)
|
|
245
|
-
from .core._hub_core import
|
|
251
|
+
from .core._hub_core import init_instance_hub
|
|
246
252
|
|
|
247
253
|
name_str, instance_id, instance_state, _ = validate_init_args(
|
|
248
254
|
storage=storage,
|
|
@@ -284,6 +290,13 @@ def init(
|
|
|
284
290
|
isettings.is_remote and instance_state != "instance-corrupted-or-deleted"
|
|
285
291
|
)
|
|
286
292
|
if register_on_hub:
|
|
293
|
+
# can't register the instance in the hub
|
|
294
|
+
# if storage is not in the hub
|
|
295
|
+
# raise the exception and initiate cleanups
|
|
296
|
+
if not isettings.storage.is_on_hub:
|
|
297
|
+
raise InstanceNotCreated(
|
|
298
|
+
"Unable to create the instance because failed to register the storage."
|
|
299
|
+
)
|
|
287
300
|
init_instance_hub(
|
|
288
301
|
isettings, account_id=user__uuid, access_token=access_token
|
|
289
302
|
)
|
lamindb_setup/_migrate.py
CHANGED
|
@@ -23,25 +23,36 @@ def check_whether_migrations_in_sync(db_version_str: str):
|
|
|
23
23
|
return None
|
|
24
24
|
installed_version = version.parse(installed_version_str)
|
|
25
25
|
db_version = version.parse(db_version_str)
|
|
26
|
-
if installed_version.major < db_version.major
|
|
26
|
+
if installed_version.major < db_version.major:
|
|
27
|
+
logger.warning(
|
|
28
|
+
f"the database ({db_version_str}) is far ahead of your installed lamindb package ({installed_version_str})"
|
|
29
|
+
)
|
|
30
|
+
logger.important(
|
|
31
|
+
f"please update lamindb: pip install lamindb>={db_version.major}"
|
|
32
|
+
)
|
|
33
|
+
elif (
|
|
27
34
|
installed_version.major == db_version.major
|
|
28
35
|
and installed_version.minor < db_version.minor
|
|
29
36
|
):
|
|
30
37
|
db_version_lower = f"{db_version.major}.{db_version.minor}"
|
|
31
|
-
|
|
32
|
-
logger.warning(
|
|
38
|
+
logger.important(
|
|
33
39
|
f"the database ({db_version_str}) is ahead of your installed lamindb"
|
|
34
40
|
f" package ({installed_version_str})"
|
|
35
41
|
)
|
|
36
42
|
logger.important(
|
|
37
|
-
"
|
|
38
|
-
f' "lamindb>={db_version_lower},<{db_version_upper}"'
|
|
43
|
+
f"consider updating lamindb: pip install lamindb>={db_version_lower}"
|
|
39
44
|
)
|
|
40
|
-
elif installed_version.major > db_version.major
|
|
45
|
+
elif installed_version.major > db_version.major:
|
|
46
|
+
logger.warning(
|
|
47
|
+
f"the database ({db_version_str}) is far behind your installed lamindb package"
|
|
48
|
+
f" ({installed_version_str})"
|
|
49
|
+
)
|
|
50
|
+
logger.important("migrate your database: lamin migrate deploy")
|
|
51
|
+
elif (
|
|
41
52
|
installed_version.major == db_version.major
|
|
42
53
|
and installed_version.minor > db_version.minor
|
|
43
54
|
):
|
|
44
|
-
logger.
|
|
55
|
+
logger.important(
|
|
45
56
|
f"the database ({db_version_str}) is behind your installed lamindb package"
|
|
46
57
|
f" ({installed_version_str})"
|
|
47
58
|
)
|
|
@@ -10,8 +10,7 @@ from .core.django import setup_django
|
|
|
10
10
|
def register(_test: bool = False):
|
|
11
11
|
"""Register an instance on the hub."""
|
|
12
12
|
from ._check_setup import _check_instance_setup
|
|
13
|
-
from .core._hub_core import
|
|
14
|
-
from .core._hub_core import init_storage as init_storage_hub
|
|
13
|
+
from .core._hub_core import init_instance_hub, init_storage_hub
|
|
15
14
|
|
|
16
15
|
logger.warning("""lamin register will be removed soon""")
|
|
17
16
|
|
|
@@ -180,3 +180,37 @@ def call_with_fallback(
|
|
|
180
180
|
except NameError:
|
|
181
181
|
pass
|
|
182
182
|
return result
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def requests_client():
|
|
186
|
+
# local is used in tests
|
|
187
|
+
if os.environ.get("LAMIN_ENV", "prod") == "local":
|
|
188
|
+
from fastapi.testclient import TestClient
|
|
189
|
+
from laminhub_rest.main import app
|
|
190
|
+
|
|
191
|
+
return TestClient(app)
|
|
192
|
+
|
|
193
|
+
import requests # type: ignore
|
|
194
|
+
|
|
195
|
+
return requests
|
|
196
|
+
|
|
197
|
+
|
|
198
|
+
def request_get_auth(url: str, access_token: str, renew_token: bool = True):
|
|
199
|
+
requests = requests_client()
|
|
200
|
+
|
|
201
|
+
response = requests.get(url, headers={"Authorization": f"Bearer {access_token}"})
|
|
202
|
+
# upate access_token and try again if failed
|
|
203
|
+
if response.status_code != 200 and renew_token:
|
|
204
|
+
from lamindb_setup import settings
|
|
205
|
+
|
|
206
|
+
access_token = get_access_token(
|
|
207
|
+
settings.user.email, settings.user.password, settings.user.api_key
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
settings.user.access_token = access_token
|
|
211
|
+
save_user_settings(settings.user)
|
|
212
|
+
|
|
213
|
+
response = requests.get(
|
|
214
|
+
url, headers={"Authorization": f"Bearer {access_token}"}
|
|
215
|
+
)
|
|
216
|
+
return response
|
lamindb_setup/core/_hub_core.py
CHANGED
|
@@ -16,6 +16,7 @@ from ._hub_client import (
|
|
|
16
16
|
call_with_fallback,
|
|
17
17
|
call_with_fallback_auth,
|
|
18
18
|
connect_hub,
|
|
19
|
+
request_get_auth,
|
|
19
20
|
)
|
|
20
21
|
from ._hub_crud import (
|
|
21
22
|
_delete_instance_record,
|
|
@@ -115,7 +116,7 @@ def _select_storage(
|
|
|
115
116
|
return True
|
|
116
117
|
|
|
117
118
|
|
|
118
|
-
def
|
|
119
|
+
def init_storage_hub(
|
|
119
120
|
ssettings: StorageSettings,
|
|
120
121
|
auto_populate_instance: bool = True,
|
|
121
122
|
created_by: UUID | None = None,
|
|
@@ -123,7 +124,7 @@ def init_storage(
|
|
|
123
124
|
) -> Literal["hub-record-retireved", "hub-record-created"]:
|
|
124
125
|
if settings.user.handle != "anonymous" or access_token is not None:
|
|
125
126
|
return call_with_fallback_auth(
|
|
126
|
-
|
|
127
|
+
_init_storage_hub,
|
|
127
128
|
ssettings=ssettings,
|
|
128
129
|
auto_populate_instance=auto_populate_instance,
|
|
129
130
|
created_by=created_by,
|
|
@@ -139,7 +140,7 @@ def init_storage(
|
|
|
139
140
|
raise ValueError("Log in to create a storage location on the hub.")
|
|
140
141
|
|
|
141
142
|
|
|
142
|
-
def
|
|
143
|
+
def _init_storage_hub(
|
|
143
144
|
client: Client,
|
|
144
145
|
ssettings: StorageSettings,
|
|
145
146
|
auto_populate_instance: bool,
|
|
@@ -269,20 +270,20 @@ def delete_instance_record(instance_id: UUID, access_token: str | None = None) -
|
|
|
269
270
|
)
|
|
270
271
|
|
|
271
272
|
|
|
272
|
-
def
|
|
273
|
+
def init_instance_hub(
|
|
273
274
|
isettings: InstanceSettings,
|
|
274
275
|
account_id: UUID | None = None,
|
|
275
276
|
access_token: str | None = None,
|
|
276
277
|
) -> None:
|
|
277
278
|
return call_with_fallback_auth(
|
|
278
|
-
|
|
279
|
+
_init_instance_hub,
|
|
279
280
|
isettings=isettings,
|
|
280
281
|
account_id=account_id,
|
|
281
282
|
access_token=access_token,
|
|
282
283
|
)
|
|
283
284
|
|
|
284
285
|
|
|
285
|
-
def
|
|
286
|
+
def _init_instance_hub(
|
|
286
287
|
client: Client, isettings: InstanceSettings, account_id: UUID | None = None
|
|
287
288
|
) -> None:
|
|
288
289
|
from ._settings import settings
|
|
@@ -437,6 +438,38 @@ def _access_aws(*, storage_root: str, client: Client) -> dict[str, dict]:
|
|
|
437
438
|
return storage_root_info
|
|
438
439
|
|
|
439
440
|
|
|
441
|
+
def access_db(isettings: InstanceSettings, access_token: str | None = None) -> str:
|
|
442
|
+
if access_token is None:
|
|
443
|
+
if settings.user.handle == "anonymous":
|
|
444
|
+
raise RuntimeError(
|
|
445
|
+
f"Can only get fine-grained access to {isettings.slug} if authenticated."
|
|
446
|
+
)
|
|
447
|
+
else:
|
|
448
|
+
access_token = settings.user.access_token
|
|
449
|
+
renew_token = True
|
|
450
|
+
else:
|
|
451
|
+
renew_token = False
|
|
452
|
+
# local is used in tests
|
|
453
|
+
url = f"/access_v2/instances/{isettings._id}/db_token"
|
|
454
|
+
if os.environ.get("LAMIN_ENV", "prod") != "local":
|
|
455
|
+
api_url = isettings._api_url
|
|
456
|
+
if api_url is None:
|
|
457
|
+
raise RuntimeError(
|
|
458
|
+
f"Can only get fine-grained access to {isettings.slug} if api_url is present."
|
|
459
|
+
)
|
|
460
|
+
url = api_url + url
|
|
461
|
+
|
|
462
|
+
response = request_get_auth(url, access_token, renew_token) # type: ignore
|
|
463
|
+
response_json = response.json()
|
|
464
|
+
if response.status_code != 200:
|
|
465
|
+
raise PermissionError(
|
|
466
|
+
f"Fine-grained access to {isettings.slug} failed: {response_json}"
|
|
467
|
+
)
|
|
468
|
+
if "token" not in response_json:
|
|
469
|
+
raise RuntimeError("The response of access_db does not contain a db token.")
|
|
470
|
+
return response_json["token"]
|
|
471
|
+
|
|
472
|
+
|
|
440
473
|
def get_lamin_site_base_url():
|
|
441
474
|
if "LAMIN_ENV" in os.environ:
|
|
442
475
|
if os.environ["LAMIN_ENV"] == "local":
|
|
@@ -59,6 +59,7 @@ class InstanceSettings:
|
|
|
59
59
|
is_on_hub: bool | None = None, # initialized from hub
|
|
60
60
|
api_url: str | None = None,
|
|
61
61
|
schema_id: UUID | None = None,
|
|
62
|
+
fine_grained_access: bool = False,
|
|
62
63
|
_locker_user: UserSettings | None = None, # user to lock for if cloud sqlite
|
|
63
64
|
):
|
|
64
65
|
from ._hub_utils import validate_db_arg
|
|
@@ -76,9 +77,12 @@ class InstanceSettings:
|
|
|
76
77
|
self._keep_artifacts_local = keep_artifacts_local
|
|
77
78
|
self._storage_local: StorageSettings | None = None
|
|
78
79
|
self._is_on_hub = is_on_hub
|
|
79
|
-
# private, needed for
|
|
80
|
+
# private, needed for api requests
|
|
80
81
|
self._api_url = api_url
|
|
81
82
|
self._schema_id = schema_id
|
|
83
|
+
# private, whether fine grained access is used
|
|
84
|
+
# needed to be set to request jwt etc
|
|
85
|
+
self._fine_grained_access = fine_grained_access
|
|
82
86
|
# if None then settings.user is used
|
|
83
87
|
self._locker_user = _locker_user
|
|
84
88
|
|
|
@@ -101,6 +101,9 @@ def setup_instance_from_store(store: InstanceSettingsStore) -> InstanceSettings:
|
|
|
101
101
|
modules=_null_to_value(store.schema_str),
|
|
102
102
|
git_repo=_null_to_value(store.git_repo),
|
|
103
103
|
keep_artifacts_local=store.keep_artifacts_local, # type: ignore
|
|
104
|
+
api_url=_null_to_value(store.api_url),
|
|
105
|
+
schema_id=None if store.schema_id == "null" else UUID(store.schema_id),
|
|
106
|
+
fine_grained_access=store.fine_grained_access,
|
|
104
107
|
)
|
|
105
108
|
|
|
106
109
|
|
|
@@ -150,8 +150,7 @@ def init_storage(
|
|
|
150
150
|
# the below might update the uid with one that's already taken on the hub
|
|
151
151
|
if not prevent_register_hub:
|
|
152
152
|
if ssettings.type_is_cloud or register_hub:
|
|
153
|
-
from ._hub_core import delete_storage_record
|
|
154
|
-
from ._hub_core import init_storage as init_storage_hub
|
|
153
|
+
from ._hub_core import delete_storage_record, init_storage_hub
|
|
155
154
|
|
|
156
155
|
hub_record_status = init_storage_hub(
|
|
157
156
|
ssettings,
|
|
@@ -175,6 +174,7 @@ def init_storage(
|
|
|
175
174
|
# only newly created
|
|
176
175
|
if hub_record_status == "hub-record-created" and ssettings._uuid is not None:
|
|
177
176
|
delete_storage_record(ssettings._uuid, access_token=access_token) # type: ignore
|
|
177
|
+
ssettings._uuid_ = None
|
|
178
178
|
hub_record_status = "hub-record-not-created"
|
|
179
179
|
ssettings._instance_id = None
|
|
180
180
|
return ssettings, hub_record_status
|
|
@@ -57,6 +57,7 @@ class InstanceSettingsStore(BaseSettings):
|
|
|
57
57
|
db: Optional[str] # doesn't like new types on 3.9 even with future annotations
|
|
58
58
|
schema_str: Optional[str]
|
|
59
59
|
schema_id: Optional[str] = None
|
|
60
|
+
fine_grained_access: bool = False
|
|
60
61
|
id: str
|
|
61
62
|
git_repo: Optional[str]
|
|
62
63
|
keep_artifacts_local: Optional[bool]
|
lamindb_setup/core/django.py
CHANGED
|
@@ -14,7 +14,7 @@ IS_MIGRATING = False
|
|
|
14
14
|
CONN_MAX_AGE = 299
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def
|
|
17
|
+
def set_db_token(token: str | None, connection_name: str = "default"):
|
|
18
18
|
# None to reset
|
|
19
19
|
from django.db import connections
|
|
20
20
|
from django.db.backends.base.base import BaseDatabaseWrapper
|
|
@@ -125,6 +125,11 @@ def setup_django(
|
|
|
125
125
|
|
|
126
126
|
BaseDatabaseWrapper.close_if_health_check_failed = close_if_health_check_failed
|
|
127
127
|
|
|
128
|
+
if isettings._fine_grained_access:
|
|
129
|
+
from ._hub_core import access_db
|
|
130
|
+
|
|
131
|
+
set_db_token(access_db(isettings))
|
|
132
|
+
|
|
128
133
|
if configure_only:
|
|
129
134
|
return None
|
|
130
135
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: lamindb_setup
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Setup & configure LaminDB.
|
|
5
5
|
Author-email: Lamin Labs <open-source@lamin.ai>
|
|
6
6
|
Requires-Python: >=3.10
|
|
7
7
|
Description-Content-Type: text/markdown
|
|
8
8
|
Requires-Dist: lamin_utils>=0.3.3
|
|
9
|
-
Requires-Dist: django>=5,<5.2
|
|
9
|
+
Requires-Dist: django>=5.1,<5.2
|
|
10
10
|
Requires-Dist: dj_database_url>=1.3.0,<3.0.0
|
|
11
11
|
Requires-Dist: pydantic-settings
|
|
12
12
|
Requires-Dist: appdirs<2.0.0
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
lamindb_setup/__init__.py,sha256=
|
|
1
|
+
lamindb_setup/__init__.py,sha256=ufOB1lSTRTPp-RZONLCcBSPomaQdlpnxW9U__2ODvcQ,2692
|
|
2
2
|
lamindb_setup/_cache.py,sha256=aszT-zk3S5dTLKp5g1W-S_FPh2E5YVCALwWSGPJLWBM,1493
|
|
3
3
|
lamindb_setup/_check.py,sha256=28PcG8Kp6OpjSLSi1r2boL2Ryeh6xkaCL87HFbjs6GA,129
|
|
4
4
|
lamindb_setup/_check_setup.py,sha256=d1GS1Csy2G9AysfjoyVcNVY0lhHiWSwSLpfgdIQf35s,5477
|
|
5
5
|
lamindb_setup/_close.py,sha256=pf8PHrtRBC6TycBtVAXzD9EZSGufoyp5M82o6zLHmt4,1240
|
|
6
|
-
lamindb_setup/_connect_instance.py,sha256=
|
|
6
|
+
lamindb_setup/_connect_instance.py,sha256=IXpU43DO-DWm9twDeuQJeBbKj-oB4SzEqsCjIX4AZMo,18276
|
|
7
7
|
lamindb_setup/_delete.py,sha256=4NqJkEA812VWRxTBW1o1h1YX0fF7sQwn08hj1BmvCPs,5673
|
|
8
8
|
lamindb_setup/_django.py,sha256=uIQflpkp8l3axyPaKURlk3kacgpElVP5KOKmFxYSMGk,1454
|
|
9
9
|
lamindb_setup/_entry_points.py,sha256=sKwXPX9xjOotoAjvgkU5LBwjjHLWVkh0ZGdiSsrch9k,522
|
|
10
10
|
lamindb_setup/_exportdb.py,sha256=QLjoH4dEwqa01A12naKaDPglCCzl2_VLKWFfJRE_uSg,2113
|
|
11
11
|
lamindb_setup/_importdb.py,sha256=fKv9ev5OOj_-bmzC8XZ1GxOcjIjI486yrHSHDWQrJeI,1874
|
|
12
|
-
lamindb_setup/_init_instance.py,sha256=
|
|
13
|
-
lamindb_setup/_migrate.py,sha256=
|
|
14
|
-
lamindb_setup/_register_instance.py,sha256=
|
|
12
|
+
lamindb_setup/_init_instance.py,sha256=wZ1yEnbogduQOXkEbcip9Jm8mys1NtJy2W5RRWJy1lQ,14253
|
|
13
|
+
lamindb_setup/_migrate.py,sha256=gqWfXgixiD4dpQOq1ePVPfCj88iMCQSx4vxg_QKvFGc,9586
|
|
14
|
+
lamindb_setup/_register_instance.py,sha256=X7ZGlCVOZKq4zTpi3bxML4jzo6hgN9UYmdTxxf6JLmc,1205
|
|
15
15
|
lamindb_setup/_schema.py,sha256=b3uzhhWpV5mQtDwhMINc2MabGCnGLESy51ito3yl6Wc,679
|
|
16
16
|
lamindb_setup/_schema_metadata.py,sha256=cDkNHyFTFZq879UGY6i-rJEXfeBN59AN3Wz86caKnYI,14358
|
|
17
17
|
lamindb_setup/_set_managed_storage.py,sha256=4tDxXQMt8Gw028uY3vIQxZQ7qBNXhQMc8saarNK_Z-s,2043
|
|
@@ -22,26 +22,26 @@ lamindb_setup/core/_aws_options.py,sha256=Umxu_1AYd-0LJUElZxowvE9vNA7Z8kh_63g3pp
|
|
|
22
22
|
lamindb_setup/core/_aws_storage.py,sha256=nEjeUv4xUVpoV0Lx-zjjmyb9w804bDyaeiM-OqbfwM0,1799
|
|
23
23
|
lamindb_setup/core/_deprecated.py,sha256=HN7iUBdEgahw5e4NHCd1VJooUfieNb6GRzS5x8jU-q8,2549
|
|
24
24
|
lamindb_setup/core/_docs.py,sha256=3k-YY-oVaJd_9UIY-LfBg_u8raKOCNfkZQPA73KsUhs,276
|
|
25
|
-
lamindb_setup/core/_hub_client.py,sha256=
|
|
26
|
-
lamindb_setup/core/_hub_core.py,sha256=
|
|
25
|
+
lamindb_setup/core/_hub_client.py,sha256=Wy3QRJ1mySSu7xHjLZkcQvZpBX03g8oKbxiqxRIpPgo,7456
|
|
26
|
+
lamindb_setup/core/_hub_core.py,sha256=8ZdekUtJMPdWLUqiHeT2nZ_F7FV0GJkQ7ixaIOSaAr4,21309
|
|
27
27
|
lamindb_setup/core/_hub_crud.py,sha256=IAuPZes1am8OFwtcf5jSRQPGG1eKwVTEsp9Li-uq0cQ,5377
|
|
28
28
|
lamindb_setup/core/_hub_utils.py,sha256=6dyDGyzYFgVfR_lE3VN3CP1jGp98gxPtr-T91PAP05U,2687
|
|
29
29
|
lamindb_setup/core/_private_django_api.py,sha256=By63l3vIEtK1pq246FhHq3tslxsaTJGKm5VakYluWp4,2656
|
|
30
30
|
lamindb_setup/core/_settings.py,sha256=eslFO84vb5uRRfJ3r_uu4O8677l8lU5BbpZJMSAYw6A,8244
|
|
31
|
-
lamindb_setup/core/_settings_instance.py,sha256=
|
|
32
|
-
lamindb_setup/core/_settings_load.py,sha256=
|
|
33
|
-
lamindb_setup/core/_settings_save.py,sha256=
|
|
34
|
-
lamindb_setup/core/_settings_storage.py,sha256=
|
|
35
|
-
lamindb_setup/core/_settings_store.py,sha256=
|
|
31
|
+
lamindb_setup/core/_settings_instance.py,sha256=OLpwUp4a0SvVQ_r48C7Se2O5rckOE5MC0afAUGRAYMY,19549
|
|
32
|
+
lamindb_setup/core/_settings_load.py,sha256=5wzhfCqt5mA9rpgAs9EWgxifrpL7Xwjw2YWaoL4VNeU,4281
|
|
33
|
+
lamindb_setup/core/_settings_save.py,sha256=P7TPIi0T7VPdyQX9Z5w9y0Uzq4Y5QHbFCuzWdN2nkfk,3185
|
|
34
|
+
lamindb_setup/core/_settings_storage.py,sha256=1-Wso38WN0Pcl3QdkdZc-B01D9Jpl-bjNMmu_FRLPFU,13103
|
|
35
|
+
lamindb_setup/core/_settings_store.py,sha256=NhKi7GsC4q5V280Ex7sjiSR2j6VXt1-01xPgBPtS_58,2257
|
|
36
36
|
lamindb_setup/core/_settings_user.py,sha256=lWqV3HmZCsEq2UsU_iVNW0p9ddsNg7-B6xOaMNH1aw0,1475
|
|
37
37
|
lamindb_setup/core/_setup_bionty_sources.py,sha256=qTPMV5TEbNiTB81QqG2rSs6W8j8kQ7kVQMLOXRzAxBI,4004
|
|
38
38
|
lamindb_setup/core/cloud_sqlite_locker.py,sha256=i6TrT7HG0lqliPvZTlsZ_uplPaqhPBbabyfeR32SkA8,7107
|
|
39
|
-
lamindb_setup/core/django.py,sha256=
|
|
39
|
+
lamindb_setup/core/django.py,sha256=2-btFL9YglV90qNy3bzV6rYBer7GftGINsDbc6u4mD4,4837
|
|
40
40
|
lamindb_setup/core/exceptions.py,sha256=4NpLUNUIfXYVTFX2FvLZF8RW34exk2Vn2X3G4YhnTRg,276
|
|
41
41
|
lamindb_setup/core/hashing.py,sha256=M3Q1-ywnqh4Uy5zojbQfLju19HU0ySp8Oi7FGIJXfFI,3667
|
|
42
42
|
lamindb_setup/core/types.py,sha256=zJii2le38BJUmsNVvzDrbzGYr0yaeb-9Rw9IKmsBr3k,523
|
|
43
43
|
lamindb_setup/core/upath.py,sha256=AvRmICPBxQx-2iQYsXDFsrJS-AAUNuw6IymLcVmkWvo,33550
|
|
44
|
-
lamindb_setup-1.3.
|
|
45
|
-
lamindb_setup-1.3.
|
|
46
|
-
lamindb_setup-1.3.
|
|
47
|
-
lamindb_setup-1.3.
|
|
44
|
+
lamindb_setup-1.3.1.dist-info/LICENSE,sha256=UOZ1F5fFDe3XXvG4oNnkL1-Ecun7zpHzRxjp-XsMeAo,11324
|
|
45
|
+
lamindb_setup-1.3.1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
|
|
46
|
+
lamindb_setup-1.3.1.dist-info/METADATA,sha256=8SPEZKzLf1XSP8kM23EpttkZe7r4mXBI-SLl_26Ewmg,1779
|
|
47
|
+
lamindb_setup-1.3.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|