| Name | pip-timemachine JSON |
| Version |
0.2.0
JSON |
| download |
| home_page | None |
| Summary | Add your description here |
| upload_time | 2024-10-20 19:33:20 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.10 |
| license | None |
| keywords |
|
| VCS |
|
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# 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](https://peps.python.org/pep-0691/) and [PEP 700](https://peps.python.org/pep-0691/) 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](https://github.com/astral-sh/uv?tab=readme-ov-file#uv):
```bash
uv tool install pip-timemachine
```
Or using [pipx](https://github.com/pypa/pipx?tab=readme-ov-file):
```bash
pipx install pip-timemachine
```
## Usage
### Run
Once installed, run the server:
```bash
pip-timemachine 2023-10-18T12:00:00
```
And then point pip (or any other installer) to use this server as an index:
```bash
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
Raw data
{
"_id": null,
"home_page": null,
"name": "pip-timemachine",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": null,
"author": null,
"author_email": "Damian Shaw <damian.peter.shaw@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/a8/ee/e634e9b27d3d6dab6764d3dc810279fa4dbd886d28f2bd67e00eb5bc6c63/pip_timemachine-0.2.0.tar.gz",
"platform": null,
"description": "# pip-timemachine\n\nA simple Python server that forwards requests to PyPI's Simple API,\nfilters results based on a specific point in time, and returns the\nresponse.\n\nPrimary purpose is for testing pip, but may be useful for reliably\ninstalling the same packages from a given date.\n\n## Features\n\n- Filters package files by a specified datetime\n- Powered by [PEP 691](https://peps.python.org/pep-0691/) and [PEP 700](https://peps.python.org/pep-0691/) to quickly filter packages after the given time\n- Can point to any simple index that supports PEP 691 and PEP 700, not just PyPI\n\n## Installation\n\nI reccomend install `pip-timemachine` as a tool, e.g.\n\nUsing [uv](https://github.com/astral-sh/uv?tab=readme-ov-file#uv):\n```bash\nuv tool install pip-timemachine\n```\n\nOr using [pipx](https://github.com/pypa/pipx?tab=readme-ov-file):\n```bash\npipx install pip-timemachine\n```\n\n## Usage\n\n### Run\n\nOnce installed, run the server:\n```bash\npip-timemachine 2023-10-18T12:00:00\n```\n\nAnd then point pip (or any other installer) to use this server as an index:\n```bash\npip install requests --index http://127.0.0.1:8040/simple\n```\n\n### CLI Options\n\n```\n Usage: pip-timemachine [OPTIONS] MOMENT:[%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S]\n \n Arguments:\n moment MOMENT:[%Y-%m-%d|%Y-%m-%dT%H:%M:%S|%Y-%m-%d %H:%M:%S] [default: None] [required]\n \n Options : \n --index TEXT [default: https://pypi.org/simple]\n --port INTEGER [default: 8040]\n --help Help\n```\n\n# To Dos\n\n * Support clients (e.g. pip) that do not support PEP 691 or PEP 700\n",
"bugtrack_url": null,
"license": null,
"summary": "Add your description here",
"version": "0.2.0",
"project_urls": null,
"split_keywords": [],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "6abfd742acea3690b3699ab37f7f499bd1b3cc246c8fee0a1d33d944db409b96",
"md5": "fb0b738699979ff1cf974a6bd48cac0b",
"sha256": "3ace3d3180f81448f0ce552c6597c0c45bf51c437769c389dfec9c3913ed82bd"
},
"downloads": -1,
"filename": "pip_timemachine-0.2.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fb0b738699979ff1cf974a6bd48cac0b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 5203,
"upload_time": "2024-10-20T19:33:19",
"upload_time_iso_8601": "2024-10-20T19:33:19.270791Z",
"url": "https://files.pythonhosted.org/packages/6a/bf/d742acea3690b3699ab37f7f499bd1b3cc246c8fee0a1d33d944db409b96/pip_timemachine-0.2.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "a8eee634e9b27d3d6dab6764d3dc810279fa4dbd886d28f2bd67e00eb5bc6c63",
"md5": "f6ec43257b3b9cabfc5d984eed7c5db5",
"sha256": "8ad979cd4067e8dfa34c0901189b588a2dee52008acd2b20b0cec5dfe11dc657"
},
"downloads": -1,
"filename": "pip_timemachine-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "f6ec43257b3b9cabfc5d984eed7c5db5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 45556,
"upload_time": "2024-10-20T19:33:20",
"upload_time_iso_8601": "2024-10-20T19:33:20.833824Z",
"url": "https://files.pythonhosted.org/packages/a8/ee/e634e9b27d3d6dab6764d3dc810279fa4dbd886d28f2bd67e00eb5bc6c63/pip_timemachine-0.2.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-20 19:33:20",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pip-timemachine"
}