cometx 3.6.6__tar.gz → 3.6.7__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 (57) hide show
  1. {cometx-3.6.6 → cometx-3.6.7}/PKG-INFO +50 -1
  2. {cometx-3.6.6 → cometx-3.6.7}/README.md +49 -0
  3. {cometx-3.6.6 → cometx-3.6.7}/cometx/_version.py +1 -1
  4. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin.py +93 -0
  5. cometx-3.6.7/cometx/cli/admin_growth_render.py +682 -0
  6. cometx-3.6.7/cometx/cli/admin_growth_report.py +1294 -0
  7. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin_usage_report.py +9 -127
  8. {cometx-3.6.6 → cometx-3.6.7}/cometx/utils.py +126 -0
  9. {cometx-3.6.6 → cometx-3.6.7}/cometx.egg-info/PKG-INFO +50 -1
  10. {cometx-3.6.6 → cometx-3.6.7}/cometx.egg-info/SOURCES.txt +2 -0
  11. {cometx-3.6.6 → cometx-3.6.7}/LICENSE +0 -0
  12. {cometx-3.6.6 → cometx-3.6.7}/cometx/__init__.py +0 -0
  13. {cometx-3.6.6 → cometx-3.6.7}/cometx/_typing.py +0 -0
  14. {cometx-3.6.6 → cometx-3.6.7}/cometx/_ui.py +0 -0
  15. {cometx-3.6.6 → cometx-3.6.7}/cometx/api.py +0 -0
  16. {cometx-3.6.6 → cometx-3.6.7}/cometx/audio.py +0 -0
  17. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/__init__.py +0 -0
  18. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin_app.py +0 -0
  19. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin_gpu_app.py +0 -0
  20. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin_gpu_report.py +0 -0
  21. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin_optimizer_report.py +0 -0
  22. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/admin_utils.py +0 -0
  23. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/config.py +0 -0
  24. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/copy.py +0 -0
  25. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/copy_utils.py +0 -0
  26. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/count.py +0 -0
  27. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/delete_assets.py +0 -0
  28. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/download.py +0 -0
  29. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/list_command.py +0 -0
  30. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/log.py +0 -0
  31. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/migrate_users.py +0 -0
  32. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/rename_duplicates.py +0 -0
  33. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/reproduce.py +0 -0
  34. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/smoke_test.py +0 -0
  35. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/update.py +0 -0
  36. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/upload_optimizer_experiments.py +0 -0
  37. {cometx-3.6.6 → cometx-3.6.7}/cometx/cli/utils.py +0 -0
  38. {cometx-3.6.6 → cometx-3.6.7}/cometx/framework/__init__.py +0 -0
  39. {cometx-3.6.6 → cometx-3.6.7}/cometx/framework/comet/__init__.py +0 -0
  40. {cometx-3.6.6 → cometx-3.6.7}/cometx/framework/comet/download_manager.py +0 -0
  41. {cometx-3.6.6 → cometx-3.6.7}/cometx/framework/neptune.py +0 -0
  42. {cometx-3.6.6 → cometx-3.6.7}/cometx/framework/wandb.py +0 -0
  43. {cometx-3.6.6 → cometx-3.6.7}/cometx/generate_utils.py +0 -0
  44. {cometx-3.6.6 → cometx-3.6.7}/cometx/magics.py +0 -0
  45. {cometx-3.6.6 → cometx-3.6.7}/cometx/optimizer.py +0 -0
  46. {cometx-3.6.6 → cometx-3.6.7}/cometx/panel_utils.py +0 -0
  47. {cometx-3.6.6 → cometx-3.6.7}/cometx/tools/__init__.py +0 -0
  48. {cometx-3.6.6 → cometx-3.6.7}/cometx/tools/dataset.py +0 -0
  49. {cometx-3.6.6 → cometx-3.6.7}/cometx/tools/pointcloud.py +0 -0
  50. {cometx-3.6.6 → cometx-3.6.7}/cometx.egg-info/dependency_links.txt +0 -0
  51. {cometx-3.6.6 → cometx-3.6.7}/cometx.egg-info/entry_points.txt +0 -0
  52. {cometx-3.6.6 → cometx-3.6.7}/cometx.egg-info/requires.txt +0 -0
  53. {cometx-3.6.6 → cometx-3.6.7}/cometx.egg-info/top_level.txt +0 -0
  54. {cometx-3.6.6 → cometx-3.6.7}/pyproject.toml +0 -0
  55. {cometx-3.6.6 → cometx-3.6.7}/setup.cfg +0 -0
  56. {cometx-3.6.6 → cometx-3.6.7}/setup.py +0 -0
  57. {cometx-3.6.6 → cometx-3.6.7}/tests/testlib.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cometx
