pythia-plsql 0.4.4__tar.gz → 0.4.6__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 (39) hide show
  1. {pythia_plsql-0.4.4/scripts/pythia_plsql.egg-info → pythia_plsql-0.4.6}/PKG-INFO +4 -2
  2. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/README.md +3 -1
  3. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/pyproject.toml +1 -1
  4. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia.py +1 -0
  5. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6/scripts/pythia_plsql.egg-info}/PKG-INFO +4 -2
  6. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_install.py +27 -0
  7. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/LICENSE +0 -0
  8. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/compile-errors.sql +0 -0
  9. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/dependencies.sql +0 -0
  10. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/impact.sql +0 -0
  11. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/invalid-objects.sql +0 -0
  12. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/name-occupants.sql +0 -0
  13. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/object-source.sql +0 -0
  14. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/plscope-enabled.sql +0 -0
  15. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/plscope-statements.sql +0 -0
  16. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/plscope-usages.sql +0 -0
  17. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/session-privileges.sql +0 -0
  18. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/similar-candidates.sql +0 -0
  19. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/source.sql +0 -0
  20. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/SOURCES.txt +0 -0
  21. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/dependency_links.txt +0 -0
  22. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/entry_points.txt +0 -0
  23. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/requires.txt +0 -0
  24. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/top_level.txt +0 -0
  25. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/setup.cfg +0 -0
  26. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-apply/SKILL.md +0 -0
  27. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-explore/SKILL.md +0 -0
  28. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-explore/reference/data-dictionary.md +0 -0
  29. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-impact/SKILL.md +0 -0
  30. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-review/SKILL.md +0 -0
  31. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-review/reference/antipatterns.md +0 -0
  32. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-setup/SKILL.md +0 -0
  33. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-skill-author/SKILL.md +0 -0
  34. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-write/SKILL.md +0 -0
  35. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-write/reference/patterns.md +0 -0
  36. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase1.py +0 -0
  37. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase2.py +0 -0
  38. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase3.py +0 -0
  39. {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase5.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythia-plsql
3
- Version: 0.4.4
3
+ Version: 0.4.6
4
4
  Summary: PL/SQL development for AI agents on Oracle Database - expert data-dictionary queries, impact analysis, and a snapshot-verified write path with honest rollback.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/thaildhe172591/pythia
@@ -75,7 +75,7 @@ Or the same thing piecewise:
75
75
 
76
76
  ```bash
77
77
  pip install pythia-plsql # the CLI (thin driver — no Oracle Instant Client needed)
78
- pythia install # skills into your agent + .pythia/connections.json scaffold
78
+ python -m pythia install # skills into your agent + .pythia/ scaffold
79
79
  pythia check # fill in connections.json first, then verify
80
80
  ```
81
81
 
@@ -170,6 +170,8 @@ The groups that cannot be snapshotted default to `deny` — and the refusal says
170
170
  instead of "policy forbids it". Anonymous PL/SQL blocks are refused outright.
171
171
  Unrecognized statements are refused, never guessed into a group.
172
172
 
173
+ Threat model and what a snapshot does **not** restore: [SECURITY.md](SECURITY.md).
174
+
173
175
  Reads may flow through Oracle's official SQLcl MCP server (`sql -mcp`, keep `-R 4`);
174
176
  it audits every interaction in `DBTOOLS$MCP_LOG`. **Writes never do** — only
175
177
  `pythia apply` has the snapshot, preview, verify and journal.
@@ -61,7 +61,7 @@ Or the same thing piecewise:
61
61
 
62
62
  ```bash
63
63
  pip install pythia-plsql # the CLI (thin driver — no Oracle Instant Client needed)
64
- pythia install # skills into your agent + .pythia/connections.json scaffold
64
+ python -m pythia install # skills into your agent + .pythia/ scaffold
65
65
  pythia check # fill in connections.json first, then verify
66
66
  ```
67
67
 
@@ -156,6 +156,8 @@ The groups that cannot be snapshotted default to `deny` — and the refusal says
156
156
  instead of "policy forbids it". Anonymous PL/SQL blocks are refused outright.
157
157
  Unrecognized statements are refused, never guessed into a group.
158
158
 
159
+ Threat model and what a snapshot does **not** restore: [SECURITY.md](SECURITY.md).
160
+
159
161
  Reads may flow through Oracle's official SQLcl MCP server (`sql -mcp`, keep `-R 4`);
160
162
  it audits every interaction in `DBTOOLS$MCP_LOG`. **Writes never do** — only
161
163
  `pythia apply` has the snapshot, preview, verify and journal.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pythia-plsql"
7
- version = "0.4.4"
7
+ version = "0.4.6"
8
8
  description = "PL/SQL development for AI agents on Oracle Database - expert data-dictionary queries, impact analysis, and a snapshot-verified write path with honest rollback."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -1936,6 +1936,7 @@ def clean_legacy_skills(base_dir):
1936
1936
 
1937
1937
 
1938
1938
  def cmd_install(conn, schema, ns):
1939
+ import shutil
1939
1940
  en = getattr(ns, "color", False)
1940
1941
  if en:
1941
1942
  sys.stdout.write(banner(en))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pythia-plsql
3
- Version: 0.4.4
3
+ Version: 0.4.6
4
4
  Summary: PL/SQL development for AI agents on Oracle Database - expert data-dictionary queries, impact analysis, and a snapshot-verified write path with honest rollback.
5
5
  License: MIT
6
6
  Project-URL: Homepage, https://github.com/thaildhe172591/pythia
@@ -75,7 +75,7 @@ Or the same thing piecewise:
75
75
 
76
76
  ```bash
77
77
  pip install pythia-plsql # the CLI (thin driver — no Oracle Instant Client needed)
78
- pythia install # skills into your agent + .pythia/connections.json scaffold
78
+ python -m pythia install # skills into your agent + .pythia/ scaffold
79
79
  pythia check # fill in connections.json first, then verify
80
80
  ```
81
81
 
@@ -170,6 +170,8 @@ The groups that cannot be snapshotted default to `deny` — and the refusal says
170
170
  instead of "policy forbids it". Anonymous PL/SQL blocks are refused outright.
171
171
  Unrecognized statements are refused, never guessed into a group.
172
172
 
173
+ Threat model and what a snapshot does **not** restore: [SECURITY.md](SECURITY.md).
174
+
173
175
  Reads may flow through Oracle's official SQLcl MCP server (`sql -mcp`, keep `-R 4`);
174
176
  it audits every interaction in `DBTOOLS$MCP_LOG`. **Writes never do** — only
175
177
  `pythia apply` has the snapshot, preview, verify and journal.
@@ -208,6 +208,33 @@ def test_scripts_dir_prefers_where_the_executable_really_is():
208
208
  sysconfig.get_path("scripts"), user, None)
