lamindb_setup 0.76.3__tar.gz → 0.76.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.
Files changed (92) hide show
  1. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/PKG-INFO +1 -1
  2. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/__init__.py +1 -1
  3. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_hub_core.py +3 -3
  4. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_hub_crud.py +22 -5
  5. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings_load.py +2 -7
  6. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/upath.py +4 -4
  7. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-local/conftest.py +5 -3
  8. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/storage/test_storage_stats.py +15 -1
  9. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/.github/workflows/build.yml +0 -0
  10. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/.github/workflows/doc-changes.yml +0 -0
  11. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/.gitignore +0 -0
  12. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/.pre-commit-config.yaml +0 -0
  13. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/LICENSE +0 -0
  14. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/README.md +0 -0
  15. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/changelog.md +0 -0
  16. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  17. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  18. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  19. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  20. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  21. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/06-connect-hosted-instance.ipynb +0 -0
  22. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  23. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/test-multi-session.ipynb +0 -0
  24. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-cloud/test_notebooks.py +0 -0
  25. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-cache-management.ipynb +0 -0
  26. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-cloud-sync.ipynb +0 -0
  27. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  28. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-empty-init.ipynb +0 -0
  29. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-import-schema.ipynb +0 -0
  30. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  31. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  32. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  33. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/hub-prod/test_notebooks2.py +0 -0
  34. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/index.md +0 -0
  35. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/notebooks.md +0 -0
  36. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/docs/reference.md +0 -0
  37. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_cache.py +0 -0
  38. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_check.py +0 -0
  39. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_check_setup.py +0 -0
  40. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_close.py +0 -0
  41. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_connect_instance.py +0 -0
  42. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_delete.py +0 -0
  43. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_django.py +0 -0
  44. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_exportdb.py +0 -0
  45. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_importdb.py +0 -0
  46. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_init_instance.py +0 -0
  47. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_migrate.py +0 -0
  48. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_register_instance.py +0 -0
  49. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_schema.py +0 -0
  50. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_schema_metadata.py +0 -0
  51. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_set_managed_storage.py +0 -0
  52. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_setup_user.py +0 -0
  53. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/_silence_loggers.py +0 -0
  54. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/__init__.py +0 -0
  55. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_aws_credentials.py +0 -0
  56. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_aws_storage.py +0 -0
  57. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_deprecated.py +0 -0
  58. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_docs.py +0 -0
  59. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_hub_client.py +0 -0
  60. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_hub_utils.py +0 -0
  61. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_private_django_api.py +0 -0
  62. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings.py +0 -0
  63. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings_instance.py +0 -0
  64. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings_save.py +0 -0
  65. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings_storage.py +0 -0
  66. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings_store.py +0 -0
  67. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_settings_user.py +0 -0
  68. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/_setup_bionty_sources.py +0 -0
  69. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  70. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/django.py +0 -0
  71. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/exceptions.py +0 -0
  72. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/hashing.py +0 -0
  73. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/lamindb_setup/core/types.py +0 -0
  74. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/noxfile.py +0 -0
  75. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/pyproject.toml +0 -0
  76. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-cloud/test_connect_instance.py +0 -0
  77. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-cloud/test_delete_instance.py +0 -0
  78. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-cloud/test_init_instance.py +0 -0
  79. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-cloud/test_login.py +0 -0
  80. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-cloud/test_migrate.py +0 -0
  81. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-cloud/test_set_storage.py +0 -0
  82. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-local/test_all.py +0 -0
  83. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-local/test_update_schema_in_hub.py +0 -0
  84. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-prod/conftest.py +0 -0
  85. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-prod/test_django.py +0 -0
  86. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-prod/test_global_settings.py +0 -0
  87. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  88. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/hub-prod/test_upath.py +0 -0
  89. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/storage/test_hashing.py +0 -0
  90. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/storage/test_storage_access.py +0 -0
  91. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/storage/test_storage_basis.py +0 -0
  92. {lamindb_setup-0.76.3 → lamindb_setup-0.76.4}/tests/storage/test_to_url.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb_setup
