mousebender


Namemousebender JSON
Version 2025.1 PyPI version JSON
download
home_pageNone
SummaryA package for implementing various Python packaging standards.
upload_time2025-08-22 19:07:19
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords packaging simple repository api pep 503 pep 592 pep 658 pep 691 pep 700 pep 714 pep 740 pep 792
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mousebender

Produce/consume dependency lock files for Python

## Important Links

- [PyPI](https://pypi.org/project/mousebender/)
- [Documentation](https://mousebender.readthedocs.io/)

## Goals for this project

This project hopes to (eventually) provide a way to create reproducible installations for a virtual environment from a lock file -- or a version-pinned dependency list if "lock file" means `flock` to you -- derived from a `pyproject.toml` file. That will require defining a lock file format for wheel files as well as being able to perform installations based on that lock file. The ultimate goal is for that lock file format to become a standard (see [PEP 665](https://peps.python.org/pep-0665/) which was an initial attempt at this).

Or put another way, this project wants to work towards a standard for what [pip-tools](https://pypi.org/project/pip-tools/) and [pip requirements files](https://pip.pypa.io/en/stable/reference/requirements-file-format/) do.

To achieve this goal, this project will need to be able to:

- [x] Know what wheel files are available on an index server ([`mousebender.simple`](https://mousebender.readthedocs.io/en/latest/simple.html))
- [x] Read the metadata from a wheel file (in [`packaging.metadata`](https://packaging.pypa.io/en/stable/metadata.html))
- [ ] Resolve what wheel files are required to meet the requirements specified in `pyproject.toml`
- [ ] Produce a lock file of wheel files for a platform
- [ ] Consume a lock file for the platform to install the specified wheel files


Where does the name come from?
==============================
The customer from [Monty Python's cheese shop sketch](https://en.wikipedia.org/wiki/Cheese_Shop_sketch) is named "Mr. Mousebender". And in case you didn't know, the original name of [PyPI](https://pypi.org) was the Cheeseshop after the Monty Python sketch (see [PyPI's 404 page](https://pypi.org/404.html) for a link to the sketch).


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mousebender",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "packaging, Simple Repository API, PEP 503, PEP 592, PEP 658, PEP 691, PEP 700, PEP 714, PEP 740, PEP 792",
    "author": null,
    "author_email": "Brett Cannon <brett@python.org>, Derek Keeler <derek@suchcool.ca>",
    "download_url": "https://files.pythonhosted.org/packages/ff/65/f329f44a80be8a05014dd822350b54b183285172780a5c4fe0ff1b9dc3ed/mousebender-2025.1.tar.gz",
    "platform": null,
    "description": "# mousebender\n\nProduce/consume dependency lock files for Python\n\n## Important Links\n\n- [PyPI](https://pypi.org/project/mousebender/)\n- [Documentation](https://mousebender.readthedocs.io/)\n\n## Goals for this project\n\nThis project hopes to (eventually) provide a way to create reproducible installations for a virtual environment from a lock file -- or a version-pinned dependency list if \"lock file\" means `flock` to you -- derived from a `pyproject.toml` file. That will require defining a lock file format for wheel files as well as being able to perform installations based on that lock file. The ultimate goal is for that lock file format to become a standard (see [PEP 665](https://peps.python.org/pep-0665/) which was an initial attempt at this).\n\nOr put another way, this project wants to work towards a standard for what [pip-tools](https://pypi.org/project/pip-tools/) and [pip requirements files](https://pip.pypa.io/en/stable/reference/requirements-file-format/) do.\n\nTo achieve this goal, this project will need to be able to:\n\n- [x] Know what wheel files are available on an index server ([`mousebender.simple`](https://mousebender.readthedocs.io/en/latest/simple.html))\n- [x] Read the metadata from a wheel file (in [`packaging.metadata`](https://packaging.pypa.io/en/stable/metadata.html))\n- [ ] Resolve what wheel files are required to meet the requirements specified in `pyproject.toml`\n- [ ] Produce a lock file of wheel files for a platform\n- [ ] Consume a lock file for the platform to install the specified wheel files\n\n\nWhere does the name come from?\n==============================\nThe customer from [Monty Python's cheese shop sketch](https://en.wikipedia.org/wiki/Cheese_Shop_sketch) is named \"Mr. Mousebender\". And in case you didn't know, the original name of [PyPI](https://pypi.org) was the Cheeseshop after the Monty Python sketch (see [PyPI's 404 page](https://pypi.org/404.html) for a link to the sketch).\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A package for implementing various Python packaging standards.",
    "version": "2025.1",
    "project_urls": {
        "Changelog": "https://github.com/brettcannon/mousebender/releases",
        "Documentation": "https://mousebender.readthedocs.io/",
        "Fiscal support": "https://github.com/sponsors/brettcannon/",
        "Issues": "https://github.com/brettcannon/mousebender/issues",
        "Repository": "https://github.com/brettcannon/mousebender"
    },
    "split_keywords": [
        "packaging",
        " simple repository api",
        " pep 503",
        " pep 592",
        " pep 658",
        " pep 691",
        " pep 700",
        " pep 714",
        " pep 740",
        " pep 792"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9dc690ee231df162dc477e9a0a6993b6851b1ae65ab5a0b16d4744e90f2e4dee",
                "md5": "14e6c223b7e9f6034627b3aeaeecb679",
                "sha256": "9711636ec912dba7597ba11281b9c1bd3757cda623d41756fe625d1d0ced52a2"
            },
            "downloads": -1,
            "filename": "mousebender-2025.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "14e6c223b7e9f6034627b3aeaeecb679",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 8011,
            "upload_time": "2025-08-22T19:07:18",
            "upload_time_iso_8601": "2025-08-22T19:07:18.417991Z",
            "url": "https://files.pythonhosted.org/packages/9d/c6/90ee231df162dc477e9a0a6993b6851b1ae65ab5a0b16d4744e90f2e4dee/mousebender-2025.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ff65f329f44a80be8a05014dd822350b54b183285172780a5c4fe0ff1b9dc3ed",
                "md5": "ba62175aeaf590597fb1d73f649d1ba9",
                "sha256": "a3b22eed69b86feb03c8359e168ad9663476598667dcc809b7e0dac10eb1976e"
            },
            "downloads": -1,
            "filename": "mousebender-2025.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ba62175aeaf590597fb1d73f649d1ba9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 4858715,
            "upload_time": "2025-08-22T19:07:19",
            "upload_time_iso_8601": "2025-08-22T19:07:19.984016Z",
            "url": "https://files.pythonhosted.org/packages/ff/65/f329f44a80be8a05014dd822350b54b183285172780a5c4fe0ff1b9dc3ed/mousebender-2025.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-22 19:07:19",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "brettcannon",
    "github_project": "mousebender",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "mousebender"
}
        
Elapsed time: 2.12274s