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.
Files changed (100) hide show
  1. {stata_code-0.13.0 → stata_code-0.14.0}/CHANGELOG.md +50 -0
  2. {stata_code-0.13.0 → stata_code-0.14.0}/PKG-INFO +1 -1
  3. {stata_code-0.13.0 → stata_code-0.14.0}/pyproject.toml +1 -1
  4. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/__init__.py +1 -1
  5. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp/server.py +1 -1
  6. {stata_code-0.13.0 → stata_code-0.14.0}/.gitignore +0 -0
  7. {stata_code-0.13.0 → stata_code-0.14.0}/LICENSE +0 -0
  8. {stata_code-0.13.0 → stata_code-0.14.0}/LICENSE-POLICY.md +0 -0
  9. {stata_code-0.13.0 → stata_code-0.14.0}/PUBLISHING.md +0 -0
  10. {stata_code-0.13.0 → stata_code-0.14.0}/README.en.md +0 -0
  11. {stata_code-0.13.0 → stata_code-0.14.0}/README.md +0 -0
  12. {stata_code-0.13.0 → stata_code-0.14.0}/SCHEMA.md +0 -0
  13. {stata_code-0.13.0 → stata_code-0.14.0}/docs/competitive-landscape.md +0 -0
  14. {stata_code-0.13.0 → stata_code-0.14.0}/docs/design/hard_timeout.md +0 -0
  15. {stata_code-0.13.0 → stata_code-0.14.0}/docs/industry-leader-roadmap.md +0 -0
  16. {stata_code-0.13.0 → stata_code-0.14.0}/docs/quickstart.zh.md +0 -0
  17. {stata_code-0.13.0 → stata_code-0.14.0}/examples/01-basic-regression.md +0 -0
  18. {stata_code-0.13.0 → stata_code-0.14.0}/examples/02-did-card-krueger.md +0 -0
  19. {stata_code-0.13.0 → stata_code-0.14.0}/examples/03-graphs.md +0 -0
  20. {stata_code-0.13.0 → stata_code-0.14.0}/examples/04-multi-session.md +0 -0
  21. {stata_code-0.13.0 → stata_code-0.14.0}/examples/05-large-matrix.md +0 -0
  22. {stata_code-0.13.0 → stata_code-0.14.0}/examples/06-cross-stack-parity-audit.md +0 -0
  23. {stata_code-0.13.0 → stata_code-0.14.0}/examples/07-data-mcp-handoff.md +0 -0
  24. {stata_code-0.13.0 → stata_code-0.14.0}/examples/README.md +0 -0
  25. {stata_code-0.13.0 → stata_code-0.14.0}/schema/run_result.schema.json +0 -0
  26. {stata_code-0.13.0 → stata_code-0.14.0}/scripts/build_skill_zip.py +0 -0
  27. {stata_code-0.13.0 → stata_code-0.14.0}/scripts/build_standalone.py +0 -0
  28. {stata_code-0.13.0 → stata_code-0.14.0}/scripts/check_github_actions.py +0 -0
  29. {stata_code-0.13.0 → stata_code-0.14.0}/scripts/check_versions.py +0 -0
  30. {stata_code-0.13.0 → stata_code-0.14.0}/scripts/export_schema.py +0 -0
  31. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/__main__.py +0 -0
  32. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/cli.py +0 -0
  33. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/__init__.py +0 -0
  34. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/_pool.py +0 -0
  35. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/_refs.py +0 -0
  36. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/_runtime.py +0 -0
  37. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/console.py +0 -0
  38. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/daemon.py +0 -0
  39. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/errors.py +0 -0
  40. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/estimation.py +0 -0
  41. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/handoff.py +0 -0
  42. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/jobs.py +0 -0
  43. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/lint.py +0 -0
  44. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/log_artifacts.py +0 -0
  45. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/notebook.py +0 -0
  46. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/policy.py +0 -0
  47. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/provenance.py +0 -0
  48. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/run_index.py +0 -0
  49. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/runner.py +0 -0
  50. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/core/schema.py +0 -0
  51. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/doctor.py +0 -0
  52. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/__init__.py +0 -0
  53. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/__main__.py +0 -0
  54. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/assets/logo-32x32.png +0 -0
  55. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/assets/logo-64x64.png +0 -0
  56. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/assets/logo-svg.svg +0 -0
  57. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/kernel/kernel.py +0 -0
  58. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp/__init__.py +0 -0
  59. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp/__main__.py +0 -0
  60. {stata_code-0.13.0 → stata_code-0.14.0}/stata_code/mcp_setup.py +0 -0
  61. {stata_code-0.13.0 → stata_code-0.14.0}/tests/__init__.py +0 -0
  62. {stata_code-0.13.0 → stata_code-0.14.0}/tests/conftest.py +0 -0
  63. {stata_code-0.13.0 → stata_code-0.14.0}/tests/fixtures/.gitkeep +0 -0
  64. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_agent_ergonomics.py +0 -0
  65. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_benchmark.py +0 -0
  66. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_bugfix_regressions.py +0 -0
  67. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_cancel.py +0 -0
  68. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_cli.py +0 -0
  69. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_console.py +0 -0
  70. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_daemon.py +0 -0
  71. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_doctor.py +0 -0
  72. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_errors.py +0 -0
  73. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_estimation.py +0 -0
  74. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_github_actions.py +0 -0
  75. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_handoff.py +0 -0
  76. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_kernel.py +0 -0
  77. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_lint.py +0 -0
  78. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_lint_mcp.py +0 -0
  79. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_log_artifacts.py +0 -0
  80. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_mcp.py +0 -0
  81. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_mcp_kernel_extra.py +0 -0
  82. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_mcp_transport.py +0 -0
  83. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_method_prompts.py +0 -0
  84. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_new_tools.py +0 -0
  85. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_notebook.py +0 -0
  86. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_notebook_phase2.py +0 -0
  87. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_policy.py +0 -0
  88. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_pool.py +0 -0
  89. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_pool_refs_extra.py +0 -0
  90. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_provenance.py +0 -0
  91. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_public_api.py +0 -0
  92. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_real_stata.py +0 -0
  93. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_release_versions.py +0 -0
  94. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_run_index.py +0 -0
  95. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_runner.py +0 -0
  96. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_runner_helpers.py +0 -0
  97. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_runtime_discovery.py +0 -0
  98. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_schema.py +0 -0
  99. {stata_code-0.13.0 → stata_code-0.14.0}/tests/test_schema_artifact.py +0 -0
  100. {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.13.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.13.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.
@@ -260,7 +260,7 @@ def is_available() -> bool:
260
260
  return True
261
261
 
262
262
 
263
- __version__ = "0.13.0"
263
+ __version__ = "0.14.0"
264
264
 
265
265
  __all__ = [
266
266
  # Primary entry points
@@ -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.13.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