lamindb_setup 0.72.2__tar.gz → 0.73.1__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.72.2 → lamindb_setup-0.73.1}/.github/workflows/build.yml +14 -14
  2. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/.pre-commit-config.yaml +1 -1
  3. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/PKG-INFO +2 -2
  4. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/changelog.md +8 -0
  5. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/06-connect-hosted-instance.ipynb +4 -2
  6. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-cloud-sync.ipynb +2 -1
  7. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/__init__.py +1 -1
  8. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_init_instance.py +3 -2
  9. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_migrate.py +5 -0
  10. lamindb_setup-0.73.1/lamindb_setup/_schema_metadata.py +479 -0
  11. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_aws_credentials.py +4 -4
  12. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings_instance.py +2 -2
  13. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings_storage.py +26 -24
  14. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_setup_bionty_sources.py +1 -0
  15. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/upath.py +75 -56
  16. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/noxfile.py +6 -9
  17. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/pyproject.toml +1 -1
  18. lamindb_setup-0.73.1/tests/hub-local/test_update_schema_in_hub.py +142 -0
  19. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-prod/test_upath.py +8 -3
  20. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/storage/test_storage_stats.py +11 -3
  21. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/.github/workflows/latest-changes.jinja2 +0 -0
  22. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/.github/workflows/latest-changes.yml +0 -0
  23. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/.gitignore +0 -0
  24. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/LICENSE +0 -0
  25. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/README.md +0 -0
  26. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/01-init-local-instance.ipynb +0 -0
  27. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/02-connect-local-instance.ipynb +0 -0
  28. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/03-add-managed-storage.ipynb +0 -0
  29. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/04-test-bionty.ipynb +0 -0
  30. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/05-init-hosted-instance.ipynb +0 -0
  31. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/07-keep-artifacts-local.ipynb +0 -0
  32. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/test-multi-session.ipynb +0 -0
  33. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-cloud/test_notebooks.py +0 -0
  34. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-cache-management.ipynb +0 -0
  35. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-connect-anonymously.ipynb +0 -0
  36. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-empty-init.ipynb +0 -0
  37. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-import-schema.ipynb +0 -0
  38. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-insufficient-user-info.ipynb +0 -0
  39. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-invalid-schema.ipynb +0 -0
  40. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test-sqlite-lock.ipynb +0 -0
  41. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/hub-prod/test_notebooks2.py +0 -0
  42. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/index.md +0 -0
  43. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/notebooks.md +0 -0
  44. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/docs/reference.md +0 -0
  45. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_cache.py +0 -0
  46. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_check.py +0 -0
  47. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_check_setup.py +0 -0
  48. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_close.py +0 -0
  49. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_connect_instance.py +0 -0
  50. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_delete.py +0 -0
  51. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_django.py +0 -0
  52. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_exportdb.py +0 -0
  53. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_importdb.py +0 -0
  54. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_register_instance.py +0 -0
  55. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_schema.py +0 -0
  56. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_set_managed_storage.py +0 -0
  57. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_setup_user.py +0 -0
  58. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/_silence_loggers.py +0 -0
  59. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/__init__.py +0 -0
  60. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_aws_storage.py +0 -0
  61. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_deprecated.py +0 -0
  62. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_docs.py +0 -0
  63. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_hub_client.py +0 -0
  64. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_hub_core.py +0 -0
  65. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_hub_crud.py +0 -0
  66. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_hub_utils.py +0 -0
  67. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings.py +0 -0
  68. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings_load.py +0 -0
  69. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings_save.py +0 -0
  70. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings_store.py +0 -0
  71. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/_settings_user.py +0 -0
  72. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/cloud_sqlite_locker.py +0 -0
  73. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/django.py +0 -0
  74. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/exceptions.py +0 -0
  75. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/hashing.py +0 -0
  76. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/lamindb_setup/core/types.py +0 -0
  77. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-cloud/test_connect_instance.py +0 -0
  78. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-cloud/test_delete_instance.py +0 -0
  79. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-cloud/test_init_instance.py +0 -0
  80. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-cloud/test_login.py +0 -0
  81. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-cloud/test_migrate.py +0 -0
  82. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-cloud/test_set_storage.py +0 -0
  83. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-local/conftest.py +0 -0
  84. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-local/test_all.py +0 -0
  85. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-prod/conftest.py +0 -0
  86. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-prod/test_auto_connect.py +0 -0
  87. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-prod/test_django.py +0 -0
  88. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/hub-prod/test_switch_and_fallback_env.py +0 -0
  89. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/storage/test_hashing.py +0 -0
  90. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/storage/test_storage_access.py +0 -0
  91. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/storage/test_storage_basis.py +0 -0
  92. {lamindb_setup-0.72.2 → lamindb_setup-0.73.1}/tests/storage/test_to_url.py +0 -0
