steve-cli 0.3.9__tar.gz → 0.3.11__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 (44) hide show
  1. {steve_cli-0.3.9 → steve_cli-0.3.11}/PKG-INFO +1 -1
  2. {steve_cli-0.3.9 → steve_cli-0.3.11}/pyproject.toml +1 -1
  3. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/decorators/lineage_job.py +4 -0
  4. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/collector.py +9 -4
  5. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/storage.py +11 -4
  6. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli.egg-info/PKG-INFO +1 -1
  7. {steve_cli-0.3.9 → steve_cli-0.3.11}/README.md +0 -0
  8. {steve_cli-0.3.9 → steve_cli-0.3.11}/setup.cfg +0 -0
  9. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/__init__.py +0 -0
  10. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/cli.py +0 -0
  11. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/decorators/__init__.py +0 -0
  12. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/__init__.py +0 -0
  13. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/adapters/__init__.py +0 -0
  14. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/adapters/logging.py +0 -0
  15. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/adapters/null.py +0 -0
  16. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/adapters/openlineage.py +0 -0
  17. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/port.py +0 -0
  18. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/lineage/registry.py +0 -0
  19. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/__init__.py +0 -0
  20. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/__init__.py +0 -0
  21. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/extractors/__init__.py +0 -0
  22. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/extractors/csv.py +0 -0
  23. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/extractors/excel.py +0 -0
  24. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/extractors/generic.py +0 -0
  25. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/extractors/json.py +0 -0
  26. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/extractors/parquet.py +0 -0
  27. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/port.py +0 -0
  28. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/metadata/registry.py +0 -0
  29. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/parquet.py +0 -0
  30. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/protocol.py +0 -0
  31. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage/s3.py +0 -0
  32. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/storage.py +0 -0
  33. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/__init__.py +0 -0
  34. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/adapters/__init__.py +0 -0
  35. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/adapters/great_expectations.py +0 -0
  36. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/adapters/null.py +0 -0
  37. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/adapters/validoopsie.py +0 -0
  38. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/port.py +0 -0
  39. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli/validation/registry.py +0 -0
  40. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli.egg-info/SOURCES.txt +0 -0
  41. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli.egg-info/dependency_links.txt +0 -0
  42. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli.egg-info/entry_points.txt +0 -0
  43. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli.egg-info/requires.txt +0 -0
  44. {steve_cli-0.3.9 → steve_cli-0.3.11}/steve_cli.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: steve-cli
3
- Version: 0.3.9
3
+ Version: 0.3.11
4
4
  Summary: A simple CLI tool to run jobs from jobs.yaml with proper environment setup
5
5
  Author: Frank
6
6
  License: MIT
@@ -5,7 +5,7 @@ build-backend = "setuptools.build_meta"
5
5
 
6
6
  [project]
7
7
  name = "steve-cli"
8
- version = "0.3.9"
8
+ version = "0.3.11"
9
9
  description = "A simple CLI tool to run jobs from jobs.yaml with proper environment setup"
10
10
  readme = "README.md"
11
11
  license = {text = "MIT"}
