latch_cli.utils package#
Submodules#
latch_cli.utils.ldata module#
- class latch_cli.utils.ldata.LDataNodeType(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]#
-
- account_root = 'account_root'#
- dir = 'dir'#
- obj = 'obj'#
- mount = 'mount'#
- link = 'link'#
- class latch_cli.utils.ldata.FinalLinkTargetPayload[source]#
Bases:
TypedDict
- ldataObjectMeta: LdataObjectMeta | None#
- class latch_cli.utils.ldata.LdataNodePayload[source]#
Bases:
TypedDict
- finalLinkTarget: FinalLinkTargetPayload#
- class latch_cli.utils.ldata.LdataResolvePathToNodePayload[source]#
Bases:
TypedDict
- ldataNode: LdataNodePayload#
- class latch_cli.utils.ldata.NodeData(id: str, name: str, type: latch_cli.utils.ldata.LDataNodeType, is_parent: bool, modify_time: datetime.datetime | None)[source]#
Bases:
object
- type: LDataNodeType#
- class latch_cli.utils.ldata.GetNodeDataResult(acc_id: str, data: Dict[str, latch_cli.utils.ldata.NodeData])[source]#
Bases:
object
- latch_cli.utils.ldata.get_node_data(*remote_paths: str, allow_resolve_to_parent: bool = False) GetNodeDataResult [source]#
- class latch_cli.utils.ldata.ChildLdataTreeEdges[source]#
Bases:
TypedDict
- nodes: List[ChildLdataTreeEdgesNode]#
- class latch_cli.utils.ldata.LdataResolvePathData[source]#
Bases:
TypedDict
- childLdataTreeEdges: ChildLdataTreeEdges#
- class latch_cli.utils.ldata.TeamMembersByUserId[source]#
Bases:
TypedDict
- nodes: List[TeamMembersByUserIdNode]#
- class latch_cli.utils.ldata.UserInfoByAccountId[source]#
Bases:
TypedDict
- teamMembersByUserId: TeamMembersByUserId#
- teamInfosByOwnerId: TeamInfosByOwnerId#
- class latch_cli.utils.ldata.LdataS3MountConfiguratorRolesByAccountIdNode[source]#
Bases:
TypedDict
- ldataS3MountAccessProvensByGeneratedUsing: LdataS3MountAccessProvensByGeneratedUsing#
- class latch_cli.utils.ldata.AccountInfoCurrent[source]#
Bases:
TypedDict
- userInfoByAccountId: UserInfoByAccountId#
- ldataS3MountConfiguratorRolesByAccountId: LdataS3MountConfiguratorRolesByAccountId#
- class latch_cli.utils.ldata.InnerFinalLinkTarget[source]#
Bases:
TypedDict
- ldataObjectMeta: LdataObjectMeta | None#
- class latch_cli.utils.ldata.NodeDescendantData[source]#
Bases:
TypedDict
- finalLinkTarget: InnerFinalLinkTarget#
- class latch_cli.utils.ldata.OuterFinalLinkTarget[source]#
Bases:
TypedDict
- descendants: Descendants#
- class latch_cli.utils.ldata.NodeDescendantsLdataResolvePathData[source]#
Bases:
TypedDict
- finalLinkTarget: OuterFinalLinkTarget#
- class latch_cli.utils.ldata.NodeDescendant(id: str, modify_time: datetime.datetime | None)[source]#
Bases:
object
- class latch_cli.utils.ldata.GetNodeDescendantsResult(nodes: Dict[str, latch_cli.utils.ldata.NodeDescendant])[source]#
Bases:
object
- nodes: Dict[str, NodeDescendant]#
- latch_cli.utils.ldata.get_node_descendants(path: str) GetNodeDescendantsResult [source]#
latch_cli.utils.path module#
Module contents#
Utility functions for services.
- latch_cli.utils.urljoins(*args: str, dir: bool = False) str [source]#
Construct a URL by appending paths
Paths are always joined, with extra /`s added if missing. Does not allow overriding basenames as opposed to normal `urljoin. Whether the final path ends in a / is still significant and will be preserved in the output
>>> urljoin("latch:///directory/", "another_directory") latch:///directory/another_directory >>> # No slash means "another_directory" is treated as a filename >>> urljoin(urljoin("latch:///directory/", "another_directory"), "file") latch:///directory/file >>> # Unintentionally overrode the filename >>> urljoins("latch:///directory/", "another_directory", "file") latch:///directory/another_directory/file >>> # Joined paths as expected
- Parameters:
args – Paths to join
dir – If true, ensure the output ends with a /
- exception latch_cli.utils.AuthenticationError[source]#
Bases:
RuntimeError
- latch_cli.utils.retrieve_or_login() str [source]#
Returns a valid JWT to access Latch, prompting a login flow if needed.
- Returns:
A JWT
- latch_cli.utils.sub_from_jwt(token: str) str [source]#
Extract a user sub (UUID) from a JWT minted by auth0.
- Parameters:
token – JWT
- Returns:
The user sub contained within the JWT.
- latch_cli.utils.account_id_from_token(token: str) str [source]#
Exchanges a valid JWT for a Latch account ID.
Latch account IDs are needed for any user-specific request, eg. register workflows or copy files to Latch.
- Parameters:
token – JWT
- Returns:
A Latch account ID (UUID).
- class latch_cli.utils.TemporarySSHCredentials(ssh_key_path: Path)[source]#
Bases:
object
- property public_key#
- property private_key#