@@ -12,14 +12,13 @@ jobs:
12
12
  # tests only on production hub
13
13
  hub-prod:
14
14
  runs-on: ubuntu-latest
15
- timeout-minutes: 10
15
+ timeout-minutes: 6
16
16
  steps:
17
17
  - uses: actions/checkout@v3
18
18
  - uses: actions/setup-python@v4
19
19
  with:
20
- python-version: "3.9" # consciously run one job on Python 3.9
20
+ python-version: "3.9" # run one job on 3.9
21
21
  cache: "pip"
22
- cache-dependency-path: ".github/workflows/build.yml"
23
22
  - uses: aws-actions/configure-aws-credentials@v2
24
23
  with:
25
24
  aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -39,10 +38,12 @@ jobs:
39
38
  strategy:
40
39
  fail-fast: false
41
40
  matrix:
42
- lamin_env:
43
- - "staging"
44
- - "prod"
45
- timeout-minutes: 15
41
+ include:
42
+ - lamin_env: "prod"
43
+ python-version: "3.11"
44
+ - lamin_env: "staging"
45
+ python-version: "3.10" # test on 3.10
46
+ timeout-minutes: 6
46
47
  steps:
47
48
  - uses: aws-actions/configure-aws-credentials@v2
48
49
  with:
@@ -52,7 +53,7 @@ jobs:
52
53
  - uses: actions/checkout@v4
53
54
  - uses: actions/setup-python@v4
54
55
  with:
55
- python-version: "3.11" # consciously run one job on Python 3.11
56
+ python-version: ${{ matrix.python-version }}
56
57
  cache: "pip"
57
58
  cache-dependency-path: ".github/workflows/build.yml"
58
59
  - name: checkout laminhub
@@ -92,12 +93,12 @@ jobs:
92
93
  # test user access to storage
93
94
  storage:
94
95
  runs-on: ubuntu-latest
95
- timeout-minutes: 10
96
+ timeout-minutes: 6
96
97
  steps:
97
98
  - uses: actions/checkout@v4
98
99
  - uses: actions/setup-python@v4
99
100
  with:
100
- python-version: "3.10" # consciously run one job on Python 3.10
101
+ python-version: "3.11" # we need to run everything for coverage on 3.11
101
102
  cache: "pip"
102
103
  cache-dependency-path: ".github/workflows/build.yml"
103
104
  - run: pip install -U laminci
@@ -116,7 +117,7 @@ jobs:
116
117
  # test low-level hub functionality
117
118
  hub-local:
118
119
  runs-on: ubuntu-latest
119
- timeout-minutes: 10
120
+ timeout-minutes: 6
120
121
  steps:
121
122
  - uses: aws-actions/configure-aws-credentials@v2
122
123
  with:
@@ -139,7 +140,7 @@ jobs:
139
140
  working-directory: laminhub/rest-hub/supabase
140
141
  - uses: actions/setup-python@v4
141
142
  with:
142
- python-version: "3.11" # consciously run one job on Python 3.11
143
+ python-version: "3.11" # we need to run everything for coverage on 3.11
143
144
  cache: "pip"
144
145
  cache-dependency-path: ".github/workflows/build.yml"
145
146
  - run: pip install -U laminci
@@ -165,9 +166,8 @@ jobs:
165
166
  - uses: actions/checkout@v4
166
167
  - uses: actions/setup-python@v4
167
168
  with:
168
- python-version: "3.10"
169
+ python-version: "3.11"
169
170
  cache: "pip"
170
- cache-dependency-path: ".github/workflows/build.yml"
171
171
  - run: |
