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.
- {pythia_plsql-0.4.4/scripts/pythia_plsql.egg-info → pythia_plsql-0.4.6}/PKG-INFO +4 -2
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/README.md +3 -1
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/pyproject.toml +1 -1
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia.py +1 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6/scripts/pythia_plsql.egg-info}/PKG-INFO +4 -2
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_install.py +27 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/LICENSE +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/compile-errors.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/dependencies.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/impact.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/invalid-objects.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/name-occupants.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/object-source.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/plscope-enabled.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/plscope-statements.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/plscope-usages.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/session-privileges.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/similar-candidates.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/queries/source.sql +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/SOURCES.txt +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/dependency_links.txt +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/entry_points.txt +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/requires.txt +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/top_level.txt +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/setup.cfg +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-apply/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-explore/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-explore/reference/data-dictionary.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-impact/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-review/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-review/reference/antipatterns.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-setup/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-skill-author/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-write/SKILL.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-write/reference/patterns.md +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase1.py +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase2.py +0 -0
- {pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/tests/test_phase3.py +0 -0
- {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.
|
|
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
|
|
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
|
|
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.
|
|
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" }
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pythia-plsql
|
|
3
|
-
Version: 0.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
|
|
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
|
|
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
|
{pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/scripts/pythia_plsql.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pythia_plsql-0.4.4 → pythia_plsql-0.4.6}/skills/pythia-explore/reference/data-dictionary.md
RENAMED
|
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
|