Skip to content

Commit 3c156fe

Browse files
committed
fix local permission bug
1 parent 65566f1 commit 3c156fe

File tree

4 files changed

+38
-22
lines changed

4 files changed

+38
-22
lines changed

examples/Part 1 — Data Scientist Tutorial.ipynb

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
{
3535
"data": {
3636
"text/plain": [
37-
"'0.1.15'"
37+
"'0.1.18'"
3838
]
3939
},
4040
"execution_count": 2,
@@ -48,26 +48,26 @@
4848
},
4949
{
5050
"cell_type": "code",
51-
"execution_count": 8,
51+
"execution_count": 7,
5252
"metadata": {},
5353
"outputs": [
5454
{
5555
"name": "stderr",
5656
"output_type": "stream",
5757
"text": [
58-
"\u001b[32m2025-06-30 19:16:51.588\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m100\u001b[0m - \u001b[1mUpdating syft.pub.yaml file in /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending with correct permissions\u001b[0m\n",
59-
"\u001b[32m2025-06-30 19:16:51.590\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m108\u001b[0m - \u001b[1mCreated/updated syft.pub.yaml file for pending directory: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending\u001b[0m\n",
60-
"\u001b[32m2025-06-30 19:16:51.590\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_ensure_target_pending_directory\u001b[0m:\u001b[36m125\u001b[0m - \u001b[34m\u001b[1mEnsured pending directory exists with permissions for [email protected]\u001b[0m\n",
61-
"\u001b[32m2025-06-30 19:16:51.593\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m98\u001b[0m - \u001b[34m\u001b[1mCorrect syft.pub.yaml file already exists in /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending\u001b[0m\n",
62-
"\u001b[32m2025-06-30 19:16:51.595\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_copy_code_to_queue\u001b[0m:\u001b[36m763\u001b[0m - \u001b[34m\u001b[1mCopied code to cross-datasite location: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/9735fbc9-2e15-411b-bee7-73ddd27eb8d6/code\u001b[0m\n",
63-
"\u001b[32m2025-06-30 19:16:51.596\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36mget_job\u001b[0m:\u001b[36m609\u001b[0m - \u001b[34m\u001b[1mJob 9735fbc9-2e15-411b-bee7-73ddd27eb8d6 not found locally, searching across all datasites\u001b[0m\n",
64-
"\u001b[32m2025-06-30 19:16:51.606\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m98\u001b[0m - \u001b[34m\u001b[1mCorrect syft.pub.yaml file already exists in /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending\u001b[0m\n",
65-
"\u001b[32m2025-06-30 19:16:51.608\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_save_job\u001b[0m:\u001b[36m211\u001b[0m - \u001b[1mUpdated job 9735fbc9-2e15-411b-bee7-73ddd27eb8d6 metadata in original datasite\u001b[0m\n",
66-
"\u001b[32m2025-06-30 19:16:51.609\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m789\u001b[0m - \u001b[34m\u001b[1mSet permissions for metadata file: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/9735fbc9-2e15-411b-bee7-73ddd27eb8d6/metadata.json\u001b[0m\n",
67-
"\u001b[32m2025-06-30 19:16:51.610\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m803\u001b[0m - \u001b[34m\u001b[1mSet permissions for code file: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/9735fbc9-2e15-411b-bee7-73ddd27eb8d6/code/run.sh\u001b[0m\n",
68-
"\u001b[32m2025-06-30 19:16:51.612\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m803\u001b[0m - \u001b[34m\u001b[1mSet permissions for code file: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/9735fbc9-2e15-411b-bee7-73ddd27eb8d6/code/script.py\u001b[0m\n",
69-
"\u001b[32m2025-06-30 19:16:51.614\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m813\u001b[0m - \u001b[1mSuccessfully set permissions for job 9735fbc9-2e15-411b-bee7-73ddd27eb8d6 - [email protected] can now access and approve/reject the job\u001b[0m\n",
70-
"\u001b[32m2025-06-30 19:16:51.614\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36msubmit_code\u001b[0m:\u001b[36m583\u001b[0m - \u001b[1mSubmitted job 'Customer Insights Analysis' to [email protected]'s datasite\u001b[0m\n"
58+
"\u001b[32m2025-06-30 19:26:04.045\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m100\u001b[0m - \u001b[1mUpdating syft.pub.yaml file in /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending with correct permissions\u001b[0m\n",
59+
"\u001b[32m2025-06-30 19:26:04.046\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m108\u001b[0m - \u001b[1mCreated/updated syft.pub.yaml file for pending directory: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending\u001b[0m\n",
60+
"\u001b[32m2025-06-30 19:26:04.046\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_ensure_target_pending_directory\u001b[0m:\u001b[36m125\u001b[0m - \u001b[34m\u001b[1mEnsured pending directory exists with permissions for [email protected]\u001b[0m\n",
61+
"\u001b[32m2025-06-30 19:26:04.048\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m98\u001b[0m - \u001b[34m\u001b[1mCorrect syft.pub.yaml file already exists in /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending\u001b[0m\n",
62+
"\u001b[32m2025-06-30 19:26:04.050\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_copy_code_to_queue\u001b[0m:\u001b[36m778\u001b[0m - \u001b[34m\u001b[1mCopied code to cross-datasite location: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/684083d1-5c65-43ed-bf70-05c27a51b848/code\u001b[0m\n",
63+
"\u001b[32m2025-06-30 19:26:04.051\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36mget_job\u001b[0m:\u001b[36m624\u001b[0m - \u001b[34m\u001b[1mJob 684083d1-5c65-43ed-bf70-05c27a51b848 not found locally, searching across all datasites\u001b[0m\n",
64+
"\u001b[32m2025-06-30 19:26:04.062\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_create_pending_syftperm\u001b[0m:\u001b[36m98\u001b[0m - \u001b[34m\u001b[1mCorrect syft.pub.yaml file already exists in /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending\u001b[0m\n",
65+
"\u001b[32m2025-06-30 19:26:04.064\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_save_job\u001b[0m:\u001b[36m214\u001b[0m - \u001b[1mUpdated job 684083d1-5c65-43ed-bf70-05c27a51b848 metadata in original datasite\u001b[0m\n",
66+
"\u001b[32m2025-06-30 19:26:04.066\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m804\u001b[0m - \u001b[34m\u001b[1mSet permissions for metadata file: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/684083d1-5c65-43ed-bf70-05c27a51b848/metadata.json\u001b[0m\n",
67+
"\u001b[32m2025-06-30 19:26:04.067\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m818\u001b[0m - \u001b[34m\u001b[1mSet permissions for code file: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/684083d1-5c65-43ed-bf70-05c27a51b848/code/run.sh\u001b[0m\n",
68+
"\u001b[32m2025-06-30 19:26:04.069\u001b[0m | \u001b[34m\u001b[1mDEBUG \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m818\u001b[0m - \u001b[34m\u001b[1mSet permissions for code file: /Users/atrask/SyftBox/datasites/[email protected]/app_data/code-queue/jobs/pending/684083d1-5c65-43ed-bf70-05c27a51b848/code/script.py\u001b[0m\n",
69+
"\u001b[32m2025-06-30 19:26:04.071\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36m_set_job_permissions\u001b[0m:\u001b[36m828\u001b[0m - \u001b[1mSuccessfully set permissions for job 684083d1-5c65-43ed-bf70-05c27a51b848 - [email protected] can now access and approve/reject the job\u001b[0m\n",
70+
"\u001b[32m2025-06-30 19:26:04.072\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36msyft_code_queue.client\u001b[0m:\u001b[36msubmit_code\u001b[0m:\u001b[36m586\u001b[0m - \u001b[1mSubmitted job 'Customer Insights Analysis' to [email protected]'s datasite\u001b[0m\n"
7171
]
7272
}
7373
],
@@ -85,7 +85,7 @@
8585
},
8686
{
8787
"cell_type": "code",
88-
"execution_count": 4,
88+
"execution_count": 6,
8989
"metadata": {},
9090
"outputs": [
9191
{
@@ -103,7 +103,7 @@
103103
"JobCollection([])"
104104
]
105105
},
106-
"execution_count": 4,
106+
"execution_count": 6,
107107
"metadata": {},
108108
"output_type": "execute_result"
109109
}

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "syft-code-queue"
7-
version = "0.1.18"
7+
version = "0.1.19"
88
description = "Job submission and approval workflow for SyftBox (execution handled by syft-simple-runner)"
99
readme = "README.md"
1010
license = {text = "Apache-2.0"}

