| Name | psycho JSON |
| Version |
2.1.4
JSON |
| download |
| home_page | None |
| Summary | A tool to manage python projects and their dependencies. |
| upload_time | 2025-08-24 09:09:15 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.8 |
| license | Apache-2.0 |
| keywords |
pyproject.toml
pip
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# Let's go psycho!
Python project management automation using standard build tools.
<p align="center">
<a href="https://github.com/rob-blackbourn/psycho/raw/main/psycho-demo.gif">
<img src="https://github.com/rob-blackbourn/psycho/raw/main/psycho-demo.gif"/>
</a>
</p>
## Status
This project is a working prototype.
This package is available from [pypi](https://pypi.org/project/psycho/),
but the best way to install it is with [pipx](https://github.com/pypa/pipx).
```bash
pipx install psycho
```
## Overview
Python projects are migrating away from using `setup.py` to `pyproject.toml`.
While a number of excellent projects provide custom tooling, there is no built
in support for automating project management with just the standard tools:
* [setuptools](https://pypi.org/project/setuptools/)
* [pip](https://pypi.org/project/pip/)
* [build](https://pypi.org/project/build/)
* [twine](https://pypi.org/project/twine/)
## Psychotic Commands
The following are supported.
* init
* install
* uninstall
* build
* upload
* publish
### init
Makes a new `pyproject.toml`. The command prompts for input.
```bash
$ psycho init
Name: my-package
Version [0.1.0]:
Description: My package
Author: rob
Email: rob@example.com
Initializing my-package
```
Alternatively values can be provided as arguments.
```bash
$ psycho init \
--name my-package \
--version 0.1.0 \
--description "My package" \
--author "Rob Blackbourn" \
--email "rob@example.com"
```
Or by passing `-y` to accept the defaults.
```bash
$ psycho init -y
```
This creates the standard project structure, with a local virtual environment.
It will also upgrade pip and install the project in the virtual environment.
The following flags are also supported:
* `--no-venv` to not create a virtual environment.
* `--no-tests` to not create the tests folder.
* `--no-upgrade` to prevent the venv dependencies being upgraded (pip).
* `--venv <venv-name>` to give the venv folder a specific name (the default is ".venv").
### install
When used without specifying packages this command installs the project as editable.
```bash
$ psycho install
```
This is the equivalent of `pip install --editable .`.
When used with a package requirement, the requirement is written to the `pyproject.toml`
and the package is installed into the python environment using `pip`.
```bash
$ psycho install "pandas>=1.5.3"
```
The `-optional` flag can be used (with a group name) to add an optional dependency.
```bash
$ psycho install --optional dev pytest
```
Most the flags used by pip are available to this command.
### uninstall
This command removes a package from the `pyproject.toml` file, and uninstalls
it using `pip`.
```bash
$ psycho uninstall pandas
```
This can be used with the optional flag (with a group name) to uninstall an optional
dependency.
```bash
$ psycho uninstall --optional dev pytest
```
### build
The build command will build a package, prior to publishing it.
```bash
$ psycho build
```
This is the equivalent of `python -m build`.
### upload
The upload command will upload a package with twine.
```bash
$ psycho upload
```
This is the equivalent of `twine upload dist/*`.
### publish
This combines the build and publish in one command.
```bash
$ psycho publish
```
Raw data
{
"_id": null,
"home_page": null,
"name": "psycho",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "pyproject.toml, pip",
"author": null,
"author_email": "Rob Blackbourn <rob.blackbourn@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/2e/bc/2bff3539b7ea381ae4d378f5af50fb6247a2a3015068be3f469c54967fe4/psycho-2.1.4.tar.gz",
"platform": null,
"description": "# Let's go psycho!\n\nPython project management automation using standard build tools.\n\n<p align=\"center\">\n<a href=\"https://github.com/rob-blackbourn/psycho/raw/main/psycho-demo.gif\">\n<img src=\"https://github.com/rob-blackbourn/psycho/raw/main/psycho-demo.gif\"/>\n</a>\n</p>\n\n## Status\n\nThis project is a working prototype.\n\nThis package is available from [pypi](https://pypi.org/project/psycho/),\nbut the best way to install it is with [pipx](https://github.com/pypa/pipx).\n\n```bash\npipx install psycho\n```\n\n## Overview\n\nPython projects are migrating away from using `setup.py` to `pyproject.toml`.\nWhile a number of excellent projects provide custom tooling, there is no built\nin support for automating project management with just the standard tools:\n\n* [setuptools](https://pypi.org/project/setuptools/)\n* [pip](https://pypi.org/project/pip/)\n* [build](https://pypi.org/project/build/)\n* [twine](https://pypi.org/project/twine/)\n\n## Psychotic Commands\n\nThe following are supported.\n\n* init\n* install\n* uninstall\n* build\n* upload\n* publish\n\n### init\n\nMakes a new `pyproject.toml`. The command prompts for input.\n\n```bash\n$ psycho init\nName: my-package\nVersion [0.1.0]: \nDescription: My package\nAuthor: rob\nEmail: rob@example.com\nInitializing my-package\n```\n\nAlternatively values can be provided as arguments.\n\n```bash\n$ psycho init \\\n --name my-package \\\n --version 0.1.0 \\\n --description \"My package\" \\\n --author \"Rob Blackbourn\" \\\n --email \"rob@example.com\"\n```\n\nOr by passing `-y` to accept the defaults.\n\n```bash\n$ psycho init -y\n```\n\nThis creates the standard project structure, with a local virtual environment.\nIt will also upgrade pip and install the project in the virtual environment.\n\nThe following flags are also supported:\n\n* `--no-venv` to not create a virtual environment.\n* `--no-tests` to not create the tests folder.\n* `--no-upgrade` to prevent the venv dependencies being upgraded (pip).\n* `--venv <venv-name>` to give the venv folder a specific name (the default is \".venv\").\n\n### install\n\nWhen used without specifying packages this command installs the project as editable.\n\n```bash\n$ psycho install\n```\n\nThis is the equivalent of `pip install --editable .`.\n\nWhen used with a package requirement, the requirement is written to the `pyproject.toml`\nand the package is installed into the python environment using `pip`.\n\n```bash\n$ psycho install \"pandas>=1.5.3\"\n```\n\nThe `-optional` flag can be used (with a group name) to add an optional dependency.\n\n```bash\n$ psycho install --optional dev pytest\n```\n\nMost the flags used by pip are available to this command.\n\n### uninstall\n\nThis command removes a package from the `pyproject.toml` file, and uninstalls\nit using `pip`.\n\n```bash\n$ psycho uninstall pandas\n```\n\nThis can be used with the optional flag (with a group name) to uninstall an optional\ndependency.\n\n```bash\n$ psycho uninstall --optional dev pytest\n```\n\n### build\n\nThe build command will build a package, prior to publishing it.\n\n```bash\n$ psycho build\n```\n\nThis is the equivalent of `python -m build`.\n\n### upload\n\nThe upload command will upload a package with twine.\n\n```bash\n$ psycho upload\n```\n\nThis is the equivalent of `twine upload dist/*`.\n\n### publish\n\nThis combines the build and publish in one command.\n\n```bash\n$ psycho publish\n```\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "A tool to manage python projects and their dependencies.",
"version": "2.1.4",
"project_urls": {
"Issues": "https://github.com/rob-blackbourn/psycho/issues",
"Repository": "https://github.com/rob-blackbourn/psycho"
},
"split_keywords": [
"pyproject.toml",
" pip"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "1f3677702545c478b3f4d2b322df6c52a1f9d357665ed013e1e24d9d5fa23f8b",
"md5": "d51cba5fc05db33e6db72b53d9919c14",
"sha256": "387fe768f6fedf249194ca56827e2aff3f0ba07c24ec43e30b246a8ef796772c"
},
"downloads": -1,
"filename": "psycho-2.1.4-py3-none-any.whl",
"has_sig": false,
"md5_digest": "d51cba5fc05db33e6db72b53d9919c14",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14527,
"upload_time": "2025-08-24T09:09:14",
"upload_time_iso_8601": "2025-08-24T09:09:14.193651Z",
"url": "https://files.pythonhosted.org/packages/1f/36/77702545c478b3f4d2b322df6c52a1f9d357665ed013e1e24d9d5fa23f8b/psycho-2.1.4-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2ebc2bff3539b7ea381ae4d378f5af50fb6247a2a3015068be3f469c54967fe4",
"md5": "cddcc3a9c018d3cb9479de20c340d0e3",
"sha256": "e3cc70bf8321218fde20e0df1761b1d7002b59b101017a77385d83a0ab04049e"
},
"downloads": -1,
"filename": "psycho-2.1.4.tar.gz",
"has_sig": false,
"md5_digest": "cddcc3a9c018d3cb9479de20c340d0e3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 12999,
"upload_time": "2025-08-24T09:09:15",
"upload_time_iso_8601": "2025-08-24T09:09:15.493438Z",
"url": "https://files.pythonhosted.org/packages/2e/bc/2bff3539b7ea381ae4d378f5af50fb6247a2a3015068be3f469c54967fe4/psycho-2.1.4.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-24 09:09:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "rob-blackbourn",
"github_project": "psycho",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "psycho"
}