orchestral-client 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of orchestral-client might be problematic. Click here for more details.

Files changed (67) hide show
  1. orchestral_client-0.1.0/PKG-INFO +120 -0
  2. orchestral_client-0.1.0/docs/quickstart.md +88 -0
  3. orchestral_client-0.1.0/pyproject.toml +67 -0
  4. orchestral_client-0.1.0/setup.cfg +4 -0
  5. orchestral_client-0.1.0/setup.py +65 -0
  6. orchestral_client-0.1.0/src/orchestral/__init__.py +108 -0
  7. orchestral_client-0.1.0/src/orchestral/client/__init__.py +39 -0
  8. orchestral_client-0.1.0/src/orchestral/client/_native/TAILSCALE-LICENSE.txt +28 -0
  9. orchestral_client-0.1.0/src/orchestral/client/_native/linux_amd64/orchestral-action-session-quic +0 -0
  10. orchestral_client-0.1.0/src/orchestral/client/_native/linux_amd64/tailscale +0 -0
  11. orchestral_client-0.1.0/src/orchestral/client/_native/linux_amd64/tailscaled +4 -0
  12. orchestral_client-0.1.0/src/orchestral/client/sdk.py +902 -0
  13. orchestral_client-0.1.0/src/orchestral/client/tailnet.py +197 -0
  14. orchestral_client-0.1.0/src/orchestral/client/tailnet_binaries.py +239 -0
  15. orchestral_client-0.1.0/src/orchestral/control/__init__.py +116 -0
  16. orchestral_client-0.1.0/src/orchestral/control/account_page.py +427 -0
  17. orchestral_client-0.1.0/src/orchestral/control/api_keys.py +82 -0
  18. orchestral_client-0.1.0/src/orchestral/control/auth.py +517 -0
  19. orchestral_client-0.1.0/src/orchestral/control/cloud.py +2839 -0
  20. orchestral_client-0.1.0/src/orchestral/control/db.py +276 -0
  21. orchestral_client-0.1.0/src/orchestral/control/http.py +516 -0
  22. orchestral_client-0.1.0/src/orchestral/control/huggingface.py +87 -0
  23. orchestral_client-0.1.0/src/orchestral/control/placement.py +858 -0
  24. orchestral_client-0.1.0/src/orchestral/control/telemetry.py +257 -0
  25. orchestral_client-0.1.0/src/orchestral/control/unkey.py +72 -0
  26. orchestral_client-0.1.0/src/orchestral/core/__init__.py +178 -0
  27. orchestral_client-0.1.0/src/orchestral/core/codecs.py +181 -0
  28. orchestral_client-0.1.0/src/orchestral/core/contracts.py +662 -0
  29. orchestral_client-0.1.0/src/orchestral/core/execution.py +149 -0
  30. orchestral_client-0.1.0/src/orchestral/core/grants.py +98 -0
  31. orchestral_client-0.1.0/src/orchestral/core/network.py +275 -0
  32. orchestral_client-0.1.0/src/orchestral/core/registry.py +174 -0
  33. orchestral_client-0.1.0/src/orchestral/core/secrets.py +13 -0
  34. orchestral_client-0.1.0/src/orchestral/core/serialization.py +49 -0
  35. orchestral_client-0.1.0/src/orchestral/core/signers.py +91 -0
  36. orchestral_client-0.1.0/src/orchestral/core/transport.py +333 -0
  37. orchestral_client-0.1.0/src/orchestral/core/wire.py +33 -0
  38. orchestral_client-0.1.0/src/orchestral/entrypoint.sh +20 -0
  39. orchestral_client-0.1.0/src/orchestral/ops/__init__.py +44 -0
  40. orchestral_client-0.1.0/src/orchestral/ops/cli.py +777 -0
  41. orchestral_client-0.1.0/src/orchestral/ops/eval.py +202 -0
  42. orchestral_client-0.1.0/src/orchestral/ops/exp.py +655 -0
  43. orchestral_client-0.1.0/src/orchestral/ops/onboard.py +186 -0
  44. orchestral_client-0.1.0/src/orchestral/ops/profile.py +520 -0
  45. orchestral_client-0.1.0/src/orchestral/ops/quickstart_predict.py +58 -0
  46. orchestral_client-0.1.0/src/orchestral/plugins/__init__.py +101 -0
  47. orchestral_client-0.1.0/src/orchestral/plugins/accelerators.py +66 -0
  48. orchestral_client-0.1.0/src/orchestral/plugins/model_base.py +50 -0
  49. orchestral_client-0.1.0/src/orchestral/plugins/models.py +38 -0
  50. orchestral_client-0.1.0/src/orchestral/plugins/profiles.py +55 -0
  51. orchestral_client-0.1.0/src/orchestral/plugins/providers.py +803 -0
  52. orchestral_client-0.1.0/src/orchestral/plugins/simulators.py +181 -0
  53. orchestral_client-0.1.0/src/orchestral/plugins/solvers.py +272 -0
  54. orchestral_client-0.1.0/src/orchestral/runtime/__init__.py +84 -0
  55. orchestral_client-0.1.0/src/orchestral/runtime/cas.py +1022 -0
  56. orchestral_client-0.1.0/src/orchestral/runtime/catalog.py +16 -0
  57. orchestral_client-0.1.0/src/orchestral/runtime/checkpoints.py +54 -0
  58. orchestral_client-0.1.0/src/orchestral/runtime/kernels.py +1068 -0
  59. orchestral_client-0.1.0/src/orchestral/runtime/molmoact2_capture.py +201 -0
  60. orchestral_client-0.1.0/src/orchestral/runtime/serve.py +807 -0
  61. orchestral_client-0.1.0/src/orchestral/runtime/source_snapshot.py +238 -0
  62. orchestral_client-0.1.0/src/orchestral_client.egg-info/PKG-INFO +120 -0
  63. orchestral_client-0.1.0/src/orchestral_client.egg-info/SOURCES.txt +65 -0
  64. orchestral_client-0.1.0/src/orchestral_client.egg-info/dependency_links.txt +1 -0
  65. orchestral_client-0.1.0/src/orchestral_client.egg-info/entry_points.txt +3 -0
  66. orchestral_client-0.1.0/src/orchestral_client.egg-info/requires.txt +29 -0
  67. orchestral_client-0.1.0/src/orchestral_client.egg-info/top_level.txt +1 -0
