chartagent 0.0.1__tar.gz → 0.1.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 (133) hide show
  1. chartagent-0.1.0/.gitignore +27 -0
  2. chartagent-0.1.0/PKG-INFO +45 -0
  3. chartagent-0.1.0/README.md +11 -0
  4. chartagent-0.1.0/pyproject.toml +116 -0
  5. chartagent-0.1.0/src/chartagent/__init__.py +79 -0
  6. chartagent-0.1.0/src/chartagent/_bundle/flint.iife.js +41218 -0
  7. chartagent-0.1.0/src/chartagent/_flint.py +45 -0
  8. chartagent-0.1.0/src/chartagent/_palette.py +140 -0
  9. chartagent-0.1.0/src/chartagent/_pixels.py +122 -0
  10. chartagent-0.1.0/src/chartagent/bind.py +342 -0
  11. chartagent-0.1.0/src/chartagent/critique.py +161 -0
  12. chartagent-0.1.0/src/chartagent/envelope.py +40 -0
  13. chartagent-0.1.0/src/chartagent/errors.py +258 -0
  14. chartagent-0.1.0/src/chartagent/frame/__init__.py +22 -0
  15. chartagent-0.1.0/src/chartagent/frame/_generated.py +1004 -0
  16. chartagent-0.1.0/src/chartagent/frame/capability.py +80 -0
  17. chartagent-0.1.0/src/chartagent/frame/input.py +324 -0
  18. chartagent-0.1.0/src/chartagent/frame/vocab.json +10481 -0
  19. chartagent-0.1.0/src/chartagent/frame/vocabulary.py +212 -0
  20. chartagent-0.1.0/src/chartagent/harness/__init__.py +1 -0
  21. chartagent-0.1.0/src/chartagent/harness/artifacts.py +37 -0
  22. chartagent-0.1.0/src/chartagent/harness/langchain/__init__.py +32 -0
  23. chartagent-0.1.0/src/chartagent/harness/langchain/client.py +152 -0
  24. chartagent-0.1.0/src/chartagent/harness/langchain/skills.py +75 -0
  25. chartagent-0.1.0/src/chartagent/harness/langchain/trace.py +38 -0
  26. chartagent-0.1.0/src/chartagent/harness/langchain/workspace.py +185 -0
  27. chartagent-0.1.0/src/chartagent/harness/ports.py +134 -0
  28. chartagent-0.1.0/src/chartagent/harness/pydantic_ai/__init__.py +1 -0
  29. chartagent-0.1.0/src/chartagent/harness/pydantic_ai/client.py +170 -0
  30. chartagent-0.1.0/src/chartagent/harness/pydantic_ai/skills.py +142 -0
  31. chartagent-0.1.0/src/chartagent/harness/pydantic_ai/trace.py +28 -0
  32. chartagent-0.1.0/src/chartagent/harness/workspace.py +165 -0
  33. chartagent-0.1.0/src/chartagent/plan/__init__.py +9 -0
  34. chartagent-0.1.0/src/chartagent/plan/agent.py +1003 -0
  35. chartagent-0.1.0/src/chartagent/plan/assemble.py +92 -0
  36. chartagent-0.1.0/src/chartagent/plan/client.py +10 -0
  37. chartagent-0.1.0/src/chartagent/plan/emit.py +58 -0
  38. chartagent-0.1.0/src/chartagent/plan/escalate.py +63 -0
  39. chartagent-0.1.0/src/chartagent/plan/prompt.py +439 -0
  40. chartagent-0.1.0/src/chartagent/plan/prompts/document.system.md +30 -0
  41. chartagent-0.1.0/src/chartagent/plan/prompts/step1.system.md +28 -0
  42. chartagent-0.1.0/src/chartagent/plan/prompts/step2.system.md +8 -0
  43. chartagent-0.1.0/src/chartagent/plan/prompts/transform.section.md +5 -0
  44. chartagent-0.1.0/src/chartagent/plan/recipe.py +254 -0
  45. chartagent-0.1.0/src/chartagent/plan/repair.py +97 -0
  46. chartagent-0.1.0/src/chartagent/plan/schema.py +133 -0
  47. chartagent-0.1.0/src/chartagent/plan/select.py +53 -0
  48. chartagent-0.1.0/src/chartagent/profile/__init__.py +23 -0
  49. chartagent-0.1.0/src/chartagent/profile/ladder.py +147 -0
  50. chartagent-0.1.0/src/chartagent/profile/models.py +216 -0
  51. chartagent-0.1.0/src/chartagent/profile/source.py +427 -0
  52. chartagent-0.1.0/src/chartagent/py.typed +0 -0
  53. chartagent-0.1.0/src/chartagent/rasterise.py +448 -0
  54. chartagent-0.1.0/src/chartagent/recipe.py +275 -0
  55. chartagent-0.1.0/src/chartagent/result.py +72 -0
  56. chartagent-0.1.0/src/chartagent/review.py +600 -0
  57. chartagent-0.1.0/src/chartagent/session.py +28 -0
  58. chartagent-0.1.0/src/chartagent/shell.py +388 -0
  59. chartagent-0.1.0/src/chartagent/style.py +87 -0
  60. chartagent-0.1.0/src/chartagent/transform/__init__.py +1 -0
  61. chartagent-0.1.0/src/chartagent/transform/drift.py +167 -0
  62. chartagent-0.1.0/src/chartagent/transform/engine.py +182 -0
  63. chartagent-0.1.0/src/chartagent/transform/expr.py +542 -0
  64. chartagent-0.1.0/src/chartagent/transform/menu.py +311 -0
  65. chartagent-0.1.0/src/chartagent/transform/model.py +446 -0
  66. chartagent-0.1.0/src/chartagent/transform/raw_sql.py +199 -0
  67. chartagent-0.1.0/src/chartagent/transform/schema.py +53 -0
  68. chartagent-0.1.0/src/chartagent/transform/serialize.py +81 -0
  69. chartagent-0.1.0/tests/conftest.py +153 -0
  70. chartagent-0.1.0/tests/data/chart_properties.json +213 -0
  71. chartagent-0.1.0/tests/data/first_ask/instructions.json +152 -0
  72. chartagent-0.1.0/tests/data/orders_dated.csv +24 -0
  73. chartagent-0.1.0/tests/data/prereg/empty.json +1 -0
  74. chartagent-0.1.0/tests/data/prereg/legal.json +1676 -0
  75. chartagent-0.1.0/tests/data/prompt/step1.txt +35 -0
  76. chartagent-0.1.0/tests/data/prompt/step2.txt +17 -0
  77. chartagent-0.1.0/tests/data/sales.csv +3 -0
  78. chartagent-0.1.0/tests/data/sales.parquet +0 -0
  79. chartagent-0.1.0/tests/data/sales_by_region.csv +13 -0
  80. chartagent-0.1.0/tests/test_authored_cases_1.py +125 -0
  81. chartagent-0.1.0/tests/test_bind.py +457 -0
  82. chartagent-0.1.0/tests/test_bind_recipe.py +119 -0
  83. chartagent-0.1.0/tests/test_capability.py +112 -0
  84. chartagent-0.1.0/tests/test_chart_session.py +353 -0
  85. chartagent-0.1.0/tests/test_check_bump.py +292 -0
  86. chartagent-0.1.0/tests/test_check_eval_freeze.py +496 -0
  87. chartagent-0.1.0/tests/test_check_prereg.py +574 -0
  88. chartagent-0.1.0/tests/test_ci_langchain.py +262 -0
  89. chartagent-0.1.0/tests/test_critique.py +140 -0
  90. chartagent-0.1.0/tests/test_errors.py +80 -0
  91. chartagent-0.1.0/tests/test_eval_cases_cell4.py +72 -0
  92. chartagent-0.1.0/tests/test_eval_freeze_real.py +138 -0
  93. chartagent-0.1.0/tests/test_facade.py +208 -0
  94. chartagent-0.1.0/tests/test_first_ask_fixture.py +162 -0
  95. chartagent-0.1.0/tests/test_first_ask_legality.py +393 -0
  96. chartagent-0.1.0/tests/test_flint_bundle.py +84 -0
  97. chartagent-0.1.0/tests/test_flint_predicates.py +111 -0
  98. chartagent-0.1.0/tests/test_harness.py +141 -0
  99. chartagent-0.1.0/tests/test_host_spans.py +240 -0
  100. chartagent-0.1.0/tests/test_import_surface.py +74 -0
  101. chartagent-0.1.0/tests/test_join_corpus.py +712 -0
  102. chartagent-0.1.0/tests/test_langchain_harness.py +822 -0
  103. chartagent-0.1.0/tests/test_paint_corpus.py +765 -0
  104. chartagent-0.1.0/tests/test_plan_agent.py +2750 -0
  105. chartagent-0.1.0/tests/test_plan_assemble.py +404 -0
  106. chartagent-0.1.0/tests/test_plan_client.py +100 -0
  107. chartagent-0.1.0/tests/test_plan_escalate.py +152 -0
  108. chartagent-0.1.0/tests/test_plan_live.py +55 -0
  109. chartagent-0.1.0/tests/test_plan_prompt.py +430 -0
  110. chartagent-0.1.0/tests/test_plan_recipe.py +669 -0
  111. chartagent-0.1.0/tests/test_plan_schema.py +272 -0
  112. chartagent-0.1.0/tests/test_plan_select.py +123 -0
  113. chartagent-0.1.0/tests/test_profile.py +515 -0
  114. chartagent-0.1.0/tests/test_profile_large.py +61 -0
  115. chartagent-0.1.0/tests/test_rasterise.py +348 -0
  116. chartagent-0.1.0/tests/test_raw_sql.py +234 -0
  117. chartagent-0.1.0/tests/test_recipe_json.py +127 -0
  118. chartagent-0.1.0/tests/test_record_corpus.py +707 -0
  119. chartagent-0.1.0/tests/test_result.py +150 -0
  120. chartagent-0.1.0/tests/test_review.py +1085 -0
  121. chartagent-0.1.0/tests/test_schema_drift.py +481 -0
  122. chartagent-0.1.0/tests/test_score_corpus.py +783 -0
  123. chartagent-0.1.0/tests/test_score_eval.py +1926 -0
  124. chartagent-0.1.0/tests/test_shell.py +1219 -0
  125. chartagent-0.1.0/tests/test_step1_schema_smoke.py +56 -0
  126. chartagent-0.1.0/tests/test_style_pack.py +379 -0
  127. chartagent-0.1.0/tests/test_transform_menu.py +920 -0
  128. chartagent-0.1.0/tests/test_transform_model.py +531 -0
  129. chartagent-0.0.1/PKG-INFO +0 -22
  130. chartagent-0.0.1/README.md +0 -5
  131. chartagent-0.0.1/pyproject.toml +0 -21
  132. chartagent-0.0.1/src/chartagent/__init__.py +0 -3
  133. {chartagent-0.0.1 → chartagent-0.1.0}/LICENSE +0 -0
