pip-timemachine
A simple Python server that forwards requests to PyPI's Simple API, filters results based on a specific point in time, and returns the response.
Primary purpose is for testing pip, but may be useful for reliably installing the same packages from a given date.
Features
- Filters package files by a specified datetime
- Powered by PEP 691 and PEP 700 to quickly filter packages after the given time
- Can point to any simple index that supports PEP 691 and PEP 700, not just PyPI
Installation
I reccomend install pip-timemachine as a tool, e.g.
Using uv:
uv tool install pip-timemachine
Or using pipx:
pipx install pip-timemachine
Usage
Run
Once installed, run the server:
pip-timemachine 2023-10-18T12:00:00
And then point pip (or any other installer) to use this server as an index:
pip install requests --index http://127.0.0.1:8040/simple
CLI Options
Usage: pip-timemachine [OPTIONS] MOMENT:[%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]
Arguments:
moment MOMENT:[%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S] [default: None] [required]
Options :
--index TEXT [default: https://pypi.org/simple]
--port INTEGER [default: 8040]
--help Help
To Dos
- Support clients (e.g. pip) that do not support PEP 691 or PEP 700
Release files for pip-timemachine 0.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pip_timemachine-0.2.3.tar.gz | 77.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pip_timemachine-0.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 82.5 kB
Release files / pip_timemachine-0.2.3.tar.gz
| Download URL | pip_timemachine-0.2.3.tar.gz |
|---|---|
| Size | 77.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
75045883f153efcd4caeae2dd90aa765fef2fb1756713484e35979024f671c7a
|
|
BLAKE2b-256 checksum How to use checksums |
eec1eb651f026f0505dac2499a391beea40681e9a0eaad43f17027324a0b6763
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 24, 2026.
Transparency logRelease files / pip_timemachine-0.2.3-py3-none-any.whl
| Download URL | pip_timemachine-0.2.3-py3-none-any.whl |
|---|---|
| Size | 5.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5e8209271d6c2674d7ce22cc8779287f5d41337cd0781e7d6de76f9865dbd38c
|
|
BLAKE2b-256 checksum How to use checksums |
53146b5425f8d956903e52a6b8443d7ca1f7930d498ab3d5383621b41f353dcd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 24, 2026.
Transparency log