buildai-cli 0.3.164__tar.gz → 0.3.166__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.
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/PKG-INFO +1 -1
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/labeling.py +82 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/pyproject.toml +1 -1
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/.gitignore +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/AGENTS.md +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/Dockerfile.hand-labels-export +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/Dockerfile.hand-labels-export.dockerignore +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/Dockerfile.rescaling-migration-jobs +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/Dockerfile.rescaling-migration-jobs.dockerignore +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/buildai_bootstrap.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/_has_core.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/auth_local.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/api_proxy.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/auth.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/broker.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/common.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/migrate.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/query.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/rescaling.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/schema.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/status.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/db/tunnel.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/dev.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/doctor.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/ego_frame_search.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/gigcamera.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/hand_labels_export.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/ingest.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/ingest_docs.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/intake.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/label_replay_recovery.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/processing.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/rescaling.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/spec.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/commands/spec_pr.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/config.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/console.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/context.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/db_broker.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/guard.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/internal_api.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/labeling_onboarding.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/main.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/nl_query/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/nl_query/dataset_tools.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/ops_init.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/output.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/pagination.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/canonical.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/export.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/feed_proofs.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/fence.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/importer.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/jobs.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/management.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/orchestrator.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/probes.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/reconcile.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/run_record.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/runtime.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/legacy_export_closeout.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/legacy_export_prepare.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/legacy_fence.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/legacy_unfreeze.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/v2_export_closeout.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/v2_export_prepare.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/v2_fence.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/v2_unfreeze.sql +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/storage.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/transform.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rls_guard.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/__main__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/encode.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/export.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/reader.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/schema.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/store.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/hand_labels_export/validate.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/rescaling_logical_backup/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/rescaling_logical_backup/__main__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/rescaling_migration_job/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/rescaling_migration_job/__main__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/rescaling_recovery_extractor/__init__.py +0 -0
- {buildai_cli-0.3.164 → buildai_cli-0.3.166}/rescaling_recovery_extractor/__main__.py +0 -0
|
@@ -22,6 +22,7 @@ from dal.labeling import (
|
|
|
22
22
|
configure_guarded_scheduler_execution,
|
|
23
23
|
hand_practice,
|
|
24
24
|
list_accounts,
|
|
25
|
+
practice_bonus_payouts,
|
|
25
26
|
prepare_routing_policy_transition,
|
|
26
27
|
prepare_shadow_quality_runtime,
|
|
27
28
|
preview_rapid_navigation_label_repair,
|
|
@@ -80,6 +81,11 @@ hand_practice_app = typer.Typer(
|
|
|
80
81
|
no_args_is_help=True,
|
|
81
82
|
)
|
|
82
83
|
app.add_typer(hand_practice_app, name="hand-practice")
|
|
84
|
+
practice_bonus_payouts_app = typer.Typer(
|
|
85
|
+
help="The instant bonus payout (practice bonus, referral steps): switch, status, backfill.",
|
|
86
|
+
no_args_is_help=True,
|
|
87
|
+
)
|
|
88
|
+
app.add_typer(practice_bonus_payouts_app, name="practice-bonus-payouts")
|
|
83
89
|
app.add_typer(hand_labels_export_app, name="hands-export")
|
|
84
90
|
|
|
85
91
|
_GCLOUD_READ_TIMEOUT_SECONDS = 15
|
|
@@ -977,6 +983,82 @@ def hand_practice_report_command(
|
|
|
977
983
|
output(asyncio.run(_run()), format=format)
|
|
978
984
|
|
|
979
985
|
|
|
986
|
+
@practice_bonus_payouts_app.command("status")
|
|
987
|
+
def practice_bonus_payouts_status_command(
|
|
988
|
+
typer_ctx: typer.Context,
|
|
989
|
+
profile: Annotated[str | None, typer.Option("--profile")] = None,
|
|
990
|
+
env: Annotated[str | None, typer.Option("--env", "-e")] = None,
|
|
991
|
+
format: Format = format_option(),
|
|
992
|
+
) -> None:
|
|
993
|
+
"""Whether each lane is on, and payouts by kind, state, and reason."""
|
|
994
|
+
|
|
995
|
+
async def _run() -> dict:
|
|
996
|
+
effective_profile = _resolve_profile(profile=profile, env=env, write=False)
|
|
997
|
+
settings = _init_settings(typer_ctx, env=env, profile=effective_profile, write=False)
|
|
998
|
+
async with get_cli_context(settings, profile=effective_profile) as (_db, dal_ctx):
|
|
999
|
+
return await practice_bonus_payouts.status_summary(dal_ctx)
|
|
1000
|
+
|
|
1001
|
+
output(asyncio.run(_run()), format=format)
|
|
1002
|
+
|
|
1003
|
+
|
|
1004
|
+
@practice_bonus_payouts_app.command("switch")
|
|
1005
|
+
def practice_bonus_payouts_switch_command(
|
|
1006
|
+
typer_ctx: typer.Context,
|
|
1007
|
+
state: Annotated[str, typer.Argument(help="on or off")],
|
|
1008
|
+
actor_account_id: Annotated[UUID, typer.Option("--actor-account-id")],
|
|
1009
|
+
lane: Annotated[
|
|
1010
|
+
str,
|
|
1011
|
+
typer.Option("--lane", help="practice (the practice bonus) or referral (both steps)."),
|
|
1012
|
+
] = "practice",
|
|
1013
|
+
profile: Annotated[str | None, typer.Option("--profile")] = None,
|
|
1014
|
+
env: Annotated[str | None, typer.Option("--env", "-e")] = None,
|
|
1015
|
+
write: Annotated[bool, typer.Option("--write", help="Required: this moves money.")] = False,
|
|
1016
|
+
format: Format = format_option(),
|
|
1017
|
+
) -> None:
|
|
1018
|
+
"""One lane's kill switch: on pays its bonuses at once; off leaves them to the manual payout."""
|
|
1019
|
+
|
|
1020
|
+
if state not in {"on", "off"}:
|
|
1021
|
+
raise typer.BadParameter("Pass on or off.")
|
|
1022
|
+
if lane not in practice_bonus_payouts.LANES:
|
|
1023
|
+
raise typer.BadParameter("Pass --lane practice or --lane referral.")
|
|
1024
|
+
if not write:
|
|
1025
|
+
raise typer.BadParameter("Switching changes who is paid at once; pass --write.")
|
|
1026
|
+
|
|
1027
|
+
async def _run() -> dict:
|
|
1028
|
+
effective_profile = _resolve_profile(profile=profile, env=env, write=write)
|
|
1029
|
+
settings = _init_settings(typer_ctx, env=env, profile=effective_profile, write=write)
|
|
1030
|
+
async with get_cli_context(settings, profile=effective_profile) as (_db, dal_ctx):
|
|
1031
|
+
return await practice_bonus_payouts.set_payouts_enabled(
|
|
1032
|
+
dal_ctx, lane=lane, enabled=state == "on", actor_id=actor_account_id
|
|
1033
|
+
)
|
|
1034
|
+
|
|
1035
|
+
output(asyncio.run(_run()), format=format)
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
@practice_bonus_payouts_app.command("backfill")
|
|
1039
|
+
def practice_bonus_payouts_backfill_command(
|
|
1040
|
+
typer_ctx: typer.Context,
|
|
1041
|
+
profile: Annotated[str | None, typer.Option("--profile")] = None,
|
|
1042
|
+
env: Annotated[str | None, typer.Option("--env", "-e")] = None,
|
|
1043
|
+
write: Annotated[
|
|
1044
|
+
bool, typer.Option("--write", help="Queue the lines. Default: list them only.")
|
|
1045
|
+
] = False,
|
|
1046
|
+
format: Format = format_option(),
|
|
1047
|
+
) -> None:
|
|
1048
|
+
"""Queue every unpaid bonus line minted before the lane existed, once.
|
|
1049
|
+
|
|
1050
|
+
The sweep then checks every guardrail and orders each one while the lane is on.
|
|
1051
|
+
"""
|
|
1052
|
+
|
|
1053
|
+
async def _run() -> dict:
|
|
1054
|
+
effective_profile = _resolve_profile(profile=profile, env=env, write=write)
|
|
1055
|
+
settings = _init_settings(typer_ctx, env=env, profile=effective_profile, write=write)
|
|
1056
|
+
async with get_cli_context(settings, profile=effective_profile) as (_db, dal_ctx):
|
|
1057
|
+
return await practice_bonus_payouts.backfill(dal_ctx, write=write)
|
|
1058
|
+
|
|
1059
|
+
output(asyncio.run(_run()), format=format)
|
|
1060
|
+
|
|
1061
|
+
|
|
980
1062
|
def _init_settings(
|
|
981
1063
|
ctx: typer.Context,
|
|
982
1064
|
*,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.164 → buildai_cli-0.3.166}/Dockerfile.rescaling-migration-jobs.dockerignore
RENAMED
|
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
|
|
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
|
|
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
|
{buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/legacy_export_closeout.sql
RENAMED
|
File without changes
|
{buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/legacy_export_prepare.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/v2_export_closeout.sql
RENAMED
|
File without changes
|
{buildai_cli-0.3.164 → buildai_cli-0.3.166}/cli/rescaling_migration/sql/v2_export_prepare.sql
RENAMED
|
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
|