bigeye-cli 0.8.1__tar.gz → 0.8.3__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 (36) hide show
  1. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/PKG-INFO +10 -4
  2. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/CLI_DOCS.md +8 -2
  3. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/catalog/custom_repo_commands.py +72 -3
  4. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/lineage/lineage_commands.py +52 -2
  5. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/pyproject.toml +2 -2
  6. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/LICENSE +0 -0
  7. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/__init__.py +0 -0
  8. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/__main__.py +0 -0
  9. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/__version__.py +0 -0
  10. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/bigconfig/__init__.py +0 -0
  11. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/bigconfig/bigconfig_commands.py +0 -0
  12. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/bigconfig/bigconfig_options.py +0 -0
  13. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/catalog/__init__.py +0 -0
  14. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/catalog/catalog_commands.py +0 -0
  15. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/collections/__init__.py +0 -0
  16. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/collections/collection_commands.py +0 -0
  17. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/configure/__init__.py +0 -0
  18. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/configure/configure_commands.py +0 -0
  19. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/deltas/__init__.py +0 -0
  20. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/deltas/deltas_commands.py +0 -0
  21. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/enums.py +0 -0
  22. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/exceptions/__init__.py +0 -0
  23. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/exceptions/exceptions.py +0 -0
  24. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/functions.py +0 -0
  25. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/global_options.py +0 -0
  26. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/issues/__init__.py +0 -0
  27. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/issues/issue_commands.py +0 -0
  28. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/lineage/__init__.py +0 -0
  29. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/metric/__init__.py +0 -0
  30. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/metric/metric_commands.py +0 -0
  31. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/model/__init__.py +0 -0
  32. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/model/cicd_conf.py +0 -0
  33. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/model/github_report.py +0 -0
  34. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/model/vendor_report.py +0 -0
  35. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/workspace/__init__.py +0 -0
  36. {bigeye_cli-0.8.1 → bigeye_cli-0.8.3}/bigeye_cli/workspace/workspace_commands.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: bigeye-cli
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary: Bigeye CLI offers developer tools for maintaining your developer workspace.
5
5
  Home-page: https://docs.bigeye.com/docs
6
6
  License: Proprietary
@@ -12,13 +12,13 @@ Classifier: Programming Language :: Python :: 3
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Requires-Dist: PyGithub (>=1.59.1,<2.0.0)
15
- Requires-Dist: bigeye-sdk (>=0.11.0,<0.12.0)
15
+ Requires-Dist: bigeye-sdk (>=0.11.2,<0.12.0)
16
16
  Requires-Dist: click (>=8.1.8,<9.0.0)
17
17
  Requires-Dist: rich (>=14.1.0,<15.0.0)
18
18
  Description-Content-Type: text/markdown
19
19
 
20
20
  # **Bigeye CLI**
21
- Version: 0.8.1
21
+ Version: 0.8.3
22
22
  ## Installation
23
23
 
24
24
  **Setting up your local/build environment**
@@ -197,7 +197,7 @@ Configuration Commands for Bigeye CLI
197
197
  **Usage**:
198
198
 
199
199
  ```console
200
- $ bigeye configure [OPTIONS] COMMAND [ARGS]...
200
+ $ bigeye configure [OPTIONS] [COMMAND] [ARGS]...
201
201
  ```
202
202
 
203
203
  **Options**:
@@ -1343,6 +1343,8 @@ $ bigeye catalog custom-repo import [OPTIONS]
1343
1343
  * `-w, --workspace TEXT`: Name of the workspace configuration. [env var: BIGEYE_WORKSPACE; default: DEFAULT]
1344
1344
  * `-f, --file TEXT`: Path to the custom repository .xlsx workbook. [required]
1345
1345
  * `--cleanup-stale`: Delete nodes/edges present in Bigeye but missing from the sheet. Off by default.
