kscale 0.1.4__tar.gz → 0.2.0__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. {kscale-0.1.4/kscale.egg-info → kscale-0.2.0}/PKG-INFO +1 -1
  2. {kscale-0.1.4 → kscale-0.2.0}/kscale/__init__.py +1 -1
  3. {kscale-0.1.4 → kscale-0.2.0}/kscale/conf.py +1 -1
  4. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/clients/base.py +12 -0
  5. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/clients/robot_class.py +0 -5
  6. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/utils.py +1 -1
  7. {kscale-0.1.4 → kscale-0.2.0/kscale.egg-info}/PKG-INFO +1 -1
  8. {kscale-0.1.4 → kscale-0.2.0}/LICENSE +0 -0
  9. {kscale-0.1.4 → kscale-0.2.0}/MANIFEST.in +0 -0
  10. {kscale-0.1.4 → kscale-0.2.0}/README.md +0 -0
  11. {kscale-0.1.4 → kscale-0.2.0}/kscale/api.py +0 -0
  12. {kscale-0.1.4 → kscale-0.2.0}/kscale/artifacts/__init__.py +0 -0
  13. {kscale-0.1.4 → kscale-0.2.0}/kscale/artifacts/plane.obj +0 -0
  14. {kscale-0.1.4 → kscale-0.2.0}/kscale/artifacts/plane.urdf +0 -0
  15. {kscale-0.1.4 → kscale-0.2.0}/kscale/cli.py +0 -0
  16. {kscale-0.1.4 → kscale-0.2.0}/kscale/py.typed +0 -0
  17. {kscale-0.1.4 → kscale-0.2.0}/kscale/requirements-dev.txt +0 -0
  18. {kscale-0.1.4 → kscale-0.2.0}/kscale/requirements.txt +0 -0
  19. {kscale-0.1.4 → kscale-0.2.0}/kscale/utils/__init__.py +0 -0
  20. {kscale-0.1.4 → kscale-0.2.0}/kscale/utils/api_base.py +0 -0
  21. {kscale-0.1.4 → kscale-0.2.0}/kscale/utils/checksum.py +0 -0
  22. {kscale-0.1.4 → kscale-0.2.0}/kscale/utils/cli.py +0 -0
  23. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/__init__.py +0 -0
  24. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/api.py +0 -0
  25. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/cli/__init__.py +0 -0
  26. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/cli/robot.py +0 -0
  27. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/cli/robot_class.py +0 -0
  28. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/cli/token.py +0 -0
  29. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/cli/user.py +0 -0
  30. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/clients/__init__.py +0 -0
  31. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/clients/client.py +0 -0
  32. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/clients/robot.py +0 -0
  33. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/clients/user.py +0 -0
  34. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/gen/__init__.py +0 -0
  35. {kscale-0.1.4 → kscale-0.2.0}/kscale/web/gen/api.py +0 -0
  36. {kscale-0.1.4 → kscale-0.2.0}/kscale.egg-info/SOURCES.txt +0 -0
  37. {kscale-0.1.4 → kscale-0.2.0}/kscale.egg-info/dependency_links.txt +0 -0
  38. {kscale-0.1.4 → kscale-0.2.0}/kscale.egg-info/entry_points.txt +0 -0
  39. {kscale-0.1.4 → kscale-0.2.0}/kscale.egg-info/not-zip-safe +0 -0
  40. {kscale-0.1.4 → kscale-0.2.0}/kscale.egg-info/requires.txt +0 -0
  41. {kscale-0.1.4 → kscale-0.2.0}/kscale.egg-info/top_level.txt +0 -0
  42. {kscale-0.1.4 → kscale-0.2.0}/pyproject.toml +0 -0
  43. {kscale-0.1.4 → kscale-0.2.0}/setup.cfg +0 -0
  44. {kscale-0.1.4 → kscale-0.2.0}/setup.py +0 -0
  45. {kscale-0.1.4 → kscale-0.2.0}/tests/test_dummy.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: kscale
3
- Version: 0.1.4
3
+ Version: 0.2.0
4
4
  Summary: The kscale project
5
5
  Home-page: https://github.com/kscalelabs/kscale
6
6
  Author: Benjamin Bolte
@@ -1,6 +1,6 @@
1
1
  """Defines the common interface for the K-Scale Python API."""
2
2
 
3
- __version__ = "0.1.4"
3
+ __version__ = "0.2.0"
4
4
 
5
5
  from pathlib import Path
6
6
 
@@ -21,7 +21,7 @@ def get_path() -> Path:
21
21
  @dataclass
22
22
  class WWWSettings:
23
23
  api_root: str = field(default=DEFAULT_API_ROOT)
24
- cache_dir: str = field(default=II("oc.env:KSCALE_CACHE_DIR,'~/.kscale/cache/'"))
24
+ base_dir: str = field(default=II("oc.env:KSCALE_DIR,'~/.kscale/'"))
25
25
  refresh_interval_minutes: int = field(default=60 * 24)
26
26
 
27
27
 
@@ -206,6 +206,18 @@ class BaseClient:
206
206
  Returns:
207
207
  A bearer token to use with the K-Scale WWW API.
208
208
  """
209
+ # Check if we are in a headless environment.
210
+ error_message = (
211
+ "Cannot perform browser-based authentication in a headless environment. "
212
+ "Please use 'kscale user key' to generate an API key locally and set "
213
+ "the KSCALE_API_KEY environment variable instead."
214
+ )
215
+ try:
216
+ if not webbrowser.get().name != "null":
217
+ raise RuntimeError(error_message)
218
+ except webbrowser.Error:
219
+ raise RuntimeError(error_message)
220
+
209
221
  oicd_info = await self._get_oicd_info()
210
222
  metadata = await self._get_oicd_metadata()
211
223
  auth_endpoint = metadata["authorization_endpoint"]
@@ -3,7 +3,6 @@
3
3
  import hashlib
4
4
  import json
5
5
  import logging
6
- import tarfile
7
6
  from pathlib import Path
8
7
 
9
8
  import httpx
@@ -133,10 +132,6 @@ class RobotClassClient(BaseClient):
133
132
  if hash_value_hex != expected_hash:
134
133
  raise ValueError(f"MD5 hash mismatch: {hash_value_hex} != {expected_hash}")
135
134
 
136
- logger.info("Unpacking downloaded file")
137
- with tarfile.open(cache_path, "r:gz") as tar:
138
- tar.extractall(path=cache_path.parent)
139
-
140
135
  logger.info("Updating downloaded file information")
141
136
  info = {"md5_hash": hash_value_hex}
142
137
  with open(cache_path_info, "w") as f:
@@ -15,7 +15,7 @@ DEFAULT_UPLOAD_TIMEOUT = 300.0 # 5 minutes
15
15
  @functools.lru_cache
16
16
  def get_kscale_dir() -> Path:
17
17
  """Returns the cache directory for artifacts."""
18
- return Path(Settings.load().www.cache_dir).expanduser().resolve()
18
+ return Path(Settings.load().www.base_dir).expanduser().resolve()
19
19
 
20
20
 
21
21
  def get_auth_dir() -> Path:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: kscale
3
- Version: 0.1.4
3
+ Version: 0.2.0
4
4
  Summary: The kscale project
5
5
  Home-page: https://github.com/kscalelabs/kscale
6
6
  Author: Benjamin Bolte
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes