hython-cli 0.1.0__tar.gz → 0.1.1__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.
- {hython_cli-0.1.0 → hython_cli-0.1.1}/Cargo.lock +1 -1
- {hython_cli-0.1.0 → hython_cli-0.1.1}/Cargo.toml +1 -1
- {hython_cli-0.1.0 → hython_cli-0.1.1}/PKG-INFO +27 -48
- {hython_cli-0.1.0 → hython_cli-0.1.1}/README.md +26 -47
- {hython_cli-0.1.0 → hython_cli-0.1.1}/pyproject.toml +1 -1
- hython_cli-0.1.1/tests/live_pypi_sandbox_test.sh +103 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/.github/workflows/release.yml +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/.gitignore +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/MONETIZATION.md +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/PHILOSOPHY.md +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/install.sh +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/env.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/formatter.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/intellisense.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/main.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/manifest.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/reporter.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/resolver.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/runner.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/runtime.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/src/scanner.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/tests/integration_tests.rs +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/tests/sandbox_suite.sh +0 -0
- {hython_cli-0.1.0 → hython_cli-0.1.1}/tests/security_tests.sh +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hython-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -18,14 +18,14 @@ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
|
18
18
|
> **"Don't ask the developer to fix something that Hython can safely fix itself.
|
|
19
19
|
> And after fixing it: Tell the developer what happened, without making them participate in the process."**
|
|
20
20
|
|
|
21
|
-
Hython is an automation-first Python environment orchestrator
|
|
21
|
+
Hython is an automation-first Python environment orchestrator. It eliminates the friction of managing virtual environments, installing missing dependencies, matching Python versions, configuring IDE settings, and answering routine `[Y/n]` prompts.
|
|
22
22
|
|
|
23
23
|
---
|
|
24
24
|
|
|
25
25
|
## The Mental Model
|
|
26
26
|
|
|
27
27
|
```text
|
|
28
|
-
Developer intent (`hython` or `hython
|
|
28
|
+
Developer intent (`hython` or `hython app.py`)
|
|
29
29
|
↓
|
|
30
30
|
Hython inspects project & requirements
|
|
31
31
|
↓
|
|
@@ -43,37 +43,25 @@ The developer should think:
|
|
|
43
43
|
|
|
44
44
|
---
|
|
45
45
|
|
|
46
|
-
##
|
|
47
|
-
|
|
48
|
-
- 🚫 **No Routine Prompts:** Never stops execution for safe, deterministic actions like creating `.venv` or installing missing dependencies.
|
|
49
|
-
- 🩺 **Self-Healing Environments:** If `.venv` is missing, damaged, or out-of-sync, Hython recreates or synchronizes it seamlessly.
|
|
50
|
-
- 🧠 **Automatic IDE & Framework IntelliSense:** Instantly writes `.vscode/settings.json` and `pyrightconfig.json` so editors lock onto the environment. Automatically provisions framework type stubs (e.g. `django-stubs`, `django-stubs-ext`, `pandas-stubs`) so Django ORM autocompletion and hover documentation work out-of-the-box with zero configuration.
|
|
51
|
-
- 📦 **Dynamic Import Healing:** Intercepts `ModuleNotFoundError` during both pre-flight static analysis and runtime execution. It maps module names to PyPI packages (e.g. `yaml` → `PyYAML`, `dateutil` → `python-dateutil`, `PIL` → `Pillow`, `psycopg2` → `psycopg2-binary`) and installs them automatically.
|
|
52
|
-
- 🎯 **Intelligent Runtime Selection:** Parses `requires-python` (e.g. `>=3.12, <3.14`). If your default interpreter is Python 3.14, Hython discovers or auto-provisions Python 3.13 without manual setup.
|
|
53
|
-
- 🤫 **Quiet & Instant When Warm:** Once an environment is ready and synchronized, `hython` introduces near-zero overhead and runs completely silently.
|
|
54
|
-
- 📊 **Calm Post-Action Summary:** Reports what was detected, selected, installed, and executed only when actions took place.
|
|
55
|
-
|
|
56
|
-
---
|
|
57
|
-
|
|
58
|
-
## Quick Start
|
|
46
|
+
## Installation
|
|
59
47
|
|
|
60
|
-
### Installation
|
|
61
|
-
|
|
62
|
-
**Via pip (Recommended):**
|
|
63
48
|
```bash
|
|
64
49
|
pip install hython-cli
|
|
65
50
|
```
|
|
51
|
+
*(Or use `pipx install hython-cli`)*
|
|
66
52
|
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
cargo install --path .
|
|
70
|
-
```
|
|
53
|
+
---
|
|
71
54
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
55
|
+
## Key Features
|
|
56
|
+
|
|
57
|
+
- 🚫 **No Routine Prompts:** Never stops execution for safe, deterministic actions like creating `.venv` or installing missing dependencies.
|
|
58
|
+
- 🩺 **Self-Healing Environments:** If `.venv` is missing, corrupted, or out-of-sync, Hython recreates or synchronizes it seamlessly.
|
|
59
|
+
- 📦 **Dynamic Import Healing:** Intercepts `ModuleNotFoundError` during both pre-flight static analysis and runtime execution. It maps module names to PyPI packages (e.g. `yaml` → `PyYAML`, `dateutil` → `python-dateutil`, `PIL` → `Pillow`, `psycopg2` → `psycopg2-binary`) and installs them automatically.
|
|
60
|
+
- 🎯 **Intelligent Runtime Selection:** Parses `requires-python` (e.g. `>=3.12, <3.14`). If your default interpreter is Python 3.14, Hython discovers or auto-provisions a compatible Python runtime without manual setup.
|
|
61
|
+
- 🧠 **Automatic IDE & Framework IntelliSense:** Instantly writes `.vscode/settings.json` and `pyrightconfig.json` so editors lock onto the environment. Automatically provisions framework type stubs (e.g. `django-stubs`, `django-stubs-ext`, `pandas-stubs`) so Django ORM autocompletion and hover documentation work out-of-the-box.
|
|
62
|
+
- 🎨 **Automated Code Formatting:** Includes `hython fmt` and configures format-on-save in your editor, enforcing official PEP 8, Black, isort, and framework conventions automatically.
|
|
63
|
+
- 🤫 **Quiet & Instant When Warm:** Once an environment is ready and synchronized, `hython` introduces near-zero overhead and runs completely silently.
|
|
64
|
+
- 📊 **Calm Post-Action Summary:** Reports what was detected, selected, installed, and executed only when actions took place.
|
|
77
65
|
|
|
78
66
|
---
|
|
79
67
|
|
|
@@ -84,9 +72,9 @@ In any project folder (Django, FastAPI, Flask, or script-based):
|
|
|
84
72
|
```bash
|
|
85
73
|
hython
|
|
86
74
|
```
|
|
87
|
-
-
|
|
88
|
-
- If FastAPI is detected
|
|
89
|
-
-
|
|
75
|
+
- **Django:** If `manage.py` is detected, runs `manage.py runserver`.
|
|
76
|
+
- **FastAPI:** If `FastAPI()` is detected in `main.py` or `app.py`, ensures `uvicorn` and runs `uvicorn main:app --reload`.
|
|
77
|
+
- **Standard scripts:** Automatically finds `main.py`, `app.py`, or `run.py` and executes within the isolated environment.
|
|
90
78
|
|
|
91
79
|
### 2. Run Any Script with Self-Healing
|
|
92
80
|
```bash
|
|
@@ -107,7 +95,13 @@ hython add requests
|
|
|
107
95
|
```
|
|
108
96
|
Updates `pyproject.toml` or `requirements.txt` and synchronizes the environment immediately.
|
|
109
97
|
|
|
110
|
-
### 5.
|
|
98
|
+
### 5. Format Code
|
|
99
|
+
```bash
|
|
100
|
+
hython fmt
|
|
101
|
+
```
|
|
102
|
+
Automatically cleans, formats, and sorts imports according to PEP 8 and framework rules.
|
|
103
|
+
|
|
104
|
+
### 6. Explicit Synchronization & Status
|
|
111
105
|
```bash
|
|
112
106
|
hython sync # Reconciles environment and dependencies
|
|
113
107
|
hython status # Inspects detected project root, manifest, and runtime
|
|
@@ -115,22 +109,7 @@ hython status # Inspects detected project root, manifest, and runtime
|
|
|
115
109
|
|
|
116
110
|
---
|
|
117
111
|
|
|
118
|
-
## Architecture
|
|
119
|
-
|
|
120
|
-
| Module | Responsibility |
|
|
121
|
-
| :--- | :--- |
|
|
122
|
-
| [`src/main.rs`](file:///Volumes/harsha's%20SSD/Hython/src/main.rs) | CLI entrypoint, argument dispatch, zero-argument project auto-detection |
|
|
123
|
-
| [`src/manifest.rs`](file:///Volumes/harsha's%20SSD/Hython/src/manifest.rs) | Inspects `pyproject.toml`, `requirements.txt`, `.python-version`, entry points |
|
|
124
|
-
| [`src/runtime.rs`](file:///Volumes/harsha's%20SSD/Hython/src/runtime.rs) | SemVer constraint matching, local Python discovery, standalone runtime provisioning |
|
|
125
|
-
| [`src/env.rs`](file:///Volumes/harsha's%20SSD/Hython/src/env.rs) | `.venv` lifecycle, state hashing (`.venv/.hython-state.json`), dependency synchronization |
|
|
126
|
-
| [`src/scanner.rs`](file:///Volumes/harsha's%20SSD/Hython/src/scanner.rs) | Fast static AST/regex import scanning for pre-flight missing package detection |
|
|
127
|
-
| [`src/resolver.rs`](file:///Volumes/harsha's%20SSD/Hython/src/resolver.rs) | Standard library filter and module-to-PyPI package name mapping |
|
|
128
|
-
| [`src/runner.rs`](file:///Volumes/harsha's%20SSD/Hython/src/runner.rs) | Execution supervisor with dynamic runtime `ModuleNotFoundError` interception & self-healing |
|
|
129
|
-
| [`src/reporter.rs`](file:///Volumes/harsha's%20SSD/Hython/src/reporter.rs) | Transparent, non-intrusive post-action summary formatter |
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
112
|
## License
|
|
134
113
|
|
|
135
|
-
MIT
|
|
114
|
+
MIT License — Hython Labs
|
|
136
115
|
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
> **"Don't ask the developer to fix something that Hython can safely fix itself.
|
|
5
5
|
> And after fixing it: Tell the developer what happened, without making them participate in the process."**
|
|
6
6
|
|
|
7
|
-
Hython is an automation-first Python environment orchestrator
|
|
7
|
+
Hython is an automation-first Python environment orchestrator. It eliminates the friction of managing virtual environments, installing missing dependencies, matching Python versions, configuring IDE settings, and answering routine `[Y/n]` prompts.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## The Mental Model
|
|
12
12
|
|
|
13
13
|
```text
|
|
14
|
-
Developer intent (`hython` or `hython
|
|
14
|
+
Developer intent (`hython` or `hython app.py`)
|
|
15
15
|
↓
|
|
16
16
|
Hython inspects project & requirements
|
|
17
17
|
↓
|
|
@@ -29,37 +29,25 @@ The developer should think:
|
|
|
29
29
|
|
|
30
30
|
---
|
|
31
31
|
|
|
32
|
-
##
|
|
33
|
-
|
|
34
|
-
- 🚫 **No Routine Prompts:** Never stops execution for safe, deterministic actions like creating `.venv` or installing missing dependencies.
|
|
35
|
-
- 🩺 **Self-Healing Environments:** If `.venv` is missing, damaged, or out-of-sync, Hython recreates or synchronizes it seamlessly.
|
|
36
|
-
- 🧠 **Automatic IDE & Framework IntelliSense:** Instantly writes `.vscode/settings.json` and `pyrightconfig.json` so editors lock onto the environment. Automatically provisions framework type stubs (e.g. `django-stubs`, `django-stubs-ext`, `pandas-stubs`) so Django ORM autocompletion and hover documentation work out-of-the-box with zero configuration.
|
|
37
|
-
- 📦 **Dynamic Import Healing:** Intercepts `ModuleNotFoundError` during both pre-flight static analysis and runtime execution. It maps module names to PyPI packages (e.g. `yaml` → `PyYAML`, `dateutil` → `python-dateutil`, `PIL` → `Pillow`, `psycopg2` → `psycopg2-binary`) and installs them automatically.
|
|
38
|
-
- 🎯 **Intelligent Runtime Selection:** Parses `requires-python` (e.g. `>=3.12, <3.14`). If your default interpreter is Python 3.14, Hython discovers or auto-provisions Python 3.13 without manual setup.
|
|
39
|
-
- 🤫 **Quiet & Instant When Warm:** Once an environment is ready and synchronized, `hython` introduces near-zero overhead and runs completely silently.
|
|
40
|
-
- 📊 **Calm Post-Action Summary:** Reports what was detected, selected, installed, and executed only when actions took place.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Quick Start
|
|
32
|
+
## Installation
|
|
45
33
|
|
|
46
|
-
### Installation
|
|
47
|
-
|
|
48
|
-
**Via pip (Recommended):**
|
|
49
34
|
```bash
|
|
50
35
|
pip install hython-cli
|
|
51
36
|
```
|
|
37
|
+
*(Or use `pipx install hython-cli`)*
|
|
52
38
|
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
cargo install --path .
|
|
56
|
-
```
|
|
39
|
+
---
|
|
57
40
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
41
|
+
## Key Features
|
|
42
|
+
|
|
43
|
+
- 🚫 **No Routine Prompts:** Never stops execution for safe, deterministic actions like creating `.venv` or installing missing dependencies.
|
|
44
|
+
- 🩺 **Self-Healing Environments:** If `.venv` is missing, corrupted, or out-of-sync, Hython recreates or synchronizes it seamlessly.
|
|
45
|
+
- 📦 **Dynamic Import Healing:** Intercepts `ModuleNotFoundError` during both pre-flight static analysis and runtime execution. It maps module names to PyPI packages (e.g. `yaml` → `PyYAML`, `dateutil` → `python-dateutil`, `PIL` → `Pillow`, `psycopg2` → `psycopg2-binary`) and installs them automatically.
|
|
46
|
+
- 🎯 **Intelligent Runtime Selection:** Parses `requires-python` (e.g. `>=3.12, <3.14`). If your default interpreter is Python 3.14, Hython discovers or auto-provisions a compatible Python runtime without manual setup.
|
|
47
|
+
- 🧠 **Automatic IDE & Framework IntelliSense:** Instantly writes `.vscode/settings.json` and `pyrightconfig.json` so editors lock onto the environment. Automatically provisions framework type stubs (e.g. `django-stubs`, `django-stubs-ext`, `pandas-stubs`) so Django ORM autocompletion and hover documentation work out-of-the-box.
|
|
48
|
+
- 🎨 **Automated Code Formatting:** Includes `hython fmt` and configures format-on-save in your editor, enforcing official PEP 8, Black, isort, and framework conventions automatically.
|
|
49
|
+
- 🤫 **Quiet & Instant When Warm:** Once an environment is ready and synchronized, `hython` introduces near-zero overhead and runs completely silently.
|
|
50
|
+
- 📊 **Calm Post-Action Summary:** Reports what was detected, selected, installed, and executed only when actions took place.
|
|
63
51
|
|
|
64
52
|
---
|
|
65
53
|
|
|
@@ -70,9 +58,9 @@ In any project folder (Django, FastAPI, Flask, or script-based):
|
|
|
70
58
|
```bash
|
|
71
59
|
hython
|
|
72
60
|
```
|
|
73
|
-
-
|
|
74
|
-
- If FastAPI is detected
|
|
75
|
-
-
|
|
61
|
+
- **Django:** If `manage.py` is detected, runs `manage.py runserver`.
|
|
62
|
+
- **FastAPI:** If `FastAPI()` is detected in `main.py` or `app.py`, ensures `uvicorn` and runs `uvicorn main:app --reload`.
|
|
63
|
+
- **Standard scripts:** Automatically finds `main.py`, `app.py`, or `run.py` and executes within the isolated environment.
|
|
76
64
|
|
|
77
65
|
### 2. Run Any Script with Self-Healing
|
|
78
66
|
```bash
|
|
@@ -93,7 +81,13 @@ hython add requests
|
|
|
93
81
|
```
|
|
94
82
|
Updates `pyproject.toml` or `requirements.txt` and synchronizes the environment immediately.
|
|
95
83
|
|
|
96
|
-
### 5.
|
|
84
|
+
### 5. Format Code
|
|
85
|
+
```bash
|
|
86
|
+
hython fmt
|
|
87
|
+
```
|
|
88
|
+
Automatically cleans, formats, and sorts imports according to PEP 8 and framework rules.
|
|
89
|
+
|
|
90
|
+
### 6. Explicit Synchronization & Status
|
|
97
91
|
```bash
|
|
98
92
|
hython sync # Reconciles environment and dependencies
|
|
99
93
|
hython status # Inspects detected project root, manifest, and runtime
|
|
@@ -101,21 +95,6 @@ hython status # Inspects detected project root, manifest, and runtime
|
|
|
101
95
|
|
|
102
96
|
---
|
|
103
97
|
|
|
104
|
-
## Architecture
|
|
105
|
-
|
|
106
|
-
| Module | Responsibility |
|
|
107
|
-
| :--- | :--- |
|
|
108
|
-
| [`src/main.rs`](file:///Volumes/harsha's%20SSD/Hython/src/main.rs) | CLI entrypoint, argument dispatch, zero-argument project auto-detection |
|
|
109
|
-
| [`src/manifest.rs`](file:///Volumes/harsha's%20SSD/Hython/src/manifest.rs) | Inspects `pyproject.toml`, `requirements.txt`, `.python-version`, entry points |
|
|
110
|
-
| [`src/runtime.rs`](file:///Volumes/harsha's%20SSD/Hython/src/runtime.rs) | SemVer constraint matching, local Python discovery, standalone runtime provisioning |
|
|
111
|
-
| [`src/env.rs`](file:///Volumes/harsha's%20SSD/Hython/src/env.rs) | `.venv` lifecycle, state hashing (`.venv/.hython-state.json`), dependency synchronization |
|
|
112
|
-
| [`src/scanner.rs`](file:///Volumes/harsha's%20SSD/Hython/src/scanner.rs) | Fast static AST/regex import scanning for pre-flight missing package detection |
|
|
113
|
-
| [`src/resolver.rs`](file:///Volumes/harsha's%20SSD/Hython/src/resolver.rs) | Standard library filter and module-to-PyPI package name mapping |
|
|
114
|
-
| [`src/runner.rs`](file:///Volumes/harsha's%20SSD/Hython/src/runner.rs) | Execution supervisor with dynamic runtime `ModuleNotFoundError` interception & self-healing |
|
|
115
|
-
| [`src/reporter.rs`](file:///Volumes/harsha's%20SSD/Hython/src/reporter.rs) | Transparent, non-intrusive post-action summary formatter |
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
98
|
## License
|
|
120
99
|
|
|
121
|
-
MIT
|
|
100
|
+
MIT License — Hython Labs
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SANDBOX_DIR="$(mktemp -d -t hython_live_pypi_XXXXXX)"
|
|
5
|
+
|
|
6
|
+
echo "=========================================================="
|
|
7
|
+
echo "🌐 RUNNING LIVE PYPI INSTALLATION & END-TO-END VERIFICATION"
|
|
8
|
+
echo "Sandbox Directory: $SANDBOX_DIR"
|
|
9
|
+
echo "=========================================================="
|
|
10
|
+
|
|
11
|
+
cleanup() {
|
|
12
|
+
rm -rf "$SANDBOX_DIR"
|
|
13
|
+
}
|
|
14
|
+
trap cleanup EXIT
|
|
15
|
+
|
|
16
|
+
# Step 1: Create fresh virtual environment (simulating a clean user laptop)
|
|
17
|
+
echo "1. Creating fresh sandbox environment..."
|
|
18
|
+
python3 -m venv "$SANDBOX_DIR/user_env"
|
|
19
|
+
ENV_PIP="$SANDBOX_DIR/user_env/bin/pip"
|
|
20
|
+
ENV_HYTHON="$SANDBOX_DIR/user_env/bin/hython"
|
|
21
|
+
|
|
22
|
+
# Step 2: Install hython-cli directly from PyPI
|
|
23
|
+
echo "2. Installing 'hython-cli' from official PyPI..."
|
|
24
|
+
"$ENV_PIP" install --no-cache-dir hython-cli
|
|
25
|
+
|
|
26
|
+
# Step 3: Verify hython binary was installed into the user's PATH
|
|
27
|
+
echo -n "3. Verifying hython binary execution... "
|
|
28
|
+
HYTHON_VER=$("$ENV_HYTHON" --version)
|
|
29
|
+
echo "✅ Installed: $HYTHON_VER"
|
|
30
|
+
|
|
31
|
+
# Step 4: Test Self-Healing Missing Dependency
|
|
32
|
+
echo -n "4. Testing Self-Healing with missing dependency (requests)... "
|
|
33
|
+
PROJECT_DIR="$SANDBOX_DIR/my_project"
|
|
34
|
+
mkdir -p "$PROJECT_DIR"
|
|
35
|
+
cat << 'EOF' > "$PROJECT_DIR/app.py"
|
|
36
|
+
import requests
|
|
37
|
+
resp = requests.get("https://httpbin.org/get")
|
|
38
|
+
print(f"LIVE_TEST_STATUS:{resp.status_code}")
|
|
39
|
+
EOF
|
|
40
|
+
|
|
41
|
+
OUTPUT_APP=$(cd "$PROJECT_DIR" && "$ENV_HYTHON" app.py 2>&1)
|
|
42
|
+
if echo "$OUTPUT_APP" | grep -q "LIVE_TEST_STATUS:200" && echo "$OUTPUT_APP" | grep -q "Installed 1 missing dependency"; then
|
|
43
|
+
echo "✅ PASSED (Self-healed missing package & ran successfully)"
|
|
44
|
+
else
|
|
45
|
+
echo "❌ FAILED"
|
|
46
|
+
echo "$OUTPUT_APP"
|
|
47
|
+
exit 1
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# Step 5: Test Dynamic Import Interception
|
|
51
|
+
echo -n "5. Testing Dynamic Import Interception ('yaml' -> 'PyYAML')... "
|
|
52
|
+
cat << 'EOF' > "$PROJECT_DIR/dynamic.py"
|
|
53
|
+
def load_data():
|
|
54
|
+
import yaml
|
|
55
|
+
return yaml.safe_load("product: Hython-CLI\nstatus: Verified")
|
|
56
|
+
|
|
57
|
+
print(load_data()["product"])
|
|
58
|
+
EOF
|
|
59
|
+
|
|
60
|
+
OUTPUT_DYN=$(cd "$PROJECT_DIR" && "$ENV_HYTHON" dynamic.py 2>&1)
|
|
61
|
+
if echo "$OUTPUT_DYN" | grep -q "Hython-CLI"; then
|
|
62
|
+
echo "✅ PASSED (Intercepted runtime missing module & resolved PyPI package)"
|
|
63
|
+
else
|
|
64
|
+
echo "❌ FAILED"
|
|
65
|
+
echo "$OUTPUT_DYN"
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
# Step 6: Test Code Formatting (hython fmt)
|
|
70
|
+
echo -n "6. Testing Code Formatting (hython fmt)... "
|
|
71
|
+
cat << 'EOF' > "$PROJECT_DIR/messy.py"
|
|
72
|
+
def dirty_func( x,y, z ):
|
|
73
|
+
a = [ 1, 2,3 ]
|
|
74
|
+
return {"x":x,"y":y,"z":z}
|
|
75
|
+
EOF
|
|
76
|
+
|
|
77
|
+
(cd "$PROJECT_DIR" && "$ENV_HYTHON" fmt > /dev/null 2>&1)
|
|
78
|
+
if grep -q "def dirty_func(x, y, z):" "$PROJECT_DIR/messy.py"; then
|
|
79
|
+
echo "✅ PASSED (PEP 8 auto-formatting applied cleanly)"
|
|
80
|
+
else
|
|
81
|
+
echo "❌ FAILED"
|
|
82
|
+
cat "$PROJECT_DIR/messy.py"
|
|
83
|
+
exit 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
# Step 7: Test IDE IntelliSense Auto-Generation
|
|
87
|
+
echo -n "7. Testing IDE IntelliSense Auto-Configuration... "
|
|
88
|
+
cat << 'EOF' > "$PROJECT_DIR/manage.py"
|
|
89
|
+
# DJANGO_SETTINGS_MODULE = "test.settings"
|
|
90
|
+
print("Django ready")
|
|
91
|
+
EOF
|
|
92
|
+
|
|
93
|
+
(cd "$PROJECT_DIR" && "$ENV_HYTHON" sync > /dev/null 2>&1)
|
|
94
|
+
if [ -f "$PROJECT_DIR/.vscode/settings.json" ] && [ -f "$PROJECT_DIR/pyrightconfig.json" ]; then
|
|
95
|
+
echo "✅ PASSED (Created .vscode/settings.json and pyrightconfig.json)"
|
|
96
|
+
else
|
|
97
|
+
echo "❌ FAILED (IntelliSense configs not generated)"
|
|
98
|
+
exit 1
|
|
99
|
+
fi
|
|
100
|
+
|
|
101
|
+
echo "=========================================================="
|
|
102
|
+
echo "🎉 ALL LIVE PYPI INSTALLATION & VERIFICATION TESTS PASSED!"
|
|
103
|
+
echo "=========================================================="
|
|
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
|