3
- Version: 3.6.6
3
+ Version: 3.6.7
4
4
  Summary: Python tools for Comet
5
5
  Home-page: https://github.com/comet-ml/cometx/
6
6
  Author: cometx development team
@@ -634,6 +634,55 @@ cometx admin usage-report workspace --units day --no-open
634
634
  cometx admin usage-report --app
635
635
  ```
636
636
 
637
+ #### growth-report
638
+
639
+ Generate a cross-platform use-case growth & adoption report (Opik projects, EM projects,
640
+ MPM monitored models) as a single self-contained HTML page. Distinct from `usage-report`
641
+ (experiment-count PDF): `growth-report` tracks *how many use cases exist and how fast
642
+ they're being created*, per workspace/department, across all three products.
643
+
644
+ ```
645
+ cometx admin growth-report [WORKSPACE ...]
646
+ ```
647
+
648
+ **Arguments:**
649
+ * `WORKSPACE` (optional, zero or more) - Workspaces to include. If omitted, all workspaces visible to the current API key are used (via `get_workspaces()`).
650
+
651
+ **Options:**
652
+ * `--units {month,week,day,hour}` - Chart bucket granularity (default: month). Charts always render **all-time** history at this granularity; this is unrelated to `--window` below.
653
+ * `--window WINDOW` - Relative analysis window for the KPIs, e.g. `7d`, `14d`, `30d`, `90d`, `2w`, `6m`, `1y` (default: `7d`). `d`=days, `w`=weeks (×7d), `m`=months (approximated as 30 days), `y`=years (approximated as 365 days) — the approximation is intentional, since the window only needs an "installed base before window" cutoff, not calendar-exact arithmetic.
654
+ * `--platforms PLATFORMS` - Comma-separated list of platforms to include (default: `em,opik,mpm`). Any of `em`, `opik`, `mpm`.
655
+ * `--output PATH` - Output HTML file path (default: `growth_report.html`).
656
+ * `--limit N` - Limit the number of workspaces processed (useful for a fast smoke-test run).
657
+ * `--no-open` - Don't automatically open the generated HTML file after generation.
658
+
659
+ **Two time concepts:**
660
+ * `--units` controls chart *granularity* — every chart shows the full all-time history bucketed at this resolution.
661
+ * `--window` controls the *analysis window* used for the KPI numbers (Total / New / % growth) — it's drawn as a shaded band on top of the all-time charts rather than filtering them out.
662
+
663
+ **Growth rates:** growth/adoption rates are computed from use-case **creation timestamps**
664
+ (`--window` boundary vs. each event's `created` time), not from a separate "installed base"
665
+ snapshot, so `pct_growth` is always `new_in_window / count_before_window`.
666
+
667
+ **Caveats:**
668
+ * **EM "created" is a proxy** — the Comet API has no true EM project-creation timestamp, so EM project creation is approximated as the earliest experiment start time in that project (falling back to the project's `lastUpdated` time if no experiments exist).
669
+ * **Workspace/department "created" is also a proxy** — it's the earliest use-case creation timestamp seen in that workspace, across all platforms.
670
+ * **MPM requires provisioning** — if the account/workspace has no MPM model-monitoring provisioned, the MPM collector degrades gracefully (an empty MPM section, `collectors.mpm: false`) instead of failing the whole report.
671
+
672
+ Opik and MPM collection require their optional SDKs; install them with `pip install 'cometx[all]'` if they aren't already available. Platforms whose SDK can't be imported are silently dropped from `--platforms` (a note is printed) so the report still succeeds with the remaining platforms.
673
+
674
+ **Examples:**
675
+ ```
676
+ # Full cross-platform report for all workspaces, default 7-day window
677
+ cometx admin growth-report
678
+
679
+ # Just Opik + EM, 30-day window, monthly chart granularity, for two workspaces
680
+ cometx admin growth-report --platforms em,opik --window 30d my-workspace another-workspace
681
+
682
+ # Fast smoke-test run against a single workspace, don't auto-open
683
+ cometx admin growth-report --limit 1 --no-open --output growth.html my-workspace
684
+ ```
685
+
637
686
  #### gpu-report
638
687
 
639
688
  Generate a GPU usage report for one or more workspaces/projects with detailed GPU metrics analysis.
@@ -578,6 +578,55 @@ cometx admin usage-report workspace --units day --no-open
578
578
  cometx admin usage-report --app
579
579
  ```
