reflex-hosting-cli 0.1.73a1__tar.gz → 0.2.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.
Files changed (37) hide show
  1. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/CHANGELOG.md +11 -3
  2. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/PKG-INFO +9 -3
  3. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/pyproject.toml +14 -5
  4. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/dependency.py +2 -2
  5. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/apps.py +3 -3
  6. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/gcp.py +2 -2
  7. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/.gitignore +0 -0
  8. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/README.md +0 -0
  9. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/news/.gitkeep +0 -0
  10. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/__init__.py +0 -0
  11. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/cli.py +0 -0
  12. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/constants/__init__.py +0 -0
  13. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/constants/base.py +0 -0
  14. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/constants/compiler.py +0 -0
  15. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/constants/hosting.py +0 -0
  16. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/constants/log_level.py +0 -0
  17. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/core/__init__.py +0 -0
  18. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/core/config.py +0 -0
  19. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/deployments.py +0 -0
  20. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/__init__.py +0 -0
  21. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/cli_options.py +0 -0
  22. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/console.py +0 -0
  23. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/exceptions.py +0 -0
  24. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/hosting.py +0 -0
  25. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/log.py +0 -0
  26. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/utils/output.py +0 -0
  27. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/__init__.py +0 -0
  28. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/auth.py +0 -0
  29. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/cli.py +0 -0
  30. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/deploy.py +0 -0
  31. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/deployments.py +0 -0
  32. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/project.py +0 -0
  33. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/providers.py +0 -0
  34. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/scan.py +0 -0
  35. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/secrets.py +0 -0
  36. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/utils.py +0 -0
  37. {reflex_hosting_cli-0.1.73a1 → reflex_hosting_cli-0.2.0}/src/reflex_cli/v2/vmtypes_regions.py +0 -0
@@ -1,8 +1,16 @@
1
- ## v0.1.73a1 (2026-10-05)
1
+ ## v0.2.0 (2026-10-08)
2
2
 
3
3
  ### Breaking Changes
4
4
 
