From 68963883bfeca922b3cc663bbb8d36be490b6bf4 Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 19:08:31 -0400 Subject: [PATCH 1/7] Validate Globus Credentials for #1: feat(validate_globus): add globus credentials validation - Implemented a validation function for Globus credentials in the Sheriff class. - Utilized the Globus SDK to check user permissions for data access. - Created a GlobusClearance dataclass to encapsulate validation results. - Ensured proper error handling for API errors and invalid credentials. --- index.qmd | 2 - notebooks/images/groups_client-get-my_g.png | Bin 0 -> 173806 bytes notebooks/sheriff.qmd | 45 ++- notebooks/validate_globus.qmd | 297 ++++++++++++++++++ src/sheriff/sheriff.py | 45 ++- src/sheriff/validate_globus.py | 87 +++++ .../images/groups_client-get-my_g.png | Bin 0 -> 173806 bytes user_guide/notebooks/sheriff.md | 45 ++- user_guide/notebooks/validate_globus.md | 202 ++++++++++++ 9 files changed, 691 insertions(+), 32 deletions(-) create mode 100644 notebooks/images/groups_client-get-my_g.png create mode 100644 notebooks/validate_globus.qmd create mode 100644 src/sheriff/validate_globus.py create mode 100644 user_guide/notebooks/images/groups_client-get-my_g.png create mode 100644 user_guide/notebooks/validate_globus.md diff --git a/index.qmd b/index.qmd index ac083d8..21c7d7e 100644 --- a/index.qmd +++ b/index.qmd @@ -1,7 +1,5 @@ --- title: "🤠 The Sheriff" -output: gfm -output-file: "README.md" --- ## 🌵 On the Frontier diff --git a/notebooks/images/groups_client-get-my_g.png b/notebooks/images/groups_client-get-my_g.png new file mode 100644 index 0000000000000000000000000000000000000000..8652c4b4ff6258f472e36089d22360081dabd443 GIT binary patch literal 173806 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 LFIM!z;NAZL1&Y}0 literal 0 HcmV?d00001 diff --git a/notebooks/sheriff.qmd b/notebooks/sheriff.qmd index 5ffbf08..94d4256 100644 --- a/notebooks/sheriff.qmd +++ b/notebooks/sheriff.qmd @@ -36,25 +36,30 @@ all that's needed. import os from rich.console import Console from pathlib import Path - -console = Console() +from sheriff.validate_globus import validate_globus_credentials, GlobusClearance class Sheriff: """ A simple class that checks for frontier citizenship by looking for a frontier.yml file in the environment variable or the current working directory. """ - def __init__(self, frontier_dirname="frontier", frontier_file="frontier.yml"): + def __init__( + self, + console: Console, + frontier_dirname: str = "frontier", + frontier_file: str = "frontier.yml", + ): """ Initializes the Sheriff Class. Args: frontier_dirname (str): The name of the directory that contains the frontier.yml file. Default is "frontier". frontier_file (str): The name of the frontier file. Default is "frontier.yml". """ + self.console = console self.frontier_dirname = frontier_dirname self.frontier_file = frontier_file self.frontier_path = None - console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") + self.console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") def check_citizen(self): """ @@ -67,8 +72,8 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym if env_path and os.path.isfile(env_path): self.frontier_path = env_path - console.print(f"🪪 Found frontier file at: {self.frontier_path}") - console.print("🏞️ Welcome to the frontier, citizen!") + self.console.print(f"🪪 Found frontier file at: {self.frontier_path}") + self.console.print("🏞️ Welcome to the frontier, citizen!") return True # Check current working directory @@ -81,12 +86,31 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym if os.path.isfile(frontier_file_path): self.frontier_path = frontier_file_path - console.print(f"🪪 Found frontier file at: {self.frontier_path}") - console.print("🏞️ Welcome to the frontier, citizen!") + self.console.print(f"🪪 Found frontier file at: {self.frontier_path}") + self.console.print("🏞️ Welcome to the frontier, citizen!") return True - console.print("❌ No frontier file found. Please set the THE_FRONTIER environment variable or navigate to a directory within the frontier to validate your citizenship.") + self.console.print("❌ No frontier file found. Please set the THE_FRONTIER environment variable or navigate to a directory within the frontier to validate your citizenship.") return False + + def check_globus_access(self, globus_info: dict) -> GlobusClearance: + """ + Checks for globus access by validating the globus credentials provided in the manifest. + Args: + globus_info (dict): A dictionary containing the globus credentials and information. + Returns: + GlobusClearance: A dataclass indicating the validation result and associated objects. + """ + self.console.print("🔍 Checking your Globus access...") + + clearance = validate_globus_credentials(globus_info, self.console) + + if clearance.cleared: + self.console.print("✅ Globus access validated. You're good to go!") + else: + self.console.print("❌ Globus access validation failed. Please check your credentials and try again.") + + return clearance ``` With this simple class definition, we can now @@ -107,7 +131,8 @@ def inspect(): """ Hey there, partner! The sheriff is here to check your papers and make sure you're a citizen of The Frontier. Let's see if you have what it takes to be a part of this wild and wonderful land. """ - sheriff = Sheriff() + console = Console() + sheriff = Sheriff(console=console) sheriff.check_citizen() ``` diff --git a/notebooks/validate_globus.qmd b/notebooks/validate_globus.qmd new file mode 100644 index 0000000..c67794d --- /dev/null +++ b/notebooks/validate_globus.qmd @@ -0,0 +1,297 @@ +--- +title: "Validate Globus Credentials" +subtitle: "How to Validate Globus Credentials Passed from `Stagecoach`" + +filters: + - sorting-hat + - ripper +extensions: + sorting-hat: + keep: + - python + ripper: + include-yaml: false + output-name: "validate_globus" + output-dir: "../src/sheriff" +format: gfm +--- + +We want to have a secure way of knowing whether a user +has the correct permissions to have data delivered to them +via globus. This kind of validation falls under the +"authorization" category of security, and as such +should be handled by the `Sheriff` class. As a reminder, +the `Stagecoach` class is a handler for delivering +data to townspeople, and works by issuing users a manifest. +This manifest is a JSON file that users fill in with their +credentials and desired data from the Frontier Gold Mine. +Once the user returns the manifest, and the `Stagecoach` +recognizes that the user wants access to data via `globus`, +the `Stagecoach` passes the Globus credentials along to +the `Sheriff` for validation. The `Sheriff` then needs to +validate the credentials to ensure that the user has the +correct permissions to access the data. This validation process +uses the `Globus SDK` to check the credentials against the +Globus service. If the credentials are valid, the `Sheriff` +returns a success message, allowing the `Stagecoach` to proceed +with the data delivery. If the credentials are invalid, the +`Sheriff` returns an error message, and the `Stagecoach` can +inform the user of the issue and prompt them to correct their +credentials in the manifest. This process ensures that only +authorized users can access the data, maintaining the security +of The Frontier's Gold Mine resources. + +## Tinkering with the SDK + +Globus SDK in Python works as below. Once you've set +up an App in the [Developer panel](https://globus-sdk-python.readthedocs.io/en/stable/user_guide/getting_started/register_app.html) of the Globus website, +you can use the (non-secure) client UUID to create a user app: + +```{python} +#| sorting-hat: remove +import globus_sdk + +CLIENT_ID = "7723dff4-fa63-4639-903b-ba6541e24e98" + +my_app = globus_sdk.UserApp("sheriff-prototype", client_id=CLIENT_ID) +``` + +The first method shows us that login is required to use this app: + +```{python} +#| sorting-hat: remove +my_app.login_required() +``` + +Next, we can use this app to define a client group: + +```{python} +#| sorting-hat: remove +groups_client = globus_sdk.GroupsClient(app=my_app) +``` + +What's great is that this method forces the current user +to log in to their globus account: + +![Globus Login](images/groups_client-get-my_g.png) + +And from there, I can see the groups I'm allowed to access defined +in the Globus dashboard: + + +```{python} +#| sorting-hat: remove +groups_client.get_my_groups() +``` + +The explicit login can be called deliberately: + +```{python} +#| sorting-hat: remove +# my_app.login() +``` + +We can see that the UserApp object is the main functionality +we're looking for in the `Sheriff` class, as it deals +solely with the authentication and authorization of users: + +> GlobusApp provides a number of useful abstractions in the SDK. It handles login flows and storage of tokens, coupled with later retrieval of those tokens for use. It can keep track of which clients have been created and registered with an app, and therefore make intelligent decisions about how and when to prompt users to login. + +So, to make sure someone is logged in, we can simply create +a function that triggers this login flow. Fortunately, +Globus has provided an example we can work with. Let's +take an example of trying to get this file: + +`/n/holylabs/cgolden_lab/Lab/projects/sandbox/ReaProject/MadagascarWeatherStations/_pkgdown.yml` + +Let's list my available data: + +```{python} +#| sorting-hat: remove +holyoke_collection = "1156ed9e-6984-11ea-af52-0201714f6eab" +source_fpath = "/n/holylabs/cgolden_lab/Lab/projects/sandbox/ReaProject/MadagascarWeatherStations/_pkgdown.yml" + +dest_fpath = "/n/holylabs/cgolden_lab/Lab/projects/test_tinashe/_pkgdown.yml" +tc = globus_sdk.TransferClient(app=my_app) +``` + +The `.get_endpoint()` method is used to get the +endpoint information for a given collection. An important +piece of information we'll need is the data_access scope of +the endpoint, which is a little bit of a complicated discussion; +the tldr I believe is that the transfer client can +be modified to have the correct access scope but only if you +check for it first; hence, the `.get_endpoint()` step. There +are two cases under which the endpoint will NOT have data_access: + +1. If the endpoint `entity_type` IS NOT `GCSv5_mapped_collection`, and +2. If the endpoint IS `high_assurance`. + +If either of the above is true, then the endpoint will need special +access and additional steps. If neither of the above is true, then the endpoint +should be accessible with the default client + +```{python} +#| sorting-hat: remove +doc = tc.get_endpoint(holyoke_collection) +doc["entity_type"] != "GCSv5_mapped_collection" +``` + +```{python} +#| sorting-hat: remove +doc["high_assurance"] == True +``` + +So neither of these are true, which means that the endpoint should be accessible +with the default client. If it weren't the case, we would have +to modify the client with `tc.add_app_data_access_scope(SRC_COLLECTION)`. + +```{python} +#| sorting-hat: remove +tc.add_app_data_access_scope(holyoke_collection) +``` + +```{python} +#| sorting-hat: remove +transfer_request = globus_sdk.TransferData(holyoke_collection, holyoke_collection) +transfer_request.add_item(source_fpath, dest_fpath) +``` + +To be sure that this transfer is valid, we can first +do a dir_stat on the collection. If we get a successful +response, we can assume that the transfer will work in future: + +```{python} +#| sorting-hat: remove +resp = tc.operation_stat(holyoke_collection, "~") +assert resp.http_status == 200 +``` + +Finally, we can wrap the transfer submission in a +try-except block to catch any errors that may arise +from invalid credentials or permissions: + +```{python} +#| sorting-hat: remove +try: + task = tc.submit_transfer(transfer_request) + print(f"Submitted transfer. Task ID: {task['task_id']}.") +except globus_sdk.GlobusAPIError as e: + print(f"Transfer submission failed: {e}") +``` + +That works! So now we can create a validation +function that allows the sheriff to validate +the globus section of a stagecoach manifest. + +The manifest will have the following shape: + +```yaml +globus: + use_globus: true + globus_source_endpoint: fancy-uuid + globus_source_path: /path/on/source/endpoint + globus_destination_endpoint: fancy-uuid + globus_destination_path: /path/on/destination/endpoint +``` + +We'll need to validate that the user has the kind of access +necessary. The return will be a dataclass that the stagecoach +can accept the requisite transfer object from and execute. + +```{python} +#| sorting-hat: keep +from rich.console import Console +from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError +from dataclasses import dataclass + +@dataclass +class GlobusClearance: + app: UserApp | None + transfer_client: TransferClient | None + source_collection: str | None + destination_collection: str | None + cleared: bool + +def validate_globus_credentials( + globus_info: dict, + console: Console, + stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98" + ) -> GlobusClearance: + """ + Validates the globus credentials provided in the manifest. + Args: + globus_info (dict): A dictionary containing the globus credentials and information. + Returns: + GlobusClearance: A dataclass indicating the validation result and associated objects. + """ + try: + + if not globus_info.get("use_globus", False): + console.print("Globus access not requested.") + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = None, + destination_collection = None, + cleared = True + ) + + app_name = "Frontier-Sheriff_" + globus_info.get("globus_username", "Globus-Validator") + + with UserApp( + app_name, + client_id=stagecoach_app_id, + config=GlobusAppConfig(auto_redrive_gares=True), + ) as app: + with TransferClient(app=app) as client: + src_collection = globus_info.get("globus_source_endpoint") + dst_collection = globus_info.get("globus_destination_endpoint") + src_path = globus_info.get("globus_source_path") + dst_path = globus_info.get("globus_destination_path") + + client.add_app_data_access_scope(src_collection) + client.add_app_data_access_scope(dst_collection) + + transfer_request = TransferData(src_collection, dst_collection) + transfer_request.add_item(src_path, dst_path) + + # Attempt to stat the source collection to validate access + resp = client.operation_stat(src_collection, "~") + if resp.http_status == 200: + console.print("✅ Globus credentials validated successfully.") + return GlobusClearance( + app = app, + transfer_client = client, + source_collection = src_collection, + destination_collection = dst_collection, + cleared = True + ) + else: + raise GlobusAPIError("Unable to `stat` access source collection.") + + except GlobusAPIError as e: + console.print_exception() + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = globus_info.get("globus_source_endpoint", None), + destination_collection = globus_info.get("globus_destination_endpoint", None), + cleared = False + ) # Return False if there's an API error, along with a clearance object indicating failure + except Exception as e: + console.print_exception() + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = globus_info.get("globus_source_endpoint", None), + destination_collection = globus_info.get("globus_destination_endpoint", None), + cleared = False + ) # Return False for any other unexpected errors, along with a clearance object indicating failure +``` + + +When that sends back a clearance object with `cleared=True`, the `Stagecoach` +can proceed with the transfer using the provided `transfer_client`. +If `cleared=False`, the `Stagecoach` can inform the user of the +issue and prompt them to correct their credentials in the manifest. diff --git a/src/sheriff/sheriff.py b/src/sheriff/sheriff.py index 3b00186..1711a20 100644 --- a/src/sheriff/sheriff.py +++ b/src/sheriff/sheriff.py @@ -1,25 +1,30 @@ import os from rich.console import Console from pathlib import Path - -console = Console() +from sheriff.validate_globus import validate_globus_credentials, GlobusClearance class Sheriff: """ A simple class that checks for frontier citizenship by looking for a frontier.yml file in the environment variable or the current working directory. """ - def __init__(self, frontier_dirname="frontier", frontier_file="frontier.yml"): + def __init__( + self, + console: Console, + frontier_dirname: str = "frontier", + frontier_file: str = "frontier.yml", + ): """ Initializes the Sheriff Class. Args: frontier_dirname (str): The name of the directory that contains the frontier.yml file. Default is "frontier". frontier_file (str): The name of the frontier file. Default is "frontier.yml". """ + self.console = console self.frontier_dirname = frontier_dirname self.frontier_file = frontier_file self.frontier_path = None - console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") + self.console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") def check_citizen(self): """ @@ -32,8 +37,8 @@ def check_citizen(self): if env_path and os.path.isfile(env_path): self.frontier_path = env_path - console.print(f"🪪 Found frontier file at: {self.frontier_path}") - console.print("🏞️ Welcome to the frontier, citizen!") + self.console.print(f"🪪 Found frontier file at: {self.frontier_path}") + self.console.print("🏞️ Welcome to the frontier, citizen!") return True # Check current working directory @@ -46,12 +51,31 @@ def check_citizen(self): if os.path.isfile(frontier_file_path): self.frontier_path = frontier_file_path - console.print(f"🪪 Found frontier file at: {self.frontier_path}") - console.print("🏞️ Welcome to the frontier, citizen!") + self.console.print(f"🪪 Found frontier file at: {self.frontier_path}") + self.console.print("🏞️ Welcome to the frontier, citizen!") return True - console.print("❌ No frontier file found. Please set the THE_FRONTIER environment variable or navigate to a directory within the frontier to validate your citizenship.") + self.console.print("❌ No frontier file found. Please set the THE_FRONTIER environment variable or navigate to a directory within the frontier to validate your citizenship.") return False + + def check_globus_access(self, globus_info: dict) -> GlobusClearance: + """ + Checks for globus access by validating the globus credentials provided in the manifest. + Args: + globus_info (dict): A dictionary containing the globus credentials and information. + Returns: + GlobusClearance: A dataclass indicating the validation result and associated objects. + """ + self.console.print("🔍 Checking your Globus access...") + + clearance = validate_globus_credentials(globus_info, self.console) + + if clearance.cleared: + self.console.print("✅ Globus access validated. You're good to go!") + else: + self.console.print("❌ Globus access validation failed. Please check your credentials and try again.") + + return clearance import typer @@ -66,7 +90,8 @@ def inspect(): """ Hey there, partner! The sheriff is here to check your papers and make sure you're a citizen of The Frontier. Let's see if you have what it takes to be a part of this wild and wonderful land. """ - sheriff = Sheriff() + console = Console() + sheriff = Sheriff(console=console) sheriff.check_citizen() diff --git a/src/sheriff/validate_globus.py b/src/sheriff/validate_globus.py new file mode 100644 index 0000000..9317004 --- /dev/null +++ b/src/sheriff/validate_globus.py @@ -0,0 +1,87 @@ +from rich.console import Console +from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError +from dataclasses import dataclass + +@dataclass +class GlobusClearance: + app: UserApp | None + transfer_client: TransferClient | None + source_collection: str | None + destination_collection: str | None + cleared: bool + +def validate_globus_credentials( + globus_info: dict, + console: Console, + stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98" + ) -> GlobusClearance: + """ + Validates the globus credentials provided in the manifest. + Args: + globus_info (dict): A dictionary containing the globus credentials and information. + Returns: + GlobusClearance: A dataclass indicating the validation result and associated objects. + """ + try: + + if not globus_info.get("use_globus", False): + console.print("Globus access not requested.") + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = None, + destination_collection = None, + cleared = True + ) + + app_name = "Frontier-Sheriff_" + globus_info.get("globus_username", "Globus-Validator") + + with UserApp( + app_name, + client_id=stagecoach_app_id, + config=GlobusAppConfig(auto_redrive_gares=True), + ) as app: + with TransferClient(app=app) as client: + src_collection = globus_info.get("globus_source_endpoint") + dst_collection = globus_info.get("globus_destination_endpoint") + src_path = globus_info.get("globus_source_path") + dst_path = globus_info.get("globus_destination_path") + + client.add_app_data_access_scope(src_collection) + client.add_app_data_access_scope(dst_collection) + + transfer_request = TransferData(src_collection, dst_collection) + transfer_request.add_item(src_path, dst_path) + + # Attempt to stat the source collection to validate access + resp = client.operation_stat(src_collection, "~") + if resp.http_status == 200: + console.print("✅ Globus credentials validated successfully.") + return GlobusClearance( + app = app, + transfer_client = client, + source_collection = src_collection, + destination_collection = dst_collection, + cleared = True + ) + else: + raise GlobusAPIError("Unable to `stat` access source collection.") + + except GlobusAPIError as e: + console.print_exception() + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = globus_info.get("globus_source_endpoint", None), + destination_collection = globus_info.get("globus_destination_endpoint", None), + cleared = False + ) # Return False if there's an API error, along with a clearance object indicating failure + except Exception as e: + console.print_exception() + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = globus_info.get("globus_source_endpoint", None), + destination_collection = globus_info.get("globus_destination_endpoint", None), + cleared = False + ) # Return False for any other unexpected errors, along with a clearance object indicating failure diff --git a/user_guide/notebooks/images/groups_client-get-my_g.png b/user_guide/notebooks/images/groups_client-get-my_g.png new file mode 100644 index 0000000000000000000000000000000000000000..8652c4b4ff6258f472e36089d22360081dabd443 GIT binary patch literal 173806 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 LFIM!z;NAZL1&Y}0 literal 0 HcmV?d00001 diff --git a/user_guide/notebooks/sheriff.md b/user_guide/notebooks/sheriff.md index 88efe2b..6a52c6d 100644 --- a/user_guide/notebooks/sheriff.md +++ b/user_guide/notebooks/sheriff.md @@ -19,25 +19,30 @@ now, this is all that’s needed. import os from rich.console import Console from pathlib import Path - -console = Console() +from sheriff.validate_globus import validate_globus_credentials, GlobusClearance class Sheriff: """ A simple class that checks for frontier citizenship by looking for a frontier.yml file in the environment variable or the current working directory. """ - def __init__(self, frontier_dirname="frontier", frontier_file="frontier.yml"): + def __init__( + self, + console: Console, + frontier_dirname: str = "frontier", + frontier_file: str = "frontier.yml", + ): """ Initializes the Sheriff Class. Args: frontier_dirname (str): The name of the directory that contains the frontier.yml file. Default is "frontier". frontier_file (str): The name of the frontier file. Default is "frontier.yml". """ + self.console = console self.frontier_dirname = frontier_dirname self.frontier_file = frontier_file self.frontier_path = None - console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") + self.console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") def check_citizen(self): """ @@ -50,8 +55,8 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym if env_path and os.path.isfile(env_path): self.frontier_path = env_path - console.print(f"🪪 Found frontier file at: {self.frontier_path}") - console.print("🏞️ Welcome to the frontier, citizen!") + self.console.print(f"🪪 Found frontier file at: {self.frontier_path}") + self.console.print("🏞️ Welcome to the frontier, citizen!") return True # Check current working directory @@ -64,12 +69,31 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym if os.path.isfile(frontier_file_path): self.frontier_path = frontier_file_path - console.print(f"🪪 Found frontier file at: {self.frontier_path}") - console.print("🏞️ Welcome to the frontier, citizen!") + self.console.print(f"🪪 Found frontier file at: {self.frontier_path}") + self.console.print("🏞️ Welcome to the frontier, citizen!") return True - console.print("❌ No frontier file found. Please set the THE_FRONTIER environment variable or navigate to a directory within the frontier to validate your citizenship.") + self.console.print("❌ No frontier file found. Please set the THE_FRONTIER environment variable or navigate to a directory within the frontier to validate your citizenship.") return False + + def check_globus_access(self, globus_info: dict) -> GlobusClearance: + """ + Checks for globus access by validating the globus credentials provided in the manifest. + Args: + globus_info (dict): A dictionary containing the globus credentials and information. + Returns: + GlobusClearance: A dataclass indicating the validation result and associated objects. + """ + self.console.print("🔍 Checking your Globus access...") + + clearance = validate_globus_credentials(globus_info, self.console) + + if clearance.cleared: + self.console.print("✅ Globus access validated. You're good to go!") + else: + self.console.print("❌ Globus access validation failed. Please check your credentials and try again.") + + return clearance ``` With this simple class definition, we can now create a script that @@ -88,7 +112,8 @@ def inspect(): """ Hey there, partner! The sheriff is here to check your papers and make sure you're a citizen of The Frontier. Let's see if you have what it takes to be a part of this wild and wonderful land. """ - sheriff = Sheriff() + console = Console() + sheriff = Sheriff(console=console) sheriff.check_citizen() ``` diff --git a/user_guide/notebooks/validate_globus.md b/user_guide/notebooks/validate_globus.md new file mode 100644 index 0000000..22ab12f --- /dev/null +++ b/user_guide/notebooks/validate_globus.md @@ -0,0 +1,202 @@ +# Validate Globus Credentials + + +We want to have a secure way of knowing whether a user has the correct +permissions to have data delivered to them via globus. This kind of +validation falls under the “authorization” category of security, and as +such should be handled by the `Sheriff` class. As a reminder, the +`Stagecoach` class is a handler for delivering data to townspeople, and +works by issuing users a manifest. This manifest is a JSON file that +users fill in with their credentials and desired data from the Frontier +Gold Mine. Once the user returns the manifest, and the `Stagecoach` +recognizes that the user wants access to data via `globus`, the +`Stagecoach` passes the Globus credentials along to the `Sheriff` for +validation. The `Sheriff` then needs to validate the credentials to +ensure that the user has the correct permissions to access the data. +This validation process uses the `Globus SDK` to check the credentials +against the Globus service. If the credentials are valid, the `Sheriff` +returns a success message, allowing the `Stagecoach` to proceed with the +data delivery. If the credentials are invalid, the `Sheriff` returns an +error message, and the `Stagecoach` can inform the user of the issue and +prompt them to correct their credentials in the manifest. This process +ensures that only authorized users can access the data, maintaining the +security of The Frontier’s Gold Mine resources. + +## Tinkering with the SDK + +Globus SDK in Python works as below. Once you’ve set up an App in the +[Developer +panel](https://globus-sdk-python.readthedocs.io/en/stable/user_guide/getting_started/register_app.html) +of the Globus website, you can use the (non-secure) client UUID to +create a user app: + +The first method shows us that login is required to use this app: + +Next, we can use this app to define a client group: + +What’s great is that this method forces the current user to log in to +their globus account: + +![Globus Login](images/groups_client-get-my_g.png) + +And from there, I can see the groups I’m allowed to access defined in +the Globus dashboard: + +The explicit login can be called deliberately: + +We can see that the UserApp object is the main functionality we’re +looking for in the `Sheriff` class, as it deals solely with the +authentication and authorization of users: + +> GlobusApp provides a number of useful abstractions in the SDK. It +> handles login flows and storage of tokens, coupled with later +> retrieval of those tokens for use. It can keep track of which clients +> have been created and registered with an app, and therefore make +> intelligent decisions about how and when to prompt users to login. + +So, to make sure someone is logged in, we can simply create a function +that triggers this login flow. Fortunately, Globus has provided an +example we can work with. Let’s take an example of trying to get this +file: + +`/n/holylabs/cgolden_lab/Lab/projects/sandbox/ReaProject/MadagascarWeatherStations/_pkgdown.yml` + +Let’s list my available data: + +The `.get_endpoint()` method is used to get the endpoint information for +a given collection. An important piece of information we’ll need is the +data_access scope of the endpoint, which is a little bit of a +complicated discussion; the tldr I believe is that the transfer client +can be modified to have the correct access scope but only if you check +for it first; hence, the `.get_endpoint()` step. There are two cases +under which the endpoint will NOT have data_access: + +1. If the endpoint `entity_type` IS NOT `GCSv5_mapped_collection`, and +2. If the endpoint IS `high_assurance`. + +If either of the above is true, then the endpoint will need special +access and additional steps. If neither of the above is true, then the +endpoint should be accessible with the default client + +So neither of these are true, which means that the endpoint should be +accessible with the default client. If it weren’t the case, we would +have to modify the client with +`tc.add_app_data_access_scope(SRC_COLLECTION)`. + +To be sure that this transfer is valid, we can first do a dir_stat on +the collection. If we get a successful response, we can assume that the +transfer will work in future: + +Finally, we can wrap the transfer submission in a try-except block to +catch any errors that may arise from invalid credentials or permissions: + +That works! So now we can create a validation function that allows the +sheriff to validate the globus section of a stagecoach manifest. + +The manifest will have the following shape: + +We’ll need to validate that the user has the kind of access necessary. +The return will be a dataclass that the stagecoach can accept the +requisite transfer object from and execute. + +``` python +from rich.console import Console +from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError +from dataclasses import dataclass + +@dataclass +class GlobusClearance: + app: UserApp | None + transfer_client: TransferClient | None + source_collection: str | None + destination_collection: str | None + cleared: bool + +def validate_globus_credentials( + globus_info: dict, + console: Console, + stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98" + ) -> GlobusClearance: + """ + Validates the globus credentials provided in the manifest. + Args: + globus_info (dict): A dictionary containing the globus credentials and information. + Returns: + GlobusClearance: A dataclass indicating the validation result and associated objects. + """ + try: + + if not globus_info.get("use_globus", False): + console.print("Globus access not requested.") + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = None, + destination_collection = None, + cleared = True + ) + + app_name = "Frontier-Sheriff_" + globus_info.get("globus_username", "Globus-Validator") + + with UserApp( + app_name, + client_id=stagecoach_app_id, + config=GlobusAppConfig(auto_redrive_gares=True), + ) as app: + with TransferClient(app=app) as client: + src_collection = globus_info.get("globus_source_endpoint") + dst_collection = globus_info.get("globus_destination_endpoint") + src_path = globus_info.get("globus_source_path") + dst_path = globus_info.get("globus_destination_path") + + client.add_app_data_access_scope(src_collection) + client.add_app_data_access_scope(dst_collection) + + transfer_request = TransferData(src_collection, dst_collection) + transfer_request.add_item(src_path, dst_path) + + # Attempt to stat the source collection to validate access + resp = client.operation_stat(src_collection, "~") + if resp.http_status == 200: + console.print("✅ Globus credentials validated successfully.") + return GlobusClearance( + app = app, + transfer_client = client, + source_collection = src_collection, + destination_collection = dst_collection, + cleared = True + ) + else: + raise GlobusAPIError("Unable to `stat` access source collection.") + + except GlobusAPIError as e: + console.print_exception() + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = globus_info.get("globus_source_endpoint", None), + destination_collection = globus_info.get("globus_destination_endpoint", None), + cleared = False + ) # Return False if there's an API error, along with a clearance object indicating failure + except Exception as e: + console.print_exception() + return GlobusClearance( + app = None, + transfer_client = None, + source_collection = globus_info.get("globus_source_endpoint", None), + destination_collection = globus_info.get("globus_destination_endpoint", None), + cleared = False + ) # Return False for any other unexpected errors, along with a clearance object indicating failure +``` + +When that sends back a clearance object with `cleared=True`, the +`Stagecoach` can proceed with the transfer using the provided +`transfer_client`. If `cleared=False`, the `Stagecoach` can inform the +user of the issue and prompt them to correct their credentials in the +manifest. + +# Script file + +The code for this document can be found here: + +- [../src/sheriff/validate_globus.py](../src/sheriff/validate_globus.py) From 706a5f96d3e9bdf4556cbdccf7ccc89e7d89511c Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 19:59:58 -0400 Subject: [PATCH 2/7] refactor(validate_globus): rename validation function and update logic * renamed validate_globus_credentials to issue_globus_transfer * updated function parameters to include issue_transfer flag * modified logic to handle transfer requests and validation more effectively * improved console output for better user feedback --- notebooks/sheriff.qmd | 4 +-- notebooks/validate_globus.qmd | 39 +++++++++++++++---------- src/sheriff/sheriff.py | 4 +-- src/sheriff/validate_globus.py | 39 +++++++++++++++---------- user_guide/notebooks/sheriff.md | 4 +-- user_guide/notebooks/validate_globus.md | 39 +++++++++++++++---------- 6 files changed, 78 insertions(+), 51 deletions(-) diff --git a/notebooks/sheriff.qmd b/notebooks/sheriff.qmd index 94d4256..45a5a2c 100644 --- a/notebooks/sheriff.qmd +++ b/notebooks/sheriff.qmd @@ -36,7 +36,7 @@ all that's needed. import os from rich.console import Console from pathlib import Path -from sheriff.validate_globus import validate_globus_credentials, GlobusClearance +from sheriff.validate_globus import issue_globus_transfer, GlobusClearance class Sheriff: """ @@ -59,7 +59,7 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym self.frontier_file = frontier_file self.frontier_path = None - self.console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") + self.console.print("🤠 The sheriff's in town! Let's take a look at your papers...") def check_citizen(self): """ diff --git a/notebooks/validate_globus.qmd b/notebooks/validate_globus.qmd index c67794d..a996325 100644 --- a/notebooks/validate_globus.qmd +++ b/notebooks/validate_globus.qmd @@ -202,26 +202,30 @@ can accept the requisite transfer object from and execute. ```{python} #| sorting-hat: keep from rich.console import Console -from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError +from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError, TransferData from dataclasses import dataclass @dataclass class GlobusClearance: app: UserApp | None - transfer_client: TransferClient | None + transfer_id = str | None source_collection: str | None destination_collection: str | None cleared: bool -def validate_globus_credentials( +def issue_globus_transfer( globus_info: dict, console: Console, - stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98" + stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98", + issue_transfer: bool = False ) -> GlobusClearance: """ Validates the globus credentials provided in the manifest. Args: globus_info (dict): A dictionary containing the globus credentials and information. + console (Console): Rich console object for output messages. + stagecoach_app_id (str): The Globus application client ID for authentication. + issue_transfer (bool): Whether to actually issue a transfer after validation. Defaults to False. Returns: GlobusClearance: A dataclass indicating the validation result and associated objects. """ @@ -231,7 +235,7 @@ def validate_globus_credentials( console.print("Globus access not requested.") return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = None, destination_collection = None, cleared = True @@ -245,10 +249,10 @@ def validate_globus_credentials( config=GlobusAppConfig(auto_redrive_gares=True), ) as app: with TransferClient(app=app) as client: - src_collection = globus_info.get("globus_source_endpoint") - dst_collection = globus_info.get("globus_destination_endpoint") - src_path = globus_info.get("globus_source_path") - dst_path = globus_info.get("globus_destination_path") + src_collection = globus_info.get("globus_source_endpoint", None) + dst_collection = globus_info.get("globus_destination_endpoint", None) + src_path = globus_info.get("globus_source_path", None) + dst_path = globus_info.get("globus_destination_path", None) client.add_app_data_access_scope(src_collection) client.add_app_data_access_scope(dst_collection) @@ -257,24 +261,29 @@ def validate_globus_credentials( transfer_request.add_item(src_path, dst_path) # Attempt to stat the source collection to validate access - resp = client.operation_stat(src_collection, "~") + resp = client.operation_stat(src_collection, src_path) if resp.http_status == 200: console.print("✅ Globus credentials validated successfully.") + else: + console.print(f"❌ Failed to validate globus credentials. Operation stat returned status: {resp.http_status}") + raise GlobusAPIError() + + if issue_transfer: + task = client.submit_transfer(transfer_request) + console.print(f"Submitted transfer. Task ID: {task['task_id']}.") return GlobusClearance( app = app, - transfer_client = client, + transfer_id = task, source_collection = src_collection, destination_collection = dst_collection, cleared = True ) - else: - raise GlobusAPIError("Unable to `stat` access source collection.") except GlobusAPIError as e: console.print_exception() return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), cleared = False @@ -283,7 +292,7 @@ def validate_globus_credentials( console.print_exception() return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), cleared = False diff --git a/src/sheriff/sheriff.py b/src/sheriff/sheriff.py index 1711a20..2828d6e 100644 --- a/src/sheriff/sheriff.py +++ b/src/sheriff/sheriff.py @@ -1,7 +1,7 @@ import os from rich.console import Console from pathlib import Path -from sheriff.validate_globus import validate_globus_credentials, GlobusClearance +from sheriff.validate_globus import issue_globus_transfer, GlobusClearance class Sheriff: """ @@ -24,7 +24,7 @@ def __init__( self.frontier_file = frontier_file self.frontier_path = None - self.console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") + self.console.print("🤠 The sheriff's in town! Let's take a look at your papers...") def check_citizen(self): """ diff --git a/src/sheriff/validate_globus.py b/src/sheriff/validate_globus.py index 9317004..a80e462 100644 --- a/src/sheriff/validate_globus.py +++ b/src/sheriff/validate_globus.py @@ -1,24 +1,28 @@ from rich.console import Console -from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError +from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError, TransferData from dataclasses import dataclass @dataclass class GlobusClearance: app: UserApp | None - transfer_client: TransferClient | None + transfer_id = str | None source_collection: str | None destination_collection: str | None cleared: bool -def validate_globus_credentials( +def issue_globus_transfer( globus_info: dict, console: Console, - stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98" + stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98", + issue_transfer: bool = False ) -> GlobusClearance: """ Validates the globus credentials provided in the manifest. Args: globus_info (dict): A dictionary containing the globus credentials and information. + console (Console): Rich console object for output messages. + stagecoach_app_id (str): The Globus application client ID for authentication. + issue_transfer (bool): Whether to actually issue a transfer after validation. Defaults to False. Returns: GlobusClearance: A dataclass indicating the validation result and associated objects. """ @@ -28,7 +32,7 @@ def validate_globus_credentials( console.print("Globus access not requested.") return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = None, destination_collection = None, cleared = True @@ -42,10 +46,10 @@ def validate_globus_credentials( config=GlobusAppConfig(auto_redrive_gares=True), ) as app: with TransferClient(app=app) as client: - src_collection = globus_info.get("globus_source_endpoint") - dst_collection = globus_info.get("globus_destination_endpoint") - src_path = globus_info.get("globus_source_path") - dst_path = globus_info.get("globus_destination_path") + src_collection = globus_info.get("globus_source_endpoint", None) + dst_collection = globus_info.get("globus_destination_endpoint", None) + src_path = globus_info.get("globus_source_path", None) + dst_path = globus_info.get("globus_destination_path", None) client.add_app_data_access_scope(src_collection) client.add_app_data_access_scope(dst_collection) @@ -54,24 +58,29 @@ def validate_globus_credentials( transfer_request.add_item(src_path, dst_path) # Attempt to stat the source collection to validate access - resp = client.operation_stat(src_collection, "~") + resp = client.operation_stat(src_collection, src_path) if resp.http_status == 200: console.print("✅ Globus credentials validated successfully.") + else: + console.print(f"❌ Failed to validate globus credentials. Operation stat returned status: {resp.http_status}") + raise GlobusAPIError() + + if issue_transfer: + task = client.submit_transfer(transfer_request) + console.print(f"Submitted transfer. Task ID: {task['task_id']}.") return GlobusClearance( app = app, - transfer_client = client, + transfer_id = task, source_collection = src_collection, destination_collection = dst_collection, cleared = True ) - else: - raise GlobusAPIError("Unable to `stat` access source collection.") except GlobusAPIError as e: console.print_exception() return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), cleared = False @@ -80,7 +89,7 @@ def validate_globus_credentials( console.print_exception() return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), cleared = False diff --git a/user_guide/notebooks/sheriff.md b/user_guide/notebooks/sheriff.md index 6a52c6d..ce427ca 100644 --- a/user_guide/notebooks/sheriff.md +++ b/user_guide/notebooks/sheriff.md @@ -19,7 +19,7 @@ now, this is all that’s needed. import os from rich.console import Console from pathlib import Path -from sheriff.validate_globus import validate_globus_credentials, GlobusClearance +from sheriff.validate_globus import issue_globus_transfer, GlobusClearance class Sheriff: """ @@ -42,7 +42,7 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym self.frontier_file = frontier_file self.frontier_path = None - self.console.print("🤠 There's a new sheriff in town! Let's take a look at your papers...") + self.console.print("🤠 The sheriff's in town! Let's take a look at your papers...") def check_citizen(self): """ diff --git a/user_guide/notebooks/validate_globus.md b/user_guide/notebooks/validate_globus.md index 22ab12f..23b9639 100644 --- a/user_guide/notebooks/validate_globus.md +++ b/user_guide/notebooks/validate_globus.md @@ -101,26 +101,30 @@ requisite transfer object from and execute. ``` python from rich.console import Console -from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError +from globus_sdk import GlobusAppConfig, UserApp, TransferClient, GlobusAPIError, TransferData from dataclasses import dataclass @dataclass class GlobusClearance: app: UserApp | None - transfer_client: TransferClient | None + transfer_id = str | None source_collection: str | None destination_collection: str | None cleared: bool -def validate_globus_credentials( +def issue_globus_transfer( globus_info: dict, console: Console, - stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98" + stagecoach_app_id: str = "7723dff4-fa63-4639-903b-ba6541e24e98", + issue_transfer: bool = False ) -> GlobusClearance: """ Validates the globus credentials provided in the manifest. Args: globus_info (dict): A dictionary containing the globus credentials and information. + console (Console): Rich console object for output messages. + stagecoach_app_id (str): The Globus application client ID for authentication. + issue_transfer (bool): Whether to actually issue a transfer after validation. Defaults to False. Returns: GlobusClearance: A dataclass indicating the validation result and associated objects. """ @@ -130,7 +134,7 @@ def validate_globus_credentials( console.print("Globus access not requested.") return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = None, destination_collection = None, cleared = True @@ -144,10 +148,10 @@ def validate_globus_credentials( config=GlobusAppConfig(auto_redrive_gares=True), ) as app: with TransferClient(app=app) as client: - src_collection = globus_info.get("globus_source_endpoint") - dst_collection = globus_info.get("globus_destination_endpoint") - src_path = globus_info.get("globus_source_path") - dst_path = globus_info.get("globus_destination_path") + src_collection = globus_info.get("globus_source_endpoint", None) + dst_collection = globus_info.get("globus_destination_endpoint", None) + src_path = globus_info.get("globus_source_path", None) + dst_path = globus_info.get("globus_destination_path", None) client.add_app_data_access_scope(src_collection) client.add_app_data_access_scope(dst_collection) @@ -156,24 +160,29 @@ def validate_globus_credentials( transfer_request.add_item(src_path, dst_path) # Attempt to stat the source collection to validate access - resp = client.operation_stat(src_collection, "~") + resp = client.operation_stat(src_collection, src_path) if resp.http_status == 200: console.print("✅ Globus credentials validated successfully.") + else: + console.print(f"❌ Failed to validate globus credentials. Operation stat returned status: {resp.http_status}") + raise GlobusAPIError() + + if issue_transfer: + task = client.submit_transfer(transfer_request) + console.print(f"Submitted transfer. Task ID: {task['task_id']}.") return GlobusClearance( app = app, - transfer_client = client, + transfer_id = task, source_collection = src_collection, destination_collection = dst_collection, cleared = True ) - else: - raise GlobusAPIError("Unable to `stat` access source collection.") except GlobusAPIError as e: console.print_exception() return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), cleared = False @@ -182,7 +191,7 @@ def validate_globus_credentials( console.print_exception() return GlobusClearance( app = None, - transfer_client = None, + transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), cleared = False From be4c9b049624deb78518f43c11b6d595aad222f9 Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 20:06:20 -0400 Subject: [PATCH 3/7] refactor(validate_globus): simplify GlobusClearance structure * Change transfer_id type annotation for clarity * Remove unnecessary app attribute from GlobusClearance * Streamline globus_info retrieval in issue_globus_transfer --- notebooks/validate_globus.qmd | 22 ++++++++++++---------- src/sheriff/validate_globus.py | 22 ++++++++++++---------- user_guide/notebooks/validate_globus.md | 22 ++++++++++++---------- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/notebooks/validate_globus.qmd b/notebooks/validate_globus.qmd index a996325..62f83c3 100644 --- a/notebooks/validate_globus.qmd +++ b/notebooks/validate_globus.qmd @@ -207,8 +207,7 @@ from dataclasses import dataclass @dataclass class GlobusClearance: - app: UserApp | None - transfer_id = str | None + transfer_id : str | None source_collection: str | None destination_collection: str | None cleared: bool @@ -234,7 +233,6 @@ def issue_globus_transfer( if not globus_info.get("use_globus", False): console.print("Globus access not requested.") return GlobusClearance( - app = None, transfer_id = None, source_collection = None, destination_collection = None, @@ -249,10 +247,10 @@ def issue_globus_transfer( config=GlobusAppConfig(auto_redrive_gares=True), ) as app: with TransferClient(app=app) as client: - src_collection = globus_info.get("globus_source_endpoint", None) - dst_collection = globus_info.get("globus_destination_endpoint", None) - src_path = globus_info.get("globus_source_path", None) - dst_path = globus_info.get("globus_destination_path", None) + src_collection = globus_info.get("globus_source_endpoint") + dst_collection = globus_info.get("globus_destination_endpoint") + src_path = globus_info.get("globus_source_path") + dst_path = globus_info.get("globus_destination_path") client.add_app_data_access_scope(src_collection) client.add_app_data_access_scope(dst_collection) @@ -272,17 +270,22 @@ def issue_globus_transfer( task = client.submit_transfer(transfer_request) console.print(f"Submitted transfer. Task ID: {task['task_id']}.") return GlobusClearance( - app = app, transfer_id = task, source_collection = src_collection, destination_collection = dst_collection, cleared = True ) + else: + return GlobusClearance( + transfer_id = None, + source_collection = src_collection, + destination_collection = dst_collection, + cleared = True + ) except GlobusAPIError as e: console.print_exception() return GlobusClearance( - app = None, transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), @@ -291,7 +294,6 @@ def issue_globus_transfer( except Exception as e: console.print_exception() return GlobusClearance( - app = None, transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), diff --git a/src/sheriff/validate_globus.py b/src/sheriff/validate_globus.py index a80e462..2d0e5ee 100644 --- a/src/sheriff/validate_globus.py +++ b/src/sheriff/validate_globus.py @@ -4,8 +4,7 @@ @dataclass class GlobusClearance: - app: UserApp | None - transfer_id = str | None + transfer_id : str | None source_collection: str | None destination_collection: str | None cleared: bool @@ -31,7 +30,6 @@ def issue_globus_transfer( if not globus_info.get("use_globus", False): console.print("Globus access not requested.") return GlobusClearance( - app = None, transfer_id = None, source_collection = None, destination_collection = None, @@ -46,10 +44,10 @@ def issue_globus_transfer( config=GlobusAppConfig(auto_redrive_gares=True), ) as app: with TransferClient(app=app) as client: - src_collection = globus_info.get("globus_source_endpoint", None) - dst_collection = globus_info.get("globus_destination_endpoint", None) - src_path = globus_info.get("globus_source_path", None) - dst_path = globus_info.get("globus_destination_path", None) + src_collection = globus_info.get("globus_source_endpoint") + dst_collection = globus_info.get("globus_destination_endpoint") + src_path = globus_info.get("globus_source_path") + dst_path = globus_info.get("globus_destination_path") client.add_app_data_access_scope(src_collection) client.add_app_data_access_scope(dst_collection) @@ -69,17 +67,22 @@ def issue_globus_transfer( task = client.submit_transfer(transfer_request) console.print(f"Submitted transfer. Task ID: {task['task_id']}.") return GlobusClearance( - app = app, transfer_id = task, source_collection = src_collection, destination_collection = dst_collection, cleared = True ) + else: + return GlobusClearance( + transfer_id = None, + source_collection = src_collection, + destination_collection = dst_collection, + cleared = True + ) except GlobusAPIError as e: console.print_exception() return GlobusClearance( - app = None, transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), @@ -88,7 +91,6 @@ def issue_globus_transfer( except Exception as e: console.print_exception() return GlobusClearance( - app = None, transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), diff --git a/user_guide/notebooks/validate_globus.md b/user_guide/notebooks/validate_globus.md index 23b9639..fa93acb 100644 --- a/user_guide/notebooks/validate_globus.md +++ b/user_guide/notebooks/validate_globus.md @@ -106,8 +106,7 @@ from dataclasses import dataclass @dataclass class GlobusClearance: - app: UserApp | None - transfer_id = str | None + transfer_id : str | None source_collection: str | None destination_collection: str | None cleared: bool @@ -133,7 +132,6 @@ def issue_globus_transfer( if not globus_info.get("use_globus", False): console.print("Globus access not requested.") return GlobusClearance( - app = None, transfer_id = None, source_collection = None, destination_collection = None, @@ -148,10 +146,10 @@ def issue_globus_transfer( config=GlobusAppConfig(auto_redrive_gares=True), ) as app: with TransferClient(app=app) as client: - src_collection = globus_info.get("globus_source_endpoint", None) - dst_collection = globus_info.get("globus_destination_endpoint", None) - src_path = globus_info.get("globus_source_path", None) - dst_path = globus_info.get("globus_destination_path", None) + src_collection = globus_info.get("globus_source_endpoint") + dst_collection = globus_info.get("globus_destination_endpoint") + src_path = globus_info.get("globus_source_path") + dst_path = globus_info.get("globus_destination_path") client.add_app_data_access_scope(src_collection) client.add_app_data_access_scope(dst_collection) @@ -171,17 +169,22 @@ def issue_globus_transfer( task = client.submit_transfer(transfer_request) console.print(f"Submitted transfer. Task ID: {task['task_id']}.") return GlobusClearance( - app = app, transfer_id = task, source_collection = src_collection, destination_collection = dst_collection, cleared = True ) + else: + return GlobusClearance( + transfer_id = None, + source_collection = src_collection, + destination_collection = dst_collection, + cleared = True + ) except GlobusAPIError as e: console.print_exception() return GlobusClearance( - app = None, transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), @@ -190,7 +193,6 @@ def issue_globus_transfer( except Exception as e: console.print_exception() return GlobusClearance( - app = None, transfer_id = None, source_collection = globus_info.get("globus_source_endpoint", None), destination_collection = globus_info.get("globus_destination_endpoint", None), From acfda40d29cb951fe472a5c2ccfc26257fe82d64 Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 20:11:13 -0400 Subject: [PATCH 4/7] refactor(validate_globus): improve globus access validation * Update check_globus_access to run transfer if credentials are valid * Enhance error handling by passing response to GlobusAPIError * Clarify docstrings for better understanding of functionality --- notebooks/sheriff.qmd | 7 +++++-- notebooks/validate_globus.qmd | 2 +- src/sheriff/sheriff.py | 7 +++++-- src/sheriff/validate_globus.py | 2 +- user_guide/notebooks/sheriff.md | 7 +++++-- user_guide/notebooks/validate_globus.md | 2 +- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/notebooks/sheriff.qmd b/notebooks/sheriff.qmd index 45a5a2c..88a3190 100644 --- a/notebooks/sheriff.qmd +++ b/notebooks/sheriff.qmd @@ -95,7 +95,10 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym def check_globus_access(self, globus_info: dict) -> GlobusClearance: """ - Checks for globus access by validating the globus credentials provided in the manifest. + Checks for globus access by validating the globus credentials provided in the + manifest. Runs transfer if credentials are valid and source and destination + endpoints are provided. Returns a GlobusClearance dataclass indicating the + result of the validation and transfer operation. Args: globus_info (dict): A dictionary containing the globus credentials and information. Returns: @@ -103,7 +106,7 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym """ self.console.print("🔍 Checking your Globus access...") - clearance = validate_globus_credentials(globus_info, self.console) + clearance = issue_globus_transfer(globus_info, self.console, issue_transfer=False) if clearance.cleared: self.console.print("✅ Globus access validated. You're good to go!") diff --git a/notebooks/validate_globus.qmd b/notebooks/validate_globus.qmd index 62f83c3..e183c19 100644 --- a/notebooks/validate_globus.qmd +++ b/notebooks/validate_globus.qmd @@ -264,7 +264,7 @@ def issue_globus_transfer( console.print("✅ Globus credentials validated successfully.") else: console.print(f"❌ Failed to validate globus credentials. Operation stat returned status: {resp.http_status}") - raise GlobusAPIError() + raise GlobusAPIError(resp) if issue_transfer: task = client.submit_transfer(transfer_request) diff --git a/src/sheriff/sheriff.py b/src/sheriff/sheriff.py index 2828d6e..3b9a78d 100644 --- a/src/sheriff/sheriff.py +++ b/src/sheriff/sheriff.py @@ -60,7 +60,10 @@ def check_citizen(self): def check_globus_access(self, globus_info: dict) -> GlobusClearance: """ - Checks for globus access by validating the globus credentials provided in the manifest. + Checks for globus access by validating the globus credentials provided in the + manifest. Runs transfer if credentials are valid and source and destination + endpoints are provided. Returns a GlobusClearance dataclass indicating the + result of the validation and transfer operation. Args: globus_info (dict): A dictionary containing the globus credentials and information. Returns: @@ -68,7 +71,7 @@ def check_globus_access(self, globus_info: dict) -> GlobusClearance: """ self.console.print("🔍 Checking your Globus access...") - clearance = validate_globus_credentials(globus_info, self.console) + clearance = issue_globus_transfer(globus_info, self.console, issue_transfer=False) if clearance.cleared: self.console.print("✅ Globus access validated. You're good to go!") diff --git a/src/sheriff/validate_globus.py b/src/sheriff/validate_globus.py index 2d0e5ee..3ae81c1 100644 --- a/src/sheriff/validate_globus.py +++ b/src/sheriff/validate_globus.py @@ -61,7 +61,7 @@ def issue_globus_transfer( console.print("✅ Globus credentials validated successfully.") else: console.print(f"❌ Failed to validate globus credentials. Operation stat returned status: {resp.http_status}") - raise GlobusAPIError() + raise GlobusAPIError(resp) if issue_transfer: task = client.submit_transfer(transfer_request) diff --git a/user_guide/notebooks/sheriff.md b/user_guide/notebooks/sheriff.md index ce427ca..fdd7b4f 100644 --- a/user_guide/notebooks/sheriff.md +++ b/user_guide/notebooks/sheriff.md @@ -78,7 +78,10 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym def check_globus_access(self, globus_info: dict) -> GlobusClearance: """ - Checks for globus access by validating the globus credentials provided in the manifest. + Checks for globus access by validating the globus credentials provided in the + manifest. Runs transfer if credentials are valid and source and destination + endpoints are provided. Returns a GlobusClearance dataclass indicating the + result of the validation and transfer operation. Args: globus_info (dict): A dictionary containing the globus credentials and information. Returns: @@ -86,7 +89,7 @@ A simple class that checks for frontier citizenship by looking for a frontier.ym """ self.console.print("🔍 Checking your Globus access...") - clearance = validate_globus_credentials(globus_info, self.console) + clearance = issue_globus_transfer(globus_info, self.console, issue_transfer=False) if clearance.cleared: self.console.print("✅ Globus access validated. You're good to go!") diff --git a/user_guide/notebooks/validate_globus.md b/user_guide/notebooks/validate_globus.md index fa93acb..03afa7d 100644 --- a/user_guide/notebooks/validate_globus.md +++ b/user_guide/notebooks/validate_globus.md @@ -163,7 +163,7 @@ def issue_globus_transfer( console.print("✅ Globus credentials validated successfully.") else: console.print(f"❌ Failed to validate globus credentials. Operation stat returned status: {resp.http_status}") - raise GlobusAPIError() + raise GlobusAPIError(resp) if issue_transfer: task = client.submit_transfer(transfer_request) From 491af8005d20b9ea6d5c0df58226e504107aac41 Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 20:14:07 -0400 Subject: [PATCH 5/7] refactor(validate_globus): change transfer_id type to dict --- notebooks/validate_globus.qmd | 2 +- src/sheriff/validate_globus.py | 2 +- user_guide/notebooks/validate_globus.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/notebooks/validate_globus.qmd b/notebooks/validate_globus.qmd index e183c19..fd54b1f 100644 --- a/notebooks/validate_globus.qmd +++ b/notebooks/validate_globus.qmd @@ -207,7 +207,7 @@ from dataclasses import dataclass @dataclass class GlobusClearance: - transfer_id : str | None + transfer_id : dict | None source_collection: str | None destination_collection: str | None cleared: bool diff --git a/src/sheriff/validate_globus.py b/src/sheriff/validate_globus.py index 3ae81c1..adc1ddc 100644 --- a/src/sheriff/validate_globus.py +++ b/src/sheriff/validate_globus.py @@ -4,7 +4,7 @@ @dataclass class GlobusClearance: - transfer_id : str | None + transfer_id : dict | None source_collection: str | None destination_collection: str | None cleared: bool diff --git a/user_guide/notebooks/validate_globus.md b/user_guide/notebooks/validate_globus.md index 03afa7d..0e8be84 100644 --- a/user_guide/notebooks/validate_globus.md +++ b/user_guide/notebooks/validate_globus.md @@ -106,7 +106,7 @@ from dataclasses import dataclass @dataclass class GlobusClearance: - transfer_id : str | None + transfer_id : dict | None source_collection: str | None destination_collection: str | None cleared: bool From 32bc9fceba3cdbd8bcc0bd4aa4c4d49faac9b709 Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 22:15:26 -0400 Subject: [PATCH 6/7] add globus-sdk dependency --- pyproject.toml | 1 + uv.lock | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index b6acfc4..30fa90a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ authors = [ ] requires-python = ">=3.12" dependencies = [ + "globus-sdk>=4.5.0", "great-docs>=0.10.0", "ipykernel>=7.2.0", "jupyter>=1.1.1", diff --git a/uv.lock b/uv.lock index 139663c..2f6809e 100644 --- a/uv.lock +++ b/uv.lock @@ -328,6 +328,59 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload-time = "2025-07-25T14:02:02.896Z" }, ] +[[package]] +name = "cryptography" +version = "48.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/a9/db8f313fdcd85d767d4973515e1db101f9c71f95fced83233de224673757/cryptography-48.0.0.tar.gz", hash = "sha256:5c3932f4436d1cccb036cb0eaef46e6e2db91035166f1ad6505c3c9d5a635920", size = 832984, upload-time = "2026-05-04T22:59:38.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/3d/01f6dd9190170a5a241e0e98c2d04be3664a9e6f5b9b872cde63aff1c3dd/cryptography-48.0.0-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:0c558d2cdffd8f4bbb30fc7134c74d2ca9a476f830bb053074498fbc86f41ed6", size = 8001587, upload-time = "2026-05-04T22:57:36.803Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6e/e90527eef33f309beb811cf7c982c3aeffcce8e3edb178baa4ca3ae4a6fa/cryptography-48.0.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f5333311663ea94f75dd408665686aaf426563556bb5283554a3539177e03b8c", size = 4690433, upload-time = "2026-05-04T22:57:40.373Z" }, + { url = "https://files.pythonhosted.org/packages/90/04/673510ed51ddff56575f306cf1617d80411ee76831ccd3097599140efdfe/cryptography-48.0.0-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7995ef305d7165c3f11ae07f2517e5a4f1d5c18da1376a0a9ed496336b69e5f3", size = 4710620, upload-time = "2026-05-04T22:57:42.935Z" }, + { url = "https://files.pythonhosted.org/packages/14/d5/e9c4ef932c8d800490c34d8bd589d64a31d5890e27ec9e9ad532be893294/cryptography-48.0.0-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:40ba1f85eaa6959837b1d51c9767e230e14612eea4ef110ee8854ada22da1bf5", size = 4696283, upload-time = "2026-05-04T22:57:45.294Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/174b9dfb60b12d59ecfc6cfa04bc88c21b42a54f01b8aae09bb6e51e4c7f/cryptography-48.0.0-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:369a6348999f94bbd53435c894377b20ab95f25a9065c283570e70150d8abc3c", size = 5296573, upload-time = "2026-05-04T22:57:47.933Z" }, + { url = "https://files.pythonhosted.org/packages/95/38/0d29a6fd7d0d1373f0c0c88a04ba20e359b257753ac497564cd660fc1d55/cryptography-48.0.0-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a0e692c683f4df67815a2d258b324e66f4738bd7a96a218c826dce4f4bd05d8f", size = 4743677, upload-time = "2026-05-04T22:57:50.067Z" }, + { url = "https://files.pythonhosted.org/packages/30/be/eef653013d5c63b6a490529e0316f9ac14a37602965d4903efed1399f32b/cryptography-48.0.0-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:18349bbc56f4743c8b12dc32e2bccb2cf83ee8b69a3bba74ef8ae857e26b3d25", size = 4330808, upload-time = "2026-05-04T22:57:52.301Z" }, + { url = "https://files.pythonhosted.org/packages/84/9e/500463e87abb7a0a0f9f256ec21123ecde0a7b5541a15e840ea54551fd81/cryptography-48.0.0-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:7e8eac43dfca5c4cccc6dad9a80504436fca53bb9bc3100a2386d730fbe6b602", size = 4695941, upload-time = "2026-05-04T22:57:54.603Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dc/7303087450c2ec9e7fbb750e17c2abfbc658f23cbd0e54009509b7cc4091/cryptography-48.0.0-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9ccdac7d40688ecb5a3b4a604b8a88c8002e3442d6c60aead1db2a89a041560c", size = 5252579, upload-time = "2026-05-04T22:57:57.207Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c0/7101d3b7215edcdc90c45da544961fd8ed2d6448f77577460fa75a8443f7/cryptography-48.0.0-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:bd72e68b06bb1e96913f97dd4901119bc17f39d4586a5adf2d3e47bc2b9d58b5", size = 4743326, upload-time = "2026-05-04T22:57:59.535Z" }, + { url = "https://files.pythonhosted.org/packages/ac/d8/5b833bad13016f562ab9d063d68199a4bd121d18458e439515601d3357ec/cryptography-48.0.0-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:59baa2cb386c4f0b9905bd6eb4c2a79a69a128408fd31d32ca4d7102d4156321", size = 4826672, upload-time = "2026-05-04T22:58:01.996Z" }, + { url = "https://files.pythonhosted.org/packages/98/e1/7074eb8bf3c135558c73fc2bcf0f5633f912e6fb87e868a55c454080ef09/cryptography-48.0.0-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:9249e3cd978541d665967ac2cb2787fd6a62bddf1e75b3e347a594d7dacf4f74", size = 4972574, upload-time = "2026-05-04T22:58:03.968Z" }, + { url = "https://files.pythonhosted.org/packages/04/70/e5a1b41d325f797f39427aa44ef8baf0be500065ab6d8e10369d850d4a4f/cryptography-48.0.0-cp311-abi3-win32.whl", hash = "sha256:9c459db21422be75e2809370b829a87eb37f74cd785fc4aa9ea1e5f43b47cda4", size = 3294868, upload-time = "2026-05-04T22:58:06.467Z" }, + { url = "https://files.pythonhosted.org/packages/f4/ac/8ac51b4a5fc5932eb7ee5c517ba7dc8cd834f0048962b6b352f00f41ebf9/cryptography-48.0.0-cp311-abi3-win_amd64.whl", hash = "sha256:5b012212e08b8dd5edc78ef54da83dd9892fd9105323b3993eff6bea65dc21d7", size = 3817107, upload-time = "2026-05-04T22:58:08.845Z" }, + { url = "https://files.pythonhosted.org/packages/6b/84/70e3feea9feea87fd7cbe77efb2712ae1e3e6edf10749dc6e95f4e60e455/cryptography-48.0.0-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:3cb07a3ed6431663cd321ea8a000a1314c74211f823e4177fefa2255e057d1ec", size = 7986556, upload-time = "2026-05-04T22:58:11.172Z" }, + { url = "https://files.pythonhosted.org/packages/89/6e/18e07a618bb5442ba10cf4df16e99c071365528aa570dfcb8c02e25a303b/cryptography-48.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8c7378637d7d88016fa6791c159f698b3d3eed28ebf844ac36b9dc04a14dae18", size = 4684776, upload-time = "2026-05-04T22:58:13.712Z" }, + { url = "https://files.pythonhosted.org/packages/be/6a/4ea3b4c6c6759794d5ee2103c304a5076dc4b19ae1f9fe47dba439e159e9/cryptography-48.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:cc90c0b39b2e3c65ef52c804b72e3c58f8a04ab2a1871272798e5f9572c17d20", size = 4698121, upload-time = "2026-05-04T22:58:16.448Z" }, + { url = "https://files.pythonhosted.org/packages/2f/59/6ff6ad6cae03bb887da2a5860b2c9805f8dac969ef01ce563336c49bd1d1/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:76341972e1eff8b4bea859f09c0d3e64b96ce931b084f9b9b7db8ef364c30eff", size = 4690042, upload-time = "2026-05-04T22:58:18.544Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b4/fc334ed8cfd705aca282fe4d8f5ae64a8e0f74932e9feecb344610cf6e4d/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:55b7718303bf06a5753dcdccf2f3945cf18ad7bffde41b61226e4db31ab89a9c", size = 5282526, upload-time = "2026-05-04T22:58:20.75Z" }, + { url = "https://files.pythonhosted.org/packages/11/08/9f8c5386cc4cd90d8255c7cdd0f5baf459a08502a09de30dc51f553d38dc/cryptography-48.0.0-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:a64697c641c7b1b2178e573cbc31c7c6684cd56883a478d75143dbb7118036db", size = 4733116, upload-time = "2026-05-04T22:58:23.627Z" }, + { url = "https://files.pythonhosted.org/packages/b8/77/99307d7574045699f8805aa500fa0fb83422d115b5400a064ddd306d7750/cryptography-48.0.0-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:561215ea3879cb1cbbf272867e2efda62476f240fb58c64de6b393ae19246741", size = 4316030, upload-time = "2026-05-04T22:58:25.581Z" }, + { url = "https://files.pythonhosted.org/packages/fd/36/a608b98337af3cb2aff4818e406649d30572b7031918b04c87d979495348/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ad64688338ed4bc1a6618076ba75fd7194a5f1797ac60b47afe926285adb3166", size = 4689640, upload-time = "2026-05-04T22:58:27.747Z" }, + { url = "https://files.pythonhosted.org/packages/dd/a6/825010a291b4438aecc1f568bc428189fc1175515223632477c07dc0a6df/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:906cbf0670286c6e0044156bc7d4af9cbb0ef6db9f73e52c3ec56ba6bdde5336", size = 5237657, upload-time = "2026-05-04T22:58:29.848Z" }, + { url = "https://files.pythonhosted.org/packages/b9/09/4e76a09b4caa29aad535ddc806f5d4c5d01885bd978bd984fbc6ca032cae/cryptography-48.0.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:ea8990436d914540a40ab24b6a77c0969695ed52f4a4874c5137ccf7045a7057", size = 4732362, upload-time = "2026-05-04T22:58:32.009Z" }, + { url = "https://files.pythonhosted.org/packages/18/78/444fa04a77d0cb95f417dda20d450e13c56ba8e5220fc892a1658f44f882/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c18684a7f0cc9a3cb60328f496b8e3372def7c5d2df39ac267878b05565aaaae", size = 4819580, upload-time = "2026-05-04T22:58:34.254Z" }, + { url = "https://files.pythonhosted.org/packages/38/85/ea67067c70a1fd4be2c63d35eeed82658023021affccc7b17705f8527dd2/cryptography-48.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:9be5aafa5736574f8f15f262adc81b2a9869e2cfe9014d52a44633905b40d52c", size = 4963283, upload-time = "2026-05-04T22:58:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/75/54/cc6d0f3deac3e81c7f847e8a189a12b6cdd65059b43dad25d4316abd849a/cryptography-48.0.0-cp314-cp314t-win32.whl", hash = "sha256:c17dfe85494deaeddc5ce251aebd1d60bbe6afc8b62071bb0b469431a000124f", size = 3270954, upload-time = "2026-05-04T22:58:38.791Z" }, + { url = "https://files.pythonhosted.org/packages/49/67/cc947e288c0758a4e5473d1dcb743037ab7785541265a969240b8885441a/cryptography-48.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27241b1dc9962e056062a8eef1991d02c3a24569c95975bd2322a8a52c6e5e12", size = 3797313, upload-time = "2026-05-04T22:58:40.746Z" }, + { url = "https://files.pythonhosted.org/packages/f2/63/61d4a4e1c6b6bab6ce1e213cd36a24c415d90e76d78c5eb8577c5541d2e8/cryptography-48.0.0-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:58d00498e8933e4a194f3076aee1b4a97dfec1a6da444535755822fe5d8b0b86", size = 7983482, upload-time = "2026-05-04T22:58:43.769Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ac/f5b5995b87770c693e2596559ffafe195b4033a57f14a82268a2842953f3/cryptography-48.0.0-cp39-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:614d0949f4790582d2cc25553abd09dd723025f0c0e7c67376a1d77196743d6e", size = 4683266, upload-time = "2026-05-04T22:58:46.064Z" }, + { url = "https://files.pythonhosted.org/packages/ec/c6/8b14f67e18338fbc4adb76f66c001f5c3610b3e2d1837f268f47a347dbbb/cryptography-48.0.0-cp39-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7ce4bfae76319a532a2dc68f82cc32f5676ee792a983187dac07183690e5c66f", size = 4696228, upload-time = "2026-05-04T22:58:48.22Z" }, + { url = "https://files.pythonhosted.org/packages/ea/73/f808fbae9514bd91b47875b003f13e284c8c6bdfd904b7944e803937eec1/cryptography-48.0.0-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:2eb992bbd4661238c5a397594c83f5b4dc2bc5b848c365c8f991b6780efcc5c7", size = 4689097, upload-time = "2026-05-04T22:58:50.9Z" }, + { url = "https://files.pythonhosted.org/packages/93/01/d86632d7d28db8ae83221995752eeb6639ffb374c2d22955648cf8d52797/cryptography-48.0.0-cp39-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:22a5cb272895dce158b2cacdfdc3debd299019659f42947dbdac6f32d68fe832", size = 5283582, upload-time = "2026-05-04T22:58:53.017Z" }, + { url = "https://files.pythonhosted.org/packages/02/e1/50edc7a50334807cc4791fc4a0ce7468b4a1416d9138eab358bfc9a3d70b/cryptography-48.0.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:2b4d59804e8408e2fea7d1fbaf218e5ec984325221db76e6a241a9abd6cdd95c", size = 4730479, upload-time = "2026-05-04T22:58:55.611Z" }, + { url = "https://files.pythonhosted.org/packages/6f/af/99a582b1b1641ff5911ac559beb45097cf79efd4ead4657f578ef1af2d47/cryptography-48.0.0-cp39-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:984a20b0f62a26f48a3396c72e4bc34c66e356d356bf370053066b3b6d54634a", size = 4326481, upload-time = "2026-05-04T22:58:57.607Z" }, + { url = "https://files.pythonhosted.org/packages/90/ee/89aa26a06ef0a7d7611788ffd571a7c50e368cc6a4d5eef8b4884e866edb/cryptography-48.0.0-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5a5ed8fde7a1d09376ca0b40e68cd59c69fe23b1f9768bd5824f54681626032a", size = 4688713, upload-time = "2026-05-04T22:59:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/70/ba/bcb1b0bb7a33d4c7c0c4d4c7874b4a62ae4f56113a5f4baefa362dfb1f0f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:8cd666227ef7af430aa5914a9910e0ddd703e75f039cef0825cd0da71b6b711a", size = 5238165, upload-time = "2026-05-04T22:59:02.317Z" }, + { url = "https://files.pythonhosted.org/packages/c9/70/ca4003b1ce5ca3dc3186ada51908c8a9b9ff7d5cab83cc0d43ee14ec144f/cryptography-48.0.0-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:9071196d81abc88b3516ac8cdfad32e2b66dd4a5393a8e68a961e9161ddc6239", size = 4729947, upload-time = "2026-05-04T22:59:05.255Z" }, + { url = "https://files.pythonhosted.org/packages/44/a0/4ec7cf774207905aef1a8d11c3750d5a1db805eb380ee4e16df317870128/cryptography-48.0.0-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1e2d54c8be6152856a36f0882ab231e70f8ec7f14e93cf87db8a2ed056bf160c", size = 4822059, upload-time = "2026-05-04T22:59:07.802Z" }, + { url = "https://files.pythonhosted.org/packages/1e/75/a2e55f99c16fcac7b5d6c1eb19ad8e00799854d6be5ca845f9259eae1681/cryptography-48.0.0-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a5da777e32ffed6f85a7b2b3f7c5cbc88c146bfcd0a1d7baf5fcc6c52ee35dd4", size = 4960575, upload-time = "2026-05-04T22:59:09.851Z" }, + { url = "https://files.pythonhosted.org/packages/b8/23/6e6f32143ab5d8b36ca848a502c4bcd477ae75b9e1677e3530d669062578/cryptography-48.0.0-cp39-abi3-win32.whl", hash = "sha256:77a2ccbbe917f6710e05ba9adaa25fb5075620bf3ea6fb751997875aff4ae4bd", size = 3279117, upload-time = "2026-05-04T22:59:12.019Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9a/0fea98a70cf1749d41d738836f6349d97945f7c89433a259a6c2642eefeb/cryptography-48.0.0-cp39-abi3-win_amd64.whl", hash = "sha256:16cd65b9330583e4619939b3a3843eec1e6e789744bb01e7c7e2e62e33c239c8", size = 3792100, upload-time = "2026-05-04T22:59:14.884Z" }, +] + [[package]] name = "debugpy" version = "1.8.20" @@ -394,6 +447,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, ] +[[package]] +name = "globus-sdk" +version = "4.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cryptography" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/ed/3819840b716d26146026b0ac2faa4131fa9b8fa7b65f2493006434f505f7/globus_sdk-4.5.0.tar.gz", hash = "sha256:33f888e369e4d3fb183ecd8cdea1a0be40d930dc13549dc5c8b3326940398bc5", size = 278531, upload-time = "2026-03-30T20:35:01.871Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/03/7c993819f1d891c345f56396c8aed226aa8c7ec37bc0cb3c5120b6c1ec64/globus_sdk-4.5.0-py3-none-any.whl", hash = "sha256:5936cded28b8c6212870f54e3d3ae2c2d48d8061995117f52731992407bf66ab", size = 431789, upload-time = "2026-03-30T20:34:59.649Z" }, +] + [[package]] name = "great-docs" version = "0.10.0" @@ -1275,6 +1342,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl", hash = "sha256:81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176", size = 1231151, upload-time = "2026-03-29T13:29:30.038Z" }, ] +[[package]] +name = "pyjwt" +version = "2.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c2/27/a3b6e5bf6ff856d2509292e95c8f57f0df7017cf5394921fc4e4ef40308a/pyjwt-2.12.1.tar.gz", hash = "sha256:c74a7a2adf861c04d002db713dd85f84beb242228e671280bf709d765b03672b", size = 102564, upload-time = "2026-03-13T19:27:37.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/7a/8dd906bd22e79e47397a61742927f6747fe93242ef86645ee9092e610244/pyjwt-2.12.1-py3-none-any.whl", hash = "sha256:28ca37c070cad8ba8cd9790cd940535d40274d22f80ab87f3ac6a713e6e8454c", size = 29726, upload-time = "2026-03-13T19:27:35.677Z" }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + [[package]] name = "python-dateutil" version = "2.9.0.post0" @@ -1616,6 +1697,7 @@ name = "sheriff" version = "0.1.1" source = { editable = "." } dependencies = [ + { name = "globus-sdk" }, { name = "great-docs" }, { name = "ipykernel" }, { name = "jupyter" }, @@ -1628,6 +1710,7 @@ dependencies = [ [package.metadata] requires-dist = [ + { name = "globus-sdk", specifier = ">=4.5.0" }, { name = "great-docs", specifier = ">=0.10.0" }, { name = "ipykernel", specifier = ">=7.2.0" }, { name = "jupyter", specifier = ">=1.1.1" }, From 8ce66b626ed2d23dc8e9909b0114d90d19ba6797 Mon Sep 17 00:00:00 2001 From: TinasheMTapera Date: Sun, 10 May 2026 22:16:44 -0400 Subject: [PATCH 7/7] add globus-sdk dependency --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 30fa90a..c7fb979 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sheriff" -version = "0.1.1" +version = "0.1.2" description = "A simple tool to validate frontier citizenship" readme = "README.md" authors = [