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"
}