mirror of
https://github.com/astral-sh/uv.git
synced 2025-07-14 00:35:00 +00:00

The architecture of uv does not necessarily match that of the python
interpreter (#2326). In cross compiling/testing scenarios the operating
system can also mismatch. To solve this, we move arch and os detection
to python, vendoring the relevant pypa/packaging code, preventing
mismatches between what the python interpreter was compiled for and what
uv was compiled for.
To make the scripts more manageable, they are now a directory in a
tempdir and we run them with `python -m` . I've simplified the
pypa/packaging code since we're still building the tags in rust. A
`Platform` is now instantiated by querying the python interpreter for
its platform. The pypa/packaging files are copied verbatim for easier
updates except a `lru_cache()` python 3.7 backport.
Error handling is done by a `"result": "success|error"` field that allow
passing error details to rust:
```console
$ uv venv --no-cache
× Can't use Python at `/home/konsti/projects/uv/.venv/bin/python3`
╰─▶ Unknown operation system `linux`
```
I've used the [maturin sysconfig
collection](855f6d2cb1/sysconfig
)
as reference. I'm unsure how to test these changes across the wide
variety of platforms.
Fixes #2326
15 lines
501 B
Python
15 lines
501 B
Python
# This file is dual licensed under the terms of the Apache License, Version
|
|
# 2.0, and the BSD License. See the LICENSE file in the root of this repository
|
|
# for complete details.
|
|
|
|
__title__ = "packaging"
|
|
__summary__ = "Core utilities for Python packages"
|
|
__uri__ = "https://github.com/pypa/packaging"
|
|
|
|
__version__ = "24.1.dev0"
|
|
|
|
__author__ = "Donald Stufft and individual contributors"
|
|
__email__ = "donald@stufft.io"
|
|
|
|
__license__ = "BSD-2-Clause or Apache-2.0"
|
|
__copyright__ = "2014 %s" % __author__
|