makea-cli 0.2.32__py3-none-any.whl → 0.2.34__py3-none-any.whl

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.
makea_cli/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.2.32"
1
+ __version__ = "0.2.34"
makea_cli/api_client.py CHANGED
@@ -1226,6 +1226,40 @@ def admin_close_task(task_id: str, verb: str, body: dict[str, Any]) -> Any:
1226
1226
  return post_json(f"/admin/tasks/{quote(task_id, safe='')}/{verb}", body)
1227
1227
 
1228
1228
 
1229
+ # --- admin: ship log (what went live, for /admin/ship-log) -------------------------
1230
+
1231
+
1232
+ def admin_create_ship_log(body: dict[str, Any]) -> Any:
1233
+ """POST /admin/ship-log/deploys — {ticket, title, summary?, commits{backend,frontend,
1234
+ cli,miniprogram}, amplify_job?, eb_version?, watch?, deployed_at?}."""
1235
+ return post_json("/admin/ship-log/deploys", body)
1236
+
1237
+
1238
+ def admin_list_ship_log(start: str, end: str) -> Any:
1239
+ """GET /admin/ship-log/deploys?start=&end= — naive-UTC ISO bounds, newest first."""
1240
+ return get_json("/admin/ship-log/deploys", params={"start": start, "end": end})
1241
+
1242
+
1243
+ def admin_update_ship_log(deploy_id: str, body: dict[str, Any]) -> Any:
1244
+ """PATCH /admin/ship-log/deploys/{deploy_id} — {title?, summary?, watch?}."""
1245
+ return patch_json(f"/admin/ship-log/deploys/{quote(deploy_id, safe='')}", body)
1246
+
1247
+
1248
+ def admin_delete_ship_log(deploy_id: str) -> Any:
1249
+ """DELETE /admin/ship-log/deploys/{deploy_id} — the entry and its recordings."""
1250
+ return delete_json(f"/admin/ship-log/deploys/{quote(deploy_id, safe='')}")
1251
+
1252
+
1253
+ def admin_add_ship_log_media(deploy_id: str, file_path: Path, title: str = "") -> Any:
1254
+ """POST /admin/ship-log/deploys/{deploy_id}/media — one recording or screenshot."""
1255
+ return post_multipart_with_file(
1256
+ f"/admin/ship-log/deploys/{quote(deploy_id, safe='')}/media",
1257
+ file_path=file_path,
1258
+ form_fields={"title": title} if title else None,
1259
+ timeout=600.0,
1260
+ )
1261
+
1262
+
1229
1263
  # --- admin: one account's Knowledge > About you -----------------------------------
1230
1264
  # A person (user_id or email; a supplier account's person is their factory's page)
1231
1265
  # or one factory by supplier id. Every write but refresh carries a reason.
@@ -19,6 +19,7 @@ from makea_cli.commands.orders.cmd import register as register_orders
19
19
  from makea_cli.commands.playbook.cmd import register as register_playbook
20
20
  from makea_cli.commands.product.cmd import register as register_product
21
21
  from makea_cli.commands.production.cmd import register as register_production
22
+ from makea_cli.commands.shiplog.cmd import register as register_shiplog
22
23
  from makea_cli.commands.shipping.cmd import register as register_shipping
23
24
  from makea_cli.commands.supplier.cmd import register as register_supplier
24
25
  from makea_cli.commands.tasks.cmd import register as register_tasks
@@ -45,3 +46,4 @@ def register_all(app: typer.Typer) -> None:
45
46
  register_about(app)
46
47
  register_tasks(app)
47
48
  register_flags(app)