1346
+ * `--skip-unresolved-edges / --no-skip-unresolved-edges`: Import the rest instead of aborting when some edge endpoints don&#x27;t resolve to a Bigeye node (default: on). Skipped endpoints are written to the unresolved log. Pass --no-skip-unresolved-edges to abort on any unresolved endpoint. [default: skip-unresolved-edges]
1347
+ * `--unresolved-log TEXT`: Path for the unresolved-endpoints log. Defaults to custom_repo_unresolved.log in the current working directory. [default: custom_repo_unresolved.log]
1346
1348
  * `--help`: Show this message and exit.
1347
1349
 
1348
1350
  ### `bigeye catalog custom-repo export`
@@ -2015,6 +2017,8 @@ $ bigeye lineage export-graphs [OPTIONS]
2015
2017
  * `--direction [upstream|downstream|both]`: Direction to traverse: upstream, downstream, or both. [default: both]
2016
2018
  * `--content [all|nodes|edges|attributes]`: What each per-graph report contains: all, nodes, edges, or attributes. [default: all]
2017
2019
  * `--include-etl / --no-include-etl`: Include or exclude ETL operator nodes. Defaults to including them. [default: include-etl]
2020
+ * `--depth INTEGER`: Per-window traversal depth. When set, the graph is built in bounded depth-hop windows (re-rooting at the lineage frontier) up to the workspace&#x27;s lineage.max_depth, avoiding the oversized single response that fails on very large graphs. Applies to every FQN; a per-row &#x27;depth&#x27; column in the FQNs file overrides it for that row. Omit to request the full graph in one call (the previous behavior).
2021
+ * `--concurrency INTEGER`: Max concurrent window requests when --depth is used. Lower it to reduce client memory and server load on wide graphs. [default: 8]
2018
2022
  * `-o, --output TEXT`: Output .zip path. Defaults to lineage_graphs.zip in the current directory.
2019
2023
  * `--help`: Show this message and exit.
2020
2024
 
@@ -2042,6 +2046,8 @@ $ bigeye lineage export-end-to-end [OPTIONS]
2042
2046
  * `--direction [upstream|downstream|both]`: Direction to trace: upstream, downstream, or both. [default: both]
2043
2047
  * `--granularity [schema|table|column]`: Hop level: schema, table, or column. Defaults to each root&#x27;s own level.
2044
2048
  * `--max-paths INTEGER`: Per-root cap on enumerated paths. Truncation is logged, never silent. [default: 10000]
2049
+ * `--depth INTEGER`: Per-window traversal depth. When set, each root&#x27;s graph is fetched in bounded depth-hop windows, re-rooting at the lineage frontier until the lineage is exhausted end-to-end. This escapes the backend&#x27;s per-request depth ceiling (lineage.max_depth) that truncates a single full fetch, and keeps each request small so very large graphs don&#x27;t fail. Omit to request the graph in one call (the previous behavior, capped at the backend depth limit).
2050
+ * `--concurrency INTEGER`: Max concurrent window requests when --depth is used. Lower it to reduce client memory and server load on wide graphs. Ignored without --depth. [default: 8]
2045
2051
  * `-o, --output TEXT`: Output .csv path. Defaults to end_to_end_&lt;root&gt;.csv in the current directory.
2046
2052
  * `--help`: Show this message and exit.
2047
2053
 
@@ -1,5 +1,5 @@
1
1
  # **Bigeye CLI**
2
- Version: 0.8.1
2
+ Version: 0.8.3
3
3
  ## Installation
4
4
 
5
5
  **Setting up your local/build environment**
@@ -178,7 +178,7 @@ Configuration Commands for Bigeye CLI
178
178
  **Usage**:
179
179
 
180
180
  ```console
181
- $ bigeye configure [OPTIONS] COMMAND [ARGS]...
181
+ $ bigeye configure [OPTIONS] [COMMAND] [ARGS]...
182
182
  ```
183
183
 
184
184
  **Options**:
@@ -1324,6 +1324,8 @@ $ bigeye catalog custom-repo import [OPTIONS]
1324
1324
  * `-w, --workspace TEXT`: Name of the workspace configuration. [env var: BIGEYE_WORKSPACE; default: DEFAULT]
1325
1325
  * `-f, --file TEXT`: Path to the custom repository .xlsx workbook. [required]
1326
1326
  * `--cleanup-stale`: Delete nodes/edges present in Bigeye but missing from the sheet. Off by default.
1327
+ * `--skip-unresolved-edges / --no-skip-unresolved-edges`: Import the rest instead of aborting when some edge endpoints don&#x27;t resolve to a Bigeye node (default: on). Skipped endpoints are written to the unresolved log. Pass --no-skip-unresolved-edges to abort on any unresolved endpoint. [default: skip-unresolved-edges]
1328
+ * `--unresolved-log TEXT`: Path for the unresolved-endpoints log. Defaults to custom_repo_unresolved.log in the current working directory. [default: custom_repo_unresolved.log]
1327
1329
  * `--help`: Show this message and exit.
1328
1330
 
1329
1331
  ### `bigeye catalog custom-repo export`
@@ -1996,6 +1998,8 @@ $ bigeye lineage export-graphs [OPTIONS]
1996
1998
  * `--direction [upstream|downstream|both]`: Direction to traverse: upstream, downstream, or both. [default: both]
1997
1999
  * `--content [all|nodes|edges|attributes]`: What each per-graph report contains: all, nodes, edges, or attributes. [default: all]
1998
2000
  * `--include-etl / --no-include-etl`: Include or exclude ETL operator nodes. Defaults to including them. [default: include-etl]
2001
+ * `--depth INTEGER`: Per-window traversal depth. When set, the graph is built in bounded depth-hop windows (re-rooting at the lineage frontier) up to the workspace&#x27;s lineage.max_depth, avoiding the oversized single response that fails on very large graphs. Applies to every FQN; a per-row &#x27;depth&#x27; column in the FQNs file overrides it for that row. Omit to request the full graph in one call (the previous behavior).
2002
+ * `--concurrency INTEGER`: Max concurrent window requests when --depth is used. Lower it to reduce client memory and server load on wide graphs. [default: 8]
1999
2003
  * `-o, --output TEXT`: Output .zip path. Defaults to lineage_graphs.zip in the current directory.
2000
2004
  * `--help`: Show this message and exit.
2001
2005
 
@@ -2023,6 +2027,8 @@ $ bigeye lineage export-end-to-end [OPTIONS]
2023
2027
  * `--direction [upstream|downstream|both]`: Direction to trace: upstream, downstream, or both. [default: both]
2024
2028
  * `--granularity [schema|table|column]`: Hop level: schema, table, or column. Defaults to each root&#x27;s own level.
2025
2029
  * `--max-paths INTEGER`: Per-root cap on enumerated paths. Truncation is logged, never silent. [default: 10000]
2030
+ * `--depth INTEGER`: Per-window traversal depth. When set, each root&#x27;s graph is fetched in bounded depth-hop windows, re-rooting at the lineage frontier until the lineage is exhausted end-to-end. This escapes the backend&#x27;s per-request depth ceiling (lineage.max_depth) that truncates a single full fetch, and keeps each request small so very large graphs don&#x27;t fail. Omit to request the graph in one call (the previous behavior, capped at the backend depth limit).
2031
+ * `--concurrency INTEGER`: Max concurrent window requests when --depth is used. Lower it to reduce client memory and server load on wide graphs. Ignored without --depth. [default: 8]
2026
2032
  * `-o, --output TEXT`: Output .csv path. Defaults to end_to_end_&lt;root&gt;.csv in the current directory.
2027
2033
  * `--help`: Show this message and exit.
2028
2034
 
@@ -1,4 +1,5 @@
1
1
  import os
2
+ from datetime import datetime
2
3
  from typing import Dict, List, Optional, Tuple