5
- - Some `reflex cloud` commands changed what they report. A refused request now exits non-zero rather than printing a `"... failed: ..."` line and exiting 0, and `--json` writes no document on that path; `apps stop`, `apps start` and `apps delete` are the ones most likely to be scripted against, and they now report their own outcome rather than echoing the server's sentence. `vmtypes` and `regions` answered a failed request with an empty listing and exit 0, which a script could not tell from a control plane that offers neither; they exit non-zero now. `apps history --json` replaces `hostname` with the deployment's `url`, reports `vm type` as the machine's name rather than an object, and reports `timestamp` as an ISO 8601 string with an offset; `apps inspect --json` drops `hostname` from `latest_deployment` the same way, the URL carrying it already. `create-token --json` replaces `expires_in_days` with `expires_at`, an ISO 8601 string or `null`, carrying the expiry the server applied rather than the duration that was asked for. `apps logs` drops its inert `--cursor` option and its `--json` document returns every line in the window rather than one page. `project role-permissions` lists permission names rather than objects. `reflex deploy` now requires a control plane that signs upload URLs; the multipart fallback for older ones is gone, and with it the "payload is too large (over 100MB)" hint, which only that path could produce. And `apps status --watch --json` reports `"success": null` when the watch stopped before the deployment ended -- it is still running, and the command did not see how it finished -- rather than answering `true` or `false` for something it does not know. ([#7207](https://github.com/reflex-dev/reflex/issues/7207))
5
+ - Some `reflex cloud` commands changed what they report: ([#7207](https://github.com/reflex-dev/reflex/issues/7207))
6
+ - A refused request exits non-zero instead of printing a `"... failed: ..."` line and exiting 0, and `--json` writes no document. This includes `vmtypes` and `regions`, which answered a failed request with an empty listing, and `apps stop`, `apps start` and `apps delete`, which now report their own outcome rather than echoing the server's message.
7
+ - `apps history --json` replaces `hostname` with the deployment's `url`, reports `vm type` as the machine's name rather than an object, and reports `timestamp` as an ISO 8601 string with an offset. `apps inspect --json` drops `hostname` from `latest_deployment`.
8
+ - `create-token --json` replaces `expires_in_days` with `expires_at`, an ISO 8601 string or `null`, carrying the expiry the server applied.
9
+ - `apps logs` drops its unused `--cursor` option, and its `--json` document returns every line in the window rather than one page.
10
+ - `apps status --watch --json` reports `"success": null` when the watch stopped before the deployment finished.
11
+ - `project role-permissions` lists permission names rather than objects.
12
+ - `reflex deploy` requires a control plane that signs upload URLs; the multipart upload fallback for older ones, and its "payload is too large (over 100MB)" hint, are gone.
13
+ - Require Python 3.11 or newer; Python 3.10 is no longer supported. ([#7449](https://github.com/reflex-dev/reflex/issues/7449))
6
14
 
7
15
  ### Bug Fixes
8
16
 
@@ -17,7 +25,7 @@
17
25
 
18
26
  ### Miscellaneous
19
27
 
20
- - `reflex-hosting-cli` now talks to Reflex Build through `reflex-build-sdk` rather than its own HTTP layer, so every command shares the SDK's retries, timeouts and typed errors. While the SDK is pre-1.0, where any release may change its API, the requirement is capped to the single patch line the CLI was built against, so upgrade `reflex-hosting-cli` to move to a newer SDK rather than upgrading the SDK on its own. ([#7207](https://github.com/reflex-dev/reflex/issues/7207))
28
+ - `reflex-hosting-cli` now talks to Reflex Build through `reflex-build-sdk`, so every command shares the SDK's retries, timeouts and typed errors. While the SDK is pre-1.0, the CLI pins it to a single patch line, so upgrade `reflex-hosting-cli` to move to a newer SDK rather than upgrading the SDK on its own. ([#7207](https://github.com/reflex-dev/reflex/issues/7207))
21
29
 
22
30
 
23
31
  ## v0.1.72 (2026-09-11)
@@ -1,16 +1,22 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: reflex-hosting-cli
3
- Version: 0.1.73a1
3
+ Version: 0.2.0
4
4
  Summary: Reflex Hosting CLI
5
5
  Author-email: Nikhil Rao <nikhil@reflex.dev>, Alek Petuskey <alek@reflex.dev>
6
6
  Maintainer-email: Simon Young <simon@reflex.dev>, Khaleel Al-Adhami <khaleel@reflex.dev>
7
7
  License: Apache-2.0
8
- Requires-Python: >=3.10
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Programming Language :: Python :: 3.15
14
+ Requires-Python: >=3.11
9
15
  Requires-Dist: click>=8.2
10
16
  Requires-Dist: httpx<1.0,>=0.25.1
11
17
  Requires-Dist: packaging>=24.2
12
18
  Requires-Dist: platformdirs<5.0,>=3.10.0
13
- Requires-Dist: reflex-build-sdk[httpx]!=0.0.6,<0.0.6.post,>=0.0.5
19
+ Requires-Dist: reflex-build-sdk[httpx]!=0.1.1,<0.1.1.post,>=0.1.0
14
20
  Requires-Dist: rich<16,>=13
15
21
  Description-Content-Type: text/markdown
16
22
 
@@ -12,7 +12,15 @@ maintainers = [
12
12
  { name = "Simon Young", email = "simon@reflex.dev" },
13
13
  { name = "Khaleel Al-Adhami", email = "khaleel@reflex.dev" },
14
14
  ]
15
- requires-python = ">=3.10"
15
+ requires-python = ">=3.11"
16
+ classifiers = [
17
+ "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.11",
19
+ "Programming Language :: Python :: 3.12",
20
+ "Programming Language :: Python :: 3.13",
21
+ "Programming Language :: Python :: 3.14",
22
+ "Programming Language :: Python :: 3.15",
23
+ ]
16
24
  dependencies = [
17
25
  "click >=8.2",
18
26
  # Imported directly by `check_version`, so it is declared here rather than
@@ -23,10 +31,11 @@ dependencies = [
23
31
  # The SDK ships no HTTP library of its own; [httpx] points it at the one
24
32
  # `check_version` already pulls in, so the extra costs nothing to install.
25
33
  # The SDK is pre-1.0, so every release may break its API: cap at the patch
26
- # and raise all three bounds when adopting a new one. The workspace builds
27
- # the SDK as a dev release of the next patch (``0.0.6.devN``), which
28
- # ``<0.0.6`` would exclude; ``!=0.0.6`` keeps that release itself out.
29
- "reflex-build-sdk[httpx] >=0.0.5,<0.0.6.post,!=0.0.6",
34
+ # and raise all three bounds when adopting a new one. The floor admits the
35
+ # workspace's dev build until the 0.1.0 alpha publishes and materialization
36
+ # lifts it; the cap admits 0.1.0 and the ``0.1.1.devN`` builds that follow
37
+ # its tag, but not 0.1.1 itself.
38
+ "reflex-build-sdk[httpx] >=0.1.0,<0.1.1.post,!=0.1.1",
30
39
  "rich >=13,<16",
31
40
  ]
32
41
 
@@ -34,12 +34,12 @@ def detect_encoding(filename: Path) -> str | None:
34
34
  raise FileNotFoundError
35
35
 
36
36
  for encoding in [
37
- None if sys.version_info < (3, 10) else io.text_encoding(None),
37
+ io.text_encoding(None),
38
38
  "utf-8",
39
39
  ]:
40
40
  try:
41
41
  filename.read_text(encoding)
42
- except UnicodeDecodeError: # noqa: PERF203
42
+ except UnicodeDecodeError:
43
43
  continue
44
44
  except Exception:
45
45
  return None
@@ -710,14 +710,14 @@ def app_logs(
710
710
  since: datetime.datetime | None = None
711
711
  until: datetime.datetime | None = None
712
712
  if offset:
713
- until = datetime.datetime.now(datetime.timezone.utc)
713
+ until = datetime.datetime.now(datetime.UTC)
714
714
  since = until - datetime.timedelta(seconds=offset)
715
715
  elif start or end:
716
716
  if not (start and end):
717
717
  logger.error("must provide both start and end")
718
718
  raise click.exceptions.Exit(1)
719
- since = datetime.datetime.fromtimestamp(start, datetime.timezone.utc)
720
- until = datetime.datetime.fromtimestamp(end, datetime.timezone.utc)
719
+ since = datetime.datetime.fromtimestamp(start, datetime.UTC)
720
+ until = datetime.datetime.fromtimestamp(end, datetime.UTC)
721
721
  # Asked for no window at all: send none, so the span is the API's own
722
722
  # rather than one this command invented. A window of its own would
723
723
  # report nothing for an app whose last line predates it, where the
@@ -29,7 +29,7 @@ import shutil
29
29
  import subprocess
30
30
  import sys
31
31
  import tempfile
32
- from datetime import datetime, timezone
32
+ from datetime import UTC, datetime
33
33
  from http import HTTPStatus
34
34
  from pathlib import Path
35
35
  from typing import TYPE_CHECKING
@@ -364,7 +364,7 @@ def deploy_command(
364
364
  logger.error(str(ex))
365
365
  raise click.exceptions.Exit(1) from ex
366
366
 
367
- version_value = version_tag or datetime.now(timezone.utc).strftime("%Y%m%d-%H%M%S")
367
+ version_value = version_tag or datetime.now(UTC).strftime("%Y%m%d-%H%M%S")
368
368
  deploy_env = {
369
369
  ENV_GCP_PROJECT: gcp_project,
370
370
  ENV_GCP_REGION: region,