@@ -0,0 +1,27 @@
1
+ # Session working files — regenerated per session, deliberately not tracked
2
+ HANDOFF.md
3
+ /tmp/*
4
+ !/tmp/.gitkeep
5
+
6
+ # here.now local claim tokens — never commit
7
+ .herenow/
8
+
9
+ # Fixture corpus and bump-gate scratch — fetched at job time, never vendored
10
+ /build/
11
+
12
+ # macOS
13
+ .DS_Store
14
+
15
+ # Python
16
+ __pycache__/
17
+ *.py[cod]
18
+ .venv/
19
+ venv/
20
+ .mypy_cache/
21
+ .ruff_cache/
22
+ .pytest_cache/
23
+ dist/
24
+ *.egg-info/
25
+
26
+ # Draft ticket backups and other session scratch
27
+ .scratch/
@@ -0,0 +1,45 @@
1
+ Metadata-Version: 2.5
2
+ Name: chartagent
3
+ Version: 0.1.0
4
+ Summary: Alpha release. Testing is in progress. An embeddable agentic chart-creation library for Python.
5
+ Author: Sharim Raza
6
+ License-Expression: Apache-2.0
7
+ License-File: LICENSE
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: License :: OSI Approved :: Apache Software License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.11
12
+ Classifier: Programming Language :: Python :: 3.12
13
+ Classifier: Programming Language :: Python :: 3.13
14
+ Classifier: Programming Language :: Python :: 3.14
15
+ Classifier: Typing :: Typed
16
+ Requires-Python: >=3.11
17
+ Requires-Dist: duckdb>=1
18
+ Requires-Dist: pyarrow>=14
19
+ Requires-Dist: pydantic>=2
20
+ Requires-Dist: tzdata>=2024; sys_platform == 'win32'
21
+ Provides-Extra: anthropic
22
+ Requires-Dist: pydantic-ai-slim[anthropic]>=2.40.0; extra == 'anthropic'
23
+ Provides-Extra: langchain
24
+ Requires-Dist: deepagents==0.7.28; extra == 'langchain'
25
+ Requires-Dist: langchain==1.4.6; extra == 'langchain'
26
+ Requires-Dist: langgraph==1.2.16; extra == 'langchain'
27
+ Provides-Extra: openai
28
+ Requires-Dist: pydantic-ai-slim[openai]>=2.40.0; extra == 'openai'
29
+ Provides-Extra: pydantic-ai
30
+ Requires-Dist: pydantic-ai-harness[skills]==0.57.0; extra == 'pydantic-ai'
31
+ Provides-Extra: review
32
+ Requires-Dist: playwright>=1.47; extra == 'review'
33
+ Description-Content-Type: text/markdown
34
+
35
+ # chartagent
36
+
37
+ **Alpha release. Testing is in progress.** The API can change.
38
+
39
+ An embeddable agentic chart-creation library for Python.
40
+
41
+ Requires **Python 3.11+**. Alpine / musl is unsupported: DuckDB publishes no musllinux wheels.
42
+
43
+ ```bash
44
+ pip install chartagent
45
+ ```
@@ -0,0 +1,11 @@
1
+ # chartagent
2
+
3
+ **Alpha release. Testing is in progress.** The API can change.
4
+
5
+ An embeddable agentic chart-creation library for Python.
6
+
7
+ Requires **Python 3.11+**. Alpine / musl is unsupported: DuckDB publishes no musllinux wheels.
8
+
9
+ ```bash
10
+ pip install chartagent
11
+ ```
@@ -0,0 +1,116 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "chartagent"
7
+ version = "0.1.0"
8
+ description = "Alpha release. Testing is in progress. An embeddable agentic chart-creation library for Python."
9
+ readme = "README.md"
10
+ license = "Apache-2.0"
11
+ requires-python = ">=3.11"
12
+ authors = [{ name = "Sharim Raza" }]
13
+ classifiers = [
14
+ "Development Status :: 3 - Alpha",
15
+ "License :: OSI Approved :: Apache Software License",
16
+ "Programming Language :: Python :: 3",
17
+ "Programming Language :: Python :: 3.11",
18
+ "Programming Language :: Python :: 3.12",
19
+ "Programming Language :: Python :: 3.13",
20
+ "Programming Language :: Python :: 3.14",
21
+ "Typing :: Typed",
22
+ ]
23
+ dependencies = [
24
+ "pydantic>=2",
25
+ "duckdb>=1",
26
+ "pyarrow>=14",
27
+ "tzdata>=2024; sys_platform == 'win32'",
28
+ ]
29
+
30
+ [project.optional-dependencies]
31
+ anthropic = [
32
+ "pydantic-ai-slim[anthropic]>=2.40.0",
33
+ ]
34
+ openai = [
35
+ "pydantic-ai-slim[openai]>=2.40.0",
36
+ ]
37
+ review = [
38
+ "playwright>=1.47",
39
+ ]
40
+ pydantic-ai = [
41
+ "pydantic-ai-harness[skills]==0.57.0",
42
+ ]
43
+ langchain = [
44
+ "langchain==1.4.6",
45
+ "langgraph==1.2.16",
46
+ "deepagents==0.7.28",
47
+ ]
48
+
49
+ [dependency-groups]
50
+ dev = [
51
+ "pytest>=8",
52
+ "ruff>=0.8",
53
+ "mypy>=1.13",
54
+ "pydantic-ai-slim>=2.40.0",
55
+ "pydantic-ai-harness[skills]==0.57.0",
56
+ "playwright>=1.47",
57
+ ]
58
+
59
+ [tool.hatch.build.targets.sdist]
60
+ include = [
61
+ "/src",
62
+ "/tests",
63
+ "/LICENSE",
64
+ "/README.md",
65
+ ]
66
+
67
+ [tool.hatch.build.targets.wheel.force-include]
68
+ "src/chartagent/_bundle/flint.iife.js" = "chartagent/_bundle/flint.iife.js"
69
+ "src/chartagent/frame/vocab.json" = "chartagent/frame/vocab.json"
70
+ "src/chartagent/plan/prompts/step1.system.md" = "chartagent/plan/prompts/step1.system.md"
71
+ "src/chartagent/plan/prompts/step2.system.md" = "chartagent/plan/prompts/step2.system.md"
72
+ "src/chartagent/py.typed" = "chartagent/py.typed"
73
+
74
+ [tool.ruff]
75
+ target-version = "py311"
76
+ src = ["src", "tests"]
77
+ extend-exclude = [
78
+ "prototypes",
79
+ "design",
80
+ "explainers",
81
+ "src/chartagent/frame/_generated.py",
82
+ ]
83
+
84
+ [tool.ruff.lint]
85
+ select = ["E", "F", "I", "UP"]
86
+
87
+ [tool.pytest.ini_options]
88
+ testpaths = ["tests"]
89
+ markers = [
90
+ "large: 10 GB-class source; excluded from the default run",
91
+ ]
92
+
93
+ [tool.mypy]
94
+ strict = true
95
+ mypy_path = "src"
96
+ explicit_package_bases = true
97
+ files = ["src", "tests"]
98
+
99
+ [[tool.mypy.overrides]]
100
+ module = ["pyarrow", "pyarrow.*"]
101
+ ignore_missing_imports = true
102
+
103
+ [[tool.mypy.overrides]]
104
+ module = [
105
+ "langchain",
106
+ "langchain.*",
107
+ "langchain_core",
108
+ "langchain_core.*",
109
+ "langgraph",
110
+ "langgraph.*",
111
+ "deepagents",
112
+ "deepagents.*",
113
+ "langsmith",
114
+ "langsmith.*",
115
+ ]
116
+ ignore_missing_imports = true
@@ -0,0 +1,79 @@
1
+ """chartagent — embeddable agentic chart-creation library."""
2
+
3
+ from chartagent._flint import FlintBundle, flint_bundle
4
+ from chartagent.bind import DataSource, bind
5
+ from chartagent.envelope import Advisory, Envelope
6
+ from chartagent.errors import ChartAgentError, DocumentAssemblyError
7
+ from chartagent.frame import (
8
+ Backend,
9
+ ChartVocabulary,
10
+ EncodingActionDef,
11
+ InputFrame,
12
+ PropertyDef,
13
+ canonical_json,
14
+ vocabulary,
15
+ )
16
+ from chartagent.frame._generated import * # noqa: F403
17
+ from chartagent.frame._generated import __all__ as _GENERATED_ALL
18
+ from chartagent.plan.agent import ChartAgent, create_chart_agent
19
+ from chartagent.rasterise import Rasteriser
20
+ from chartagent.recipe import (
21
+ BoundDocument,
22
+ BoundRecipe,
23
+ ChartDocument,
24
+ ChartRecipe,
25
+ EscapeReason,
26
+ LibraryPin,
27
+ bind_recipe,
28
+ )
29
+ from chartagent.result import ChartResult
30
+ from chartagent.review import CheckResult, ReviewReport
31
+ from chartagent.session import ChartSession
32
+ from chartagent.shell import Shell, build_shell
33
+ from chartagent.transform.serialize import serialize_rows
34
+
35
+ _GENERATED_MODELS = tuple(
36
+ name
37
+ for name in _GENERATED_ALL
38
+ if name.endswith("Properties") and name != "GeneratedProperties"
39
+ )
40
+ for _name in _GENERATED_ALL:
41
+ if _name not in _GENERATED_MODELS:
42
+ del globals()[_name]
43
+ del _name
44
+
45
+ __all__ = [
46
+ "bind",
47
+ "bind_recipe",
48
+ "ChartRecipe",
49
+ "BoundRecipe",
50
+ "ChartDocument",
51
+ "BoundDocument",
52
+ "LibraryPin",
53
+ "EscapeReason",
54
+ "build_shell",
55
+ "Shell",
56
+ "DocumentAssemblyError",
57
+ "serialize_rows",
58
+ "Envelope",
59
+ "ChartResult",
60
+ "ChartSession",
61
+ "ReviewReport",
62
+ "CheckResult",
63
+ "Rasteriser",
64
+ "create_chart_agent",
65
+ "ChartAgent",
66
+ "DataSource",
67
+ "Advisory",
68
+ "flint_bundle",
69
+ "FlintBundle",
70
+ "ChartAgentError",
71
+ "canonical_json",
72
+ "vocabulary",
73
+ "ChartVocabulary",
74
+ "PropertyDef",
75
+ "EncodingActionDef",
76
+ "InputFrame",
77
+ "Backend",
78
+ *_GENERATED_MODELS,
79
+ ]