dataface 0.1.6.dev183__py3-none-any.whl → 0.1.6.dev321__py3-none-any.whl

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 (84) hide show
  1. d3_format/py.typed +0 -0
  2. dataface/DATAFACE_SYNTAX.md +0 -52
  3. dataface/agent_api/_init_templates/meta.yaml +19 -0
  4. dataface/agent_api/docs/yaml-reference.md +158 -122
  5. dataface/agent_api/init.py +4 -0
  6. dataface/agent_api/project_session.py +20 -4
  7. dataface/ai/agent.py +11 -7
  8. dataface/ai/prompts/sql-guidance.md +12 -0
  9. dataface/ai/skills/dashboard-build/SKILL.md +11 -2
  10. dataface/ai/skills/data-exploration/SKILL.md +21 -8
  11. dataface/ai/tools/__init__.py +2 -2
  12. dataface/cli/commands/schema.py +174 -24
  13. dataface/core/compile/__init__.py +6 -8
  14. dataface/core/compile/compiler.py +80 -73
  15. dataface/core/compile/config.py +6 -103
  16. dataface/core/compile/data_table_attachment.py +23 -15
  17. dataface/core/compile/inherit_graph.py +8 -0
  18. dataface/core/compile/inherit_registry.yaml +46 -0
  19. dataface/core/compile/inherit_resolver.py +1 -1
  20. dataface/core/compile/introspection.py +10 -0
  21. dataface/core/compile/meta.py +105 -286
  22. dataface/core/compile/models/chart/authored.py +13 -1
  23. dataface/core/compile/models/chart/normalized.py +12 -9
  24. dataface/core/compile/models/chart/resolved.py +6 -0
  25. dataface/core/compile/models/config.py +0 -19
  26. dataface/core/compile/models/primitives.py +20 -1
  27. dataface/core/compile/models/style/authored.py +5 -5
  28. dataface/core/compile/models/style/resolved.py +37 -69
  29. dataface/core/compile/models/style/theme.py +144 -40
  30. dataface/core/compile/normalize_charts.py +73 -20
  31. dataface/core/compile/normalizer.py +11 -0
  32. dataface/core/compile/palette.py +4 -3
  33. dataface/core/compile/parser.py +27 -4
  34. dataface/core/compile/schema_renderers/json_schema.py +18 -3
  35. dataface/core/compile/schema_renderers/prompt.py +97 -4
  36. dataface/core/compile/single_series_allocation.py +102 -0
  37. dataface/core/compile/style_cascade.py +30 -18
  38. dataface/core/compile/yaml_error_formatter.py +254 -110
  39. dataface/core/dashboard.py +16 -0
  40. dataface/core/defaults/default_config.yml +0 -15
  41. dataface/core/defaults/palettes/categorical/editorial-10-ink.yml +53 -0
  42. dataface/core/defaults/themes/_base.yaml +31 -7
  43. dataface/core/defaults/themes/cream.yaml +7 -0
  44. dataface/core/defaults/themes/dark.yaml +5 -0
  45. dataface/core/defaults/themes/editorial.yaml +7 -0
  46. dataface/core/defaults/themes/stark.yaml +6 -0
  47. dataface/core/execute/adapters/adapter_registry.py +25 -3
  48. dataface/core/execute/adapters/csv_adapter.py +17 -21
  49. dataface/core/execute/adapters/dbt_adapter_factory.py +9 -3
  50. dataface/core/execute/adapters/sql_adapter.py +22 -8
  51. dataface/core/execute/cache_backend.py +5 -0
  52. dataface/core/execute/duckdb_cache.py +12 -3
  53. dataface/core/execute/executor.py +15 -2
  54. dataface/core/execute/observability.py +38 -0
  55. dataface/core/inspect/resolver.py +31 -10
  56. dataface/core/project.py +30 -1
  57. dataface/core/render/chart/geo.py +13 -3
  58. dataface/core/render/chart/kpi.py +9 -4
  59. dataface/core/render/chart/pipeline.py +37 -4
  60. dataface/core/render/chart/profile.py +330 -67
  61. dataface/core/render/chart/render_single.py +12 -3
  62. dataface/core/render/chart/rendering.py +0 -34
  63. dataface/core/render/chart/standard_renderer.py +3 -35
  64. dataface/core/render/chart/table.py +77 -39
  65. dataface/core/render/chart/vl_field_maps.py +22 -11
  66. dataface/core/render/faces.py +6 -13
  67. dataface/core/render/format_utils.py +2 -1
  68. dataface/core/render/geo_defaults.yml +21 -12
  69. dataface/core/render/layout_sizing.py +40 -7
  70. dataface/core/render/layouts.py +32 -25
  71. dataface/core/render/nav.py +2 -10
  72. dataface/core/render/templates/nav/nav.css +1 -1
  73. dataface/core/render/templates/nav/nav.js +3 -2
  74. dataface/core/render/terminal_charts.py +9 -4
  75. dataface/core/render/text/case.py +1 -1
  76. dataface/core/serve/server.py +98 -8
  77. {dataface-0.1.6.dev183.dist-info → dataface-0.1.6.dev321.dist-info}/METADATA +1 -1
  78. {dataface-0.1.6.dev183.dist-info → dataface-0.1.6.dev321.dist-info}/RECORD +82 -79
  79. mdsvg/fonts.py +4 -1
  80. dataface/core/compile/custom_chart_types.py +0 -208
  81. dataface/core/defaults/palettes/categorical/single-blue.yml +0 -11
  82. {dataface-0.1.6.dev183.dist-info → dataface-0.1.6.dev321.dist-info}/WHEEL +0 -0
  83. {dataface-0.1.6.dev183.dist-info → dataface-0.1.6.dev321.dist-info}/entry_points.txt +0 -0
  84. {dataface-0.1.6.dev183.dist-info → dataface-0.1.6.dev321.dist-info}/licenses/LICENSE +0 -0