209
209
 
210
210
 
211
+ def test_cmd_install_runs_end_to_end():
212
+ """The unit tests exercised the hint functions but never cmd_install
213
+ itself, so a missing `import shutil` inside it reached CI. Run the whole
214
+ command against a temp project: it must scaffold and not raise."""
215
+ import argparse
216
+ import contextlib
217
+ import io
218
+ import os
219
+ with tempfile.TemporaryDirectory() as td:
220
+ ns = argparse.Namespace(project_root=td, glob=False, source=None,
221
+ color=False, json=False)
222
+ buf = io.StringIO()
223
+ env = dict(os.environ, PATH="") # no npx: take the bundled path
224
+ old = os.environ.get("PATH")
225
+ os.environ["PATH"] = ""
226
+ try:
227
+ with contextlib.redirect_stdout(buf):
228
+ pythia.cmd_install(None, None, ns)
229
+ finally:
230
+ if old is not None:
231
+ os.environ["PATH"] = old
232
+ out = buf.getvalue()
233
+ assert (pathlib.Path(td) / ".pythia" / "connections.json").is_file()
234
+ assert "Next: fill in" in out
235
+ assert env is not None
236
+
237
+
211
238
  def main():
212
239
  failed = 0
213
240
  for name, fn in sorted(globals().items()):
File without changes
File without changes