Skip to content

File layout

Zoran Simic edited this page Jul 5, 2023 · 5 revisions

File layout

File structure at <base> installation folder, example ~/.local/bin::

tree <base>/                        # PickleyConfig.base: Base for pickley installs (same folder as pickley)
├─ .pk/                             # PickleyConfig.meta: Folder where pickley will manage installations
│  ├─ .cache/                       # PickleyConfig.cache: Internal cache folder, can be scrapped any time
│  │  ├─ tox.latest                 # Latest version as determined by querying pypi
│  │  └─ tox.ping                   # PackageSpec.ping_path: Ping file used to throttle auto-upgrade checks
│  ├─ audit.log                     # Activity is logged here
│  ├─ config.json                   # Optional configuration provided by user
│  ├─ tox.lock                      # Lock while installation is in progress
│  ├─ tox.manifest.json             # PackageSpec.manifest_path: Metadata on current installation
│  └─ tox-2.9.1/                    # PackageSpec.active_install_path: Venv containing actual installation
│     ├─ bin/...
│     └─ .manifest.json             # Metadata on this installation
├─ pickley -> .pk/pickley-4.0.0/... # pickley itself
└─ tox -> .pk/tox-2.9.1/...         # PackageSpec.exe_path(): symlink or self-upgrading wrapper

Pickley's metadata files

Pickley tracks what it installed via files in <base>/.pickley/ via a number of files.

/.pickley//.manifest.json contains info as to what is currently installed and some info about when/how it was installed::

{
    "entrypoints": {
      "tox": "tox:cmdline",
      "tox-quickstart": "tox._quickstart:main"
    },
    "install_info": {
        "args": "-P3.9 -dwrap install tox==1.2.3",
        "timestamp": "2020-11-01 12:51:01",
        "vpickley": "2.3.0"
    },
    "pinned": "1.2.3",
    "settings": {
        "delivery": "wrap",
        "index": "https://pypi-mirror.mycompany.net/pypi",
        "python": "/usr/bin/python3"
    },
    "version": "1.2.3"
}

/.pickley/.cache/.latest contains info about which version was determined to be the latest for a given package, this is used to put a cooldown on query pypi via the auto-upgrade command::

{
    "index": "https://pypi-mirror.mycompany.net/pypi",
    "install_info": {
        "args": "auto-upgrade mgit",
        "timestamp": "2020-11-01 12:51:39",
        "vpickley": "2.3.0"
    },
    "source": "latest",
    "version": "1.2.1"
}
Clone this wiki locally