d3_format/py.typed ADDED
File without changes
@@ -797,58 +797,6 @@ Dataface composes charts in three ways:
797
797
 
798
798
  Non-goals (not part of the authored chart surface): Vega-Lite `encoding`, `mark`, `spec`, `config`, `transform`, `params`, `resolve`, `hconcat`, `vconcat`, `concat`, `repeat`. These keys are rejected at compile time. Use the typed channels (`x`, `y`, `color`, …) and `style:` instead; use the layout primitives for visual composition.
799
799
 
800
- ### Custom chart plugins
801
-
802
- Project-local chart types can extend the engine. Drop a `chart_types/<name>.yml` file next to the face files and reference the name in `type:`.
803
-
804
- ```yaml
805
- # chart_types/funnel.yml
806
- name: funnel
807
- description: Funnel chart for conversion visualization
808
- mark: bar # Underlying Vega-Lite mark
809
- fields:
810
- stage:
811
- required: true
812
- description: Stage field
813
- value:
814
- required: true
815
- description: Value field
816
- encoding_overrides:
817
- y:
818
- type: nominal
819
- sort: null
820
- x:
821
- type: quantitative
822
- mark_properties:
823
- cornerRadius: 4
824
- ```
825
-
826
- Then in a face:
827
-
828
- ```yaml-schema
829
- charts:
830
- conversion_funnel:
831
- query: stages
832
- type: funnel # The plugin name; no `custom:` prefix
833
- # The plugin's required fields must be present in the data.
834
- ```
835
-
836
- Plugin file fields:
837
-
838
- | Field | Required | Description |
839
- |-------|----------|-------------|
840
- | `name` | yes | Lowercase identifier (regex `[a-z][a-z0-9_]*`) — must not shadow a built-in |
841
- | `mark` | yes | Vega-Lite mark name (must be a valid VL mark) |
842
- | `description` | no | Used in docs and AI prompts |
843
- | `fields` | no | `{<name>: {required: bool, description: string}}` |
844
- | `encoding_overrides` | no | Per-channel Vega-Lite encoding properties merged on top of standard mapping |
845
- | `mark_properties` | no | Extra properties merged into the mark dict |
846
-
847
- Constraints:
848
- - A plugin cannot shadow a built-in chart type name.
849
- - The `mark` value must be a valid Vega-Lite mark (validated at load time).
850
- - Unknown YAML keys in the plugin file are rejected — typos are caught up front.
851
-
852
800
  **See also:** `dft docs queries` (charts reference queries by name),
853
801
  `dft docs variables` (use `{{ var }}` in chart queries),
854
802
  `dft docs layout` (compose charts on the page),
@@ -0,0 +1,19 @@
1
+ # Directory defaults for every face under faces/
2
+ #
3
+ # meta.yaml is a *partial face* — it uses the exact same authoring surface as a
4
+ # face file (source, theme, queries, charts, style, variables), but without a
5
+ # layout. Its keys are deep-merged as defaults beneath every face in this
6
+ # directory and its subdirectories; each face overrides what it sets.
7
+ #
8
+ # A meta.yaml deeper in the tree layers on top of the ones above it, and a face
9
+ # always wins over meta. Nested style keys merge (a face setting style.board.margin
10
+ # keeps a meta-supplied style.board.width).
11
+ #
12
+ # Uncomment and edit to set project-wide defaults:
13
+ #
14
+ # theme: cream # apply a built-in or custom theme to every dashboard
15
+ # source: my_warehouse # default data source for faces that don't name one
16
+ #
17
+ # style:
18
+ # board:
19
+ # width: 1000