580
580
 
581
+ #### growth-report
582
+
583
+ Generate a cross-platform use-case growth & adoption report (Opik projects, EM projects,
584
+ MPM monitored models) as a single self-contained HTML page. Distinct from `usage-report`
585
+ (experiment-count PDF): `growth-report` tracks *how many use cases exist and how fast
586
+ they're being created*, per workspace/department, across all three products.
587
+
588
+ ```
589
+ cometx admin growth-report [WORKSPACE ...]
590
+ ```
591
+
592
+ **Arguments:**
593
+ * `WORKSPACE` (optional, zero or more) - Workspaces to include. If omitted, all workspaces visible to the current API key are used (via `get_workspaces()`).
594
+
595
+ **Options:**
596
+ * `--units {month,week,day,hour}` - Chart bucket granularity (default: month). Charts always render **all-time** history at this granularity; this is unrelated to `--window` below.
597
+ * `--window WINDOW` - Relative analysis window for the KPIs, e.g. `7d`, `14d`, `30d`, `90d`, `2w`, `6m`, `1y` (default: `7d`). `d`=days, `w`=weeks (×7d), `m`=months (approximated as 30 days), `y`=years (approximated as 365 days) — the approximation is intentional, since the window only needs an "installed base before window" cutoff, not calendar-exact arithmetic.
598
+ * `--platforms PLATFORMS` - Comma-separated list of platforms to include (default: `em,opik,mpm`). Any of `em`, `opik`, `mpm`.
599
+ * `--output PATH` - Output HTML file path (default: `growth_report.html`).
600
+ * `--limit N` - Limit the number of workspaces processed (useful for a fast smoke-test run).
601
+ * `--no-open` - Don't automatically open the generated HTML file after generation.
602
+
603
+ **Two time concepts:**
604
+ * `--units` controls chart *granularity* — every chart shows the full all-time history bucketed at this resolution.
605
+ * `--window` controls the *analysis window* used for the KPI numbers (Total / New / % growth) — it's drawn as a shaded band on top of the all-time charts rather than filtering them out.
606
+
607
+ **Growth rates:** growth/adoption rates are computed from use-case **creation timestamps**
608
+ (`--window` boundary vs. each event's `created` time), not from a separate "installed base"
609
+ snapshot, so `pct_growth` is always `new_in_window / count_before_window`.
610
+
611
+ **Caveats:**
612
+ * **EM "created" is a proxy** — the Comet API has no true EM project-creation timestamp, so EM project creation is approximated as the earliest experiment start time in that project (falling back to the project's `lastUpdated` time if no experiments exist).
613
+ * **Workspace/department "created" is also a proxy** — it's the earliest use-case creation timestamp seen in that workspace, across all platforms.
614
+ * **MPM requires provisioning** — if the account/workspace has no MPM model-monitoring provisioned, the MPM collector degrades gracefully (an empty MPM section, `collectors.mpm: false`) instead of failing the whole report.
615
+
616
+ Opik and MPM collection require their optional SDKs; install them with `pip install 'cometx[all]'` if they aren't already available. Platforms whose SDK can't be imported are silently dropped from `--platforms` (a note is printed) so the report still succeeds with the remaining platforms.
617
+
618
+ **Examples:**
619
+ ```
620
+ # Full cross-platform report for all workspaces, default 7-day window
621
+ cometx admin growth-report
622
+
623
+ # Just Opik + EM, 30-day window, monthly chart granularity, for two workspaces
624
+ cometx admin growth-report --platforms em,opik --window 30d my-workspace another-workspace
625
+
626
+ # Fast smoke-test run against a single workspace, don't auto-open
627
+ cometx admin growth-report --limit 1 --no-open --output growth.html my-workspace
628
+ ```
629
+
581
630
  #### gpu-report
582
631
 
583
632
  Generate a GPU usage report for one or more workspaces/projects with detailed GPU metrics analysis.
@@ -12,5 +12,5 @@
12
12
  # the express permission of Comet ML Inc.
13
13
  # *******************************************************
14
14
 
15
- version_info = (3, 6, 6)
15
+ version_info = (3, 6, 7)
16
16
  __version__ = ".".join(map(str, version_info))
@@ -154,6 +154,7 @@ from urllib.parse import urlparse
154
154
  from comet_ml import API
155
155
 
156
156
  from .admin_gpu_report import main as gpu_report_main
157
+ from .admin_growth_report import generate_growth_report
157
158
  from .admin_optimizer_report import generate_json_report
158
159
  from .admin_usage_report import generate_usage_report
159
160
 
@@ -461,6 +462,79 @@ Examples:
461
462
  action="store_true",
462
463
  )
463
464
 
465
+ # growth-report subcommand
466
+ growth_report_description = """Generate a cross-platform use-case growth report for one or more workspaces.
467
+
468
+ Arguments:
469
+ WORKSPACE (optional, one or more)
470
+ One or more workspaces to run the growth report for.
471
+ If not provided, all workspaces are included.
472
+
473
+ Output:
474
+ Generates a self-contained HTML page containing cross-platform (Opik + EM + MPM)
475
+ use-case growth and rate charts, broken down by workspace/department.
476
+
477
+ Examples:
478
+ cometx admin growth-report
479
+ cometx admin growth-report my-workspace
480
+ cometx admin growth-report workspace1 workspace2 --units week
481
+ cometx admin growth-report my-workspace --window 30d
482
+ cometx admin growth-report my-workspace --platforms em,opik
483
+ cometx admin growth-report my-workspace --output report.html --no-open
484
+ """
485
+ growth_parser = subparsers.add_parser(
486
+ "growth-report",
487
+ help="Generate a cross-platform use-case growth report for one or more workspaces",
488
+ description=growth_report_description,
489
+ formatter_class=argparse.RawDescriptionHelpFormatter,
490
+ )
491
+ # Add global arguments to subparser so they show in help
492
+ add_global_arguments(growth_parser)
493
+ growth_parser.add_argument(
494
+ "WORKSPACE",
495
+ nargs="*",
496
+ help="One or more workspaces to run the growth report for (empty = all)",
497
+ metavar="WORKSPACE",
498
+ type=str,
499
+ )
500
+ growth_parser.add_argument(
501
+ "--units",
502
+ help="Time unit for chart bucket granularity (default: month)",
503
+ choices=["month", "week", "day", "hour"],
504
+ default="month",
505
+ type=str,
506
+ )
507
+ growth_parser.add_argument(
508
+ "--window",
509
+ help="Relative analysis window for KPIs, e.g. 7d/14d/30d/90d (default: 7d)",
510
+ default="7d",
511
+ type=str,
512
+ )
513
+ growth_parser.add_argument(
514
+ "--platforms",
515
+ help="Comma-separated list of platforms to include (default: em,opik,mpm)",
516
+ default="em,opik,mpm",
517
+ type=str,
518
+ )
519
+ growth_parser.add_argument(
520
+ "--output",
521
+ help="Output HTML file path (default: growth_report.html)",
522
+ default="growth_report.html",
523
+ type=str,
524
+ )
525
+ growth_parser.add_argument(
526
+ "--limit",
527
+ help="Optional limit on the number of items collected per platform",
528
+ type=int,
529
+ default=None,
530
+ )
531
+ growth_parser.add_argument(
532
+ "--no-open",
533
+ help="Don't automatically open the generated HTML file",
534
+ default=False,
535
+ action="store_true",
536
+ )
537
+
464
538
 
465
539
  def admin(parsed_args, remaining=None):
466
540
  # Called via `cometx admin ...`
@@ -746,6 +820,25 @@ def admin(parsed_args, remaining=None):
746
820
 
747
821
  traceback.print_exc()
748
822
  return
823
+ elif parsed_args.ACTION == "growth-report":
824
+ try:
825
+ generate_growth_report(
826
+ api,
827
+ parsed_args.WORKSPACE,
828
+ window=parsed_args.window,
829
+ units=parsed_args.units,
830
+ platforms=parsed_args.platforms,
831
+ output=parsed_args.output,
832
+ no_open=parsed_args.no_open,
833
+ limit=parsed_args.limit,
834
+ )
835
+ except Exception as e:
836
+ print("ERROR: " + str(e))
837
+ if parsed_args.debug:
838
+ import traceback
839
+
840
+ traceback.print_exc()
841
+ return
749
842
 
750
843
  except KeyboardInterrupt:
751
844
  if parsed_args.debug: