{"_id":"@caleb-ne1/pyrun","_rev":"5-54fed35105188961f654e55e1be93aca","name":"@caleb-ne1/pyrun","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.1":{"name":"@caleb-ne1/pyrun","version":"1.0.1","keywords":["python","cli","project initializer","django","flask","fastapi","dev-tools"],"author":{"name":"Caleb-ne1"},"license":"MIT","_id":"@caleb-ne1/pyrun@1.0.1","maintainers":[{"name":"caleb-ne1","email":"kemboicaleb19@gmail.com"}],"homepage":"https://github.com/Caleb-ne1/pyrun#readme","bugs":{"url":"https://github.com/Caleb-ne1/pyrun/issues"},"bin":{"pyrun":"bin/pyrun.js"},"dist":{"shasum":"6d634a407a6f8c18a9519838d72fac732a989a82","tarball":"https://registry.npmjs.org/@caleb-ne1/pyrun/-/pyrun-1.0.1.tgz","fileCount":11,"integrity":"sha512-u8RWhT4IH7qf17ymcYWf0lQYP17DsnXluf40j2pg4wWh3ytQadKAzWGWw4xYJGbzAtqogdASAHAUbsMobVTGWg==","signatures":[{"sig":"MEYCIQCqg8JooqwlWGsOZjUhQX2IavgmS6zH6oG92UuHigKJUwIhAPOHTFlIGlmolfksJ5JjK8jevzS6WGJcADNNvWnyxYLf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":675009},"type":"commonjs","gitHead":"5b34f441a92e5df376dbc35d981d4cf3c76ca309","scripts":{"test":"echo \"No tests yet\"","start":"node bin/pyrun.js"},"_npmUser":{"name":"caleb-ne1","email":"kemboicaleb19@gmail.com"},"repository":{"url":"git+https://github.com/Caleb-ne1/pyrun.git","type":"git"},"_npmVersion":"11.6.0","description":"CLI tool to initialize and run Python projects","directories":{},"_nodeVersion":"22.18.0","dependencies":{"chokidar":"^5.0.0","fs-extra":"^11.3.3","commander":"^14.0.3","cross-spawn":"^7.0.6"},"preferGlobal":true,"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/pyrun_1.0.1_1770476128409_0.20158559041569757","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@caleb-ne1/pyrun","version":"1.1.0","description":"CLI tool to initialize and run Python projects","bin":{"pyrun":"bin/pyrun.js"},"keywords":["python","cli","project initializer","django","flask","fastapi","dev-tools"],"author":{"name":"Caleb-ne1"},"license":"MIT","type":"commonjs","preferGlobal":true,"repository":{"type":"git","url":"git+https://github.com/Caleb-ne1/pyrun.git"},"bugs":{"url":"https://github.com/Caleb-ne1/pyrun/issues"},"homepage":"https://github.com/Caleb-ne1/pyrun#readme","dependencies":{"chokidar":"^5.0.0","commander":"^14.0.3","cross-spawn":"^7.0.6","fs-extra":"^11.3.3"},"scripts":{"start":"node bin/pyrun.js","test":"echo \"No tests yet\""},"_id":"@caleb-ne1/pyrun@1.1.0","gitHead":"02144bfa294e2aba61b9891df91521029218717f","_nodeVersion":"22.18.0","_npmVersion":"11.6.0","dist":{"integrity":"sha512-/adZHL9vK0ol5G2A8DS5MLP5jxYMkZd67N9Gcrg/EewFWLBMurogaAdTTQ7vg9YS88kfRRT1EuCyPM15ydqJsg==","shasum":"02f120607927d2c6d27f9a1b1b85c183aec118e2","tarball":"https://registry.npmjs.org/@caleb-ne1/pyrun/-/pyrun-1.1.0.tgz","fileCount":12,"unpackedSize":678830,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDe5Vipn1bxfV1EdS/pA5xfSvOCabdu+PA2CwFXEIer7wIgHsWd0+vkKTqAWJEYcEe0U3BhecbEOXW/4O2hVoR0jLE="}]},"_npmUser":{"name":"caleb-ne1","email":"kemboicaleb19@gmail.com"},"directories":{},"maintainers":[{"name":"caleb-ne1","email":"kemboicaleb19@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/pyrun_1.1.0_1770882479969_0.48164798791859487"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-07T14:55:28.291Z","modified":"2026-02-12T07:48:00.314Z","1.0.0":"2026-02-07T14:32:44.419Z","1.0.1":"2026-02-07T14:55:28.667Z","1.1.0":"2026-02-12T07:48:00.170Z"},"bugs":{"url":"https://github.com/Caleb-ne1/pyrun/issues"},"author":{"name":"Caleb-ne1"},"license":"MIT","homepage":"https://github.com/Caleb-ne1/pyrun#readme","keywords":["python","cli","project initializer","django","flask","fastapi","dev-tools"],"repository":{"type":"git","url":"git+https://github.com/Caleb-ne1/pyrun.git"},"description":"CLI tool to initialize and run Python projects","maintainers":[{"name":"caleb-ne1","email":"kemboicaleb19@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"./assets/pyrun.png\" alt=\"PyRun Logo\" width=\"600\" height=\"300\" />\n</p>\n\n\n# PyRun\n\nPyRun simplifies Python project setup, dependency management and\ndevelopment server execution with automatic virtual environment handling\nand reload behavior.\n\n------------------------------------------------------------------------\n\n## Why PyRun?\n\nPyRun provides:\n\n-   One-command project initialization\n-   Automatic virtual environment creation\n-   Structured dependency tracking via `modules.json`\n-   Smart install, upgrade, and downgrade handling\n-   Bulk dependency installation (`--all`)\n-   Clean uninstall support\n-   Framework-aware run commands\n-   Host and port override support\n-   Automatic server refresh on dependency changes\n-   Optional reload with custom directories for development\n-   Run arbitrary Python modules with extra CLI arguments\n\nIt brings a familiar, clean CLI experience to Python development.\n\n------------------------------------------------------------------------\n\n## Installation\n\nInstall globally via npm:\n\n``` bash\nnpm install -g @caleb-ne1/pyrun\n```\n\nVerify installation:\n\n``` bash\npyrun --help\n```\n\n------------------------------------------------------------------------\n\n## Quick Start\n\n### 1. Initialize a Project\n\n``` bash\npyrun init <framework> [path]\n```\n\nExample:\n\n``` bash\npyrun init fastapi .\n```\n\nThis will:\n\n-   Create a `venv` virtual environment\n-   Generate `modules.json`\n-   Install required framework dependencies\n\n------------------------------------------------------------------------\n\n### 2. Run the Project\n\n``` bash\npyrun run [entry-file] --port <port> --host <host>\n```\n\nExamples:\n\n``` bash\npyrun run\npyrun run app.py\npyrun run app.py --port 3000\npyrun run app.py --host 0.0.0.0 --port 8000\npyrun run app.py --reload\npyrun run app.py --reload --reloadDirs src,api\n```\n\nPyRun automatically detects:\n\n-   `app.py`\n-   `main.py`\n-   `manage.py`\n\nFrameworks with native reload support use their internal reload\nmechanisms for efficient development.\n\nReload behavior:\n-  Optional --reload enables automatic server restart on code changes\n\n-  --reloadDirs allows specifying directories to watch for changes (defaults to project root if not provided)\n\n-  Supported frameworks: Flask and FastAPI\n------------------------------------------------------------------------\n\n### 3. Run Python Modules\n\nYou can run Python modules like pyinstaller, pytest, black, etc., directly:\n\n```bash\npyrun run <project> --module pyinstaller --extraArgs=\"--onefile --noconsole app.py\"\npyrun run <project> --module pytest --extraArgs=\"tests/\"\n```\n\n- --module <module> specifies the Python module\n\n- --extraArgs passes additional CLI arguments to the module\n\n------------------------------------------------------------------------\n\n### 4. Install Dependencies\n\nInstall one or multiple modules:\n\n``` bash\npyrun install requests\npyrun install flask:2.0.1\npyrun install requests fastapi:0.110.0\n```\n\nBehavior:\n\n-   Installs new modules\n-   Updates versions if different\n-   Downgrades when specified\n-   Updates `modules.json`\n-   Triggers server refresh when running\n\n------------------------------------------------------------------------\n\n### 5. Install All Project Dependencies\n\nAfter cloning a project:\n\n``` bash\npyrun install --all\n```\n\nThis installs all dependencies defined in `modules.json`.\n\n------------------------------------------------------------------------\n\n### 6. Uninstall Modules\n\n``` bash\npyrun uninstall requests\n```\n\n-   Removes the module from the virtual environment\n-   Updates `modules.json`\n-   Refreshes the server if running\n\n------------------------------------------------------------------------\n\n## Project Structure\n\nAfter initialization:\n\n    myproject/\n    ├── venv/\n    ├── modules.json\n    ├── app.py | main.py | manage.py\n\n------------------------------------------------------------------------\n\n## modules.json Example\n\n``` json\n{\n  \"framework\": \"fastapi\",\n  \"dependencies\": {\n    \"fastapi\": \"0.110.0\",\n    \"uvicorn\": \"0.29.0\",\n    \"requests\": \"2.31.0\"\n  }\n}\n```\n\n`modules.json` replaces traditional `requirements.txt` with structured\ndependency tracking.\n\n------------------------------------------------------------------------\n\n## Supported Frameworks\n\n-   Django\n-   Flask\n-   FastAPI\n-   Plain Python\n\n------------------------------------------------------------------------\n\n## License\n\nThis project is licensed under the MIT License. See the [LICENSE](./LICENSE) file for details.\n\n------------------------------------------------------------------------\n\n\n","readmeFilename":"README.md"}