polymo 1.3.0__tar.gz → 1.4.1__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 (39) hide show
  1. {polymo-1.3.0 → polymo-1.4.1}/PKG-INFO +14 -3
  2. {polymo-1.3.0 → polymo-1.4.1}/README.md +11 -0
  3. polymo-1.4.1/pyproject.toml +92 -0
  4. polymo-1.3.0/pyproject.toml → polymo-1.4.1/pyproject.toml.orig +17 -6
  5. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/__init__.py +2 -1
  6. polymo-1.4.1/src/polymo/builder/app.py +650 -0
  7. polymo-1.4.1/src/polymo/builder/databricks.py +268 -0
  8. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/preview.py +41 -0
  9. polymo-1.4.1/src/polymo/builder/static/main.css +1 -0
  10. polymo-1.4.1/src/polymo/builder/static/main.js +53 -0
  11. polymo-1.4.1/src/polymo/codegen/__init__.py +4 -0
  12. polymo-1.4.1/src/polymo/codegen/bundle.py +138 -0
  13. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/codegen/generator.py +80 -4
  14. polymo-1.4.1/src/polymo/codegen/templates/bundle/databricks.yml.jinja +26 -0
  15. polymo-1.4.1/src/polymo/codegen/templates/bundle/pipeline.py.jinja +7 -0
  16. polymo-1.4.1/src/polymo/codegen/templates/bundle/readme.md.jinja +14 -0
  17. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/codegen/templates/core.py.jinja +24 -5
  18. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/codegen/templates/dp.py.jinja +7 -0
  19. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/config.py +87 -2
  20. polymo-1.3.0/src/polymo/builder/app.py +0 -283
  21. polymo-1.3.0/src/polymo/builder/static/main.css +0 -1
  22. polymo-1.3.0/src/polymo/builder/static/main.js +0 -80
  23. polymo-1.3.0/src/polymo/codegen/__init__.py +0 -3
  24. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/__init__.py +0 -0
  25. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/examples/countries.polymo.json +0 -0
  26. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/examples/githubrepos.polymo.json +0 -0
  27. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/examples/jsonplaceholder.polymo.json +0 -0
  28. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/examples/jsonplaceholder_endpoints.polymo.json +0 -0
  29. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/examples/weather.polymo.json +0 -0
  30. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/favicon.ico +0 -0
  31. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/favicon.png +0 -0
  32. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/index.html +0 -0
  33. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/logo.png +0 -0
  34. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/logo192.png +0 -0
  35. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/static/mockServiceWorker.js +0 -0
  36. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/builder/templates/index.html +0 -0
  37. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/cli.py +0 -0
  38. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/codegen/templating.py +0 -0
  39. {polymo-1.3.0 → polymo-1.4.1}/src/polymo/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: polymo
3
- Version: 1.3.0
3
+ Version: 1.4.1
4
4
  Summary: Generate standalone Lakeflow Declarative Pipelines scripts from a point-and-click REST connector builder
5
5
  Keywords: spark,pyspark,rest,api,ingestion,data-engineering,etl,http
6
6
  Author: Daniel Tom
@@ -27,10 +27,10 @@ Requires-Dist: pyspark>=4
27
27
  Requires-Dist: pyarrow>=13
28
28
  Requires-Dist: requests>=2.31
29
29
  Requires-Python: >=3.10
30
- Project-URL: Documentation, https://dan1elt0m.github.io/polymo/
31
30
  Project-URL: Homepage, https://github.com/dan1elt0m/polymo
32
- Project-URL: Issues, https://github.com/dan1elt0m/polymo/issues
33
31
  Project-URL: Repository, https://github.com/dan1elt0m/polymo.git
32
+ Project-URL: Documentation, https://dan1elt0m.github.io/polymo/
33
+ Project-URL: Issues, https://github.com/dan1elt0m/polymo/issues
34
34
  Description-Content-Type: text/markdown
35
35
 
36
36
  <p align="center">
@@ -99,6 +99,17 @@ download the script. Every field you fill in is baked into that script as a
99
99
  plain Python constant or a small block of generated code — there is nothing
100
100
  left to configure at runtime, and no polymo import anywhere in the output.
101
101
 