3
4
 
4
5
  import typer
@@ -6,6 +7,7 @@ import typer
6
7
  from bigeye_cli import global_options
7
8
  from bigeye_cli.functions import cli_client_factory
8
9
  from bigeye_sdk.controller.custom_repository_controller import CustomRepositoryController
10
+ from bigeye_sdk.generated.com.bigeye.models.generated import DataNodeType
9
11
  from bigeye_sdk.log import get_logger
10
12
  from bigeye_sdk.model.custom_repository_excel import (
11
13
  SHEET_EDGES,
@@ -34,6 +36,38 @@ def _print_errors(header: str, errors: List[WorkbookValidationError]) -> None:
34
36
  typer.echo(f" {error.format()}", err=True)
35
37
 
36
38
 
39
+ def _write_unresolved_log(
40
+ log_path: str, repo_name: str, unresolved: List[WorkbookValidationError]
41
+ ) -> bool:
42
+ """Write a log file naming the edge endpoints that could not be resolved to a
43
+ unique Bigeye node — either no match (the column/object does not exist) or more
44
+ than one match (ambiguous). Best-effort: returns False and warns if the file
45
+ cannot be written (the same endpoints are also printed to stderr).
46
+
47
+ Each endpoint is a catalog path 'Repo.schema.table.column' (or a warehouse FQN);
48
+ its final segment is the column/object in question.
49
+ """
50
+ lines = [
51
+ "Custom repository import — unresolved edge endpoints",
52
+ f"Repository: {repo_name}",
53
+ f"Generated: {datetime.now().isoformat(timespec='seconds')}",
54
+ f"Count: {len(unresolved)}",
55
+ "",
56
+ "These endpoints could not be resolved to a unique Bigeye node (no match, or",
57
+ "more than one), so the edges referencing them were skipped. Each line below",
58
+ "states the reason and the endpoint value.",
59
+ "",
60
+ ]
61
+ lines.extend(error.format() for error in unresolved)
62
+ try:
63
+ with open(log_path, "w") as f:
64
+ f.write("\n".join(lines) + "\n")
65
+ return True
66
+ except OSError as e:
67
+ typer.echo(f"Warning: could not write unresolved log to '{log_path}': {e}", err=True)
68
+ return False
69
+
70
+
37
71
  def _resolve_paths(
38
72
  wb: CustomRepoWorkbook, controller: CustomRepositoryController
39
73
  ) -> Tuple[Dict[str, int], List[WorkbookValidationError]]:
@@ -46,7 +80,11 @@ def _resolve_paths(
46
80
  controller.warm_warehouse_cache(endpoints)
47
81
  for endpoint_type, value in endpoints:
48
82
  if endpoint_type == EdgeEndpointType.CUSTOM.value:
49
- matches = controller.resolve_catalog_path(parse_catalog_path(value))
83
+ # CUSTOM endpoints are catalog paths into custom-repository nodes; the
84
+ # type filter keeps the search off same-named warehouse/MetaCenter nodes.
85
+ matches = controller.resolve_catalog_path(
86
+ parse_catalog_path(value), search_type=DataNodeType.DATA_NODE_TYPE_CUSTOM
87
+ )
50
88
  else:
51
89
  matches = controller.resolve_warehouse_fqn(endpoint_type, value)
52
90
  if not matches:
@@ -108,6 +146,19 @@ def import_repo(
108
146
  "--cleanup-stale",
109
147
  help="Delete nodes/edges present in Bigeye but missing from the sheet. Off by default.",
110
148
  ),
149
+ skip_unresolved_edges: bool = typer.Option(
150
+ True,
151
+ "--skip-unresolved-edges/--no-skip-unresolved-edges",
152
+ help="Import the rest instead of aborting when some edge endpoints don't resolve "
153
+ "to a Bigeye node (default: on). Skipped endpoints are written to the unresolved "
154
+ "log. Pass --no-skip-unresolved-edges to abort on any unresolved endpoint.",
155
+ ),
156
+ unresolved_log: str = typer.Option(
157
+ "custom_repo_unresolved.log",
158
+ "--unresolved-log",
159
+ help="Path for the unresolved-endpoints log. Defaults to "
160
+ "custom_repo_unresolved.log in the current working directory.",
161
+ ),
111
162
  ):
112
163
  """Import a custom repository from an Excel workbook."""
113
164
  client = cli_client_factory(bigeye_conf, config_file, workspace)
@@ -126,10 +177,28 @@ def import_repo(
126
177
 
127
178
  path_node_ids, unresolved = _resolve_paths(wb, controller)
128
179
  if unresolved:
180
+ log_written = _write_unresolved_log(unresolved_log, wb.repo_name, unresolved)
129
181
  _print_errors("Could not resolve all catalog path references", unresolved)
130
- raise typer.Exit(code=1)
182
+ log_hint = f" (see '{unresolved_log}')" if log_written else ""
183
+ if not skip_unresolved_edges:
184
+ typer.echo(
185
+ f"{len(unresolved)} unresolved endpoint(s){log_hint}. "
186
+ f"Re-run with --skip-unresolved-edges to import the rest.",
187
+ err=True,
188
+ )
189
+ raise typer.Exit(code=1)
190
+ typer.echo(
191
+ f"Skipping {len(unresolved)} unresolvable endpoint(s){log_hint} "
192
+ f"and importing the rest.",
193
+ err=True,
194
+ )
131
195
 
132
- config = build_config(wb, path_node_ids=path_node_ids, cleanup_stale=cleanup_stale)
196
+ config = build_config(
197
+ wb,
198
+ path_node_ids=path_node_ids,
199
+ cleanup_stale=cleanup_stale,
200
+ drop_unresolved_edges=skip_unresolved_edges,
201
+ )
133
202
  result = controller.sync_from_config(config, wait_for_completion=True)
134
203
 
135
204
  log.info(
@@ -266,6 +266,21 @@ def export_graphs(
266
266
  "--include-etl/--no-include-etl",
267
267
  help="Include or exclude ETL operator nodes. Defaults to including them.",
268
268
  ),
269
+ depth: Optional[int] = typer.Option(
270
+ None,
271
+ "--depth",
272
+ help="Per-window traversal depth. When set, the graph is built in bounded depth-hop "
273
+ "windows (re-rooting at the lineage frontier) up to the workspace's lineage.max_depth, "
274
+ "avoiding the oversized single response that fails on very large graphs. Applies to "
275
+ "every FQN; a per-row 'depth' column in the FQNs file overrides it for that row. "
276
+ "Omit to request the full graph in one call (the previous behavior).",
277
+ ),
278
+ concurrency: int = typer.Option(
279
+ 8,
280
+ "--concurrency",
281
+ help="Max concurrent window requests when --depth is used. Lower it to reduce client "
282
+ "memory and server load on wide graphs.",
283
+ ),
269
284
  output: Optional[str] = typer.Option(
270
285
  None,
271
286
  "--output",
@@ -279,19 +294,31 @@ def export_graphs(
279
294
  and writes one folder per FQN (nodes/edges/attributes) plus a top-level manifest of
280
295
  successes and failures.
281
296
  """
297
+ if depth is not None and depth < 1:
298
+ typer.echo("--depth must be a positive integer (1 or greater).", err=True)
299
+ raise typer.Exit(code=1)
300
+
282
301
  client = cli_client_factory(bigeye_conf, config_file, workspace)
283
302
  controller = LineageCustomReporting(client)
284
303
 
285
304
  try:
286
- fqns = read_fqns_file(fqns_file)
305
+ specs = read_fqns_file(fqns_file)
287
306
  except OSError as e:
288
307
  typer.echo(f"Could not read FQNs file '{fqns_file}': {e}", err=True)
289
308
  raise typer.Exit(code=1)
290
309
 
291
- if not fqns:
310
+ if not specs:
292
311
  typer.echo(f"No FQNs found in '{fqns_file}'.", err=True)
293
312
  raise typer.Exit(code=1)
294
313
 
314
+ fqns = [spec.fqn for spec in specs]
315
+ # Per-row depth wins; --depth is the default for rows without one. No depth anywhere -> full graph.
316
+ depth_by_fqn = {
317
+ spec.fqn: (spec.depth if spec.depth is not None else depth)
318
+ for spec in specs
319
+ if (spec.depth if spec.depth is not None else depth) is not None
320
+ }
321
+
295
322
  output_path = output or "lineage_graphs.zip"
296
323
  summary = controller.export_graphs(
297
324
  fqns=fqns,
@@ -299,6 +326,8 @@ def export_graphs(
299
326
  content=content,
300
327
  include_etl=include_etl,
301
328
  output_path=output_path,
329
+ depth_by_fqn=depth_by_fqn or None,
330
+ concurrency=concurrency,
302
331
  )
303
332
 
304
333
  log.info(
@@ -337,6 +366,21 @@ def export_end_to_end(
337
366
  "--max-paths",
338
367
  help="Per-root cap on enumerated paths. Truncation is logged, never silent.",
339
368
  ),
369
+ depth: Optional[int] = typer.Option(
370
+ None,
371
+ "--depth",
372
+ help="Per-window traversal depth. When set, each root's graph is fetched in bounded depth-hop "
373
+ "windows, re-rooting at the lineage frontier until the lineage is exhausted end-to-end. "
374
+ "This escapes the backend's per-request depth ceiling (lineage.max_depth) that truncates a "
375
+ "single full fetch, and keeps each request small so very large graphs don't fail. Omit to "
376
+ "request the graph in one call (the previous behavior, capped at the backend depth limit).",
377
+ ),
378
+ concurrency: int = typer.Option(
379
+ 8,
380
+ "--concurrency",
381
+ help="Max concurrent window requests when --depth is used. Lower it to reduce client "
382
+ "memory and server load on wide graphs. Ignored without --depth.",
383
+ ),
340
384
  output: Optional[str] = typer.Option(
341
385
  None,
342
386
  "--output",
@@ -351,6 +395,10 @@ def export_end_to_end(
351
395
  collapsed to the chosen (or root-inferred) granularity — column/field hops roll
352
396
  up to their containing table/object (warehouse tables, ETL targets, BI objects).
353
397
  """
398
+ if depth is not None and depth < 1:
399
+ typer.echo("--depth must be a positive integer (1 or greater).", err=True)
400
+ raise typer.Exit(code=1)
401
+
354
402
  client = cli_client_factory(bigeye_conf, config_file, workspace)
355
403
  controller = LineageCustomReporting(client)
356
404
 
@@ -361,6 +409,8 @@ def export_end_to_end(
361
409
  granularity=granularity,
362
410
  output_path=output_path,
363
411
  max_paths=max_paths,
412
+ depth=depth,
413
+ concurrency=concurrency,
364
414
  )
365
415
 
366
416
  log.info(
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "bigeye-cli"
3
- version = "0.8.1"
3
+ version = "0.8.3"
4
4
  description = "Bigeye CLI offers developer tools for maintaining your developer workspace."
5
5
  license = "Proprietary"
6
6
  authors = ["Bigeye <support@bigeye.com>"]
@@ -19,7 +19,7 @@ bigeye = "bigeye_cli.__main__:app"
19
19
  [tool.poetry.dependencies]
20
20
  python = "^3.11.0"
21
21
  click = "^8.1.8"
22
- bigeye-sdk = "^0.11.0"
22
+ bigeye-sdk = "^0.11.2"
23
23
  rich = "^14.1.0"
24
24
  PyGithub = '^1.59.1'
25
25
 
File without changes