stata-code 0.13.0__tar.gz → 0.14.0__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.
- {stata_code-0.13.0 → stata_code-0.14.0}/CHANGELOG.md +50 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/PKG-INFO +1 -1
- {stata_code-0.13.0 → stata_code-0.14.0}/pyproject.toml +1 -1
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/__init__.py +1 -1
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp/server.py +1 -1
- {stata_code-0.13.0 → stata_code-0.14.0}/.gitignore +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/LICENSE +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/LICENSE-POLICY.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/PUBLISHING.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/README.en.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/README.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/SCHEMA.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/docs/competitive-landscape.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/docs/design/hard_timeout.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/docs/industry-leader-roadmap.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/docs/quickstart.zh.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/01-basic-regression.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/02-did-card-krueger.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/03-graphs.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/04-multi-session.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/05-large-matrix.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/06-cross-stack-parity-audit.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/07-data-mcp-handoff.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/examples/README.md +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/schema/run_result.schema.json +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/scripts/build_skill_zip.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/scripts/build_standalone.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/scripts/check_github_actions.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/scripts/check_versions.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/scripts/export_schema.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/__main__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/cli.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/__init__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/_pool.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/_refs.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/_runtime.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/console.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/daemon.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/errors.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/estimation.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/handoff.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/jobs.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/lint.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/log_artifacts.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/notebook.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/policy.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/provenance.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/run_index.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/runner.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/schema.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/doctor.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/__init__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/__main__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/assets/logo-32x32.png +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/assets/logo-64x64.png +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/assets/logo-svg.svg +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/kernel.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp/__init__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp/__main__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp_setup.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/__init__.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/conftest.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/fixtures/.gitkeep +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_agent_ergonomics.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_benchmark.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_bugfix_regressions.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_cancel.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_cli.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_console.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_daemon.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_doctor.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_errors.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_estimation.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_github_actions.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_handoff.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_kernel.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_lint.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_lint_mcp.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_log_artifacts.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_mcp.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_mcp_kernel_extra.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_mcp_transport.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_method_prompts.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_new_tools.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_notebook.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_notebook_phase2.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_policy.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_pool.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_pool_refs_extra.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_provenance.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_public_api.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_real_stata.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_release_versions.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_run_index.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_runner.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_runner_helpers.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_runtime_discovery.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_schema.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_schema_artifact.py +0 -0
- {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_skill_package.py +0 -0
|
@@ -6,6 +6,56 @@ to semver-major.minor for the result schema (see `SCHEMA.md` §6).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## 0.14.0 — 2026-10-03
|
|
10
|
+
|
|
11
|
+
The `.dta` viewer added in 0.13 could only be scrolled. It can now be queried:
|
|
12
|
+
filter with a Stata `if` expression, sort, summarize a variable, copy a range,
|
|
13
|
+
and export the view or the codebook. No changes to the Python package or the
|
|
14
|
+
result schema beyond the version number.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- **VS Code data viewer: filter rows with a Stata `if` expression.** The bar
|
|
19
|
+
under the title accepts expressions such as `age > 60 & !missing(income)`,
|
|
20
|
+
`region == "South":regionlbl` or `inlist(city, "Boston", "北京")`. The
|
|
21
|
+
evaluator follows Stata's semantics rather than JavaScript's — missing
|
|
22
|
+
values sort above every number, arithmetic on a missing value is missing,
|
|
23
|
+
any nonzero value (missing included) is true, and a string compared with a
|
|
24
|
+
number is a `type mismatch` — and is tested against Stata 18's own
|
|
25
|
+
`count if` on 48 expressions. It covers the operators
|
|
26
|
+
`! ~ ^ - * / + == != ~= < <= > >= & |`, `_n` / `_N`, `"text":labelname`,
|
|
27
|
+
and about 30 functions (`missing`, `inlist`, `inrange`, `strpos`, `regexm`,
|
|
28
|
+
`strmatch`, `substr`, `round`, `mod`, `mdy`, `td()`, …). Variable
|
|
29
|
+
abbreviations, time-series operators and macros are not supported.
|
|
30
|
+
- **VS Code data viewer: sort by any column.** Click the arrow in a column
|
|
31
|
+
header (ascending, descending, off); Shift-click adds further keys. Order
|
|
32
|
+
matches Stata's `sort` / `gsort`: underlying values rather than label text,
|
|
33
|
+
missing values last, ties in dataset order. The gutter keeps showing each
|
|
34
|
+
row's observation number in the file.
|
|
35
|
+
- **VS Code data viewer: per-variable summary.** Selecting a variable shows
|
|
36
|
+
count, missing, distinct, mean, standard deviation, min, quartiles and max
|
|
37
|
+
over the rows in view — equal to `summarize, detail` to 12 significant
|
|
38
|
+
digits on the test dataset — and, for categorical variables, the most
|
|
39
|
+
frequent values. Clicking a value filters to it. Order statistics of a date
|
|
40
|
+
variable print as dates.
|
|
41
|
+
- **VS Code data viewer: range selection and copy.** Drag, Shift-click or
|
|
42
|
+
Shift-arrow selects a rectangle; `Cmd/Ctrl+C` copies it as tab-separated
|
|
43
|
+
text, `Cmd/Ctrl+Shift+C` with variable names, `Cmd/Ctrl+A` selects the view.
|
|
44
|
+
- **VS Code data viewer: export.** *Export view as CSV* writes the filtered,
|
|
45
|
+
sorted view with numbers at full precision (not display precision), dates as
|
|
46
|
+
dates, and value labels as text when the toggle is on. *Export codebook*
|
|
47
|
+
writes one row per variable (type, format, value label, variable label,
|
|
48
|
+
notes) and a second file with every value-label mapping — the metadata a CSV
|
|
49
|
+
cannot carry.
|
|
50
|
+
- **VS Code: `Stata: Load Data File in Session (use, clear)`.** On the
|
|
51
|
+
Explorer context menu of `.dta` files and in the viewer's menu. Asks before
|
|
52
|
+
discarding unsaved changes in the session.
|
|
53
|
+
- **VS Code data viewer: resizable columns.** Drag a header's right edge;
|
|
54
|
+
double-click to fit. Widths survive a reload of the same dataset.
|
|
55
|
+
|
|
56
|
+
Filtering, sorting and summaries scan the whole column and are limited to
|
|
57
|
+
20 million observations; browsing has no such limit.
|
|
58
|
+
|
|
9
59
|
## 0.13.0 — 2026-10-03
|
|
10
60
|
|
|
11
61
|
A data viewer for `.dta` files. Opening a dataset in VS Code used to mean
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: stata-code
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Agent-native Stata bridge — one core, multiple frontends (MCP, Jupyter, VSCode)
|
|
5
5
|
Project-URL: Homepage, https://github.com/brycewang-stanford/stata-code
|
|
6
6
|
Project-URL: Repository, https://github.com/brycewang-stanford/stata-code
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "stata-code"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.14.0"
|
|
8
8
|
description = "Agent-native Stata bridge — one core, multiple frontends (MCP, Jupyter, VSCode)"
|
|
9
9
|
# The repo default README (README.md) is Chinese; keep the PyPI long description
|
|
10
10
|
# English by pointing at README.en.md.
|
|
@@ -102,7 +102,7 @@ from stata_code.core.runner import (
|
|
|
102
102
|
)
|
|
103
103
|
from stata_code.core.schema import RunResult
|
|
104
104
|
|
|
105
|
-
__version__ = "0.
|
|
105
|
+
__version__ = "0.14.0"
|
|
106
106
|
|
|
107
107
|
SERVER_INSTRUCTIONS = (
|
|
108
108
|
"Use stata-code for running and inspecting Stata code. Prefer structuredContent "
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|