172
172
  pip install coverage[toml]
173
173
  pip install --no-deps .
@@ -49,4 +49,4 @@ repos:
49
49
  hooks:
50
50
  - id: pydocstyle
51
51
  args: # google style + __init__, see http://www.pydocstyle.org/en/stable/error_codes.html
52
- - --ignore=D100,D101,D102,D103,D104,D106,D107,D203,D204,D213,D215,D400,D401,D403,D404,D406,D407,D408,D409,D412,D413
52
+ - --ignore=D100,D101,D102,D103,D104,D106,D107,D203,D204,D213,D215,D400,D401,D403,D404,D406,D407,D408,D409,D412,D413,D417
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: lamindb_setup
3
- Version: 0.72.2
3
+ Version: 0.73.1
4
4
  Summary: Setup & configure LaminDB.
5
5
  Author-email: Lamin Labs <laminlabs@gmail.com>
6
6
  Description-Content-Type: text/markdown
@@ -11,7 +11,7 @@ Requires-Dist: dj_database_url>=1.3.0,<3.0.0
11
11
  Requires-Dist: pydantic[dotenv]<2.0.0
12
12
  Requires-Dist: appdirs<2.0.0
13
13
  Requires-Dist: requests
14
- Requires-Dist: universal_pathlib==0.1.4
14
+ Requires-Dist: universal_pathlib==0.2.2
15
15
  Requires-Dist: botocore<2.0.0
16
16
  Requires-Dist: supabase==2.2.1
17
17
  Requires-Dist: urllib3<2 ; extra == "aws"
@@ -3,6 +3,14 @@
3
3
  <!-- prettier-ignore -->
4
4
  Name | PR | Developer | Date | Version
5
5
  --- | --- | --- | --- | ---