@@ -0,0 +1,120 @@
1
+ Metadata-Version: 2.4
2
+ Name: orchestral-client
3
+ Version: 0.1.0
4
+ Summary: Orchestral Labs — Real-time robotics & VLA model platform
5
+ Requires-Python: >=3.11
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: numpy>=1.26
8
+ Requires-Dist: httpx>=0.27
9
+ Requires-Dist: msgpack>=1.0.5
10
+ Requires-Dist: cryptography>=42.0
11
+ Requires-Dist: PyJWT>=2.8
12
+ Requires-Dist: omegaconf>=2.3.0
13
+ Requires-Dist: aioquic>=1.2.0
14
+ Requires-Dist: opentelemetry-api>=1.27.0
15
+ Requires-Dist: opentelemetry-sdk>=1.27.0
16
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http>=1.27.0
17
+ Requires-Dist: av>=12.0
18
+ Requires-Dist: pillow>=10.0
19
+ Provides-Extra: cloud
20
+ Requires-Dist: boto3>=1.34; extra == "cloud"
21
+ Provides-Extra: exp
22
+ Requires-Dist: wandb>=0.18; extra == "exp"
23
+ Provides-Extra: benchmark
24
+ Requires-Dist: boto3>=1.34; extra == "benchmark"
25
+ Requires-Dist: wandb>=0.18; extra == "benchmark"
26
+ Provides-Extra: dev
27
+ Requires-Dist: pytest<9,>=8.0; extra == "dev"
28
+ Requires-Dist: ruff>=0.6; extra == "dev"
29
+ Requires-Dist: tach>=0.35; extra == "dev"
30
+ Requires-Dist: boto3>=1.34; extra == "dev"
31
+ Requires-Dist: wandb>=0.18; extra == "dev"
32
+
33
+ # Orchestral Quickstart
34
+
35
+ Install the client, sign in, enroll a robot, choose a model from the Models section in the sidebar, and predict an action chunk.
36
+
37
+ ## 1. Install and sign in
38
+
39
+ Create an environment and install the client:
40
+
41
+ ```text your computer
42
+ python3 -m venv .venv
43
+ source .venv/bin/activate
44
+ python -m pip install orchestral-client
45
+ ```
46
+
47
+ Sign in and confirm the active account:
48
+
49
+ ```bash your computer
50
+ orc login
51
+ orc whoami
52
+ ```
53
+
54
+ ## 2. Enroll the robot
55
+
56
+ Install the client on the robot computer:
57
+
58
+ ```text robot computer
59
+ python3 -m venv .venv
60
+ source .venv/bin/activate
61
+ python -m pip install orchestral-client
62
+ ```
63
+
64
+ Request enrollment from the robot computer. No user login is needed there. This command prints a short-lived code and waits while an organization administrator approves it:
65
+
66
+ ```bash robot computer
67
+ orc agent install --name robot-1
68
+ ```
69
+
70
+ From an organization administrator's signed-in computer, replace `CODE` with the code printed by the waiting command and approve it:
71
+
72
+ ```bash your computer
73
+ orc robot approve CODE
74
+ ```
75
+
76
+ The waiting command finishes on the robot computer and saves its robot-scoped credential for predictions.
77
+
78
+ Check that the robot is enrolled:
79
+
80
+ ```bash your computer
81
+ orc robot list
82
+ ```
83
+
84
+ ## 3. Choose and deploy a model
85
+
86
+ This walkthrough uses Pi 0.5. Inspect its checkpoint, import it, then deploy the imported model to the enrolled robot. Keep the `mdl_...` ID printed by import and the `dep_...` ID printed by deploy. Import waits for target preparation to finish before returning. To return while preparation continues, pass `--no-wait`; check progress with `orc model status MODEL_ID` or wait later with `orc model wait MODEL_ID`. For private or gated checkpoints, [connect your Hugging Face account](https://api.orchestrallabs.ai/account/huggingface) first and accept the model's access terms on Hugging Face.
87
+
88
+ ```text your computer
89
+ orc model inspect hf://npow/pi05-yam-red-cap-full-7500
90
+ orc model import hf://npow/pi05-yam-red-cap-full-7500
91
+ MODEL_ID=mdl_123456789abc
92
+ orc model deploy "$MODEL_ID" --robot robot-1 --wait
93
+ ```
94
+
95
+ Replace the example `mdl_...` value with the ID returned by import. Pi 0.5 expects `middle`, `left`, and `right` as RGB `uint8` frames of shape `(224, 224, 3)`, plus `state` as `float32` with shape `(7,)`; it returns `actions` with shape `(15, 7)`. See the [Pi 0.5 model guide](/models/pi05) for the full contract and an SDK example.
96
+
97
+ The downloaded prediction script reads the deployed model's input contract and creates Pi 0.5's three `(224, 224, 3)` RGB camera frames and `(7,)` state without requiring you to rename or reshape them.
98
+
99
+ ## 4. Predict an action chunk
100
+
101
+ On the robot computer, download `quickstart_predict.py` and run it with the deployment ID printed by the Pi 0.5 deploy command. It generates sample Pi 0.5 inputs with state values normalized to `[-1, 1]`.
102
+
103
+ ```text robot computer
104
+ wget -O quickstart_predict.py https://api.orchestrallabs.ai/quickstart_predict.py
105
+ DEPLOYMENT_ID=dep_123456789abc
106
+ python quickstart_predict.py "$DEPLOYMENT_ID"
107
+ ```
108
+
109
+ Set `DEPLOYMENT_ID` to the `dep_...` ID printed by the deploy command. The script reads the deployment's input contract and sends generated sample frames and state, so it can confirm prediction works before you connect `inputs` to your robot's cameras and state. Connect the script's `inputs` to those live sources for robot operation.
110
+
111
+ When OTLP is configured, the script prints the Tempo trace ID, whether Grafana returned the trace, and the p50 latency breakdown for encoding, wire time, decoding, queueing, inference, and total round trip.
112
+
113
+ ## 5. Stop the deployment
114
+
115
+ When finished, stop the deployment from your computer. Set `DEPLOYMENT_ID` to the ID from step 3:
116
+
117
+ ```text your computer
118
+ DEPLOYMENT_ID=dep_123456789abc
119
+ orc deployment stop "$DEPLOYMENT_ID"
120
+ ```
@@ -0,0 +1,88 @@
1
+ # Orchestral Quickstart
2
+
3
+ Install the client, sign in, enroll a robot, choose a model from the Models section in the sidebar, and predict an action chunk.
4
+
5
+ ## 1. Install and sign in
6
+
7
+ Create an environment and install the client:
8
+
9
+ ```text your computer
10
+ python3 -m venv .venv
11
+ source .venv/bin/activate
12
+ python -m pip install orchestral-client
13
+ ```
14
+
15
+ Sign in and confirm the active account:
16
+
17
+ ```bash your computer
18
+ orc login
19
+ orc whoami
20
+ ```
21
+
22
+ ## 2. Enroll the robot
23
+
24
+ Install the client on the robot computer:
25
+
26
+ ```text robot computer
27
+ python3 -m venv .venv
28
+ source .venv/bin/activate
29
+ python -m pip install orchestral-client
30
+ ```
31
+
32
+ Request enrollment from the robot computer. No user login is needed there. This command prints a short-lived code and waits while an organization administrator approves it:
33
+
34
+ ```bash robot computer
35
+ orc agent install --name robot-1
36
+ ```
37
+
38
+ From an organization administrator's signed-in computer, replace `CODE` with the code printed by the waiting command and approve it:
39
+
40
+ ```bash your computer
41
+ orc robot approve CODE
42
+ ```
43
+
44
+ The waiting command finishes on the robot computer and saves its robot-scoped credential for predictions.
45
+
46
+ Check that the robot is enrolled:
47
+
48
+ ```bash your computer
49
+ orc robot list
50
+ ```
51
+
52
+ ## 3. Choose and deploy a model
53
+
54
+ This walkthrough uses Pi 0.5. Inspect its checkpoint, import it, then deploy the imported model to the enrolled robot. Keep the `mdl_...` ID printed by import and the `dep_...` ID printed by deploy. Import waits for target preparation to finish before returning. To return while preparation continues, pass `--no-wait`; check progress with `orc model status MODEL_ID` or wait later with `orc model wait MODEL_ID`. For private or gated checkpoints, [connect your Hugging Face account](https://api.orchestrallabs.ai/account/huggingface) first and accept the model's access terms on Hugging Face.
55
+
56
+ ```text your computer
57
+ orc model inspect hf://npow/pi05-yam-red-cap-full-7500
58
+ orc model import hf://npow/pi05-yam-red-cap-full-7500
59
+ MODEL_ID=mdl_123456789abc
60
+ orc model deploy "$MODEL_ID" --robot robot-1 --wait
61
+ ```
62
+
63
+ Replace the example `mdl_...` value with the ID returned by import. Pi 0.5 expects `middle`, `left`, and `right` as RGB `uint8` frames of shape `(224, 224, 3)`, plus `state` as `float32` with shape `(7,)`; it returns `actions` with shape `(15, 7)`. See the [Pi 0.5 model guide](/models/pi05) for the full contract and an SDK example.
64
+
65
+ The downloaded prediction script reads the deployed model's input contract and creates Pi 0.5's three `(224, 224, 3)` RGB camera frames and `(7,)` state without requiring you to rename or reshape them.
66
+
67
+ ## 4. Predict an action chunk
68
+
69
+ On the robot computer, download `quickstart_predict.py` and run it with the deployment ID printed by the Pi 0.5 deploy command. It generates sample Pi 0.5 inputs with state values normalized to `[-1, 1]`.
70
+
71
+ ```text robot computer
72
+ wget -O quickstart_predict.py https://api.orchestrallabs.ai/quickstart_predict.py
73
+ DEPLOYMENT_ID=dep_123456789abc
74
+ python quickstart_predict.py "$DEPLOYMENT_ID"
75
+ ```
76
+
77
+ Set `DEPLOYMENT_ID` to the `dep_...` ID printed by the deploy command. The script reads the deployment's input contract and sends generated sample frames and state, so it can confirm prediction works before you connect `inputs` to your robot's cameras and state. Connect the script's `inputs` to those live sources for robot operation.
78
+
79
+ When OTLP is configured, the script prints the Tempo trace ID, whether Grafana returned the trace, and the p50 latency breakdown for encoding, wire time, decoding, queueing, inference, and total round trip.
80
+
81
+ ## 5. Stop the deployment
82
+
83
+ When finished, stop the deployment from your computer. Set `DEPLOYMENT_ID` to the ID from step 3:
84
+
85
+ ```text your computer
86
+ DEPLOYMENT_ID=dep_123456789abc
87
+ orc deployment stop "$DEPLOYMENT_ID"
88
+ ```
@@ -0,0 +1,67 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68.0", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "orchestral-client"
7
+ version = "0.1.0"
8
+ description = "Orchestral Labs — Real-time robotics & VLA model platform"
9
+ readme = "docs/quickstart.md"
10
+ requires-python = ">=3.11"
11
+ dependencies = [
12
+ "numpy>=1.26",
13
+ "httpx>=0.27",
14
+ "msgpack>=1.0.5",
15
+ "cryptography>=42.0",
16
+ "PyJWT>=2.8",
17
+ "omegaconf>=2.3.0",
18
+ "aioquic>=1.2.0",
19
+ "opentelemetry-api>=1.27.0",
20
+ "opentelemetry-sdk>=1.27.0",
21
+ "opentelemetry-exporter-otlp-proto-http>=1.27.0",
22
+ # Session.predict() defaults to H.264 for camera inputs.
23
+ "av>=12.0",
24
+ "pillow>=10.0",
25
+ ]
26
+
27
+ [project.optional-dependencies]
28
+ cloud = ["boto3>=1.34"]
29
+ exp = ["wandb>=0.18"]
30
+ benchmark = ["boto3>=1.34", "wandb>=0.18"]
31
+ dev = ["pytest>=8.0,<9", "ruff>=0.6", "tach>=0.35", "boto3>=1.34", "wandb>=0.18"]
32
+
33
+ [project.scripts]
34
+ orc = "orchestral.ops.cli:main"
35
+ orchestral = "orchestral.ops.cli:main"
36
+
37
+ [tool.setuptools.packages.find]
38
+ where = ["src"]
39
+ include = ["orchestral*"]
40
+
41
+ [tool.setuptools]
42
+ include-package-data = true
43
+
44
+ [tool.setuptools.package-data]
45
+ orchestral = [
46
+ "entrypoint.sh",
47
+ "client/_native/TAILSCALE-LICENSE.txt",
48
+ "client/_native/*/tailscaled",
49
+ "client/_native/*/tailscale",
50
+ "client/_native/*/orchestral-action-session-quic",
51
+ ]
52
+
53
+ [tool.pytest.ini_options]
54
+ testpaths = ["tests"]
55
+ pythonpath = ["src"]
56
+ markers = [
57
+ "e2e: end-to-end journey or live infrastructure test; run on demand",
58
+ "gcp_e2e: opt-in real GCP/GKE quickstart and prediction test",
59
+ ]
60
+
61
+ [tool.ruff]
62
+ line-length = 100
63
+ target-version = "py311"
64
+
65
+ [tool.ruff.lint]
66
+ select = ["E", "F", "I", "UP", "B"]
67
+ ignore = ["E501"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,65 @@
1
+ """Setuptools wheel tags for platform-specific native client payloads."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import sys
7
+ from pathlib import Path
8
+
9
+ sys.path.insert(0, "src")
10
+
11
+ from setuptools import Distribution, setup
12
+ from wheel.bdist_wheel import bdist_wheel
13
+
14
+
15
+ class NativeClientDistribution(Distribution):
16
+ def has_ext_modules(self) -> bool:
17
+ return True
18
+
19
+
20
+ class NativeClientWheel(bdist_wheel):
21
+ def finalize_options(self) -> None:
22
+ super().finalize_options()
23
+ tag = os.environ.get("ORC_WHEEL_PLATFORM_TAG")
24
+ if not tag:
25
+ # Setuptools asks bdist_wheel for metadata while preparing editable installs.
26
+ # Keep that path lightweight; enforce the platform payload when a wheel is run.
27
+ return
28
+ target = {
29
+ "manylinux_2_28_x86_64": "linux_amd64",
30
+ "manylinux_2_28_aarch64": "linux_arm64",
31
+ "macosx_13_0_arm64": "macos_arm64",
32
+ }.get(tag)
33
+ if target is None:
34
+ raise RuntimeError(f"unsupported orchestral-client wheel platform tag {tag!r}")
35
+ native_directory = Path("src/orchestral/client/_native") / target
36
+ required = (
37
+ "tailscaled",
38
+ "tailscale",
39
+ "orchestral-action-session-quic",
40
+ )
41
+ missing = [name for name in required if not (native_directory / name).is_file()]
42
+ if missing:
43
+ raise RuntimeError(
44
+ f"platform wheel payload is incomplete in {native_directory}: {', '.join(missing)}"
45
+ )
46
+ self.root_is_pure = False
47
+ self.plat_name = tag
48
+ self.plat_name_supplied = True
49
+
50
+ def get_tag(self) -> tuple[str, str, str]:
51
+ tag = os.environ.get("ORC_WHEEL_PLATFORM_TAG")
52
+ if tag is None:
53
+ return super().get_tag()
54
+ return "py3", "none", tag
55
+
56
+ def run(self) -> None:
57
+ if not os.environ.get("ORC_WHEEL_PLATFORM_TAG"):
58
+ raise RuntimeError(
59
+ "set ORC_WHEEL_PLATFORM_TAG and run `make client-native-binaries` "
60
+ "before building an orchestral-client wheel"
61
+ )
62
+ super().run()
63
+
64
+
65
+ setup(distclass=NativeClientDistribution, cmdclass={"bdist_wheel": NativeClientWheel})
@@ -0,0 +1,108 @@
1
+ """Orchestral Labs — Real-time robotics & VLA platform.
2
+
3
+ Lazy top-level exports keep `import orchestral` under 5ms.
4
+ Domain packages:
5
+ - `orchestral.core`: Contracts, plugin registry, and wire protocol (`contracts`, `registry`, `wire`)
6
+ - `orchestral.runtime`: Worker data-plane runtime, CAS hydration & custom kernels (`serve`, `cas`, `kernels`)
7
+ - `orchestral.control`: Cloud control plane, placement engine, auth/RBAC, state store & telemetry
8
+ - `orchestral.plugins`: Hardware accelerators, profiles, solvers, providers, models & simulators
9
+ - `orchestral.client`: Customer Python SDK (`sdk`)
10
+ - `orchestral.ops`: Operator CLI, model onboarding, benchmarks & closed-loop evaluation
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ from typing import TYPE_CHECKING, Any
16
+
17
+ __version__ = "0.1.0"
18
+
19
+ __all__ = [
20
+ "ConnectGrant",
21
+ "Deployment",
22
+ "IOSpec",
23
+ "Orchestral",
24
+ "PluginKind",
25
+ "SensorModality",
26
+ "SensorSpec",
27
+ "Session",
28
+ "StepTimings",
29
+ "client",
30
+ "connect",
31
+ "control",
32
+ "core",
33
+ "deploy",
34
+ "model",
35
+ "offers",
36
+ "ops",
37
+ "plugins",
38
+ "register",
39
+ "runtime",
40
+ "session",
41
+ "simulator",
42
+ "usage",
43
+ "wire",
44
+ ]
45
+
46
+ if TYPE_CHECKING:
47
+ from orchestral import client, control, core, ops, plugins, runtime
48
+ from orchestral.client.sdk import (
49
+ Deployment,
50
+ Orchestral,
51
+ Session,
52
+ connect,
53
+ deploy,
54
+ offers,
55
+ session,
56
+ usage,
57
+ )
58
+ from orchestral.core import wire
59
+ from orchestral.core.contracts import (
60
+ IOSpec,
61
+ PluginKind,
62
+ SensorModality,
63
+ SensorSpec,
64
+ StepTimings,
65
+ )
66
+ from orchestral.core.grants import ConnectGrant
67
+ from orchestral.core.registry import model, register, simulator
68
+
69
+
70
+ def __getattr__(name: str) -> Any:
71
+ if name in {"core", "runtime", "control", "plugins", "client", "ops"}:
72
+ import importlib
73
+
74
+ return importlib.import_module(f"orchestral.{name}")
75
+ if name == "wire":
76
+ from orchestral.core import wire
77
+
78
+ return wire
79
+ if name in {"register", "model", "simulator"}:
80
+ from orchestral.core import registry
81
+
82
+ return getattr(registry, name)
83
+ if name in {"PluginKind", "SensorModality", "SensorSpec"}:
84
+ from orchestral.core import contracts
85
+
86
+ return getattr(contracts, name)
87
+ if name == "ConnectGrant":
88
+ from orchestral.core.grants import ConnectGrant
89
+
90
+ return ConnectGrant
91
+ if name in {"IOSpec", "StepTimings"}:
92
+ from orchestral.core import contracts
93
+
94
+ return getattr(contracts, name)
95
+ if name in {
96
+ "Orchestral",
97
+ "Deployment",
98
+ "Session",
99
+ "connect",
100
+ "deploy",
101
+ "session",
102
+ "offers",
103
+ "usage",
104
+ }:
105
+ from orchestral.client import sdk
106
+
107
+ return getattr(sdk, name)
108
+ raise AttributeError(f"module 'orchestral' has no attribute {name!r}")
@@ -0,0 +1,39 @@
1
+ """Customer Python SDK (`orchestral.client`)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from orchestral.client.sdk import (
6
+ Deployment,
7
+ InputFeature,
8
+ Orchestral,
9
+ PolicyHandle,
10
+ PredictionResult,
11
+ Session,
12
+ clear_credentials,
13
+ connect,
14
+ deploy,
15
+ get_default_cloud,
16
+ load_credentials,
17
+ offers,
18
+ save_credentials,
19
+ session,
20
+ usage,
21
+ )
22
+
23
+ __all__ = [
24
+ "Deployment",
25
+ "InputFeature",
26
+ "Orchestral",
27
+ "PolicyHandle",
28
+ "PredictionResult",
29
+ "Session",
30
+ "clear_credentials",
31
+ "connect",
32
+ "deploy",
33
+ "get_default_cloud",
34
+ "load_credentials",
35
+ "offers",
36
+ "save_credentials",
37
+ "session",
38
+ "usage",
39
+ ]
@@ -0,0 +1,28 @@
1
+ BSD 3-Clause License
2
+
3
+ Copyright (c) 2020 Tailscale Inc & contributors.
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ 3. Neither the name of the copyright holder nor the names of its
16
+ contributors may be used to endorse or promote products derived from
17
+ this software without specific prior written permission.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,4 @@
1
+ [diffend] Oversized file quarantined before diffing.
2
+ name: orchestral_client-0.1.0/src/orchestral/client/_native/linux_amd64/tailscaled
3
+ size: 41151287 bytes
4
+ sha256: f27f3746fa9a4807749bc868938949d328f8c38890ace0906966eb3f655ab240