102
+ Ready to run it on Databricks? Switch to the **Deploy** tab instead: pick a
103
+ CLI profile → catalog → schema, click **Bootstrap** to write a full
104
+ Databricks Asset Bundle project (same generated code, laid out under
105
+ `src/`), then **Deploy** and **Run** to drive `databricks bundle deploy`/`run`
106
+ without leaving the Builder. Requires the
107
+ [Databricks CLI](https://docs.databricks.com/dev-tools/cli/) and a
108
+ `~/.databrickscfg` profile — see
109
+ [Deploy to Databricks](docs/builder-ui.md#deploy-to-databricks) for the full
110
+ walkthrough, including how auth secrets can reference a Databricks secret
111
+ scope instead of a placeholder.
112
+
102
113
  See the [Connector options reference](docs/config.md) for what every Builder
103
114
  field generates, and the [Builder UI walkthrough](docs/builder-ui.md) for a
104
115
  guided tour of the form.
@@ -64,6 +64,17 @@ download the script. Every field you fill in is baked into that script as a
64
64
  plain Python constant or a small block of generated code — there is nothing
65
65
  left to configure at runtime, and no polymo import anywhere in the output.
66
66
 
67
+ Ready to run it on Databricks? Switch to the **Deploy** tab instead: pick a
68
+ CLI profile → catalog → schema, click **Bootstrap** to write a full
69
+ Databricks Asset Bundle project (same generated code, laid out under
70
+ `src/`), then **Deploy** and **Run** to drive `databricks bundle deploy`/`run`
71
+ without leaving the Builder. Requires the
72
+ [Databricks CLI](https://docs.databricks.com/dev-tools/cli/) and a
73
+ `~/.databrickscfg` profile — see
74
+ [Deploy to Databricks](docs/builder-ui.md#deploy-to-databricks) for the full
75
+ walkthrough, including how auth secrets can reference a Databricks secret
76
+ scope instead of a placeholder.
77
+
67
78
  See the [Connector options reference](docs/config.md) for what every Builder
68
79
  field generates, and the [Builder UI walkthrough](docs/builder-ui.md) for a
69
80
  guided tour of the form.
@@ -0,0 +1,92 @@
1
+ [project]
2
+ name = "polymo"
3
+ version = "1.4.1"
4
+ description = "Generate standalone Lakeflow Declarative Pipelines scripts from a point-and-click REST connector builder"
5
+ readme = "README.md"
6
+ requires-python = ">=3.10"
7
+ keywords = [
8
+ "spark",
9
+ "pyspark",
10
+ "rest",
11
+ "api",
12
+ "ingestion",
13
+ "data-engineering",
14
+ "etl",
15
+ "http",
16
+ ]
17
+ classifiers = [
18
+ "Development Status :: 5 - Production/Stable",
19
+ "Intended Audience :: Developers",
20
+ "Intended Audience :: Information Technology",
21
+ "Topic :: Internet :: WWW/HTTP",
22
+ "Topic :: Software Development :: Libraries",
23
+ "Topic :: Database",
24
+ "License :: OSI Approved :: BSD License",
25
+ "Programming Language :: Python :: 3",
26
+ "Programming Language :: Python :: 3.10",
27
+ "Programming Language :: Python :: 3.11",
28
+ "Programming Language :: Python :: 3.12",
29
+ "Programming Language :: Python :: 3.13",
30
+ "Operating System :: OS Independent",
31
+ "Typing :: Typed",
32
+ ]
33
+ dependencies = [
34
+ "jinja2>=3.1.6",
35
+ "fastapi>=0.110",
36
+ "uvicorn>=0.24",
37
+ "pyspark>=4",
38
+ "pyarrow>=13",
39
+ "requests>=2.31",
40
+ ]
41
+
42
+ [[project.authors]]
43
+ name = "Daniel Tom"
44
+ email = "d.e.tom89@gmail.com"
45
+
46
+ [project.license]
47
+ text = "BSD-3"
48
+
49
+ [project.scripts]
50
+ polymo = "polymo.cli:main"
51
+
52
+ [project.urls]
53
+ Homepage = "https://github.com/dan1elt0m/polymo"
54
+ Repository = "https://github.com/dan1elt0m/polymo.git"
55
+ Documentation = "https://dan1elt0m.github.io/polymo/"
56
+ Issues = "https://github.com/dan1elt0m/polymo/issues"
57
+
58
+ [dependency-groups]
59
+ dev = [
60
+ "httpx>=0.26",
61
+ "pre-commit>=4.3.0",
62
+ "pytest>=8.4.2",
63
+ "pytest-cov>=7.0.0",
64
+ "pyyaml>=6.0",
65
+ "requests>=2.31",
66
+ "ruff>=0.13.3,<0.16",
67
+ ]
68
+ docs = [
69
+ "mkdocs>=1.4.2",
70
+ "mkdocs-material>=9.1.4",
71
+ "mkdocs-gen-files>=0.4,<0.7",
72
+ "mkdocs-literate-nav>=0.6.0",
73
+ "mkdocstrings[python]>=0.20,<1.1",
74
+ "mkautodoc>=0.2.0",
75
+ "pymdown-extensions>=10.0.1",
76
+ ]
77
+
78
+ [build-system]
79
+ requires = ["uv_build>=0.8.17,<0.13.0"]
80
+ build-backend = "uv_build"
81
+
82
+ [tool.uv.build-backend]
83
+ wheel-exclude = ["polymo/builder/static/mockServiceWorker.js"]
84
+
85
+ [tool.ruff]
86
+ extend-exclude = [
87
+ "tests/codegen/golden",
88
+ "tests/codegen/golden_bundle",
89
+ ]
90
+
91
+ [tool.pytest.ini_options]
92
+ markers = ["spark: exercises a real local[1] PySpark session (slower: ~seconds of JVM startup)."]
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "polymo"
3
- version = "1.3.0"
3
+ version = "1.4.1"
4
4
  description = "Generate standalone Lakeflow Declarative Pipelines scripts from a point-and-click REST connector builder"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -40,15 +40,26 @@ dev = [
40
40
  "pre-commit>=4.3.0",
41
41
  "pytest>=8.4.2",
42
42
  "pytest-cov>=7.0.0",
43
+ # Test-only: parses generated databricks.yml in tests/codegen/test_bundle.py.
44
+ # Runtime code never imports yaml (bundle output is generated as text,
45
+ # not read back with a YAML parser).
46
+ "pyyaml>=6.0",
43
47
  "requests>=2.31",
44
- "ruff>=0.13.3",
48
+ # Capped below 0.16: ruff 0.16 turned on new default lint rules
49
+ # (UP035, PLR0133) that flag polymo's own generated-code templates
50
+ # (checked byte-for-byte against tests/codegen/golden/) as violations.
51
+ # This is a linter-version regression, not a security issue -- ruff
52
+ # isn't on the dependency-vulnerability list -- so it's pinned here
53
+ # rather than rewriting the codegen templates to chase a newer
54
+ # linter's opinions.
55
+ "ruff>=0.13.3,<0.16",
45
56
  ]
46
57
  docs = [
47
58
  "mkdocs>=1.4.2",
48
59
  "mkdocs-material>=9.1.4",
49
- "mkdocs-gen-files>=0.4,<0.6",
60
+ "mkdocs-gen-files>=0.4,<0.7",
50
61
  "mkdocs-literate-nav>=0.6.0",
51
- "mkdocstrings[python]>=0.20,<0.30",
62
+ "mkdocstrings[python]>=0.20,<1.1",
52
63
  "mkautodoc>=0.2.0",
53
64
  "pymdown-extensions>=10.0.1",
54
65
  ]
@@ -57,7 +68,7 @@ docs = [
57
68
  polymo = "polymo.cli:main"
58
69
 
59
70
  [build-system]
60
- requires = ["uv_build>=0.8.17,<0.9.0"]
71
+ requires = ["uv_build>=0.8.17,<0.13.0"]
61
72
  build-backend = "uv_build"
62
73
 
63
74
  [tool.uv.build-backend]
@@ -76,7 +87,7 @@ Issues = "https://github.com/dan1elt0m/polymo/issues"
76
87
  # Golden fixtures capture `generate()`'s literal output byte-for-byte; ruff
77
88
  # must not reformat them or the golden tests would drift from what the
78
89
  # generator actually produces.
79
- extend-exclude = ["tests/codegen/golden"]
90
+ extend-exclude = ["tests/codegen/golden", "tests/codegen/golden_bundle"]
80
91
 
81
92
  [tool.pytest.ini_options]
82
93
  markers = [
@@ -1,5 +1,6 @@
1
1
  """Web interface for building polymo REST configurations."""
2
2
 
3
+ from . import databricks
3
4
  from .app import create_app
4
5
 
5
- __all__ = ["create_app"]
6
+ __all__ = ["create_app", "databricks"]