src/syft_code_queue/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,8 @@ def jobs_for_others(self) -> JobCollection:
186186
"""Jobs I've submitted to other people."""
187187
if self.client is None:
188188
return JobCollection([])
189-
jobs = self.list_jobs()
189+
# Search across all datasites since jobs are stored in target's datasite
190+
jobs = self.list_jobs(search_all_datasites=True)
190191
return self._connect_jobs_apis([j for j in jobs if j.requester_email == self.email])
191192

192193
@property
@@ -607,7 +608,7 @@ def __getattr__(name):
607608
raise AttributeError(f"module '{__name__}' has no attribute '{name}'")
608609

609610

610-
__version__ = "0.1.18"
611+
__version__ = "0.1.19"
611612
__all__ = [
612613
# Global unified API
613614
"jobs",

src/syft_code_queue/client.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,17 @@ def list_jobs(
281281
# Original behavior: search only local queue directory
282282
# Determine which status directories to search
283283
if status:
284-
status_dirs = [self._get_status_dir(status)]
284+
# Handle both string and enum status values
285+
if isinstance(status, str):
286+
# Convert string to JobStatus enum
287+
try:
288+
status_enum = JobStatus(status)
289+
except ValueError:
290+
logger.warning(f"Invalid status string: {status}")
291+
return []
292+
else:
293+
status_enum = status
294+
status_dirs = [self._get_status_dir(status_enum)]
285295
else:
286296
status_dirs = [self._get_status_dir(s) for s in JobStatus]
287297

@@ -367,7 +377,12 @@ def _search_all_datasites_for_jobs(
367377

368378
# Determine which status directories to search
369379
if status:
370-
status_dirs = [queue_dir / status.value]
380+
# Handle both string and enum status values
381+
if isinstance(status, str):
382+
status_value = status
383+
else:
384+
status_value = status.value
385+
status_dirs = [queue_dir / status_value]
371386
else:
372387
status_dirs = [queue_dir / s.value for s in JobStatus]
373388

0 commit comments

Comments
 (0)