A very simple pypi cache.
- uses aiohttp, aiofiles, inotipy
- queries metadata via pypi JSON API
- filesystem is the database
- serve releases while downloading
- private channels with user, groups and permissions
- use python-libaio for file stuff
- nice ui
# pypare --help
Usage: pypare [OPTIONS] COMMAND [ARGS]...
Options:
--log-level [NOTSET|DEBUG|INFO|WARNING|ERROR|CRITICAL]
The logging level. [default: INFO]
--loop [asyncio|uvloop] Use a different loop policy. [default:
asyncio]
--version Show the version and exit.
--help Show this message and exit.
Commands:
pypi Run a simple pypi caching proxy.
# pypare pypi --help
Usage: pypare pypi [OPTIONS]
Run a simple pypi caching proxy.
Options:
-p, --port INTEGER The port to run the server [default: 3141]
-h, --host TEXT The server host IP. [default: 0.0.0.0]
-b, --base-path PATH The base path for this application.
[default: /pypi]
-c, --cache-root DIRECTORY The cache directory, where files are stored.
[default: ~/.cache/pypare]
-u, --upstream-channel TEXT The name of the upstream channel.
--upstream-channel-url TEXT The base API URL of the upstream channel.
--upstream-channel-timeout INTEGER
The timeout upstream is asked for new
metadata.
--plugin LIST A plugin in pkg_resources notation to load.
--help Show this message and exit.
Run from virtual environment:
pip install pypare
pypare pypi --cache-root /tmp/pypi-data
Run in docker:
docker run -it diefans/pypare:latest pypi
Run as zipapp:
shiv pypare -c pypare -o ~/.local/bin/pypare -p ~/.pyenv/versions/3.7.0/bin/python
pypare pypi --cache-root /tmp/pypi-data
PIP_INDEX_URL=http://localhost:3141/pypi/pypi pip install tensorflow