6
+ ✨ Add .ome.zarr as composite suffix | [775](https://github.com/laminlabs/lamindb-setup/pull/775) | [sunnyosun](https://github.com/sunnyosun) | 2024-06-05 |
7
+ 🏗️ Update instance schema in the hub | [774](https://github.com/laminlabs/lamindb-setup/pull/774) | [fredericenard](https://github.com/fredericenard) | 2024-06-04 |
8
+ ⬆️ Migrate to upath 0.2.2 | [723](https://github.com/laminlabs/lamindb-setup/pull/723) | [Koncopd](https://github.com/Koncopd) | 2024-06-02 |
9
+ 🐛 Fix trailing slash in upload_from source | [773](https://github.com/laminlabs/lamindb-setup/pull/773) | [Koncopd](https://github.com/Koncopd) | 2024-05-23 | 0.73.0
10
+ 🚸 Make `upload_from()`, `download_to()`, and `view_tree()` more user friendly | [772](https://github.com/laminlabs/lamindb-setup/pull/772) | [falexwolf](https://github.com/falexwolf) | 2024-05-23 |
11
+ ✨ Resolve s3 bucket region even without access rights | [771](https://github.com/laminlabs/lamindb-setup/pull/771) | [Koncopd](https://github.com/Koncopd) | 2024-05-22 |
12
+ 💚 Coverage fix | [770](https://github.com/laminlabs/lamindb-setup/pull/770) | [falexwolf](https://github.com/falexwolf) | 2024-05-22 |
13
+ 👷 Fix coverage compute | [769](https://github.com/laminlabs/lamindb-setup/pull/769) | [falexwolf](https://github.com/falexwolf) | 2024-05-22 |
6
14
  🐛 Deal with migration errors when keep-artifacts-local is true | [767](https://github.com/laminlabs/lamindb-setup/pull/767) | [falexwolf](https://github.com/falexwolf) | 2024-05-20 | 0.72.2
7
15
  ♻️ Do not error if empty dict in `access_aws` | [764](https://github.com/laminlabs/lamindb-setup/pull/764) | [falexwolf](https://github.com/falexwolf) | 2024-05-19 | 0.72.1
8
16
  🐛 Keep training slash in aws cache keys | [766](https://github.com/laminlabs/lamindb-setup/pull/766) | [Koncopd](https://github.com/Koncopd) | 2024-05-19 |
@@ -86,10 +86,11 @@
86
86
  "outputs": [],
87
87
  "source": [
88
88
  "target_dir = root / \"test-dir-upload\"\n",
89
- "target_dir.upload_from(test_dir, recursive=True)\n",
89
+ "target_dir.upload_from(test_dir, create_folder=True) # default\n",
90
90
  "\n",
91
91
  "assert target_dir.is_dir()\n",
92
92
  "assert (target_dir / \"test-dir-upload\").exists()\n",
93
+ "assert (target_dir / \"test-dir-upload/file1\").exists()\n",
93
94
  "\n",
94
95
  "target_dir.rmdir()\n",
95
96
  "assert not target_dir.exists()"
@@ -101,9 +102,10 @@
101
102
  "metadata": {},
102
103
  "outputs": [],
103
104
  "source": [
104
- "target_dir.upload_from(test_dir, dir_inplace=True)\n",
105
+ "target_dir.upload_from(test_dir, create_folder=False)\n",
105
106
  "\n",
106
107
  "assert target_dir.is_dir()\n",
108
+ "assert (target_dir / \"file1\").exists()\n",
107
109
  "assert not (target_dir / \"test-dir-upload\").exists()"
108
110
  ]
109
111
  },
@@ -237,7 +237,8 @@
237
237
  "source": [
238
238
  "time.sleep(1)\n",
239
239
  "cloud_file = dir_sync / \"file1\"\n",
240
- "cloud_file.touch() # update cloud timestamp\n",
240
+ "# update cloud timestamp, exist_ok=False needed due to truncate=not exist_ok in upath\n",
241
+ "cloud_file.touch(exist_ok=False) \n",
241
242
  "\n",
242
243
  "assert cloud_file.modified.timestamp() > local_file_new.stat().st_mtime"
243
244
  ]
@@ -34,7 +34,7 @@ Modules & settings:
34
34
 
35
35
  """
36
36
 
37
- __version__ = "0.72.2" # denote a release candidate for 0.1.0 with 0.1rc1
37
+ __version__ = "0.73.1" # 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
@@ -16,7 +16,7 @@ from ._silence_loggers import silence_loggers
16
16
  from .core import InstanceSettings
17
17
  from .core._settings import settings
18
18
  from .core._settings_storage import StorageSettings, init_storage
19
- from .core.upath import convert_pathlike
19
+ from .core.upath import UPath
20
20
 
21
21
  if TYPE_CHECKING:
22
22
  from pydantic import PostgresDsn
@@ -56,6 +56,7 @@ def register_storage_in_instance(ssettings: StorageSettings):
56
56
  "region": ssettings.region,
57
57
  "instance_uid": instance_uid,
58
58
  "created_by_id": current_user_id(),
59
+ "run": None,
59
60
  }
60
61
  if ssettings._uid is not None:
61
62
  defaults["uid"] = ssettings._uid
@@ -350,7 +351,7 @@ def infer_instance_name(
350
351
  return str(db).split("/")[-1]
351
352
  if storage == "create-s3":
352
353
  raise ValueError("pass name to init if storage = 'create-s3'")
353
- storage_path = convert_pathlike(storage)
354
+ storage_path = UPath(storage)
354
355
  if storage_path.name != "":
355
356
  name = storage_path.name
356
357
  else:
@@ -68,6 +68,8 @@ class migrate:
68
68
  @classmethod
69
69
  def deploy(cls) -> None:
70
70
  """Deploy a migration."""
71
+ from ._schema_metadata import update_schema_in_hub
72
+
71
73
  if _check_instance_setup():
72
74
  raise RuntimeError("Restart Python session to migrate or use CLI!")
73
75
  from lamindb_setup.core._hub_client import call_with_fallback_auth
@@ -104,6 +106,9 @@ class migrate:
104
106
  # this populates the hub
105
107
  if instance_is_on_hub:
106
108
  logger.important(f"updating lamindb version in hub: {lamindb.__version__}")
109
+ # TODO: integrate update of instance table within update_schema_in_hub & below
110
+ if settings.instance.dialect != "sqlite":
111
+ update_schema_in_hub()
107
112
  call_with_fallback_auth(
108
113
  update_instance,
109
114
  instance_id=settings.instance._id.hex,