@@ -26,6 +26,10 @@ def lineage_job(
26
26
 
27
27
  @functools.wraps(fn)
28
28
  def wrapper(*args: Any, **kwargs: Any) -> Any:
29
+ from dotenv import load_dotenv
30
+ load_dotenv(".env", override=False)
31
+ load_dotenv(".workspaces.env", override=False)
32
+
29
33
  session = make_session(
30
34
  namespace=namespace,
31
35
  job_name=job_name,
@@ -18,16 +18,21 @@ class LineageSession:
18
18
  _inputs: set[str] = field(default_factory=set)
19
19
  _outputs: set[str] = field(default_factory=set)
20
20
  _facets: Dict[str, Dict[str, Any]] = field(default_factory=dict)
21
+ _dataset_namespaces: Dict[str, str] = field(default_factory=dict)
21
22
 
22
- def record_read(self, dataset: str, facets: Dict[str, Any] | None = None) -> None:
23
+ def record_read(self, dataset: str, facets: Dict[str, Any] | None = None, namespace: str | None = None) -> None:
23
24
  self._inputs.add(dataset)
24
25
  if facets:
25
26
  self._facets.setdefault(dataset, {}).update(facets)
27
+ if namespace:
28
+ self._dataset_namespaces[dataset] = namespace
26
29
 
27
- def record_write(self, dataset: str, facets: Dict[str, Any] | None = None) -> None:
30
+ def record_write(self, dataset: str, facets: Dict[str, Any] | None = None, namespace: str | None = None) -> None:
28
31
  self._outputs.add(dataset)
29
32
  if facets:
30
33
  self._facets.setdefault(dataset, {}).update(facets)
34
+ if namespace:
35
+ self._dataset_namespaces[dataset] = namespace
31
36
 
32
37
  def attach_facets(self, dataset: str, facets: Dict[str, Any]) -> None:
33
38
  self._facets.setdefault(dataset, {}).update(facets)
@@ -42,8 +47,8 @@ class LineageSession:
42
47
  namespace=self.namespace,
43
48
  run_id=self.run_id,
44
49
  state=state,
45
- inputs=[DatasetRef(namespace=self.namespace, name=x, facets=self._facets.get(x, {})) for x in self._inputs],
46
- outputs=[DatasetRef(namespace=self.namespace, name=x, facets=self._facets.get(x, {})) for x in self._outputs],
50
+ inputs=[DatasetRef(namespace=self._dataset_namespaces.get(x, self.namespace), name=x, facets=self._facets.get(x, {})) for x in self._inputs],
51
+ outputs=[DatasetRef(namespace=self._dataset_namespaces.get(x, self.namespace), name=x, facets=self._facets.get(x, {})) for x in self._outputs],
47
52
  run_facets=run_facets or {},
48
53
  )
49
54
 
@@ -58,23 +58,30 @@ class LineageStorage:
58
58
  self.__resolved = self._storage_or_factory # type: ignore[assignment]
59
59
  return self.__resolved
60
60
 
61
+ @property
62
+ def _dataset_namespace(self) -> str | None:
63
+ s = self._storage
64
+ if hasattr(s, 'endpoint') and hasattr(s, 'bucket'):
65
+ return f"{s.endpoint.rstrip('/')}/{s.bucket}"
66
+ return None
67
+
61
68
  def put_file(self, local_path: str, path: str) -> None:
62
69
  self._storage.put_file(local_path, path)
63
- self._session.record_write(path)
70
+ self._session.record_write(path, namespace=self._dataset_namespace)
64
71
 
65
72
  def get_file(self, path: str, local_path: str) -> None:
66
73
  self._storage.get_file(path, local_path)
67
- self._session.record_read(path)
74
+ self._session.record_read(path, namespace=self._dataset_namespace)
68
75
 
69
76
  def put_bytes(self, data: bytes, path: str) -> None:
70
77
  self._storage.put_bytes(data, path)
71
78
  facets = _extract_facets(data, path)
72
- self._session.record_write(path, facets or None)
79
+ self._session.record_write(path, facets or None, namespace=self._dataset_namespace)
73
80
 
74
81
  def get_bytes(self, path: str) -> bytes:
75
82
  data = self._storage.get_bytes(path)
76
83
  facets = _extract_facets(data, path)
77
- self._session.record_read(path, facets or None)
84
+ self._session.record_read(path, facets or None, namespace=self._dataset_namespace)
78
85
  return data
79
86
 
80
87
  def read(self, path: str) -> DatasetHandle:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: steve-cli
3
- Version: 0.3.9
3
+ Version: 0.3.11
4
4
  Summary: A simple CLI tool to run jobs from jobs.yaml with proper environment setup
5
5
  Author: Frank
6
6
  License: MIT
File without changes
File without changes
File without changes