pickley


Namepickley JSON
Version 4.1.3 PyPI version JSON
download
home_pagehttps://github.com/codrsquad/pickley
SummaryAutomate installation of standalone python CLIs
upload_time2023-12-05 17:20:20
maintainer
docs_urlNone
authorZoran Simic
requires_python>=3.6
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            Automate installation of standalone python CLIs
===============================================

.. image:: https://img.shields.io/pypi/v/pickley.svg
    :target: https://pypi.org/project/pickley/
    :alt: Version on pypi

.. image:: https://github.com/codrsquad/pickley/workflows/Tests/badge.svg
    :target: https://github.com/codrsquad/pickley/actions
    :alt: Tested with Github Actions

.. image:: https://codecov.io/gh/codrsquad/pickley/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/codrsquad/pickley
    :alt: Test code codecov

.. image:: https://img.shields.io/pypi/pyversions/pickley.svg
    :target: https://github.com/codrsquad/pickley
    :alt: Python versions tested (link to github project)


Overview
========

**pickley** allows to install and keep up-to-date standalone pip-installable python CLIs
such as tox_, hatch_, etc.

It is `similar to pipx`_, main difference being installed CLIs automatically self-upgrade
as you use them.

It can work out of the box, **without any configuration**:

- **pickley** is portable, it will run and install other CLIs in the same folder it's running from
  (drop it in ``~/.local/bin`` or ``/usr/local/bin`` for example)

- All pypi packages with ``console_scripts`` entry point(s) can be immediately installed

- Latest non-prerelease pypi version will be installed by default
  (can be pinned via explicit pin ``pickley install foo==1.0``, or via configuration)

With **some configuration**, the following becomes possible:

- You can pin what version to install, what python to use etc, per pypi package

- You can define ``bundle``-s: names that install several pypi packages at once,
  for example: you could define a ``bundle:dev`` to install ``tox pipenv pre-commit``

- You can use a custom pypi server index (pip's default is respected by default)

- You can use the **symlink** delivery method, which will use symlinks instead of self-upgrading wrapper


Example
=======

Once you have ``pickley``, you can get other python CLIs and use them as standalone programs, for example::

    # One-liner to grab pickley, and drop it in ~/.local/bin
    $ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/main/src/pickley/bstrap.py | /usr/bin/python3 -

    # Double-check you do have ~/.local/bin in your PATH
    $ which -a pickley
    ~/.local/bin/pickley

    $ pickley base
    ~/.local/bin

    $ pickley install tox hatch
    Installed tox v4.5.2 in 6 seconds 501 ms
    Installed hatch v1.7.0 in 15 seconds

    $ which tox
    ~/.local/bin/tox

    $ tox --version
    tox version 3.21.4

    $ pickley list
    | Package    | Version |
    -------------|----------
    | tox        | 4.5.2   |
    | hatch      | 1.7.0   |


Configuration
=============

See config_


Features
========

- Any pypi_ package that has ``console_scripts`` entry point can be installed and kept up-to-date

- Aims to work with zero configuration (but configuration is possible):

    - entirely portable, installations are performed in the same folder where **pickley** resides,
      drop it in ``~/.local/bin`` and all the stuff you install with it will also be there

    - latest non pre-release version from pypi is used

- Commands:

    - ``check``: exit with code 0 if specified package(s) are up-to-date

    - ``install``: install specified package(s)

    - ``list``: list installed packages via **pickley**, in folder where it resides (not globally)

    - ``package``: can be used to simplify packaging of python projects for internal use


Installation
============

Install latest version in `~/.local/bin`
----------------------------------------

Handy one-line using ``bash``::

    $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/main/get-pickley)"


Handy one-liner using python (see ``--help``, the script accepts a few options)::

    $ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/main/src/pickley/bstrap.py | /usr/bin/python3 - --help


Install from source
-------------------

Run (you will need tox_)::

    git clone https://github.com/codrsquad/pickley.git
    cd pickley
    python3 -mvenv .venv
    .venv/bin/pip install -r requirements.txt -r tests/requirements.txt -e .
    .venv/bin/pickley --help


.. _pypi: https://pypi.org/

.. _tox: https://pypi.org/project/tox/

.. _hatch: https://pypi.org/project/hatch/

.. _config: https://github.com/codrsquad/pickley/wiki/Config

.. _similar to pipx: https://github.com/codrsquad/pickley/wiki/Pickley-vs-pipx

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/codrsquad/pickley",
    "name": "pickley",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": "",
    "keywords": "",
    "author": "Zoran Simic",
    "author_email": "zoran@simicweb.com",
    "download_url": "https://files.pythonhosted.org/packages/45/92/cfe93f820190b2608a56ef8a5c12369e421eba537679597a9755bf361014/pickley-4.1.3.tar.gz",
    "platform": null,
    "description": "Automate installation of standalone python CLIs\n===============================================\n\n.. image:: https://img.shields.io/pypi/v/pickley.svg\n    :target: https://pypi.org/project/pickley/\n    :alt: Version on pypi\n\n.. image:: https://github.com/codrsquad/pickley/workflows/Tests/badge.svg\n    :target: https://github.com/codrsquad/pickley/actions\n    :alt: Tested with Github Actions\n\n.. image:: https://codecov.io/gh/codrsquad/pickley/branch/main/graph/badge.svg\n    :target: https://codecov.io/gh/codrsquad/pickley\n    :alt: Test code codecov\n\n.. image:: https://img.shields.io/pypi/pyversions/pickley.svg\n    :target: https://github.com/codrsquad/pickley\n    :alt: Python versions tested (link to github project)\n\n\nOverview\n========\n\n**pickley** allows to install and keep up-to-date standalone pip-installable python CLIs\nsuch as tox_, hatch_, etc.\n\nIt is `similar to pipx`_, main difference being installed CLIs automatically self-upgrade\nas you use them.\n\nIt can work out of the box, **without any configuration**:\n\n- **pickley** is portable, it will run and install other CLIs in the same folder it's running from\n  (drop it in ``~/.local/bin`` or ``/usr/local/bin`` for example)\n\n- All pypi packages with ``console_scripts`` entry point(s) can be immediately installed\n\n- Latest non-prerelease pypi version will be installed by default\n  (can be pinned via explicit pin ``pickley install foo==1.0``, or via configuration)\n\nWith **some configuration**, the following becomes possible:\n\n- You can pin what version to install, what python to use etc, per pypi package\n\n- You can define ``bundle``-s: names that install several pypi packages at once,\n  for example: you could define a ``bundle:dev`` to install ``tox pipenv pre-commit``\n\n- You can use a custom pypi server index (pip's default is respected by default)\n\n- You can use the **symlink** delivery method, which will use symlinks instead of self-upgrading wrapper\n\n\nExample\n=======\n\nOnce you have ``pickley``, you can get other python CLIs and use them as standalone programs, for example::\n\n    # One-liner to grab pickley, and drop it in ~/.local/bin\n    $ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/main/src/pickley/bstrap.py | /usr/bin/python3 -\n\n    # Double-check you do have ~/.local/bin in your PATH\n    $ which -a pickley\n    ~/.local/bin/pickley\n\n    $ pickley base\n    ~/.local/bin\n\n    $ pickley install tox hatch\n    Installed tox v4.5.2 in 6 seconds 501 ms\n    Installed hatch v1.7.0 in 15 seconds\n\n    $ which tox\n    ~/.local/bin/tox\n\n    $ tox --version\n    tox version 3.21.4\n\n    $ pickley list\n    | Package    | Version |\n    -------------|----------\n    | tox        | 4.5.2   |\n    | hatch      | 1.7.0   |\n\n\nConfiguration\n=============\n\nSee config_\n\n\nFeatures\n========\n\n- Any pypi_ package that has ``console_scripts`` entry point can be installed and kept up-to-date\n\n- Aims to work with zero configuration (but configuration is possible):\n\n    - entirely portable, installations are performed in the same folder where **pickley** resides,\n      drop it in ``~/.local/bin`` and all the stuff you install with it will also be there\n\n    - latest non pre-release version from pypi is used\n\n- Commands:\n\n    - ``check``: exit with code 0 if specified package(s) are up-to-date\n\n    - ``install``: install specified package(s)\n\n    - ``list``: list installed packages via **pickley**, in folder where it resides (not globally)\n\n    - ``package``: can be used to simplify packaging of python projects for internal use\n\n\nInstallation\n============\n\nInstall latest version in `~/.local/bin`\n----------------------------------------\n\nHandy one-line using ``bash``::\n\n    $ /bin/bash -c \"$(curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/main/get-pickley)\"\n\n\nHandy one-liner using python (see ``--help``, the script accepts a few options)::\n\n    $ curl -fsSL https://raw.githubusercontent.com/codrsquad/pickley/main/src/pickley/bstrap.py | /usr/bin/python3 - --help\n\n\nInstall from source\n-------------------\n\nRun (you will need tox_)::\n\n    git clone https://github.com/codrsquad/pickley.git\n    cd pickley\n    python3 -mvenv .venv\n    .venv/bin/pip install -r requirements.txt -r tests/requirements.txt -e .\n    .venv/bin/pickley --help\n\n\n.. _pypi: https://pypi.org/\n\n.. _tox: https://pypi.org/project/tox/\n\n.. _hatch: https://pypi.org/project/hatch/\n\n.. _config: https://github.com/codrsquad/pickley/wiki/Config\n\n.. _similar to pipx: https://github.com/codrsquad/pickley/wiki/Pickley-vs-pipx\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Automate installation of standalone python CLIs",
    "version": "4.1.3",
    "project_urls": {
        "Documentation": "https://github.com/codrsquad/pickley/wiki",
        "Homepage": "https://github.com/codrsquad/pickley",
        "Release notes": "https://github.com/codrsquad/pickley/wiki/Release-notes",
        "Source": "https://github.com/codrsquad/pickley"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b540ac4acf442b84159dc4774098995df8d1c3087a2234d788453ef6112802d3",
                "md5": "8b2ac5216f6b7c870301cf7f7d14c7bd",
                "sha256": "85b6cb3d67715ccc4622369213444cc09430b89ea5750815c721cab5f08c9583"
            },
            "downloads": -1,
            "filename": "pickley-4.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8b2ac5216f6b7c870301cf7f7d14c7bd",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 31330,
            "upload_time": "2023-12-05T17:20:17",
            "upload_time_iso_8601": "2023-12-05T17:20:17.815251Z",
            "url": "https://files.pythonhosted.org/packages/b5/40/ac4acf442b84159dc4774098995df8d1c3087a2234d788453ef6112802d3/pickley-4.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4592cfe93f820190b2608a56ef8a5c12369e421eba537679597a9755bf361014",
                "md5": "a4ae4752c8e2dd24834e4fa3878b7529",
                "sha256": "c0c0cca4febeabff17d1bb1d41a66a969e4e2ee0f44061265c6fc2890bd0022b"
            },
            "downloads": -1,
            "filename": "pickley-4.1.3.tar.gz",
            "has_sig": false,
            "md5_digest": "a4ae4752c8e2dd24834e4fa3878b7529",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 39898,
            "upload_time": "2023-12-05T17:20:20",
            "upload_time_iso_8601": "2023-12-05T17:20:20.441695Z",
            "url": "https://files.pythonhosted.org/packages/45/92/cfe93f820190b2608a56ef8a5c12369e421eba537679597a9755bf361014/pickley-4.1.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-12-05 17:20:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "codrsquad",
    "github_project": "pickley",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "pickley"
}
        
Elapsed time: 0.14831s