psycho


Namepsycho JSON
Version 2.1.3 PyPI version JSON
download
home_pageNone
SummaryA tool to manage python projects and their dependencies.
upload_time2025-07-26 13:07:45
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseApache-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/e3/cf/bfc7ba1e4a30b0db61e4d65eab429d00a112d0c7bd95758702f6aababddb/psycho-2.1.3.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.3",
    "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": "2a1b50b5787ff98c4ccfdb68bdeb2adecbc6aa83479876b037db0262b60284f8",
                "md5": "ff5e7aa33304fd1f90fd01acad4f58d9",
                "sha256": "ef96e0098d1a8e90902d218684f306a3b3a58316983642b8146c64f4ae0950b8"
            },
            "downloads": -1,
            "filename": "psycho-2.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ff5e7aa33304fd1f90fd01acad4f58d9",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 14377,
            "upload_time": "2025-07-26T13:07:44",
            "upload_time_iso_8601": "2025-07-26T13:07:44.051251Z",
            "url": "https://files.pythonhosted.org/packages/2a/1b/50b5787ff98c4ccfdb68bdeb2adecbc6aa83479876b037db0262b60284f8/psycho-2.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e3cfbfc7ba1e4a30b0db61e4d65eab429d00a112d0c7bd95758702f6aababddb",
                "md5": "74d665766d36452e239e1545af839a92",
                "sha256": "4b0b39128d5d373a700da5eda9ce34c03d9b2c953518ee5d157ddaf9238f7dd1"
            },
            "downloads": -1,
            "filename": "psycho-2.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "74d665766d36452e239e1545af839a92",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 12857,
            "upload_time": "2025-07-26T13:07:45",
            "upload_time_iso_8601": "2025-07-26T13:07:45.343669Z",
            "url": "https://files.pythonhosted.org/packages/e3/cf/bfc7ba1e4a30b0db61e4d65eab429d00a112d0c7bd95758702f6aababddb/psycho-2.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-26 13:07:45",
    "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"
}
        
Elapsed time: 1.76293s