Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
36d44e7
Bump vega-selections from 6.1.0 to 6.1.2
dependabot[bot] Jan 5, 2026
7bd46be
Bump vega-functions from 6.1.0 to 6.1.1
dependabot[bot] Jan 5, 2026
35a1f83
upgrade to python 3.11 and with uv support
Chenglong-MS Jan 31, 2026
a65798d
make import more clear
Chenglong-MS Jan 31, 2026
fe60de0
clean up data loader to prep for new design
Chenglong-MS Feb 1, 2026
fd5a233
udpate auth workflow to prep for new workspace manage
Chenglong-MS Feb 1, 2026
dd9ebd3
wip on new workspace design
Chenglong-MS Feb 4, 2026
f671cc1
updates to unify data execution method
Chenglong-MS Feb 4, 2026
bf5a609
unify computation approach for both in memory and datalake tables
Chenglong-MS Feb 6, 2026
1a3ec07
after unification, remove separate agents
Chenglong-MS Feb 6, 2026
8e6ea7c
temp
Chenglong-MS Feb 6, 2026
d0a1371
semantic enhanced chart assemble
Chenglong-MS Feb 6, 2026
9d6a34e
some cleaning
Chenglong-MS Feb 6, 2026
4c83824
an algorithm to calculate layout dynamically, might be a good intervi…
Chenglong-MS Feb 7, 2026
b14e242
useless? ui design
Chenglong-MS Feb 7, 2026
08a5840
refactor design into design tokens
Chenglong-MS Feb 8, 2026
10526c0
optimize data loader
Chenglong-MS Feb 8, 2026
463d541
fix
Chenglong-MS Feb 8, 2026
9d522fa
Add projection types and projection centers for the map
BAIGUANGMEI Feb 8, 2026
48f0c33
Add map support prompts
BAIGUANGMEI Feb 8, 2026
6086035
Clean import
BAIGUANGMEI Feb 8, 2026
b4e9ed4
Merge pull request #1 from microsoft/main
BAIGUANGMEI Feb 8, 2026
f98309f
Update src/app/utils.tsx
Chenglong-MS Feb 8, 2026
824a404
Update py-src/data_formulator/agents/agent_data_rec.py
Chenglong-MS Feb 8, 2026
86b2dc5
Update src/components/ChartTemplates.tsx
Chenglong-MS Feb 8, 2026
fd7aa53
Apply suggestions from code review
Chenglong-MS Feb 8, 2026
4ad7219
Merge pull request #232 from BAIGUANGMEI/feature/map-projection-support
Chenglong-MS Feb 8, 2026
c8307ff
minor
Chenglong-MS Feb 8, 2026
b0da0d2
Merge remote-tracking branch 'refs/remotes/origin/dev' into dev
Chenglong-MS Feb 8, 2026
61d826c
update config
Chenglong-MS Feb 8, 2026
7f172ed
udpate rendering workflow
Chenglong-MS Feb 8, 2026
1d2623a
fix scale bug
Chenglong-MS Feb 8, 2026
c1b1677
fix data sync with workspace
Chenglong-MS Feb 9, 2026
9aec036
fix auto refresh performance bug
Chenglong-MS Feb 9, 2026
f88a277
fix performance bug -- it's message snack
Chenglong-MS Feb 10, 2026
ce78f92
design fixes
Chenglong-MS Feb 10, 2026
245045f
small stuff
Chenglong-MS Feb 10, 2026
157adba
nit
Chenglong-MS Feb 10, 2026
286187e
minor
Chenglong-MS Feb 10, 2026
ea1ef9e
fix flow
Chenglong-MS Feb 10, 2026
3342878
fix
Chenglong-MS Feb 10, 2026
e0ba6c9
session management
Chenglong-MS Feb 11, 2026
51c5c4c
fix some issues with dataloaders
Chenglong-MS Feb 11, 2026
3364731
fix cross-platform file locking for Windows compatibility
BAIGUANGMEI Feb 11, 2026
370df8e
Merge pull request #233 from BAIGUANGMEI/fix/windows-fcntl-compat
Chenglong-MS Feb 11, 2026
15a1960
some fixes
Chenglong-MS Feb 11, 2026
225b0e6
Merge remote-tracking branch 'refs/remotes/origin/dev' into dev
Chenglong-MS Feb 11, 2026
763c7c1
bug fixes
Chenglong-MS Feb 12, 2026
10a9ce2
some work around editor
Chenglong-MS Feb 12, 2026
644d1df
workflow check
Chenglong-MS Feb 12, 2026
107e557
update workflow
Chenglong-MS Feb 12, 2026
61d3f5f
workflow ix 2
Chenglong-MS Feb 12, 2026
f3b01b3
minor
Chenglong-MS Feb 12, 2026
098198c
rename
Chenglong-MS Feb 12, 2026
1fbc34e
temp revert to name-based approach
Chenglong-MS Feb 12, 2026
b60d727
update requirements
Chenglong-MS Feb 12, 2026
4012dc6
update to use uv in build
Chenglong-MS Feb 12, 2026
caa92f9
test chart assemble logic
Chenglong-MS Feb 13, 2026
b8ab1bc
redesign chart lib
Chenglong-MS Feb 13, 2026
6c4cda2
fix issues
Chenglong-MS Feb 13, 2026
acf665c
update new chart types
Chenglong-MS Feb 13, 2026
96ec623
bug fixes
Chenglong-MS Feb 13, 2026
3a7a8fa
fixes
Chenglong-MS Feb 13, 2026
0e198b1
fix chart issues
Chenglong-MS Feb 13, 2026
a63bba3
library rename
Chenglong-MS Feb 13, 2026
7c29a37
update page
Chenglong-MS Feb 13, 2026
1c616f8
fix a critical bug on file read
Chenglong-MS Feb 14, 2026
98944e3
fix
Chenglong-MS Feb 14, 2026
08812bb
add tests
Chenglong-MS Feb 14, 2026
fb800c9
fixing
Chenglong-MS Feb 14, 2026
7ef8777
design cleanup
Chenglong-MS Feb 14, 2026
a84937e
prep for redesign assemble logic
Chenglong-MS Feb 14, 2026
f1cb8d0
ok
Chenglong-MS Feb 15, 2026
46d2ae6
fixes
Chenglong-MS Feb 15, 2026
4826280
updates
Chenglong-MS Feb 16, 2026
b57b27a
updates
Chenglong-MS Feb 16, 2026
793e7db
updat
Chenglong-MS Feb 16, 2026
56c4144
fix summary
Chenglong-MS Feb 16, 2026
f753df8
ok
Chenglong-MS Feb 16, 2026
03aca5d
new design
Chenglong-MS Feb 16, 2026
c1c4b62
add echarts backend
Chenglong-MS Feb 16, 2026
31761c3
ok
Chenglong-MS Feb 16, 2026
e49cc2b
holiday workout
Chenglong-MS Feb 16, 2026
3bc8837
fix
Chenglong-MS Feb 17, 2026
3b2c531
updates
Chenglong-MS Feb 17, 2026
1e51a75
update details
Chenglong-MS Feb 17, 2026
6d988dd
test gofish
Chenglong-MS Feb 18, 2026
72c7cd0
ok
Chenglong-MS Feb 18, 2026
7874e10
new layout algorithm for other charts
Chenglong-MS Feb 18, 2026
1071ce5
view update
Chenglong-MS Feb 19, 2026
8d6087a
Fix GoFish grouped bar sizing to match other backends
joshpoll Feb 19, 2026
f2c92b1
fix issues in domain padding
Chenglong-MS Feb 19, 2026
505d2d9
Merge pull request #235 from joshpoll/fix/gofish-grouped-bar-sizing
Chenglong-MS Feb 19, 2026
e682dc9
fix bug on grouped charts
Chenglong-MS Feb 20, 2026
6b79615
update test plan and fix bugs
Chenglong-MS Feb 21, 2026
79b1c40
update test
Chenglong-MS Feb 21, 2026
bbc960a
ok
Chenglong-MS Feb 21, 2026
8afd304
various app work
Chenglong-MS Feb 22, 2026
83869fe
some fix in the app
Chenglong-MS Feb 22, 2026
e2ce3ca
update remote workspace setup
Chenglong-MS Feb 23, 2026
d3bfb95
fixes
Chenglong-MS Feb 24, 2026
fd0cc76
Merge branch 'dev' into dependabot/npm_and_yarn/vega-functions-6.1.1
Chenglong-MS Feb 24, 2026
293ef46
Merge pull request #219 from microsoft/dependabot/npm_and_yarn/vega-f…
Chenglong-MS Feb 24, 2026
3d43fc8
minor fix
Chenglong-MS Feb 24, 2026
5eabeb3
Merge remote-tracking branch 'refs/remotes/origin/dev' into dev
Chenglong-MS Feb 24, 2026
9ac66e4
Merge branch 'dev' into dependabot/npm_and_yarn/vega-selections-6.1.2
Chenglong-MS Feb 24, 2026
80fe000
Merge pull request #218 from microsoft/dependabot/npm_and_yarn/vega-s…
Chenglong-MS Feb 24, 2026
2d57836
Merge remote-tracking branch 'refs/remotes/origin/dev' into dev
Chenglong-MS Feb 24, 2026
0c9b459
security fix
Chenglong-MS Feb 24, 2026
e982bb3
security fix atttemp2
Chenglong-MS Feb 24, 2026
76819d9
attemp3
Chenglong-MS Feb 24, 2026
fa134f2
attempt4
Chenglong-MS Feb 24, 2026
76bb692
attempt 5 and cleaning
Chenglong-MS Feb 24, 2026
fcb9d80
update
Chenglong-MS Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 11 additions & 10 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
"name": "Python 3",
"name": "Data Formulator Dev",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/python:1-3.12-bullseye",
"image": "mcr.microsoft.com/devcontainers/python:1-3.11-bullseye",

// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "18"
},
"ghcr.io/devcontainers/features/azure-cli:1": {}
},
"features": {
"ghcr.io/devcontainers/features/node:1": {
"version": "18"
},
"ghcr.io/devcontainers/features/azure-cli:1": {},
"ghcr.io/astral-sh/uv:1": {}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
"forwardPorts": [5000, 5173],

// Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "cd /workspaces/data-formulator && npm install && npm run build && python3 -m venv /workspaces/data-formulator/venv && . /workspaces/data-formulator/venv/bin/activate && pip install -e /workspaces/data-formulator --verbose && data_formulator"
"postCreateCommand": "cd /workspaces/data-formulator && npm install && npm run build && uv sync && uv run data_formulator"

// Configure tool-specific properties.
// "customizations": {},
Expand Down
61 changes: 55 additions & 6 deletions .env.template
Original file line number Diff line number Diff line change
@@ -1,8 +1,57 @@
# Provide frontend configuration settings from environment variables
# You can override these settings when lauching the app as well:
# python -m data_formulator -p 5000 --exec-python-in-subprocess true --disable-display-keys true
# Data Formulator Configuration
# Copy this file to .env and fill in your values.
# cp .env.template .env

DISABLE_DISPLAY_KEYS=false # if true, the display keys will not be shown in the frontend
EXEC_PYTHON_IN_SUBPROCESS=false # if true, the python code will be executed in a subprocess to avoid crashing the main app, but it will increase the time of response
# -------------------------------------------------------------------
# Server settings
# -------------------------------------------------------------------
# You can also override these via CLI flags (run `data_formulator --help`).

LOCAL_DB_DIR= # the directory to store the local database, if not provided, the app will use the temp directory
DISABLE_DISPLAY_KEYS=false # if true, API keys will not be shown in the frontend
SANDBOX=local # code execution backend: 'local' (default) or 'docker'

# -------------------------------------------------------------------
# LLM provider API keys
# -------------------------------------------------------------------
# Enable providers and set API keys / models below.
# For details see: https://docs.litellm.ai/docs#litellm-python-sdk

# OpenAI
OPENAI_ENABLED=true
OPENAI_API_KEY=#your-openai-api-key
OPENAI_MODELS=gpt-5.2,gpt-5.1 # comma separated list of models

# Azure OpenAI
AZURE_ENABLED=true
AZURE_API_KEY=#your-azure-openai-api-key
AZURE_API_BASE=https://your-azure-openai-endpoint.openai.azure.com/
AZURE_MODELS=gpt-5.1

# Anthropic
ANTHROPIC_ENABLED=true
ANTHROPIC_API_KEY=#your-anthropic-api-key
ANTHROPIC_MODELS=claude-sonnet-4-20250514

# Ollama
OLLAMA_ENABLED=true
OLLAMA_API_BASE=http://localhost:11434
OLLAMA_MODELS=deepseek-v3.1:latest # models with good code generation capabilities recommended

# Add other LiteLLM-supported providers with PROVIDER_API_KEY, PROVIDER_MODELS, etc.

# -------------------------------------------------------------------
# Azure Blob Storage Workspace (optional)
# -------------------------------------------------------------------
# Set WORKSPACE_BACKEND=azure_blob to store workspace data in Azure Blob Storage
# instead of the local filesystem.
#
# Authentication — choose ONE of the following:
# Option A: Connection string (shared key / SAS)
# AZURE_BLOB_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=...
# Option B: Entra ID (Managed Identity / az login / workload identity)
# AZURE_BLOB_ACCOUNT_URL=https://<account>.blob.core.windows.net
#
# WORKSPACE_BACKEND=local
# AZURE_BLOB_CONNECTION_STRING=
# AZURE_BLOB_ACCOUNT_URL=
# AZURE_BLOB_CONTAINER=data-formulator
52 changes: 26 additions & 26 deletions .github/workflows/python-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,11 @@ on:
pull_request:
branches: [ "main" ]

# Global permissions required for OIDC authentication
permissions:
id-token: write
contents: read

jobs:
build:
runs-on: ubuntu-latest
Expand All @@ -21,42 +26,37 @@ jobs:
with:
node-version: 20
cache: 'yarn'
- name: Set up Python 3.12
uses: actions/setup-python@v5
- name: Set up uv
uses: astral-sh/setup-uv@v4
with:
python-version: 3.12
- name: Install node dependencies
run: yarn install
- name: Install python dependencies
run: |
python -m pip install --upgrade pip
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
python -m pip install build
- name: Build frontend
run: yarn build
- name: Build python artifact
run: python -m build
run: uv build
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: release-dist
path: dist

# pypi-publish:
# runs-on: ubuntu-latest
# needs:
# - build
# if: github.event_name == 'push' && contains(github.event.head_commit.message, '[deploy]')
# environment:
# name: pypi
# url: https://pypi.org/p/data-formulator
# permissions:
# id-token: write
# steps:
# - name: Retrieve release distributions
# uses: actions/download-artifact@v4
# with:
# name: release-dist
# path: dist/
# - name: Publish package distributions to PyPI
# uses: pypa/gh-action-pypi-publish@release/v1
pypi-publish:
runs-on: ubuntu-latest
needs:
- build
if: github.event_name == 'push' && contains(github.event.head_commit.message, '[deploy]')
environment:
name: pypi
url: https://pypi.org/p/data-formulator
permissions:
id-token: write
steps:
- name: Retrieve release distributions
uses: actions/download-artifact@v4
with:
name: release-dist
path: dist/
- name: Publish package distributions to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@

*env
*api-keys.env
.venv/
.env
**/*.ipynb_checkpoints/
.DS_Store
build/
Expand Down
1 change: 1 addition & 0 deletions .python-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.11
4 changes: 0 additions & 4 deletions .vscode/settings.json

This file was deleted.

Loading