49
+ register_shiplog(app)
File without changes
@@ -0,0 +1,261 @@
1
+ """Admin commands for the ship log (app.makea.co/admin/ship-log).
2
+
3
+ A ship log entry is one ticket going live: the ticket, a plain title and
4
+ one-line summary written for the team (not for engineers), the commits behind
5
+ it, the Amplify job or EB version, an optional watch note (something to do
6
+ after it is live), and recordings that show it working. Record one at the end
7
+ of every deploy; the page writes the team's standup from these entries.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from datetime import date, timedelta
13
+ from pathlib import Path
14
+ from typing import Any
15
+
16
+ import typer
17
+ from rich.console import Console
18
+
19
+ from makea_cli import api_client
20
+ from makea_cli.commands._util import print_json_or_exit
21
+ from makea_cli.registry import command
22
+
23
+ console = Console()
24
+
25
+ _EPILOG = """
26
+ Examples
27
+ makea-cli admin create ship-log --ticket TECH-218 --kind fix \\
28
+ --title "Notifications open the thing they are about" \\
29
+ --summary "658 of 1,413 notifications used to land on Styles." \\
30
+ --backend 86905496 --frontend bb550dd1 --amplify-job 1714 \\
31
+ --watch "Run the prod backfill" \\
32
+ --media ~/Desktop/tech218.mp4::"Quote notification lands on the quote"
33
+ makea-cli admin create ship-log --ticket no-jira --kind feature \\
34
+ --title "Confetti when the bulk deposit lands" --frontend 5da4001c
35
+ makea-cli admin list ship-log --since 2026-11-09
36
+ makea-cli admin update ship-log 20261111T134000-ab12cd --media shot.png
37
+ makea-cli admin delete ship-log 20261111T134000-ab12cd
38
+ """.strip()
39
+
40
+
41
+ def _media_option() -> Any:
42
+ return typer.Option(
43
+ None,
44
+ "--media",
45
+ "-m",
46
+ help="Recording or screenshot to attach, PATH or PATH::Title. Repeatable.",
47
+ )
48
+
49
+
50
+ def _shas(values: list[str] | None) -> list[str]:
51
+ return [s.strip() for v in values or [] for s in v.split(",") if s.strip()]
52
+
53
+
54
+ def _parse_media(values: list[str] | None) -> list[tuple[Path, str]]:
55
+ out = []
56
+ for raw in values or []:
57
+ path_s, _, title = raw.partition("::")
58
+ path = Path(path_s).expanduser()
59
+ if not path.is_file():
60
+ raise typer.BadParameter(f"--media: no file at {path}")
61
+ out.append((path, title.strip()))
62
+ return out
63
+
64
+
65
+ def _upload(deploy_id: str, media: list[tuple[Path, str]]) -> list[Any]:
66
+ return [api_client.admin_add_ship_log_media(deploy_id, path, title) for path, title in media]
67
+
68
+
69
+ def register(app: typer.Typer) -> None:
70
+ @command(
71
+ app,
72
+ "admin",
73
+ "create",
74
+ "ship-log",
75
+ api="POST /admin/ship-log/deploys",
76
+ side_effects=[
77
+ "the deploy appears on the admin Ship log for the whole Makea team",
78
+ "the next person to open that day's standup gets it rewritten to include it",
79
+ "with --media, each file is uploaded to S3 and shown on the entry",
80
+ ],
81
+ approval="ask",
82
+ reversible=True,
83
+ idempotent=True,
84
+ help=(
85
+ "POST /admin/ship-log/deploys — record one change going live, after the deploy "
86
+ "succeeded. --ticket is its Jira key, or no-jira when it has none (shown as "
87
+ "[no-jira]); --kind says whether it is a new feature or a bug fix. "
88
+ "Title and summary are for the team: what changed for brands, "
89
+ "factories or Makea, not how. The same ticket with the same commits on the "
90
+ "same day returns the existing entry. --media uploads recordings (mp4, webm, "
91
+ "mov) or screenshots (png, jpeg, webp, gif), up to 150 MB each."
92
+ ),
93
+ epilog=_EPILOG,
94
+ )
95
+ def create_ship_log(
96
+ ticket: str = typer.Option(
97
+ ..., "--ticket", "-t", help="Jira key, e.g. TECH-218; no-jira when there is none."
98
+ ),
99
+ kind: str = typer.Option(
100
+ ..., "--kind", "-k", help="feature (something new) or fix (a bug fixed)."
101
+ ),
102
+ title: str = typer.Option(..., "--title", help="What changed, in plain words."),
103
+ summary: str = typer.Option("", "--summary", "-s", help="One or two sentences more."),
104
+ backend: list[str] = typer.Option(None, "--backend", help="garmentby-service commit(s)."),
105
+ frontend: list[str] = typer.Option(None, "--frontend", help="Frontend commit(s)."),
106
+ cli: list[str] = typer.Option(None, "--cli", help="makea-cli commit(s)."),
107
+ miniprogram: list[str] = typer.Option(
108
+ None, "--miniprogram", help="Mini program commit(s)."
109
+ ),
110
+ amplify_job: str = typer.Option("", "--amplify-job", help="Amplify job number."),
111
+ eb_version: str = typer.Option("", "--eb-version", help="Elastic Beanstalk version label."),
112
+ watch: str = typer.Option("", "--watch", help="Something to do after it is live."),
113
+ deployed_at: str | None = typer.Option(
114
+ None, "--deployed-at", help="When it went live, ISO UTC. Default: now."
115
+ ),
116
+ media: list[str] = _media_option(),
117
+ ) -> None:
118
+ """Record a deploy on the admin Ship log."""
119
+ commits = {
120
+ side: shas
121
+ for side, shas in (
122
+ ("backend", _shas(backend)),
123
+ ("frontend", _shas(frontend)),
124
+ ("cli", _shas(cli)),
125
+ ("miniprogram", _shas(miniprogram)),
126
+ )
127
+ if shas
128
+ }
129
+ if not commits:
130
+ raise typer.BadParameter(
131
+ "pass at least one of --backend, --frontend, --cli, --miniprogram"
132
+ )
133
+ files = _parse_media(media)
134
+ body: dict[str, Any] = {
135
+ "ticket": ticket,
136
+ "title": title,
137
+ "summary": summary,
138
+ "commits": commits,
139
+ "amplify_job": amplify_job,
140
+ "eb_version": eb_version,
141
+ "watch": watch,
142
+ "kind": kind,
143
+ }
144
+ if deployed_at:
145
+ body["deployed_at"] = deployed_at
146
+
147
+ def run() -> Any:
148
+ result = api_client.admin_create_ship_log(body)
149
+ deploy = (result or {}).get("deploy") if isinstance(result, dict) else None
150
+ if files and deploy and deploy.get("deploy_id"):
151
+ result["media"] = _upload(deploy["deploy_id"], files)
152
+ return result
153
+
154
+ print_json_or_exit(console, run)
155
+
156
+ @command(
157
+ app,
158
+ "admin",
159
+ "list",
160
+ "ship-log",
161
+ api="GET /admin/ship-log/deploys",
162
+ help=(
163
+ "GET /admin/ship-log/deploys — deploys between two UTC days, newest first: "
164
+ "deploy_id, ticket, title, summary, watch, commits, amplify_job, deployed_at, media."
165
+ ),
166
+ epilog=_EPILOG,
167
+ )
168
+ def list_ship_log(
169
+ since: str | None = typer.Option(
170
+ None, "--since", help="First day, YYYY-MM-DD. Default: 6 days ago."
171
+ ),
172
+ until: str | None = typer.Option(
173
+ None, "--until", help="Last day, YYYY-MM-DD. Default: today."
174
+ ),
175
+ ) -> None:
176
+ """List recorded deploys."""
177
+ try:
178
+ end = date.fromisoformat(until) if until else date.today()
179
+ start = date.fromisoformat(since) if since else end - timedelta(days=6)
180
+ except ValueError as exc:
181
+ raise typer.BadParameter("dates are YYYY-MM-DD") from exc
182
+ print_json_or_exit(
183
+ console,
184
+ lambda: api_client.admin_list_ship_log(f"{start}T00:00:00", f"{end}T23:59:59"),
185
+ )
186
+
187
+ @command(
188
+ app,
189
+ "admin",
190
+ "update",
191
+ "ship-log",
192
+ api="PATCH /admin/ship-log/deploys/{deploy_id}",
193
+ side_effects=[
194
+ "the entry changes on the admin Ship log",
195
+ "a changed title or summary gets that day's standup rewritten on its next view",
196
+ "with --media, each file is uploaded to S3 and shown on the entry",
197
+ ],
198
+ approval="ask",
199
+ reversible=True,
200
+ idempotent=False,
201
+ help=(
202
+ "PATCH /admin/ship-log/deploys/{deploy_id} — fix an entry's title, summary or "
203
+ "watch note (pass --watch '' to clear it); --media attaches more recordings."
204
+ ),
205
+ epilog=_EPILOG,
206
+ )
207
+ def update_ship_log(
208
+ deploy_id: str = typer.Argument(..., help="deploy_id (from list ship-log)."),
209
+ title: str | None = typer.Option(None, "--title"),
210
+ summary: str | None = typer.Option(None, "--summary", "-s"),
211
+ watch: str | None = typer.Option(None, "--watch"),
212
+ kind: str | None = typer.Option(None, "--kind", "-k", help="feature or fix."),
213
+ ticket: str | None = typer.Option(None, "--ticket", "-t", help="Jira key or no-jira."),
214
+ media: list[str] = _media_option(),
215
+ ) -> None:
216
+ """Fix a ship log entry or attach recordings."""
217
+ body = {
218
+ k: v
219
+ for k, v in (
220
+ ("title", title),
221
+ ("summary", summary),
222
+ ("watch", watch),
223
+ ("kind", kind),
224
+ ("ticket", ticket),
225
+ )
226
+ if v is not None
227
+ }
228
+ files = _parse_media(media)
229
+ if not body and not files:
230
+ raise typer.BadParameter(
231
+ "nothing to change: pass --title, --summary, --watch, --kind, --ticket or --media"
232
+ )
233
+
234
+ def run() -> Any:
235
+ result: dict[str, Any] = {}
236
+ if body:
237
+ result = api_client.admin_update_ship_log(deploy_id, body)
238
+ if files:
239
+ result["media"] = _upload(deploy_id, files)
240
+ return result
241
+
242
+ print_json_or_exit(console, run)
243
+
244
+ @command(
245
+ app,
246
+ "admin",
247
+ "delete",
248
+ "ship-log",
249
+ api="DELETE /admin/ship-log/deploys/{deploy_id}",
250
+ side_effects=["the entry and its recordings are removed for the whole team"],
251
+ approval="ask",
252
+ reversible=False,
253
+ idempotent=True,
254
+ help="DELETE /admin/ship-log/deploys/{deploy_id} — remove an entry recorded by mistake.",
255
+ epilog=_EPILOG,
256
+ )
257
+ def delete_ship_log(
258
+ deploy_id: str = typer.Argument(..., help="deploy_id (from list ship-log)."),
259
+ ) -> None:
260
+ """Remove a ship log entry and its recordings."""
261
+ print_json_or_exit(console, lambda: api_client.admin_delete_ship_log(deploy_id))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: makea-cli
3
- Version: 0.2.32
3
+ Version: 0.2.34
4
4
  Summary: Makea admin CLI (browser login + Makea admin HTTP API)
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: click<9,>=8.1
@@ -99,6 +99,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
99
99
  | `makea-cli admin create product-note` | write(ask) | `POST /admin/products/{product_id}/notes` | write a note on a product. Without --internal it goes to the brand. | — |
100
100
  | `makea-cli admin create quote-request` | write(ask) | `POST /admin/supplier/create_quote_request` | create/send a quote request to a supplier for a product (admin). Held (409 FILES_DISAGREE) while the brand's files disagree; --release-anyway sends regardless. | `create-quote-request` |
101
101
  | `makea-cli admin create quote-request-note` | write(ask) | `POST /admin/quote_requests/{quote_request_id}/reply_status_note` | write to the factory on a quote request (e.g. answer its clarification). --requirements-updated words the email as a change to the product's requirements. | — |
102
+ | `makea-cli admin create ship-log` | write(ask) | `POST /admin/ship-log/deploys` | record a change going live on the admin Ship log, after the deploy succeeded: Jira key (or `no-jira`), `--kind feature\|fix`, plain title and summary for the team, commits, Amplify job or EB version, optional `--watch` note and `--media` recordings or screenshots. | — |
102
103
  | `makea-cli admin create rule` | write(ask) | `POST /admin/playbook/{target}/rules` | add a rule to a person's (`--user`, user_id or email), a factory's (`--supplier`) or the platform-wide (`--global`, max 30 live) AI playbook; admin-authored, active unless --status. Refuses a repeat or a conflict unless --force. --reason required; --why / --proof are what the brand reads under it, --title its card name. | — |
103
104
  | `makea-cli admin create shipping-fee` | write(ask) | `POST /admin/shipping_orders/{shipping_order_id}/fees/add` | add a fee (fixed amount or percentage) on top of the freight. | — |
104
105
  | `makea-cli admin create shipping-option` | write(ask) | `POST /admin/shipping_orders/{shipping_order_id}/shipping-options` | add one freight quote (provider, speed, price, currency). | — |
@@ -107,6 +108,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
107
108
  | `makea-cli admin create supplier-link` | write(ask) | `POST /admin/product/link_supplier` | assign a factory to a product, with no price. A bare assignment is not a quote: no quote email goes out and nothing is priced. To quote, use admin submit quote on the quote request. | — |
108
109
  | `makea-cli admin create user` | write(never) | `POST /admin/users/create` | register a user and confirm the Cognito account in one step (no verification email). Allowed --user-type values: "Fas… | `create-user` |
109
110
  | `makea-cli admin delete about` | write(ask) | `DELETE /admin/about/{target}/{key}` | remove one About you line (`--user` / `--supplier`); it is not guessed again. --reason required. | — |
111
+ | `makea-cli admin delete ship-log` | write(ask) | `DELETE /admin/ship-log/deploys/{deploy_id}` | remove a Ship log entry recorded by mistake, with its recordings. | — |
110
112
  | `makea-cli admin delete feature-flag` | write(ask) | `DELETE /admin/feature-flags/{key}` | remove a flag. Every check of it then reads false, so delete it only once the code that reads it is gone. | — |
111
113
  | `makea-cli admin delete library-element` | write(never) | `DELETE /admin/designer/{user_id}/library_components/{component_id}` | remove a component from the designer's org library. | `library-delete` |
112
114
  | `makea-cli admin delete rule` | write(ask) | `DELETE /admin/playbook/{target}/rules/{rule_id}` | remove a rule (`--user` / `--supplier` / `--global`): archived, with who and why kept on it (`update rule --status active` restores it). --reason required. | — |
@@ -158,6 +160,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
158
160
  | `makea-cli admin list supplier` | read | `GET /admin/supplier/get_all_suppliers` | list all suppliers (admin). | `list-suppliers` |
159
161
  | `makea-cli admin list supplier-link` | read | `GET /admin/product/linked_suppliers/by_supplier/{supplier_id}` | direct backend query. | `get-supplier-links-by-supplier-id` |
160
162
  | `makea-cli admin list task` | read | `GET /admin/tasks` | the Makea team's open tasks (Beeboo's notes, held lessons, sample price flags, PP samples, brand asks) by kind, with notes; `--user` adds that account's own `account.*` cards; `--wrong` lists the tasks marked wrong instead. | — |
163
+ | `makea-cli admin list ship-log` | read | `GET /admin/ship-log/deploys` | deploys recorded on the Ship log between two days (`--since`, `--until`), newest first. | — |
161
164
  | `makea-cli admin list user` | read | `GET /admin/users` | list registered users (admin, optional pagination). | `list-users` |
162
165
  | `makea-cli admin send email` | write(ask) | `POST /admin/email/send` | queue an HTML email (To required, Cc optional). From must be @makea.co; HTML from --html-file or stdin ('-'). Require… | `send-email` |
163
166
  | `makea-cli admin set pricing-groups` | write(ask) | `POST /admin/production_orders/{id}/details/update` | Set a production order's pricing groups from a JSON file, copy them from the order's quote, or clear them (--clear) t… | `production-groups-set` |
@@ -181,6 +184,7 @@ exit code:`0` 成功 · `2` 用法错 · `3` 未登录或身份与 persona 不
181
184
  | `makea-cli admin update shipping-order` | write(ask) | `PUT /admin/shipping_orders/{shipping_order_id}/status` | Change a shipment: --status (PUT .../status), tracking flags (POST .../tracking), --address (PUT .../shipping-address… | — |
182
185
  | `makea-cli admin update supplier` | write(ask) | `PUT /admin/supplier/update_supplier` | update an existing supplier from a JSON file (admin). Run `makea-cli get-supplier-profile-schema` FIRST to get the fi… | `update-supplier` |
183
186
  | `makea-cli admin update task` | write(ask) | `POST /admin/tasks/{task_id}/{done\|dismiss\|note}` | close a Makea task with a note: `--done` once handled (a held lesson's `--reason` goes to Beeboo's next reading), `--dismiss`, or `--dismiss --wrong` when it should never have been raised; `--note` alone adds a note and leaves it open. | — |
187
+ | `makea-cli admin update ship-log` | write(ask) | `PATCH /admin/ship-log/deploys/{deploy_id}` | fix a Ship log entry's title, summary or watch note; `--media` attaches more recordings. | — |
184
188
  | `makea-cli admin update tech-spec` | write(ask) | `POST /admin/products/{id}/technical-specifications` | persist specs from a JSON file. | `save-product-tech-spec` |
185
189
  | `makea-cli admin update tracking-status` | write(ask) | `POST /admin/tracking/carrier_status` | apply a carrier status looked up by hand (tracking-sweep skill) to one order: status, fan-out, delivered emails (--silent: state only). | — |
186
190
  | `makea-cli admin update user` | write(ask) | `PUT /admin/user-profiles/{user_id}/update` | admin updates DynamoDB user profile fields and/or Cognito custom:userType. Allowed --user-type values: "Fashion brand… | `update-user-profile` |
@@ -1,6 +1,6 @@
1
- makea_cli/__init__.py,sha256=TZEL7NbFvxLaphGOCsAqfJrHhPB2LHR2ab0Eb5xxaU0,23
1
+ makea_cli/__init__.py,sha256=5TnwcrtiZS4c6J_QH9Z6CeZN1Ljn_ZOqbNVg9Dw2Xsk,23
2
2
  makea_cli/__main__.py,sha256=AkQjxWfKE3w9iD1d6I-2Zqvv2t9cct0oYyFF0UiA-Z0,144
3
- makea_cli/api_client.py,sha256=34LrVR6vcG3lCK6lRlUJbdHt3HOxIDA4mA9MeJL98Pg,81910
3
+ makea_cli/api_client.py,sha256=vswba4w8c3_LzIA7H728XjUezgDg0o6uH6VotQZC73I,83368
4
4
  makea_cli/auth_pkce.py,sha256=iXSyJ7DM3qVuj-3FwPiqM25CxXz9ebFs9FNthZdw3ws,7315
5
5
  makea_cli/broker.py,sha256=5O650nAdRuF-u9E1MuVM2jVv796iBdxJGIaJasxHij0,3019
6
6
  makea_cli/companion.py,sha256=lEEMRDbS-5-CWPawlkPDeCij08pAYW8MsXLVSG3_8V0,10116
@@ -12,7 +12,7 @@ makea_cli/main.py,sha256=oU7cMXiZwCnT8gZS1vvuZYgtpDnyqTtb0dlkKIULZzo,9445
12
12
  makea_cli/output.py,sha256=6xOJFjoIBphc10nz53xKCyQiz06an7oGtFJ0bap1G-Y,6739
13
13
  makea_cli/posthog_client.py,sha256=k0cy9Hq7bhdLlPvC1ZW_esJ70xHDdQzPQUlx-GpVskk,1921
14
14
  makea_cli/registry.py,sha256=GYJK_idhwIh1X2ictwFjn8PEMaXT56hFVkoLEVYrVqw,13722
15
- makea_cli/commands/__init__.py,sha256=tqplta7N6WuwBHdCqC6_7UrzuUrpNjJkeWK_rOfKF_o,2044
15
+ makea_cli/commands/__init__.py,sha256=jLmxRxUat3CmdFpztpPsdD4aTb94XtZoclu9D2njXQg,2142
16
16
  makea_cli/commands/_util.py,sha256=zSFwWaWpncARlKxgq4WuJlJvNv7XdZ39HfHrNOELHuw,980
17
17
  makea_cli/commands/about/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  makea_cli/commands/about/cmd.py,sha256=smvn0WWfRfyL6h1ZB7vXSmJY67t7qhTHdRqxTk4jqeI,9665
@@ -49,13 +49,15 @@ makea_cli/commands/product/cmd.py,sha256=G9Ax0_kRsBvRnYMdwyRn1w7EppGGRHG0buwizk7
49
49
  makea_cli/commands/production/__init__.py,sha256=Whn5ziwVMt4jzcokiFWLhWIpRLYC-ldnjZgAzeQ3We4,79
50
50
  makea_cli/commands/production/cmd.py,sha256=s6fVAGzOvokF6Va5WKGEA2vw2x2hDQ3PrsF01EyZA-Q,38283
51
51
  makea_cli/commands/production/pricing_spec.py,sha256=xGbj7-ps3PcKuU6Oc59A70b62FjF6Awhr5IY3ymZveU,27174
52
+ makea_cli/commands/shiplog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ makea_cli/commands/shiplog/cmd.py,sha256=XrqLdIJNxxwSTZQ1vqK2LJOrd18x7PEky78S2-lGe7o,10172
52
54
  makea_cli/commands/shipping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
55
  makea_cli/commands/shipping/cmd.py,sha256=ozt73pj3onlOv0NhEwiJlslyG9WOycE0QN4tmzwFlT0,17280
54
56
  makea_cli/commands/supplier/__init__.py,sha256=qfQDeQdQ-B7I_uwFVfcp1vXFUTL4fAcNLu3ipsZ7dfs,77
55
57
  makea_cli/commands/supplier/cmd.py,sha256=12YzQIz8478ksOUbuI7pSwSAwQAqLTvXu-AKjyrwLgA,64039
56
58
  makea_cli/commands/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
59
  makea_cli/commands/tasks/cmd.py,sha256=72MrVigmjjQCpDVF2a3aJn_gclw2iBbJdFmyd87mXec,8549
58
- makea_cli-0.2.32.dist-info/METADATA,sha256=9sFWNB18VghSrKcdoQoXpoQgEd_O0czP-FJu3fRh7zc,45314
59
- makea_cli-0.2.32.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
60
- makea_cli-0.2.32.dist-info/entry_points.txt,sha256=4x-lbVa1jBbNlkNq7L-rYyfRh2spZmc3BLIzP-Dl-Qk,50
61
- makea_cli-0.2.32.dist-info/RECORD,,
60
+ makea_cli-0.2.34.dist-info/METADATA,sha256=Nb2JGTwWM82S7k5GtdXCaexvpVbP6pRqonW-My0PIB4,46220
61
+ makea_cli-0.2.34.dist-info/WHEEL,sha256=2iZrJkDIkeDh0k9SikKMqFuRP-ua6mb4Ir1AsER4BEw,87
62
+ makea_cli-0.2.34.dist-info/entry_points.txt,sha256=4x-lbVa1jBbNlkNq7L-rYyfRh2spZmc3BLIzP-Dl-Qk,50
63
+ makea_cli-0.2.34.dist-info/RECORD,,