ripple-sql 0.1.6__tar.gz → 0.1.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 (76) hide show
  1. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/CHANGELOG.md +7 -1
  2. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/PKG-INFO +1 -1
  3. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/pyproject.toml +1 -1
  4. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/identity.py +4 -3
  5. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/.gitignore +0 -0
  6. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/LICENSE +0 -0
  7. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/README.md +0 -0
  8. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/__init__.py +0 -0
  9. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/answer.py +0 -0
  10. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/answer_page.py +0 -0
  11. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/cache.py +0 -0
  12. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/ci.py +0 -0
  13. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/ci_signature.py +0 -0
  14. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/cli.py +0 -0
  15. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/doctor.py +0 -0
  16. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/__init__.py +0 -0
  17. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/budget.py +0 -0
  18. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/column_lineage.py +0 -0
  19. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/column_ref.py +0 -0
  20. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/cte_tracing.py +0 -0
  21. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/dependencies.py +0 -0
  22. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/dialect.py +0 -0
  23. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/dispatch.py +0 -0
  24. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/extraction.py +0 -0
  25. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/generators.py +0 -0
  26. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/jinja.py +0 -0
  27. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/json_sources.py +0 -0
  28. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/macro_source.py +0 -0
  29. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/pipeline.py +0 -0
  30. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/preprocess.py +0 -0
  31. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/safe_gen.py +0 -0
  32. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/schema_qualification.py +0 -0
  33. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/scope.py +0 -0
  34. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/select_sources.py +0 -0
  35. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/sql_script.py +0 -0
  36. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/statement.py +0 -0
  37. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/tech_debt.py +0 -0
  38. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/tsql_catalog.py +0 -0
  39. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/tsql_scalar_vars.py +0 -0
  40. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/tsql_tvf.py +0 -0
  41. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/tsql_xml.py +0 -0
  42. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/types.py +0 -0
  43. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/unused_deps.py +0 -0
  44. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/engine/validation.py +0 -0
  45. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/graph.py +0 -0
  46. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/home.py +0 -0
  47. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/__init__.py +0 -0
  48. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/dbt.py +0 -0
  49. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/dbt_config.py +0 -0
  50. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/sidecar.py +0 -0
  51. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/sqldir.py +0 -0
  52. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/loaders/types.py +0 -0
  53. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/lookml.py +0 -0
  54. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/mcp_server.py +0 -0
  55. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/names.py +0 -0
  56. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/project.py +0 -0
  57. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/py.typed +0 -0
  58. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/render.py +0 -0
  59. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/render_shims.py +0 -0
  60. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/schemas.py +0 -0
  61. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/semantic.py +0 -0
  62. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/server.py +0 -0
  63. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/sourcefiles.py +0 -0
  64. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/star_resolution.py +0 -0
  65. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/static/answer.css +0 -0
  66. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/static/answer.html +0 -0
  67. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/static/answer_twin.js +0 -0
  68. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/static/explore.js +0 -0
  69. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/static/find.js +0 -0
  70. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/static/focus.js +0 -0
  71. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/usage/__init__.py +0 -0
  72. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/usage/cli.py +0 -0
  73. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/usage/collect.py +0 -0
  74. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/usage/discover.py +0 -0
  75. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/usage/ingest.py +0 -0
  76. {ripple_sql-0.1.6 → ripple_sql-0.1.7}/src/ripple/usage/report.py +0 -0
@@ -6,6 +6,11 @@ Notable changes to Ripple. The format follows
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.1.7] - 2026-09-10
10
+
11
+ ### Fixed
12
+ - A plain-SQL repo's `udf.sql` is the function its folder names. Mozilla's bigquery-etl keeps 155 of them at `udf_js/<function>/udf.sql`; named by file every one was "udf", the collision handler mangled them into path names, and the home page listed 118 one-file folders. The folder is the function now, `udf_js.<function>` is its alias, and those files sit in their dataset's row.
13
+
9
14
  ## [0.1.6] - 2026-09-10
10
15
 
11
16
  ### Fixed
@@ -259,7 +264,8 @@ First public release.
259
264
  ### Removed
260
265
  - The dark whole-graph canvas that `ripple serve` used to open (`static/index.html`). Every surface now draws one answer.
261
266
 
262
- [Unreleased]: https://github.com/bteh/ripple/compare/v0.1.6...HEAD
267
+ [Unreleased]: https://github.com/bteh/ripple/compare/v0.1.7...HEAD
268
+ [0.1.7]: https://github.com/bteh/ripple/releases/tag/v0.1.7
263
269
  [0.1.6]: https://github.com/bteh/ripple/releases/tag/v0.1.6
264
270
  [0.1.5]: https://github.com/bteh/ripple/releases/tag/v0.1.5
265
271
  [0.1.4]: https://github.com/bteh/ripple/releases/tag/v0.1.4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: ripple-sql
3
- Version: 0.1.6
3
+ Version: 0.1.7
4
4
  Summary: Offline column-level SQL lineage. See what breaks before you merge.
5
5
  Project-URL: Homepage, https://github.com/bteh/ripple
6
6
  Project-URL: Repository, https://github.com/bteh/ripple
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ripple-sql"
3
- version = "0.1.6"
3
+ version = "0.1.7"
4
4
  description = "Offline column-level SQL lineage. See what breaks before you merge."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -301,7 +301,7 @@ def _merge_self_read_derivations(project: Project, group: list[Model]) -> list[M
301
301
  return kept
302
302
 
303
303
 
304
- ROLE_STEMS = frozenset({"query", "view", "model", "table", "select", "main", "definition"})
304
+ ROLE_STEMS = frozenset({"query", "view", "model", "table", "select", "main", "definition", "udf"})
305
305
 
306
306
 
307
307
  def directory_identity(rel: str) -> tuple[str, set[str]] | None:
@@ -313,8 +313,9 @@ def directory_identity(rel: str) -> tuple[str, set[str]] | None:
313
313
  collision handler mangled them into path names no reference could match,
314
314
  and a 2,096-model repo came out with 0 verified edges. The directory is
315
315
  the relation; its two nearest ancestors are the qualified spellings.
316
- Returns None when the stem carries identity as usual. checks.sql and
317
- script.sql are deliberately not roles: a check reads the relation, it
316
+ udf.sql is a role too: Mozilla keeps 155 of them at udf_js/<function>/,
317
+ and the directory is the function. Returns None when the stem carries
318
+ identity as usual. checks.sql and script.sql are deliberately not roles: a check reads the relation, it
318
319
  does not define it, and claiming the directory would collide with the
319
320
  real definition beside it.
320
321
  """
File without changes
File without changes
File without changes
File without changes
File without changes