3
- Version: 0.76.3
3
+ Version: 0.76.4
4
4
  Summary: Setup & configure LaminDB.
5
5
  Author-email: Lamin Labs <open-source@lamin.ai>
6
6
  Description-Content-Type: text/markdown
@@ -34,7 +34,7 @@ Modules & settings:
34
34
 
35
35
  """
36
36
 
37
- __version__ = "0.76.3" # denote a release candidate for 0.1.0 with 0.1rc1
37
+ __version__ = "0.76.4" # denote a release candidate for 0.1.0 with 0.1rc1
38
38
 
39
39
  import sys
40
40
  from os import name as _os_name
@@ -19,10 +19,10 @@ from ._hub_crud import (
19
19
  _delete_instance_record,
20
20
  select_account_by_handle,
21
21
  select_db_user_by_instance,
22
+ select_default_storage_by_instance_id,
22
23
  select_instance_by_id_with_storage,
23
24
  select_instance_by_name,
24
25
  select_instance_by_owner_name,
25
- select_storage,
26
26
  )
27
27
  from ._hub_crud import update_instance as _update_instance_record
28
28
  from ._hub_utils import (
@@ -338,7 +338,7 @@ def _connect_instance(
338
338
  if instance is None:
339
339
  return "instance-not-found"
340
340
  # get default storage
341
- storage = select_storage(instance["storage_id"], client)
341
+ storage = select_default_storage_by_instance_id(instance["id"], client)
342
342
  if storage is None:
343
343
  return "storage-does-not-exist-on-hub"
344
344
  else:
@@ -364,7 +364,7 @@ def _connect_instance(
364
364
  database=instance["db_database"],
365
365
  )
366
366
  instance["db"] = db_dsn
367
- return instance, storage
367
+ return instance, storage # type: ignore
368
368
 
369
369
 
370
370
  def access_aws(storage_root: str, access_token: str | None = None) -> dict[str, dict]:
@@ -17,10 +17,11 @@ def select_instance_by_owner_name(
17
17
  client.table("instance")
18
18
  .select(
19
19
  "*, account!inner!instance_account_id_28936e8f_fk_account_id(*),"
20
- " storage!instance_storage_id_87963cc8_fk_storage_id(*)"
20
+ " storage!inner!storage_instance_id_359fca71_fk_instance_id(*)"
21
21
  )
22
- .eq("account.handle", owner)
23
22
  .eq("name", name)
23
+ .eq("account.handle", owner)
24
+ .eq("storage.is_default", True)
24
25
  .execute()
25
26
  .data
26
27
  )
@@ -28,7 +29,11 @@ def select_instance_by_owner_name(
28
29
  return None
29
30
  if len(data) == 0:
30
31
  return None
31
- return data[0]
32
+ result = data[0]
33
+ # this is now a list
34
+ # assume only one default storage
35
+ result["storage"] = result["storage"][0]
36
+ return result
32
37
 
33
38
 
34
39
  # --------------- ACCOUNT ----------------------
@@ -131,8 +136,20 @@ def select_collaborator(
131
136
  # --------------- STORAGE ----------------------
132
137
 
133
138
 
134
- def select_storage(id: str, client: Client):
135
- data = client.table("storage").select("*").eq("id", id).execute().data
139
+ def select_default_storage_by_instance_id(
140
+ instance_id: str, client: Client
141
+ ) -> dict | None:
142
+ try:
143
+ data = (
144
+ client.table("storage")
145
+ .select("*")
146
+ .eq("instance_id", instance_id)
147
+ .eq("is_default", True)
148
+ .execute()
149
+ .data
150
+ )
151
+ except Exception:
152
+ return None
136
153
  if len(data) == 0:
137
154
  return None
138
155
  return data[0]
@@ -36,14 +36,9 @@ def load_instance_settings(instance_settings_file: Path | None = None):
36
36
  content = f.read()
37
37
  raise SettingsEnvFileOutdated(
38
38
  f"\n\n{error}\n\nYour instance settings file with\n\n{content}\nis invalid"
39
- f" (likely outdated), please delete {instance_settings_file} &"
40
- " re-initialize (local) or re-connect to the instance (remote)"
39
+ f" (likely outdated), see validation error. Please delete {instance_settings_file} &"
40
+ " reload (remote) or re-initialize (local) the instance with the same name & storage location."
41
41
  ) from error
42
- if settings_store.id == "null":
43
- raise ValueError(
44
- "Your instance._id is undefined, please either load your instance from the"
45
- f" hub or update {instance_settings_file} with a new id: {uuid4().hex}"
46
- )
47
42
  isettings = setup_instance_from_store(settings_store)
48
43
  return isettings
49
44
 
@@ -18,7 +18,7 @@ from upath.implementations.cloud import CloudPath, S3Path # keep CloudPath!
18
18
  from upath.implementations.local import LocalPath, PosixUPath, WindowsUPath
19
19
 
20
20
  from ._aws_credentials import HOSTED_BUCKETS, get_aws_credentials_manager
21
- from .hashing import b16_to_b64, hash_md5s_from_dir
21
+ from .hashing import HASH_LENGTH, b16_to_b64, hash_md5s_from_dir
22
22
 
23
23
  if TYPE_CHECKING:
24
24
  from .types import UPathStr
@@ -707,9 +707,9 @@ def get_stat_file_cloud(stat: dict) -> tuple[int, str, str]:
707
707
  else:
708
708
  stripped_etag, suffix = etag.split("-")
709
709
  suffix = suffix.strip('"')
710
- hash = f"{b16_to_b64(stripped_etag)}-{suffix}"
711
- hash_type = "md5-n" # this is the S3 chunk-hashing strategy
712
- return size, hash, hash_type
710
+ hash = b16_to_b64(stripped_etag)
711
+ hash_type = f"md5-{suffix}" # this is the S3 chunk-hashing strategy
712
+ return size, hash[:HASH_LENGTH], hash_type
713
713
 
714
714
 
715
715
  def get_stat_dir_cloud(path: UPath) -> tuple[int, str, str, int]:
@@ -2,9 +2,11 @@ from __future__ import annotations
2
2
 
3
3
  import os
4
4
 
5
- from laminhub_rest.dev._seed import seed_local_test
6
- from laminhub_rest.dev._supabase import SupabaseResources
7
- from laminhub_rest.dev._utils import remove_lamin_local_settings
5
+ from laminhub_rest.dev import (
6
+ SupabaseResources,
7
+ remove_lamin_local_settings,
8
+ seed_local_test,
9
+ )
8
10
 
9
11
  supabase_resources = SupabaseResources()
10
12
 
@@ -2,7 +2,21 @@ from __future__ import annotations
2
2
 
3
3
  from lamindb_setup.core._aws_credentials import HOSTED_REGIONS
4
4
  from lamindb_setup.core._settings_storage import get_storage_region
5
- from lamindb_setup.core.upath import UPath, compute_file_tree, get_stat_dir_cloud
5
+ from lamindb_setup.core.upath import (
6
+ UPath,
7
+ compute_file_tree,
8
+ get_stat_dir_cloud,
9
+ get_stat_file_cloud,
10
+ )
11
+
12
+
13
+ def test_get_stat_file_cloud_aws():
14
+ string_path = "s3://bionty-assets/df_all__ncbitaxon__2023-06-20__Organism.parquet"
15
+ path = UPath(string_path, anon=True)
16
+ size, hash, hash_type = get_stat_file_cloud(path.stat().as_info())
17
+ assert hash == "zQxieeCkNGNJWhPl3OfM8A"
18
+ assert hash_type == "md5-5"
19
+ assert size == 78148228
6
20
 
7
21
 
8
22
  def test_get_stat_dir_cloud_aws():
File without changes
File without changes